From 22e016ff6c18a35a450519b94de63033f83e6b4f Mon Sep 17 00:00:00 2001 From: Justin Bronn Date: Thu, 28 Feb 2008 21:24:51 +0000 Subject: [PATCH] gis: Merged revisions 7105-7168 via svnmerge from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@7176 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 3 + django/conf/global_settings.py | 4 +- django/conf/locale/eu/LC_MESSAGES/django.mo | Bin 0 -> 44912 bytes django/conf/locale/eu/LC_MESSAGES/django.po | 4248 ++++++++++++++++ django/conf/locale/eu/LC_MESSAGES/djangojs.mo | Bin 0 -> 1575 bytes django/conf/locale/eu/LC_MESSAGES/djangojs.po | 117 + django/conf/locale/ka/LC_MESSAGES/django.mo | Bin 0 -> 76983 bytes django/conf/locale/ka/LC_MESSAGES/django.po | 4369 +++++++++++++++++ django/conf/locale/ka/LC_MESSAGES/djangojs.mo | Bin 0 -> 2222 bytes django/conf/locale/ka/LC_MESSAGES/djangojs.po | 118 + django/contrib/admin/views/decorators.py | 12 +- django/contrib/auth/decorators.py | 7 +- .../contrib/databrowse/plugins/calendars.py | 2 - .../databrowse/plugins/fieldchoices.py | 2 - django/contrib/databrowse/views.py | 2 - django/contrib/formtools/preview.py | 1 - django/contrib/formtools/tests.py | 5 - .../contrib/humanize/templatetags/humanize.py | 3 +- django/contrib/localflavor/ar/forms.py | 1 - django/contrib/localflavor/generic/forms.py | 76 +- django/contrib/localflavor/jp/forms.py | 2 - django/contrib/sessions/models.py | 5 - django/contrib/webdesign/tests.py | 1 - django/core/handlers/base.py | 3 +- django/core/management/commands/loaddata.py | 20 +- django/core/management/commands/sqlall.py | 2 +- django/core/serializers/json.py | 1 - django/core/serializers/pyyaml.py | 1 - django/db/backends/mysql/base.py | 1 - django/db/backends/postgresql/operations.py | 5 + django/db/models/base.py | 9 +- django/db/models/fields/__init__.py | 78 +- django/db/models/fields/related.py | 74 +- django/http/__init__.py | 4 +- django/newforms/forms.py | 39 +- django/newforms/models.py | 73 +- django/template/defaultfilters.py | 6 +- django/test/_doctest.py | 2 +- django/test/client.py | 2 - django/test/simple.py | 1 - django/utils/datastructures.py | 8 +- django/utils/decorators.py | 6 +- django/utils/functional.py | 118 +- django/views/decorators/cache.py | 9 +- django/views/decorators/http.py | 7 +- django/views/decorators/vary.py | 9 +- docs/api_stability.txt | 2 +- docs/contenttypes.txt | 4 +- docs/db-api.txt | 3 +- docs/distributions.txt | 2 +- docs/django-admin.txt | 6 +- docs/faq.txt | 2 +- docs/install.txt | 2 +- docs/model-api.txt | 24 +- docs/modelforms.txt | 38 + docs/request_response.txt | 2 +- docs/serialization.txt | 2 +- docs/shortcuts.txt | 6 +- docs/templates.txt | 2 + docs/templates_python.txt | 4 +- docs/url_dispatch.txt | 22 + extras/django_bash_completion | 10 +- setup.py | 11 +- tests/modeltests/basic/models.py | 11 + tests/modeltests/model_forms/models.py | 45 +- .../modeltests/mutually_referential/models.py | 8 +- tests/modeltests/ordering/models.py | 4 +- tests/regressiontests/datastructures/tests.py | 8 + tests/regressiontests/datatypes/models.py | 26 + tests/regressiontests/decorators/__init__.py | 0 tests/regressiontests/decorators/models.py | 2 + tests/regressiontests/decorators/tests.py | 56 + .../fixtures_regress/fixtures/absolute.json | 9 + .../fixtures_regress/models.py | 22 + tests/regressiontests/i18n/misc.py | 11 + tests/regressiontests/string_lookup/models.py | 8 + 76 files changed, 9570 insertions(+), 238 deletions(-) create mode 100644 django/conf/locale/eu/LC_MESSAGES/django.mo create mode 100644 django/conf/locale/eu/LC_MESSAGES/django.po create mode 100644 django/conf/locale/eu/LC_MESSAGES/djangojs.mo create mode 100644 django/conf/locale/eu/LC_MESSAGES/djangojs.po create mode 100644 django/conf/locale/ka/LC_MESSAGES/django.mo create mode 100644 django/conf/locale/ka/LC_MESSAGES/django.po create mode 100644 django/conf/locale/ka/LC_MESSAGES/djangojs.mo create mode 100644 django/conf/locale/ka/LC_MESSAGES/djangojs.po create mode 100644 tests/regressiontests/decorators/__init__.py create mode 100644 tests/regressiontests/decorators/models.py create mode 100644 tests/regressiontests/decorators/tests.py create mode 100644 tests/regressiontests/fixtures_regress/fixtures/absolute.json diff --git a/AUTHORS b/AUTHORS index be18d21330..9c28d73730 100644 --- a/AUTHORS +++ b/AUTHORS @@ -56,6 +56,7 @@ answer newbie questions, and generally made Django that much better: David Ascher Jökull Sólberg Auðunsson Arthur + David Avsajanishvili axiak@mit.edu Jiri Barton Ned Batchelder @@ -70,6 +71,7 @@ answer newbie questions, and generally made Django that much better: boobsd@gmail.com Andrew Brehaut brut.alll@gmail.com + btoll@bestweb.net Jonathan Buchanan Can Burak Çilingir Trevor Caira @@ -168,6 +170,7 @@ answer newbie questions, and generally made Django that much better: Rob Hudson Jason Huggins Hyun Mi Ae + Ibon Tom Insam Baurzhan Ismagulov james_027@yahoo.com diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index d722fecd23..4c25da9942 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -48,10 +48,11 @@ LANGUAGES = ( ('en', gettext_noop('English')), ('es', gettext_noop('Spanish')), ('es-ar', gettext_noop('Argentinean Spanish')), + ('eu', gettext_noop('Basque')), ('fa', gettext_noop('Persian')), ('fi', gettext_noop('Finnish')), ('fr', gettext_noop('French')), - ('ga', gettext_noop('Gaeilge')), + ('ga', gettext_noop('Irish')), ('gl', gettext_noop('Galician')), ('hu', gettext_noop('Hungarian')), ('he', gettext_noop('Hebrew')), @@ -59,6 +60,7 @@ LANGUAGES = ( ('is', gettext_noop('Icelandic')), ('it', gettext_noop('Italian')), ('ja', gettext_noop('Japanese')), + ('ka', gettext_noop('Georgian')), ('ko', gettext_noop('Korean')), ('km', gettext_noop('Khmer')), ('kn', gettext_noop('Kannada')), diff --git a/django/conf/locale/eu/LC_MESSAGES/django.mo b/django/conf/locale/eu/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c001bc8268707d27d9e777de8c9a555171568b44 GIT binary patch literal 44912 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 literal 0 HcmV?d00001 diff --git a/django/conf/locale/eu/LC_MESSAGES/django.po b/django/conf/locale/eu/LC_MESSAGES/django.po new file mode 100644 index 0000000000..0cef98a4d9 --- /dev/null +++ b/django/conf/locale/eu/LC_MESSAGES/django.po @@ -0,0 +1,4248 @@ +# translation of django.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-02-08 19:37+0100\n" +"PO-Revision-Date: 2008-02-14 22:12+0100\n" +"Last-Translator: Ibon\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arabiera" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengalera" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "Bulgariera" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "Katalana" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "Txekiera" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "Gales" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "Daniera" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "Alemaniera" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "Greziera" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "Ingeles" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "Espainola" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "Argentinako espainola" + +#: conf/global_settings.py:51 +msgid "Persian" +msgstr "Persiera" + +#: conf/global_settings.py:52 +msgid "Finnish" +msgstr "Finlandesa" + +#: conf/global_settings.py:53 +msgid "French" +msgstr "Frantzesa" + +#: conf/global_settings.py:54 +msgid "Gaeilge" +msgstr "Gaelikoa" + +#: conf/global_settings.py:55 +msgid "Galician" +msgstr "Galiziarra" + +#: conf/global_settings.py:56 +msgid "Hungarian" +msgstr "Hungarierra" + +#: conf/global_settings.py:57 +msgid "Hebrew" +msgstr "Hebreera" + +#: conf/global_settings.py:58 +msgid "Croatian" +msgstr "Kroaziarra" + +#: conf/global_settings.py:59 +msgid "Icelandic" +msgstr "Islandiera" + +#: conf/global_settings.py:60 +msgid "Italian" +msgstr "Italiera" + +#: conf/global_settings.py:61 +msgid "Japanese" +msgstr "Japoniera" + +#: conf/global_settings.py:62 +msgid "Korean" +msgstr "Koreera" + +#: conf/global_settings.py:63 +msgid "Khmer" +msgstr "khemerera" + +#: conf/global_settings.py:64 +msgid "Kannada" +msgstr "Kanadiera" + +#: conf/global_settings.py:65 +msgid "Latvian" +msgstr "Lituaniera" + +#: conf/global_settings.py:66 +msgid "Macedonian" +msgstr "Mazedoniera" + +#: conf/global_settings.py:67 +msgid "Dutch" +msgstr "Holandesa" + +#: conf/global_settings.py:68 +msgid "Norwegian" +msgstr "Norvegiera" + +#: conf/global_settings.py:69 +msgid "Polish" +msgstr "Poloniera" + +#: conf/global_settings.py:70 +msgid "Portugese" +msgstr "Portugalera" + +#: conf/global_settings.py:71 +msgid "Brazilian" +msgstr "Brasilgo portugalera" + +#: conf/global_settings.py:72 +msgid "Romanian" +msgstr "Errumaniera" + +#: conf/global_settings.py:73 +msgid "Russian" +msgstr "Errusiera" + +#: conf/global_settings.py:74 +msgid "Slovak" +msgstr "Eslovakiera" + +#: conf/global_settings.py:75 +msgid "Slovenian" +msgstr "Esloveniera" + +#: conf/global_settings.py:76 +msgid "Serbian" +msgstr "Serbiera" + +#: conf/global_settings.py:77 +msgid "Swedish" +msgstr "Suediera" + +#: conf/global_settings.py:78 +msgid "Tamil" +msgstr "Tamilera" + +#: conf/global_settings.py:79 +msgid "Telugu" +msgstr "Telegu hizkuntza" + +#: conf/global_settings.py:80 +msgid "Turkish" +msgstr "Turkiera" + +#: conf/global_settings.py:81 +msgid "Ukrainian" +msgstr "Ukrainera" + +#: conf/global_settings.py:82 +msgid "Simplified Chinese" +msgstr "Txinera (sinpletua)" + +#: conf/global_settings.py:83 +msgid "Traditional Chinese" +msgstr "Txinera (tradizionala)" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

By %s:

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

    %s gatik:

    \n" +"
      \n" + +#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "Dena" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "Edozein data" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "Gaur" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "Aurreko 7 egunak" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "Hilabete hau" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "Urte hau" + +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Yes" +msgstr "Bai" + +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "No" +msgstr "Ez" + +#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Unknown" +msgstr "Ezezaguna" + +#: contrib/admin/models.py:18 +msgid "action time" +msgstr "Ekintz hordua" + +#: contrib/admin/models.py:21 +msgid "object id" +msgstr "Objetuaren id" + +#: contrib/admin/models.py:22 +msgid "object repr" +msgstr "Objeturaren repr" + +#: contrib/admin/models.py:23 +msgid "action flag" +msgstr "Ekintza botoia" + +#: contrib/admin/models.py:24 +msgid "change message" +msgstr "Mezua aldatu" + +#: contrib/admin/models.py:27 +msgid "log entry" +msgstr "Log sarrera" + +#: contrib/admin/models.py:28 +msgid "log entries" +msgstr "log sarrerak" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Ez da lekua aurkitu" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Barkatu, eskatutako lekua ezin daiteke aurkitu" + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:37 +#: contrib/admin/templates/admin/change_form.html:12 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:5 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:4 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "Hasiera" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Serbidore errorea" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Serbidor errorea (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Serbidore Errorea (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "Arazo bat izan da. Web guneraren administradorea e-mail bidez ohartuko da eta laister konpondua egon beharko luke. Barkatu arazoak." + +#: contrib/admin/templates/admin/base.html:26 +msgid "Welcome," +msgstr "Ongi etorri." + +#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Dokumentazioa" + +#: contrib/admin/templates/admin/base.html:29 +#: contrib/admin/templates/admin/auth/user/change_password.html:14 +#: contrib/admin/templates/admin/auth/user/change_password.html:45 +msgid "Change password" +msgstr "Hitz ezkutua aldatu" + +#: contrib/admin/templates/admin/base.html:30 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Atera" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django admin. gunea" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django administradorea" + +#: contrib/admin/templates/admin/change_form.html:14 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Gehitu" + +#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/object_history.html:4 +msgid "History" +msgstr "Aurrekoak" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "Lekuaren bista" + +#: contrib/admin/templates/admin/change_form.html:31 +#: contrib/admin/templates/admin/auth/user/change_password.html:23 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Arren zuzendu ondoko akatsa" +msgstr[1] "Arren zuzendu ondoko akatsak" + +#: contrib/admin/templates/admin/change_form.html:49 +msgid "Ordering" +msgstr "Ordenaketa" + +#: contrib/admin/templates/admin/change_form.html:52 +msgid "Order:" +msgstr "Ordena:" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "Gehitu %(name)s" + +#: contrib/admin/templates/admin/delete_confirmation.html:8 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Ezabatu" + +#: contrib/admin/templates/admin/delete_confirmation.html:13 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects: " +"%(object_name)s '%(escaped_object)s' ezabatuz, erlazionatutako objetuak ere ezabatuko ditu, baina zure kontuak ez du baimenik, hurrengo objetuak ezabatzeko:" + +#: contrib/admin/templates/admin/delete_confirmation.html:20 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Ziur zaude %(object_name)s \"%(escaped_object)s\" ezabatu nai duzula ? " +"Erlazionaturik dauden hurrengo elementuak ere ezabatuko dira:" + +#: contrib/admin/templates/admin/delete_confirmation.html:25 +msgid "Yes, I'm sure" +msgstr "Bai, ziur nago" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s gatik" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtroa" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "%(name)s aplikazioan Modeloak." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Aldatu" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Ezer aldatzeko baimenik ez dezu." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Azken ekintzak" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Nere ekintzak" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ez dago ezer" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "Zerbait gaizki dago zure data-basearekin. Ziurtatu ezazu data-baseko taulak sortuak izan direla eta usuario egokiarengatik irakurriak izan daitekela" + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Usuario Izena:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Hitz ezkutua:" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:25 +msgid "Log in" +msgstr "Sartu" + +#: contrib/admin/templates/admin/object_history.html:17 +msgid "Date/time" +msgstr "Data/ordua" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "User" +msgstr "Usuarioa" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "Action" +msgstr "Ekintza" + +#: contrib/admin/templates/admin/object_history.html:25 +msgid "DATE_WITH_TIME_FULL" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:35 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "Objetu honek ez du alketa zerrenda bat. Ziur asko, administrazio leku hau erabili gabe gehitua izan da." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Dena erakutsi" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Aurrera" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "%(counter)s emaitza" +msgstr[1] "%(counter)s emaitzak" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s guztira" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Berria bezala gorde" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Gorde eta beste bat gehitu" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Gorde eta aldatzen jarraitu" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Gorde" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "Lehenengo usuario izena eta hitz ezkutua idatzi. Gero usuarioaren aukera gehiago aldatu ditzakezu" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Usuario izena" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:33 +msgid "Password" +msgstr "Hitz ezkutua" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:38 +msgid "Password (again)" +msgstr "Hitz ezkutua (berriro)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Enter the same password as above, for verification." +msgstr "Idatzi berriro hitz ezkutua." + +#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Hitz ezkutu berria idatzi %(username)s usuarioarentzat." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Markadoreak" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "Dokumentazio markadoreak" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

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

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

      Markadoreak instalatzeko eraman linka zure erreminta panelera (toolbar).\n" +"Orain markadorea lekuko edozein horritik aukeratu dezakezu. Hauetako \n" +"markadore batzu, zure ordenadorea 'barnekoa' bezala erregistratua egotea\n" +"behar dute. Hitzegin web lekuaren administradorearekin azalpen gehiagorako.

      \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "Web horri honentzat dokumentazioa" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "Edozein lekutik, horriaren bista sortzaileara (view) salto egiten du." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Objetuaren ID erakutsi" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "Objetu bakarra erakusten duten horrietan, eduki mota (content-type) eta horriaren ID bakarra erakutsi, ." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Objetu hau aldatu ( leiho hau)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Objetu bakarra erakusten horrietan, adminiztrazio gunera joan." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Objetu hay aldatu (leiho berria)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Goian bezala baina administrzazio gune leio berrian irekitzen." + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Mila esker gaur zure denbora web gunean erabiltzegatik." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Berrio sartu (log in)" + +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:9 +msgid "Password change" +msgstr "Hitz ezkutua aldatu" + +#: contrib/admin/templates/registration/password_change_done.html:5 +#: contrib/admin/templates/registration/password_change_done.html:9 +msgid "Password change successful" +msgstr "Hitz ezkutuaren aldaketa arrakastatsua" + +#: contrib/admin/templates/registration/password_change_done.html:11 +msgid "Your password was changed." +msgstr "Hitz ezkutua aldatua izan da" + +#: contrib/admin/templates/registration/password_change_form.html:11 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "Idatzi hitz ezkutu zaharra segurtasun arrazoiengatik eta gero hitz ezkutu berria bi aldiz, akatsik egiten ez duzula ziurtatu dezagun." + +#: contrib/admin/templates/registration/password_change_form.html:16 +msgid "Old password:" +msgstr "Hitz ezkutu zaharra" + +#: contrib/admin/templates/registration/password_change_form.html:18 +msgid "New password:" +msgstr "Hitz ezkutu berria:" + +#: contrib/admin/templates/registration/password_change_form.html:20 +msgid "Confirm password:" +msgstr "Hitz ezkutua baieztatu:" + +#: contrib/admin/templates/registration/password_change_form.html:22 +msgid "Change my password" +msgstr "Nire hitz ezkutua aldatu" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Hitz ezkutua ezabatu" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Hitz ezkutuaren ezabaketa zuzena" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "Hitz ezkutu berria e-mail bidez bidali dizugu. Epe laburrean jasokor duzu." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Mezu elektroniko hau jaso dezu, hitz ezkutuaren ezabaketa eskatu duzulako" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "%(site_name)s usuario kontuarentzat" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Zure hitz ezkutu berria %(new_password)s da" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Hitz ezkutua aldatu nai baduzu, zoaz web horri honetara joan:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Zure usuario izena (ahaztu badezu):" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Mila esker gure web gunea erabiltzeagatik!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s web gunearen taldea" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "Hitz ezkutua ahaztu dezu ? Hidatzi zure e-mail helbidea, eta hitz ezkutu berri bat bidaliko dizugu." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-mail helbidea:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Hitz ezkutua ezabatu" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Data:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Ordua:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Orain:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Aldatu:" + +#: contrib/admin/templatetags/admin_list.py:257 +msgid "All dates" +msgstr "Data guztiak" + +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s arrakastaz gehitua izan da." + +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271 +#: contrib/admin/views/main.py:356 +msgid "You may edit it again below." +msgstr "Berriro alkatu zenezake beherago." + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Usuario gehitu" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Hitz ezkutua aldaketa zuzena." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Hitz ezkutua aldatu: %s" + +#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "Mesedez idatzi usuario izena eta hitz ezkutu egokiak. Maiskula eta minuskula ondo bereiztu." + +#: contrib/admin/views/decorators.py:63 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "Mesedez berriro sar saitez, sesioa zahartu bai da. Bidalitakoa gorde egin da." + +#: contrib/admin/views/decorators.py:70 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "Zure nabegatzaileak ez ditu cookie-ak onartzen. Aktiba ezazu hauen erabilera eta ekarri ezazu horria hau berriro." + +#: contrib/admin/views/decorators.py:84 +msgid "Usernames cannot contain the '@' character." +msgstr "Usuario izenek ezin dezkete @ karakterea eduki." + +#: contrib/admin/views/decorators.py:86 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Zure e-mail helbidea ez da zure usuario izena. Ahalegindo '%s' rekin." + +#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:52 +msgid "tag:" +msgstr "tag:" + +#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:83 +msgid "filter:" +msgstr "filtroa:" + +#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:141 +msgid "view:" +msgstr "bista:" + +#: contrib/admin/views/doc.py:166 +#, python-format +msgid "App %r not found" +msgstr "%r aplikazio ez da aurkitu" + +#: contrib/admin/views/doc.py:173 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "%(name)r modeloa ez da %(label)r aplikazioan aurkitu" + +#: contrib/admin/views/doc.py:185 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "erlazionaturik `%(label)s.%(type)s` objetua" + +#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207 +#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226 +msgid "model:" +msgstr "modeloa:" + +#: contrib/admin/views/doc.py:216 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "erlazionaturik `%(label)s.%(name)s` objetua" + +#: contrib/admin/views/doc.py:221 +#, python-format +msgid "all %s" +msgstr "%s dena" + +#: contrib/admin/views/doc.py:226 +#, python-format +msgid "number of %s" +msgstr "%s zenbakia" + +#: contrib/admin/views/doc.py:231 +#, python-format +msgid "Fields on %s objects" +msgstr "%s objetuan zutabeak" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304 +#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315 +msgid "Integer" +msgstr "Zenbaki osoa" + +#: contrib/admin/views/doc.py:294 +msgid "Boolean (Either True or False)" +msgstr "Boolearra (egia ala gezurra)" + +#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Katea (%(max_length)s gehienez)" + +#: contrib/admin/views/doc.py:296 +msgid "Comma-separated integers" +msgstr "Komaz bereiztutako zenbako osoak" + +#: contrib/admin/views/doc.py:297 +msgid "Date (without time)" +msgstr "Data (ordurik gabe)" + +#: contrib/admin/views/doc.py:298 +msgid "Date (with time)" +msgstr "Data (orduarekin)" + +#: contrib/admin/views/doc.py:299 +msgid "Decimal number" +msgstr "Zenbaki dezimala" + +#: contrib/admin/views/doc.py:300 +msgid "E-mail address" +msgstr "E-mail helbidea" + +#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:305 +msgid "File path" +msgstr "Fitxegi bidea (path)" + +#: contrib/admin/views/doc.py:303 +msgid "Floating point number" +msgstr "Zenbaki erreala (float)" + +#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 +msgid "IP address" +msgstr "IP helbidea" + +#: contrib/admin/views/doc.py:309 +msgid "Boolean (Either True, False or None)" +msgstr "Boolearra (egia, gezurra edo hutsa[None])" + +#: contrib/admin/views/doc.py:310 +msgid "Relation to parent model" +msgstr "Gurazo modeloarekin erlazioa" + +#: contrib/admin/views/doc.py:311 +msgid "Phone number" +msgstr "Telefono zenbakia" + +#: contrib/admin/views/doc.py:316 +msgid "Text" +msgstr "Textua" + +#: contrib/admin/views/doc.py:317 +msgid "Time" +msgstr "Ordua" + +#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:319 +msgid "U.S. state (two uppercase letters)" +msgstr "U.S statua (bi letra maiuskula)" + +#: contrib/admin/views/doc.py:320 +msgid "XML text" +msgstr "XML textua" + +#: contrib/admin/views/doc.py:346 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ez dirudi url heredu objetua" + +#: contrib/admin/views/main.py:233 +msgid "Site administration" +msgstr "Web gunearen administrazioa" + +#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 +#, python-format +msgid "You may add another %s below." +msgstr "Beste %s gehitu dezakezu jarraian." + +#: contrib/admin/views/main.py:298 +#, python-format +msgid "Add %s" +msgstr "%s gehitu" + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Added %s." +msgstr "%s gehituta." + +#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:348 core/validators.py:283 +#: db/models/manipulators.py:309 +msgid "and" +msgstr "eta" + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Changed %s." +msgstr "%s aldatuta." + +#: contrib/admin/views/main.py:348 +#, python-format +msgid "Deleted %s." +msgstr "%s ezabatuta." + +#: contrib/admin/views/main.py:351 +msgid "No fields changed." +msgstr "Ez da zutaberik aldatu." + +#: contrib/admin/views/main.py:354 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" aldatuta izan da." + +#: contrib/admin/views/main.py:362 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" arrakastarekin gehituta izan da. Jarraian aldatu dezakezu berriro." + +#: contrib/admin/views/main.py:400 +#, python-format +msgid "Change %s" +msgstr "%s aldatu" + +#: contrib/admin/views/main.py:487 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "%(fieldname)s bat edo gehiago %(name)s an: %(obj)s" + +#: contrib/admin/views/main.py:492 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "%(fieldname)s bat edo gehiago %(name)s n" + +#: contrib/admin/views/main.py:524 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" arrakastaz ezabatua izan da." + +#: contrib/admin/views/main.py:527 +msgid "Are you sure?" +msgstr "Ziur al zaude?" + +#: contrib/admin/views/main.py:549 +#, python-format +msgid "Change history: %s" +msgstr "Aldaketa zerrenda: %s" + +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s" +msgstr "%s aukeratu" + +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s to change" +msgstr "aldaketarako %s aukeratu" + +#: contrib/admin/views/main.py:784 +msgid "Database error" +msgstr "Data base errorea" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Hitz ezkutuak ez dira berdinak." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Usuario izen hori erabiltzen ari da." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "Zure nabegatzaileak ez ditu cookiak onartzen. Cookia-k beharrezkoak dira sistemn sartzeko." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Kontu hau az dago aktibatuta." + +#: contrib/auth/forms.py:84 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "E-mail helbide horrek ez du usariorik. Ziur al zaude erregistraturik zaudela?" + +#: contrib/auth/forms.py:107 +#, python-format +msgid "Password reset on %s" +msgstr "Hitz ezkutu ezabatua %s n" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Bi hitz ezkutu berriak ez dira berdinak." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Zure hitz ezkutu zaharra ez zuzena. Idatzi ezazu berriro." + +#: contrib/auth/models.py:73 contrib/auth/models.py:93 +msgid "name" +msgstr "izena" + +#: contrib/auth/models.py:75 +msgid "codename" +msgstr "code izena (codename)" + +#: contrib/auth/models.py:78 +msgid "permission" +msgstr "baimena" + +#: contrib/auth/models.py:79 contrib/auth/models.py:94 +msgid "permissions" +msgstr "baimenak" + +#: contrib/auth/models.py:97 +msgid "group" +msgstr "taldea" + +#: contrib/auth/models.py:98 contrib/auth/models.py:141 +msgid "groups" +msgstr "taldeak" + +#: contrib/auth/models.py:131 +msgid "username" +msgstr "usuario izena" + +#: contrib/auth/models.py:131 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Beharrezkoa. 30 karaktere edo gutxiago. Karaktere alfanumerikoak " +"bakarrik (letra, zembaki eta '_')" + +#: contrib/auth/models.py:132 +msgid "first name" +msgstr "izena" + +#: contrib/auth/models.py:133 +msgid "last name" +msgstr "abizena" + +#: contrib/auth/models.py:134 +msgid "e-mail address" +msgstr "e-mail helbidea" + +#: contrib/auth/models.py:135 +msgid "password" +msgstr "hitz ezkutua" + +#: contrib/auth/models.py:135 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "Erabili '[algo]$[salt]$[hexdigest]' edo erabili hitz ezkuta aldatu ." + +#: contrib/auth/models.py:136 +msgid "staff status" +msgstr "Arduraduen egoera" + +#: contrib/auth/models.py:136 +msgid "Designates whether the user can log into this admin site." +msgstr "Usuarioak administrazio gune honetan sartu dezkeen ala ez izendatzen du." + +#: contrib/auth/models.py:137 +msgid "active" +msgstr "Aktiboa" + +#: contrib/auth/models.py:137 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Usuarioak Django adminiztrazio gunean sartu daitekeen ala ez. Desaktiba ezazu aukera hau,kontua ezabatu ordez." + +#: contrib/auth/models.py:138 +msgid "superuser status" +msgstr "Usuario nagusia (superuser)" + +#: contrib/auth/models.py:138 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Usuario honek baimen guztiak ditu, banan banan denak zehaztu gabe." + +#: contrib/auth/models.py:139 +msgid "last login" +msgstr "azken sarrera" + +#: contrib/auth/models.py:140 +msgid "date joined" +msgstr "erregistro eguna" + +#: contrib/auth/models.py:142 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "Usuario honek, eskuz emandako baimen guztietaz aparte, berari egokitutako talde bakoitzari emandako baimenak ere izango ditu." + +#: contrib/auth/models.py:143 +msgid "user permissions" +msgstr "Usuarioaren baimenak" + +#: contrib/auth/models.py:147 +msgid "user" +msgstr "Usuarioa" + +#: contrib/auth/models.py:148 +msgid "users" +msgstr "Usuarioak" + +#: contrib/auth/models.py:154 +msgid "Personal info" +msgstr "Informazio pertsonala" + +#: contrib/auth/models.py:155 +msgid "Permissions" +msgstr "Baimenak" + +#: contrib/auth/models.py:156 +msgid "Important dates" +msgstr "Data garrantzitsuak" + +#: contrib/auth/models.py:157 +msgid "Groups" +msgstr "Taldeak" + +#: contrib/auth/models.py:316 +msgid "message" +msgstr "mezua" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Sesiotik kanpo" + +#: contrib/comments/models.py:71 contrib/comments/models.py:176 +msgid "object ID" +msgstr "objetuaren ID" + +#: contrib/comments/models.py:72 +msgid "headline" +msgstr "izenburua" + +#: contrib/comments/models.py:73 contrib/comments/models.py:95 +#: contrib/comments/models.py:177 +msgid "comment" +msgstr "komentarioa" + +#: contrib/comments/models.py:74 +msgid "rating #1" +msgstr "puntaketa #1" + +#: contrib/comments/models.py:75 +msgid "rating #2" +msgstr "puntaketa #2" + +#: contrib/comments/models.py:76 +msgid "rating #3" +msgstr "puntaketa #3" + +#: contrib/comments/models.py:77 +msgid "rating #4" +msgstr "puntaketa #4" + +#: contrib/comments/models.py:78 +msgid "rating #5" +msgstr "puntaketa #5" + +#: contrib/comments/models.py:79 +msgid "rating #6" +msgstr "puntaketa #6" + +#: contrib/comments/models.py:80 +msgid "rating #7" +msgstr "puntaketa #7" + +#: contrib/comments/models.py:81 +msgid "rating #8" +msgstr "puntaketa #8" + +#: contrib/comments/models.py:86 +msgid "is valid rating" +msgstr "puntuaketa zuzena" + +#: contrib/comments/models.py:87 contrib/comments/models.py:179 +msgid "date/time submitted" +msgstr "data/hordua bidalia" + +#: contrib/comments/models.py:88 contrib/comments/models.py:180 +msgid "is public" +msgstr "publikoa" + +#: contrib/comments/models.py:90 +msgid "is removed" +msgstr "ezabatua" + +#: contrib/comments/models.py:90 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "Markatu kutxa hau komentario ezegokia bada. A \"Komentario hau ezabatua izan da\" mezua erakutsiko da bere ordez." + +#: contrib/comments/models.py:96 +msgid "comments" +msgstr "Komentarioak" + +#: contrib/comments/models.py:140 contrib/comments/models.py:222 +msgid "Content object" +msgstr "Eduki objetua" + +#: contrib/comments/models.py:168 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"%(user)s -k bidalia %(date)s -n\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:178 +msgid "person's name" +msgstr "pertsonaren izena" + +#: contrib/comments/models.py:181 +msgid "ip address" +msgstr "ip zenbakia" + +#: contrib/comments/models.py:183 +msgid "approved by staff" +msgstr "arduradunek onartua" + +#: contrib/comments/models.py:187 +msgid "free comment" +msgstr "komentario librea" + +#: contrib/comments/models.py:188 +msgid "free comments" +msgstr "komentario libreak" + +#: contrib/comments/models.py:250 +msgid "score" +msgstr "puntuaketa" + +#: contrib/comments/models.py:251 +msgid "score date" +msgstr "puntuaketa data" + +#: contrib/comments/models.py:255 +msgid "karma score" +msgstr "karma puntuaketa" + +#: contrib/comments/models.py:256 +msgid "karma scores" +msgstr "karma puntuaketak" + +#: contrib/comments/models.py:260 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(user)s -k emandako puntaketa: %(score)d" + +#: contrib/comments/models.py:277 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"%(user)s -k komentario hay markatu du:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:285 +msgid "flag date" +msgstr "markatutako eguna" + +#: contrib/comments/models.py:289 +msgid "user flag" +msgstr "usuarioaren markaketa" + +#: contrib/comments/models.py:290 +msgid "user flags" +msgstr "usuariaren markaketak" + +#: contrib/comments/models.py:294 +#, python-format +msgid "Flag by %r" +msgstr "%r -k markatuta" + +#: contrib/comments/models.py:300 +msgid "deletion date" +msgstr "ezabatze data" + +#: contrib/comments/models.py:303 +msgid "moderator deletion" +msgstr "moderatzaileak ezabatua" + +#: contrib/comments/models.py:304 +msgid "moderator deletions" +msgstr "moderatzaileak ezabatuak" + +#: contrib/comments/models.py:308 +#, python-format +msgid "Moderator deletion by %r" +msgstr "%r moderatzaileak ezabatua" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Hitz ezkutua ahaztu duzu?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Puntuaketak" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Beharrezkoa" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Aukerakoa" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Argazkia bidali" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Komentarioa:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Komentarioa aurreikusi" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Zure izena:" + +#: contrib/comments/views/comments.py:28 +msgid "This rating is required because you've entered at least one other rating." +msgstr "Puntuaketa hau beharrezkoa da, gutxienez beste puntaketa bat sartu duzulako" + +#: contrib/comments/views/comments.py:112 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "Komentario hau, %(count)s komentario baino gutxiago egindako usuario batek bidalia da:

      %(text)s" +msgstr[1] "" + +#: contrib/comments/views/comments.py:117 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Komentario hau usuario 'arin' batek bidalia da:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:190 +#: contrib/comments/views/comments.py:283 +msgid "Only POSTs are allowed" +msgstr "POST bakarrik onartzen dira" + +#: contrib/comments/views/comments.py:194 +#: contrib/comments/views/comments.py:287 +msgid "One or more of the required fields wasn't submitted" +msgstr "Beharrezko fitxategi bat edo gehiago ez dira bidali" + +#: contrib/comments/views/comments.py:198 +#: contrib/comments/views/comments.py:289 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Norbaitek komentario formularioa maltzurki eraldatu du (segurtasun erasoa)" + +#: contrib/comments/views/comments.py:208 +#: contrib/comments/views/comments.py:295 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "Komentario formularioak 'target' parametroa okerra zuen -- objetuaren ID okerra zen" + +#: contrib/comments/views/comments.py:259 +#: contrib/comments/views/comments.py:324 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Komentario formularioa ez zuen ez 'berikusi' edo 'bidali'" + +#: contrib/comments/views/karma.py:21 +msgid "Anonymous users cannot vote" +msgstr "Usuario ezezagunak ezin dezakete botoa eman" + +#: contrib/comments/views/karma.py:25 +msgid "Invalid comment ID" +msgstr "Komentario ID okerra" + +#: contrib/comments/views/karma.py:27 +msgid "No voting for yourself" +msgstr "Norberak ezin dezake botoa eman" + +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "python model class izena" + +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "edukiera moeta" + +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "edukiera moetak" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Adibidez: '/about/contact/'. Ziurta zaitez '/' karaktera hasieran eta bukaeran dagoela." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "izenburua" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "edukiera" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "komentarioak onartu" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "plantila izena" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "Adibidez: 'flatpages/contact_page.html'. Hau ematen ez bada, sistema 'flatpages/default.html' erabiliko du." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "erregistratzea beharrezkoa da" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Hau markatuta badago, erregistratutako usuarioak bakarrik ikusiko dute horria." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "flat page" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "flat pages" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "garren" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "garren" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "garren" + +#: contrib/humanize/templatetags/humanize.py:52 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milioi" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:55 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f bilioi" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:58 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f trilioi" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "one" +msgstr "bat" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "two" +msgstr "bi" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "three" +msgstr "hiru" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "four" +msgstr "lau" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "five" +msgstr "bost" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "six" +msgstr "sei" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "seven" +msgstr "zazpi" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "eight" +msgstr "zortzi" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "nine" +msgstr "bederatzi" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "today" +msgstr "gaur" + +#: contrib/humanize/templatetags/humanize.py:96 +msgid "tomorrow" +msgstr "bihar" + +#: contrib/humanize/templatetags/humanize.py:98 +msgid "yesterday" +msgstr "atzo" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "NNNN edo ANNNNAAA formatoan idatzi posta kode bat." + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 +#: contrib/localflavor/pe/forms.py:51 +msgid "This field requires only numbers." +msgstr "Data honek zenbakiak bakarrik behar ditu." + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "Data honek 7 edo 8 digito behar ditu." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "CUIT zuzena idatzi XX-XXXXXXXX-X edo XXXXXXXXXXXX formatoan." + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "CUIT okerra." + +#: contrib/localflavor/au/forms.py:16 +msgid "Enter a 4 digit post code." +msgstr "4 zenbaki posta kodean idatzi." + +#: contrib/localflavor/br/forms.py:21 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "XXXXX-XXX formatoan zip kodea idatzi." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefono zenbakiak XX-XXXX-XXXX formatoa behar dute." + +#: contrib/localflavor/br/forms.py:58 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "Brasilgo estatu zuzen bat aukeratu. Hori ez dago aukeran." + +#: contrib/localflavor/br/forms.py:94 +msgid "Invalid CPF number." +msgstr "CPF zenbaki okerra." + +#: contrib/localflavor/br/forms.py:95 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Data honek gehienez 11 digito edo 14 karaktere behar ditu." + +#: contrib/localflavor/br/forms.py:134 +msgid "Invalid CNPJ number." +msgstr "CNPJ zenbaki okerra." + +#: contrib/localflavor/br/forms.py:136 +msgid "This field requires at least 14 digits" +msgstr "Data honek 14 digito behar ditu gutxienez" + +#: contrib/localflavor/ca/forms.py:17 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Posta kodea idatzi XXX XXX formatoan." + +#: contrib/localflavor/ca/forms.py:88 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12 +msgid "Enter a zip code in the format XXXX." +msgstr "zip kodea XXXX formatoan idatzi." + +#: contrib/localflavor/ch/forms.py:64 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:29 +msgid "Enter a valid Chilean RUT." +msgstr "" + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:31 +msgid "The Chilean RUT is not valid." +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 +#: contrib/localflavor/fr/forms.py:15 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/de/forms.py:41 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "Araba" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Gupuzkoa" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "Errioxa" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "Nafarroa" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "Bizkaia" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Asturiaseko printzipadoa" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "Euskal Herria" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "Canaria uharteak" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "La Mancha-Gaztela" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "Gaztela eta Leon" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "Katalunia" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Nafarroako komunitate forala" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "Valeciako komunitatea" + +#: contrib/localflavor/es/forms.py:19 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Kode postal bat idatzi hurrengo formato eta tartearekin: 01XXX - 52XXX" + +#: contrib/localflavor/es/forms.py:39 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "Telefono zenbaki bat idatzi hurrengo formato batekin: 6XXXXXXXX, 8XXXXXXXX edo 9XXXXXXXX" + +#: contrib/localflavor/es/forms.py:66 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Idatzi NIF,NIE edo CIF zuzena." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF or NIE." +msgstr "Idatzi NIF edo NIE zuzena." + +#: contrib/localflavor/es/forms.py:68 +msgid "Invalid checksum for NIF." +msgstr "NIF kontrol kode okerra." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIE." +msgstr "NIE kontrol kode okerra." + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for CIF." +msgstr "CIF kontrl kode okerra." + +#: contrib/localflavor/es/forms.py:142 +msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Mesedez idatzi banku kontu zenbaki zuzena XXXX-XXXX-XX-XXXXXXXXXX formatoarekin." + +#: contrib/localflavor/es/forms.py:143 +msgid "Invalid checksum for bank account number." +msgstr "Banku kontu zenbakian kontrol digito okerra." + +#: contrib/localflavor/fi/forms.py:28 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/in_/forms.py:14 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:17 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:18 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/it/forms.py:14 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:43 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/jp/forms.py:19 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/nl/forms.py:21 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:52 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/nl/forms.py:78 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/no/forms.py:33 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/pe/forms.py:24 +msgid "This field requires 8 digits." +msgstr "" + +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:39 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:40 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:72 +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:73 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:112 +msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:113 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:156 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: contrib/localflavor/us/forms.py:16 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:54 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/za/forms.py:20 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:54 +msgid "Enter a valid South African postal code" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "nondik berbidalia" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "Hau 'bide' absolutua izan beharko luke, dominio izena kenduta. 'Adibidez: events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "Nora berbidali" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "Hau 'bide' absolutua (goian bezala) edo URL osoa , 'http://'-rekin hasiz, izan daiteke." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "berbidali" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "berbidali" + +#: contrib/sessions/models.py:46 +msgid "session key" +msgstr "sesioaren giltza" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "sesioaren data" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "amaiera data" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "sesioa" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "sesioak" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "dominio izena" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "erakusteko izena" + +#: contrib/sites/models.py:37 +msgid "site" +msgstr "web gunea" + +#: contrib/sites/models.py:38 +msgid "sites" +msgstr "web guneak" + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Balore honek, letrak, zenbakia eta '_' karakterak bakarrik eduki ditzazke." + +#: core/validators.py:76 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Balore honek, letrak, zenbakia eta '_', '/','-' karakterak bakarrik eduki ditzazke." + +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Balore honek letrak, zenbakiak eta '_','-' karatereak bakarrik izan ditzazke." + +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "Hemen letra maiuskulak ez dira onartzen." + +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "Hemen letra minukulak ez dira onartzen." + +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "Komaz bereiztutako digitoak bakarrik idatzi." + +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "E-mail norabide zuzenak idatzi, komaz bereizturik." + +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "Idatzi IP zenbaki zuzena mesedez." + +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "Balore hutsak ez dira hemen onartzen." + +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "Zenbaki karaktereak bakarrik onartzen dira hemen." + +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "Balore honek ezin daiteke digitoz bakarrik osatua egon." + +#: core/validators.py:128 newforms/fields.py:151 +msgid "Enter a whole number." +msgstr "Zenbaki bat idatzi." + +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "Karaktere alfabetikoak bakarrik onartzen dira hemen." + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "Urtea 1900 edo haundiagoa izan behar du." + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "Data okerra: %s" + +#: core/validators.py:156 db/models/fields/__init__.py:509 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Data zuzena idatzi, YYY-MM-DD formatoan." + +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "Hordu zuzena idatzi HH:MM formatoan." + +#: core/validators.py:165 db/models/fields/__init__.py:583 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Idatzi data/hordua zuzena YYYY-MM-DD HH:MM formatoan." + +#: core/validators.py:170 newforms/fields.py:402 +msgid "Enter a valid e-mail address." +msgstr "e-mail helbide zuzena idatzi." + +#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432 +#: oldforms/__init__.py:687 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Ez da fitxategirik bidali. Baiztatu ezazu formularioren kode formatoa." + +#: core/validators.py:193 newforms/fields.py:458 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "Bidali irudi zuzena. Zuk bidalitako fitxategia ez da irudi motako edo akatsa du." + +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "%s URLa ez da irudi zuzena." + +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Telefono zenbakiak XXX-XXX-XXXX formatoa eduki behar dute. \"%s\" okerra." + +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "%s URLa ez da QuickTime bideo zuzena." + +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "URL zuzena behar da." + +#: core/validators.py:230 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"HTML zuzena behar da. Erroreak daude:\n" +"%s" + +#: core/validators.py:237 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML okerra: %s" + +#: core/validators.py:254 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL okerra: %s" + +#: core/validators.py:259 core/validators.py:261 +#, python-format +msgid "The URL %s is a broken link." +msgstr "%s URLa ez dabil ondo." + +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "U.S estatu laburpen zuzen idatzi." + +#: core/validators.py:281 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Kontuz ibili! %s hitza ez dago hemen onartua." +msgstr[1] "" + +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Data hau '%s' data berdindu behar du." + +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "Idatzi gutxienez data bat." + +#: core/validators.py:316 core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "Hidatzi bi datuak edo utzi biak hutsik." + +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Data hau idatzi behar da, %(field)s %(value)s balorea badu." + +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Data hau idatzi behar da %(field)s %(value)s balorea ez bada." + +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "Errepikatutako datak ez dira onartzen." + +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Balore hau %(lower)s eta %(upper)s artean egon behar du." + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "Gutxienez %s izan behar du." + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "Balore hau %s baino txikiagoa izan behar du." + +#: core/validators.py:427 +#, python-format +msgid "This value must be a power of %s." +msgstr "Balore hau %s-ren multiploa izan behar du." + +#: core/validators.py:437 +msgid "Please enter a valid decimal number." +msgstr "Idatzi zenbaki dezimal zuzena mesedez." + +#: core/validators.py:444 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Idatzi zenbaki dezimal zuzena gehienez %s digitorekin." +msgstr[1] "" + +#: core/validators.py:447 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Idatzi zenbaki digital zuzena, %s digitorekin gutxienez alde osoan." +msgstr[1] "" + +#: core/validators.py:450 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Idatzi zenbaki dezimal zuzena, %s digitorekin dezimalean." +msgstr[1] "" + +#: core/validators.py:458 +msgid "Please enter a valid floating point number." +msgstr "Idatzi zenbaki erreal zuzena." + +#: core/validators.py:467 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Ziurta zaitez bidalitako fitxategia gutxienex %s byte tamaina duela." + +#: core/validators.py:468 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Ziurta zaitez bidalitako fitxategia gehienez %s byte dituela." + +#: core/validators.py:485 +msgid "The format for this field is wrong." +msgstr "Data honen formatoa okerra da." + +#: core/validators.py:500 +msgid "This field is invalid." +msgstr "Data okerra." + +#: core/validators.py:536 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Ezin daiteke ezer lortu %s-tik." + +#: core/validators.py:539 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "%(url)s URLak content-type okerra itzuli du: '%(contenttype)s'." + +#: core/validators.py:572 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "Mesedez itxi itxigabeko %(tag)s elementoa %(line)s lerroan. Lerroa hasiera: \"%(start)s\"." + +#: core/validators.py:576 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "Texturen bat %(line)s lerroan ez da onartzen contextu horretan. Lerro hasiera: \"%(start)s\"." + +#: core/validators.py:581 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "\"%(attr)s\" %(line)s lerroan atribitu okerra da. Lerro hasiera: \"%(start)s\"." + +#: core/validators.py:586 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "\"%(tag)s\" %(line)s lerroan elementu okerra da. Lerro hasiera: \"%(start)s\"." + +#: core/validators.py:590 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "%(line)s lerroan elementu atributu bat edo gehiago faltan ditu. Lerro hasiera:\"%(start)s\"." + +#: core/validators.py:595 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "\"%(attr)s\" atributoa %(line)s lerroan balore okerra du. (Lerro hasiera: \"%(start)s\".)" + +#: db/models/manipulators.py:308 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s with this %(type)s already exists for the given %(field)s." + +#: db/models/fields/__init__.py:52 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "Badago %(optname)s izenarekin %(fieldname)s-n." + +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318 +#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746 +#: newforms/fields.py:45 oldforms/__init__.py:374 +msgid "This field is required." +msgstr "Kanpo hau beharrezkoa da." + +#: db/models/fields/__init__.py:418 +msgid "This value must be an integer." +msgstr "Balore hau zenbaki osoa izan behar du." + +#: db/models/fields/__init__.py:454 +msgid "This value must be either True or False." +msgstr "Balore hau egia ala gezurra izan behar du (True/False)." + +#: db/models/fields/__init__.py:475 +msgid "This field cannot be null." +msgstr "Datu hau ezin daiteke hutsa izan (null)." + +#: db/models/fields/__init__.py:644 +msgid "This value must be a decimal number." +msgstr "Balore hau zenbaki dezimala izan begar du." + +#: db/models/fields/__init__.py:755 +msgid "Enter a valid filename." +msgstr "Idatzi fitxategi izen zuzena" + +#: db/models/fields/__init__.py:908 +msgid "This value must be either None, True or False." +msgstr "Balore hau hutsa, egia edo gezurra izan behar du (None, True,False)" + +#: db/models/fields/related.py:55 +#, python-format +msgid "Please enter a valid %s." +msgstr "Mesades idatzi %s zuzena." + +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "Bereiztu ID zerrenda koma bidez." + +#: db/models/fields/related.py:660 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Zapaldu \"Control\" karakterea edo \"Command\" Mac batean, bat baino gehiago aukeratzeko." + +#: db/models/fields/related.py:707 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Mesedez idatzi %(self)s ID zuzena. %(value)r okerra da." +msgstr[1] "" + +#: newforms/fields.py:46 +msgid "Enter a valid value." +msgstr "Idatzi balio zuzena." + +#: newforms/fields.py:123 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Ziurta zaitez balore honek gehienez %(max)d karactere dituela, %(length)d ditu orain." + +#: newforms/fields.py:124 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "Ziurta zaitez balore honek gutxienez %(min)d karaktere dituela ,%(length)d ditu orain." + +#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Ziurta zaitez balore hau %s baino txikiagoa edo berdina dela." + +#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Ziurta zaitez balore hau %s baino haundiagoa edo berdina dela." + +#: newforms/fields.py:180 newforms/fields.py:209 +msgid "Enter a number." +msgstr "Idatzi zenbaki bat." + +#: newforms/fields.py:212 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Ziurta zaitez %s baino digito gehiago ez dagoela." + +#: newforms/fields.py:213 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Ziurta zaitez %s baino dezimale gehiago ez dagoela." + +#: newforms/fields.py:214 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Ziurta zaitez %s digitu baino gehiago ez dagoela puntu dezimalaren aurretik." + +#: newforms/fields.py:262 newforms/fields.py:723 +msgid "Enter a valid date." +msgstr "Data zuzen bat idatzi." + +#: newforms/fields.py:295 newforms/fields.py:724 +msgid "Enter a valid time." +msgstr "Ordu zuzen bat idatzi." + +#: newforms/fields.py:334 +msgid "Enter a valid date/time." +msgstr "Data/Ordua zuzen bat idatzi." + +#: newforms/fields.py:433 +msgid "No file was submitted." +msgstr "Ez da fitxategirik bidali." + +#: newforms/fields.py:434 oldforms/__init__.py:689 +msgid "The submitted file is empty." +msgstr "Bidalitako fitxategia hutsik dago." + +#: newforms/fields.py:496 +msgid "Enter a valid URL." +msgstr "URL zuzen bat idatzi." + +#: newforms/fields.py:497 +msgid "This URL appears to be a broken link." +msgstr "URL hau ez dabil ondo." + +#: newforms/fields.py:559 newforms/models.py:317 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Aukera zuzen bat aukeratu. Aukeratutakoa ez da zuzena." + +#: newforms/fields.py:598 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Aukeratu aukera zuzen bat. %(value)s ez da zuzena." + +#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:377 +msgid "Enter a list of values." +msgstr "Balio zerrenda bat idatzi ezazu." + +#: newforms/fields.py:752 +msgid "Enter a valid IPv4 address." +msgstr "IPv4 zuzen bat idatzi." + +#: newforms/models.py:378 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Aukera zuzena aukeratu. %s ez da zuzena." + +#: oldforms/__init__.py:409 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Ziurta zaitez textuak %s karaktere baino gutxiago duela." +msgstr[1] "" + +#: oldforms/__init__.py:414 +msgid "Line breaks are not allowed here." +msgstr "Lerro berriak (line breaks) ez dire onartzen hemen." + +#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Aukera zuzena aukeratu: '%(data)s' ez dago %(choices)s hartean." + +#: oldforms/__init__.py:745 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Idatzi -32.768 eta 32.767 arteko zenbaki osoa." + +#: oldforms/__init__.py:755 +msgid "Enter a positive number." +msgstr "Zenbaki positboa idatzi." + +#: oldforms/__init__.py:765 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Idatzi 0 eta 32.767 arteko zenbaki osoa." + +#: template/defaultfilters.py:691 +msgid "yes,no,maybe" +msgstr "bai,ez,agian" + +#: template/defaultfilters.py:722 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "" + +#: template/defaultfilters.py:724 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:726 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:727 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "gauerdia" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "eguerdia" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Astelehena" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Asteartea" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Asteazkena" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Osteguna" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Ostirala" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Larunbata" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Igandea" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "Astelehe" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Astear" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Asteaz" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "Oste" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Osti" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "Lar" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Iga" + +#: utils/dates.py:18 +msgid "January" +msgstr "Urtarrila" + +#: utils/dates.py:18 +msgid "February" +msgstr "Otsaila" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "Martxoa" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "Apirila" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "Maiatza" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "Ekaina" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "Uztaila" + +#: utils/dates.py:19 +msgid "August" +msgstr "Abuztua" + +#: utils/dates.py:19 +msgid "September" +msgstr "Iraila" + +#: utils/dates.py:19 +msgid "October" +msgstr "Urria" + +#: utils/dates.py:19 +msgid "November" +msgstr "Azaroa" + +#: utils/dates.py:20 +msgid "December" +msgstr "Abendua" + +#: utils/dates.py:23 +msgid "jan" +msgstr "urt" + +#: utils/dates.py:23 +msgid "feb" +msgstr "ots" + +#: utils/dates.py:23 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:23 +msgid "apr" +msgstr "api" + +#: utils/dates.py:23 +msgid "may" +msgstr "mai" + +#: utils/dates.py:23 +msgid "jun" +msgstr "eka" + +#: utils/dates.py:24 +msgid "jul" +msgstr "uzt" + +#: utils/dates.py:24 +msgid "aug" +msgstr "abu" + +#: utils/dates.py:24 +msgid "sep" +msgstr "ira" + +#: utils/dates.py:24 +msgid "oct" +msgstr "urr" + +#: utils/dates.py:24 +msgid "nov" +msgstr "aza" + +#: utils/dates.py:24 +msgid "dec" +msgstr "abe" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "Urt." + +#: utils/dates.py:31 +msgid "Feb." +msgstr "Ots." + +#: utils/dates.py:32 +msgid "Aug." +msgstr "Abu." + +#: utils/dates.py:32 +msgid "Sept." +msgstr "Ira." + +#: utils/dates.py:32 +msgid "Oct." +msgstr "Urr." + +#: utils/dates.py:32 +msgid "Nov." +msgstr "Aza." + +#: utils/dates.py:32 +msgid "Dec." +msgstr "Abe." + +#: utils/text.py:127 +msgid "or" +msgstr "edo" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "urtea" +msgstr[1] "" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "hilabetea" +msgstr[1] "" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "astea" +msgstr[1] "" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "eguna" +msgstr[1] "" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hordua" +msgstr[1] "" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minutu" +msgstr[1] "" + +#: utils/timesince.py:46 +msgid "minutes" +msgstr "minutuak" + +#: utils/timesince.py:51 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:57 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:404 +msgid "DATE_FORMAT" +msgstr "DATE_FORMAT" + +#: utils/translation/trans_real.py:405 +msgid "DATETIME_FORMAT" +msgstr "DATETIME_FORMAT" + +#: utils/translation/trans_real.py:406 +msgid "TIME_FORMAT" +msgstr "TIME_FORMAT" + +#: utils/translation/trans_real.py:422 +msgid "YEAR_MONTH_FORMAT" +msgstr "YEAR_MONTH_FORMAT" + +#: utils/translation/trans_real.py:423 +msgid "MONTH_DAY_FORMAT" +msgstr "MONTH_DAY_FORMAT" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s arazorik gabe sortu da" + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s arazorik gabe aldatua izan da." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s ezabatua izan da." + diff --git a/django/conf/locale/eu/LC_MESSAGES/djangojs.mo b/django/conf/locale/eu/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..b3e94ad711d682780941c50b0495cb7880c09c04 GIT binary patch literal 1575 zcmZvbzmFS56vqb$zf1@a!VifcJ&;a+gb+=XX%@{sBr{Q4(+t6#q-$F1Q0q+yy9cN>K9N0$;!xZi5o%D>wrma$SxzILa z55cCoP~Dkxr6#6e7W$uAQ7x3(RxX8RPb|8^rE~SZ$+S9T8`-aDUr&7{4A`eL>MXq} zXuvBvj8YKr0tLr88$z{Yv>NvCSwgOgbkun!$AxanKbFT!nGerA)8u%xy-l$$4gU$`BPFQOX#5oWmIiE$Ea!`BP@|?KVi~rv?Jg*lK3Yntn`NEw< zR{ixn1_V(PA0$h`Gz_J@bv!^HZaT(uG?jk9hQpevH^wgB(FB-)fI!AlFB;u E7a*8)Pyhe` literal 0 HcmV?d00001 diff --git a/django/conf/locale/eu/LC_MESSAGES/djangojs.po b/django/conf/locale/eu/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..dd5a8c02e6 --- /dev/null +++ b/django/conf/locale/eu/LC_MESSAGES/djangojs.po @@ -0,0 +1,117 @@ +# Spanish translation for the django-admin JS files. +# Copyright (C) +# This file is distributed under the same license as the PACKAGE package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django JavaScript 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-07-14 13:47-0500\n" +"PO-Revision-Date: 2007-07-14 13:41-0500\n" +"Last-Translator: Jorge Gajon \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Urtarrila Otsaila Martxoa Apirila Maiatza Ekaina Uztaila Abuztua Iraila Urria " +"Azaroa Abendua" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "I A A A O O L" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Igandea Astelehene Asteartea Asteazkena Osteguna Ostirala Larunbata" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "%s Erabilgarri" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "Denak aukeratu" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "Gehitu" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "Ezabatu" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "%s Aukeratuak" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "Egin zure aukerak eta click egin " + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "Denak garbitu" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "Orain" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "Erlojua" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "Aukeratu ordu bat" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "Gauerdia" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "6 a.m." + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "Eguerdia" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "Atzera" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "Gaur" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "Egutegia" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "Atzo" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "Bihar" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "Erakutsi" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "Izkutatu" diff --git a/django/conf/locale/ka/LC_MESSAGES/django.mo b/django/conf/locale/ka/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..44309162c018ca39f5267bdfc290b7120a3e522f GIT binary patch literal 76983 zcmeF42b^40+5d0ogx*mEE+JueCA&$eVF@8iI;4?ofPe_IyLWddnVngtBv}+G5fo4f z&4i{CKtT{iK~b@yqOZM+iX{|Zv0}p)Mc@DTcb;?al+11t%K!EKfBy5yo!=?XdD?kS zx#!-U{A};-ZVdQby-g6j1}yFy1OwX!!PlBq8U&Xd7X&wq3W7_){mAb>IS4wz@!&%6 zQt%+~+u%;%@4%VhbKue7loO2apvSj^O_bl`@jGA(`M-lZf@9ka$9p^m94|hg^h<-% z;|fsnZUwu*_kiNF(}_WFAb1qG19+Op#UN${%fMa1bA9=8P<$=`cLpy6rN^6n`P)FX zyV2L*P7`Fp{GsQ(BkKHmoS1b+&}zS~R*g6+WrLFsjf$8o-VJh&U>M}hl* z(?I#J6BOUKg4==Df@=RxQ2cHKrSBc!-r&6;T^M{Clpfy&W!F>SXz=&oF5vUv?%?(( zS^IrGz6KQkv7q=L>B}d9^4kgEA>b@;p=V@u1`%3rf$~pxU1S%I?>LqFVz>kGFyH@AaVcdlxAAcY>1l zASgXP3yS`Gp!og-l)b<9_5T3nk3FUtpI3qE_d`L+8w;vkD=0owK=GdregIquE&~4r zGNgiq9YN3sUI{7={|L&i9Z#`%dlmR<@=f4D;3?o?;OjxzaS14SSAeqTMqmFP@L=*^ z0>^+)gYwT#)A1R&CpZh71u}I6Z}<5xfHTSOG9w5kfv1CQ;2Q8O@WY_=*#)8lz$3tE z;8alZF9tQfuK_ha?gn2AJ`OU}f*lb`GMEmE&y}F$-w7@Te*((Rw%I1{RPYG$cYunY zuYk?qPeJw94s%S-t3k37gv^ZzVxEcw@g zE#Rf#IPhLjdVCv{UH=8jKjTkj4g+5g4uJQ7>hA+7+zuQI?gX}glfk1v$zK8P3|<26 z0A2;|2wn>=1#bdJgMR=O7k>xkuRZ6PokxNz$-0kb{^Y|brJ`aPk|BF8VEpRsZAA`GrV-{GvO$09@KMj=JPlNLBqoDfxC!py6 z04hHJ2`Y|uTWI4t1l4X5D1A=wIMtU=2j$Pxe0e9x5Dk`rOTb%v`5!#~1r)#MLHTJE zgI#{w5fq=@LD_WxD7rDA-C3aKgKK>G7eVR$HBj;N9Z=)x2cYEt1#AId09(N$7_=I9 zouKFkK=Hr8<7!ZHF9y~ADp37<9jJb})#vX46>krMdxH;w`-5KrHE(S6`Gax#k>rm7 zcL&c0MVAA`_X<#UuLb4r8$G_um)`|SkN1O;{~&k-_z2hrJ_8;N9@uGo=YcBk2F33> zQ1;#8^S6WIcP}V?9`NOlc>F3T|9=nM1AH3PIQ}bm2)HMMUF{}-`+`%!SAk1F*)srY z+^zDs29&&OK> zC&A0WG;{tFESO(t$jy)S6f$s<9pFPjv+cR&@6n*_I1t<$90#g?GAOwxgOWEJ z+y^`zTmVL(?0yhb|NI@C4W96NTNf?`$B_R7sPXqxP<);Q#rJpMLEv9O$=~ZdlYa=P z`bnVdKLM2gP5~wNbWnPhLFw}VD1E;KivKq}J_f4)o&cwSv(68K4}xnz>2owrmz)zo zjpq*VU~nENe=Y~bHw%ic1j>IGfogvxD0$a_qPxjs8I=F;0;huS2Q@x^1LFE%hc4zm zup4XxKM$S;{t282PDN>94pje^LD4+~9tQr>=XdHceUAs#ekph?xB)y8{2}-naN8&d z+QATH3J=Z!4+rlBRsT&;^uGnifd}^5xS0wn|3y&o^Ba&M7;N9i*apu5j{&a+KMZ~r zl%0is)B7FZ0p#BUYMgxvJPv#o6yK(_#m9W`2=asA@!&d8c7797zx)wo$ObQfbHSy{ zZQQ>blpcQr$AV2Otld2D5b{~@Q1I=b=D+(u`EeuI4DOjRKb!!npUwqmfwzK+vnRow z!J`H&9;SdhlAi{ud=9u1xES04JO|tk>;kt3`#cW#`U0qUy%5|Md%fAUSB?UhOo4`p~YrhPXU(N+3_oJZnc^FjtFMvma-vFiG-+le4oar$dl>ZI^ z<>v*U_$&i=1z!)+rNIhN{qkL~7u;pgGv3@akt$C7LQ}V>EuranNor^;ECWyPeu&!viJL- z^m-hW+^2o{GvF@dpY`~HFW;$P?e+jgzdyJa_-daY?{OlyJLSiK;y)c!KhE>{PM<#) zlpiBd_U1v!y#(9`d>g3tWl-|o2a4`KQ0*QDMgL_`^1cVkzfXdDfY12)=RvjKzG!;v z49ZV?f$GoKfa<5iJRa%mj|GpQd>SaaK2UNqp!665CGRbu{P}iJ`rZJF|7{-c2F3pY zpZ^pn{k{xJug5$-?(r9(?0O26yk|l2`zI(qJC&?{Z&3L|K=EnzI3AS0CxX&vGARFa z`0_=d^gRpQ8$1u(2h4+#cLgYWulKm#<87ei+zyKFy`ZzpYu%AfxNH6QM}()f<`*yeGv$5TAc^LU2G^F1yHC8r3A??s^GTQ2PH4lpp^H%HHQe@!4UO@!uO%yMsXa>oA``0#y6)pxR9Y z_XJM@MYjNyUQ56xFa?Uwl^(D0cq1q~ZUM#bPEhUd2IcqrK=F?D6;n zD7s&H{4*%M{soH9E~^=%qwop10RhW~Y~K0DMXZ6;H@ztc%HVfFtrx|MP0kJARpf62 z&j*_?Va^Ay1Sf&t0q26-U25~y0#NzuzyrX?J^sbxu9w+-HWt)+a~XIz_&HGP>(k(G z!T$#P!QZa2`;w(^wm7~R)I53}cp&%za4h&G@DS01CxN?MZtLq@P;@zuZv{0jH-KZn z4}pr4?}6g`Yw+#h4p*3cH-H`F9|eyAcY2GJp9E@LDe-c!?=Y4+XD^1R!;4I2d2PJ>0Hx1T zQ2toq^H+i5U-tR?LGgJM91lJLO5Z)MHh-Q1s(l|Qepi5^zZI0-AM@p31;uwGI05`4 zD7wSmX6;S_RldaI8c=*607ds5Q0;#YitoRC{a$p!iR34G%z(}0?*^skw?WNk+r7i= zKM>q;6!W0ZPrHUQNb1iA<)?>1wR;Ry-0rg0>jy3;zXX(Cp9ZDJPeHYN*5`M-*2Yl? zZcq7ZeSRV+|FnaOlSQERnb(2p_pgKEv;B3Z?-+12`Qt#@-vP?5b3w)F6`<(f4PJyj zp9FD9(0&7B6Z{gmn(|w2w0-Wr>ufxp3Thl&4^9U^21=h7z#KSrz1jBx@Hp~c2PJR2 zn`}RGFxXB0&0rt+D^U6^y4mDsKte5e9wbDAHMc+m?s}`?UqPml;AgklzWH_Uf**Q5 z3HDMxyX=lIf)9YWgaK%AaUD2^>?0sUKG@}UyAON^NEZjsf}aE5bcdZIPP>zPX7bmA zkBR<0K`?g*giM{yU0HXz79O#UYoy);A!L^08a=18=ME8{{A4i1bi2m1rNQCJp=d-@WbHY zA7F0}{s2_Jz4wC_7heVC_aA_lf`0-v?u++ZoV*X*oBVe?J`J8ZigQa}zX;|X)DM9t zf)9i8@87_s&`o>5`u&{`T0DOcl)R67{646-_#>#e9{mxk55c|3Px1MMKEDFokMcKx zdw@6i{GH%ofEv%g0j0-tzJAwFnx5l8LM)gJ{sY|T%YXVQTc4i=)$X4j_xZHt zTfqG(KN)-tcm^oB1yFL|2A&7r>hmvv^4qSTF+Uv&ihd3_4orb(WA|Hp{S%+H``}$Z zXY$SgcZKc(Q1jcHz(c?{`}#Y;uaW;a_y~9fUy?WX^QO=1JZ8W}l)n*F{nx?e;4i>) z!PCBA@%TP)XYzjnrRNKv==b}gtz*rg@@ImoUk)A)t^uXjU7*@O3Qh;V1!|q#_fh6Z z@EmX@csQ9p@MiERaGNjN_&636pH<*);5$Ldxf47H{1m8u{gKZ<1xkMKAGQw~3-*(} z9K0I*Jva@#@GIOif)9hO;H$rC`B(Qg4g=;FM+c67vOQ=pTTDEwK)A$ za0z%C_%85B@YkU1+5hV{f6WE89^MB^&gVS-*yEqUNtEyU4fF3*Fi(B}yaD_L_*1a- zO~yXB~qJLD@6zDbr^vC_R^h^8b~f#_z+R;^3>Grh?*sw$BfNuNlSpD|j>IAO0<84dmzl&g?t<59WuX z!9%H^2hIUA;LhMjz&*gvfYSGy;I`n?p#1lY$8DZ9eGdXf*XHvxz_*Y;6FeLIIru!- zPVoK^Jmya(Z`VI_=1hJmcpA9FU#xsFIFbA<;4JWKU=z5{U+wOy%T&A`jh{~oJRTK!6^5f=3-F#y$>vbzX0C|o-t~av-7*)1>_IiW|W)% zt_80p|2(L8y?WbGZe9435dH^lH!66D@~PX8a&hn+cmw(O?l8*PeIlFd*O9*)Tmo*t z(3Q2#yBd4ekow8e`N?E(Eal(y_!n?8`B&{VD!3e64DJU$21@VWgU&9D z>>)o9)VR43+yi_Nl%8Jz4@d5EV4nP|_Z{W#U)~NnJNGj^-wiIN{$WsZcHe)L+ZT)l zw3fwNyd%FS!RL8IJyIt^4mJp{_$uYl@@Cqe1=EU5Wr2POyk;aE^~uLsp`6(~Kg z0_TI*g0lDL9-je^C;w+~9C#$1qy9P_RDTVC;&%-w{&$0t_ieBp3=T1UPXzZN`vy?_ zuK~sHCh!>WGoaf41v~&e_)w!e7L@#xLGfMX%ijx%-~FKM_yQ=qe+Y{1DNy|P2}ikg z=mc;L`3MxOb9j?aPe!#6<1 z@e`o@weMIfp9ji6=Yygz`1~cH-x4wnq3{B@|T0^$IpXW z2mb*oZVn%BI2}|Rbb~G6MWF1v3mgUNbM`jO+gzGgPNwh-u2%B#=YI0tT!&HiD22cG z6~CcOAEqSt4#{2Mvs@2S_BU_>mpffgG=E-7r0N_%lL|AgHy?$z}3!mJ~aD+ zyZgGGNFU3k*wN>$2EhPy=TSZxJQ=)#@@}pk(*F$}1+sJpW4QD=9=iYJ`ZVcdL4CgO z@dEI(?dFm%le~=dEuQ8g@Dj@OIgD#1`Bzc@3-DGheM(&4b}9C-l+EMX8JcS- zo5ghi>DN5U%OfnVhM2UVTm z`_+I?59uGO&a!SlHq)o8;bv&`d7DA<{RYZ)M)yHquZsJ)QYr&W;E%a-q;CUH%3%Hq#|k(f{Z0kGefYfW4U-Rro{ z;aW+4CU`wKtE%lN(%K*E^SD8926X!D0{$2EeOzq6>^ze4Hp)K?ev~rpS+4*aeOjx^ z7m%LKrM3N+Rm5jeruq6a;5WH`Li#_e>X&<6_N45s)F0sM#`$t(|HGHXkn)LBJnm1s z!#(}ur1g1|$4`)cpHKe>_}@N#y~i~8U9QQ{E%#+Nk^UU%tGEV8uYfnpRnQOiaqZ6a zA@c8_PJ8}8lGbMxIE%W~q@VF+$CF=1esAz;5%C#C`t_C!E+jq3rOz*Y8>MgOdMEiu zz-7K(<)8I5V<~10j^{k2-vCd2x#3+d-98)Tu|fh+#}p1Mmt?W-s} zhPs2ue~)Vo>D{9Ii#a;nSq`Iga|V;8iZiy*2rLNiXMm8#KS-Dp2-ma63?+ zNd`gA^Uyxv^Q2XMuBW+%{NFv@<&<5`bvkA9DC-5!0T+XfK0_4l>MIWN{FGhj(|`5t zrjc(Uy#$;~{cLbD*ILqlqI?feH9c_PIp9*4vuCABZlFHvX|5)(J!AYin)1`g9O!vJ6jy+EbDc;1w%{(l zJOlog>&>42!_?2cp2BnxPHNPK6Sm|5co}SBB;+^9#_!jYvgz4+K==_l%FXAKHG6U#`P)6&j+6b z?*coa`50+^w&yyYYp&;~vJ1H~)W3u4Hqx&FzY69&%}E|_QaP7Ctp>q8hE*PpAAlq}M~c0lX3%$2ErQ{aj~JHi7Fj(i6FMB(2XMx&Fnq zfa^}KH*wv{rO!XP-U{E>flqS1n)J_UtIv4`!S3W|liq{6xA?NRQ}zt$-M}VrJh+dq zJKN(IC_9BV`b_6Kk#r~6MR~U`e~z?1@8tS5>92z~tAI}tnky|CJV4#PT-#E%kg}t} zZ-5hheKjnD?xPf}hUO{o4)W8v;?EyQyq3DVDLaYuyL{adlr?dEqKfuX@_&M6kg~Us zzKW~Fwb0Z2CT3cNW2qZ}<|*(7%I^b5SJfXxdI{H_&>Zaf#MSdCJBqT`Q1B3V3z+vb z50l=3s~MX2P?jgH&qjk_ji-A(^*8$Tc+zXA@8>#>vQ^-ozV3~_-9O2X=IVg56RSAXs$KbrcBC@fZ0{EPB!xxU1;1J^&eR`~kcNpHvX1lMBPzK`-# zxu%iVXCH8gtL*bv*rYn^nALjC5KHb+}Z0*jZyP=Gmq_RC> zs;4JR7dLI)7B0xG634JRl^tD(GEp~Fw5-x0?9Jx}!c=xB98C2^Xz2(F>0;Ct(!3av zPZh&LZXgPCy{arkqpR8%!hCc=DV>j;91Q4+!jW?XZsSj@K+#)P@7dLe>H zKqYKaSzNL*l}Y1e$kJWt-xfB{6CM4TFBZa8>0*Bf8<&MoTT3uz$~Y|PYbi|KELX@j z&kwarnap|ls8Grj&+E>WvPIM@=I~Z9t~r|;KwA>IuI2PFHBO~sKl-D`(4cHdW%5y~ zXDEzT4ki)&>JoHzog#yMQ6ZSpfAmy^ zT%mo+1d^ktlrltNM>su~FJ)6C==z2+H;^tADpL8rR4M4_E~;xfdU|w)NzA!S!Ig=(5)swJQAZ}l zq*DaDQr!_f-;v4a3VRs#w8#uZ`7~b0_7DICm&#>_26Cl>)3Tr`OMS4CDF~_|*DmN7 z91O?hUFY;N3ebiw%3c`3x1&@*gM5FkCqmJrcy2aZRZ2(%9r;vOx?9jElk%yRsNv@? zO(!Rl>x;4ka>VFgGMHlS=?^*>LS4C)(fE)lAj~0^0muMylT$KxrowEr3WsNVa;xw` zp;*F5tS$ACEA^EMIAmoylL}5r^`w^PE)+)D)-y{{p1>ODit>Fb$_#0M4&chO=Fe-# zpA=>Y#dLQ#w~%4VS3$lz%H#;7Q&PIu3y5Bb@~9PM zyGpVvpSm!eNv9B+j|S+ZQ%adW>7-P?FINbr6DbTRuqS;X-`P}tC^499G1Vm#rl(jI zGMSu9q%-sZYv8f(pV_0%H?}vs^Rig&DuS!jfUy{kz2GGTV1);TEi4OtXKG$g5?ftKQR?~0j(Mvm*M;kHrA&_- zg87K)G+L<+7-F?y%5s|t4gcx+97};5Uy8EbG%Dp;u#1@?*j^ZQ_XjgNI%jsyoj>!u zSqm4>@91>-n)I1-JLjBd6iesL3uf3boI!tf5%3{{I+v%E-9@u4cWG9^s)8KDw3w7l zP}0@52Q#AXHhsDArbK!ml?k&Y4L`DM%%F5&o#)c=ekNXJ&+}_x)41lS(488Ldd`cN z-==VtbCInL+EVq1n>gg7jB~${vj5X$;`T17ZnuKC#YY>P{uF*4jPh@(AR9||MMELM&hE?` zJRnyk3|I9>ZZ41xjwQ2nn922FBnmo7HX*tVWaE~Eb)%+HIAb|uGG{YtTevivY*^j+ za6v6Y6K8st5pC5iZKJ5w%9pwwsM9K#k?Srg+6hh7SLdqt#D%&l+bp4lw#dPZl02or zb9)zD%HrX+3+j`Ifj6U6B*JI54y4iz%n)&ldPv1ocnk{!9Tg7B>~8i*;$u~W2y=X|52Z@Ef-PR?lKTZW za;I=Fmdo}{wLQK~gi|K?!YT%CMy=$Loi1{};iuY~3i{lsrP~s^nv!9^B5?JbL-NdHZtPe0uv&G_u zc8EQ5o|W0T-K#`1_la$;;4n(gU9|F;c+RTVa>*+0Oe)gwo#JCKmnWp^Bu_f(=wpsO z?)WJa19e6E{m*VQ^uZBQE9M8X37_HR!bJ$d2)f4rm zIG*rakXGdWA=Sg&70imd+Vqt#ag#+N%CLEloZhT8+#8v|#D}=Kj|H7WJ-^SBdhNk1 zog1-*aXSdV1*MQ+u#cFrSpa2_>kGkElOHU>^K7F#FE-H|7FK(SKMT` zHmNSyAvV&E$(@F{RfuycdJreh%5adPBPRr9blZWJgW7z=d-_?qJd?KWbV^xGlPq=% zbUU1n0;>9Q+rk>B3Oj9sm7r$E&r zt8*UAgC(|bm&D$2Rz9tZ@Z!dqL{Dlcn4OB!8TOyExqW99iZL6^j8BM#&kY1o338Lcdj%DO^NDEYB@V8(&@p{g)4HYU`}el z-L}smMxs^09QH0WoMZRL!JHiTfE;pU!!g`AvK`2bac9)z7>ikMPzed$g?AIAIR=tD zdv={?`=u;X+8hp*gE^%rgZ2QoQ2@si?o43rqIek!=5o>jPY!J=h5O`Ne{4FpTKlr#{g}?Tqw9T z2mR(_!J<=>EmKmsXx64>>~PfFnz2~A^xa@@}+52j`eq(`Djp~kFZpzlT3!MO%3pM90>Kg z=MJ7{Pt7fv*lLjY&SO8wxm=_J3@^w!^VAYYSf^@IJB>3#h5BjzoGu2ZaYuqt90n~; z=a#2P6v9QR3`+&cB6|$#bZX=d^9l0QicRk2{EgJSOvDfj=D8bP4`He=#Q~biSOkOw zpik!Dlu5G`xM`v*pIb#x`pKKsqBq^g65*nNd)R1DJM!F$Gz&twNVhkfZe-o0=ZnYd z+#ttMj#~p{w9PV{>zNj9h+l<-C8^aMqFSa~d^mPssvXv>66bCBZeFP`7tCL{fCHBq z9n0cV7{+eYqa(9yFhAA990bIxo3o4iV3fiRZEh63mAf-;2s!QNJKfi|CC%(^tgaQ) zdWyz*=EM2SfAbmdY@#$NwVoMq9KbpJB4!YV6tm&{D8rBk*^^}A1L~@iV(n8nV$FOssY+&Qo}>aN^uy1>zngLzCx z8-6(GY`5Y!n&x=|wwMFJ$aTzMzh)B^uZsEKJ~_E`X&&%oRaRhYl3^(J=7L52iXwmNTAg8mS(J2iwT*L!}%R!W`Of@LN3xF zbX^m@D#Av^FEGiTK%?D7XdSta#b&KSEd{ox?1DPA>C=k=j7Wzq+C6PDf^C?L$Uw)z zF$WEd`bof8xb2MYXa@asJKimhg@_}0ZWxL}%MPrQubZ zp0;pCPRkU}B=xLvncf+4+k*QX3op`iAy&MG^6m0Uv4xi5EMz}+awfMcVi8ds=er*xJvqH_`LC9H;5SGZmG zcLD~j9a*+yaA#}K+uN_uLb2|C?txdO`&zk|r`x%gp=j06g~5`jkMkw;w3~KT|0Jb* zKfmAbWho8RG%*uD-M4dGjbTE^&U6{NdOoHZz;C-Mn{G$JG*-v1yFbTBYD-41j=qLx zV$>sWd1=j^DJJ73sBvP*vtmY4s-@5rvvIpwuf5*BTH+tjvjxf&(}V2%nGZS4V5-$< z(jg}#Y@79M+vz1yzRLw#l;>nKoT=yH;go1#YV)xZC$>zPKniMCXV1*5God4*o|jTG z1YAGw3$k;ygnuqMcZSRAmRqkZFo$G|t(whT6mp`b*G%TRbN4Mg1Xz;h0F^UXrkd%x zYhW5$qSpl7i9+T1?UGDxWoktrh}@W3lFKj#O8IQCM6V;d2W7-h-rdbGW7O={Vi(67 zaa_&GlWw)KV0Cfxn>oqo%JIrvk@H?2n)X;fm>29UMR!yoE0--3oKxg%qH1vpxruBp}MQLg8! z1ec|j*9t$Nog6?8@!UV;L6m56e>Az*A}IW5t>Xn~ii z+)b-{*;G$cwP3g>B>siQC_FRj;z)^DDdrH`R^6Pp$WYWRg%BL3Dqd@-c`8%;b_MG* z%e|iHY0;A(LjOtu%LRJ{t=jG^pF|UrZk}~X#|}}?$uN)f&S(7UX!35TZkKAq&^@-U zyhZ9ZBbyIC@sICwCCJ^tj&bJzEC#4sxdYQKV(ZAYVIW#~8B{0g{Bzrm_#R{gUN-e_ zg>ZLPGK{wB#`rB7URWCNMlgwWabp(O=;Xskc|)5Ukb9xAR~k^11{oa<)nYzkL*|~* z#uJEJ-;9}FkMz47qJgD43zH&U<+qhQW3cJ5Q`2KVqmGzj*7vify^7mZ#jEONQ+r~; z7>ifb(@VVQ-Kpn;df1cO!dAS?#A74pOQ)?{`BE&;xfSeN3C$H&86O9`DXb^mQ}tXa zjO>NKCQfm+k!#XXOq1RmXmWgOn)Y)nsYlTM)VYc2n1k;oR)Rdw;B;5n+Ui`CtR^mq zJ-y>66&R|T0^9+oyGxMw-Nb3?CWl|#L)c-Xzx7bG7FXrMrs{ooQ+zM%4TF7mzcCVR zyvrY!DjzXzy9pN4+^WeVxMEz!@iyCM^}HQ~yZNYU?aFcB%Kj;tdzhLF{qBu0&NO<{ zs}*?taA4quRnwna8+dA#=H$oqARbT`GFkKLr#p71{U%)rRs8N4Np_*Us=G37uX_+0 z`3@zM>MGwZ-u{WDR+I4rVXu^U`SYp1wv$d}HgKY!XIp zBE5!h=0=Gdt4-tBqB@2(`gkP^9P$w^ll{$7V-g0m?re+UB>(DBjhYE3$lNK>q)G9u z7o2IrO5@+_YRulh4U*j_;Y>?DjfzZ;ynP7X~J9E1xYECKQ+)y8C(gz)W}h3!Ob+4I#+T>jswHRS21I6ayeU;C>1NaQu|v^ONo=IkkiO)d>&Yi;NFgN+~FP0kT~ zX!={EF5hFGqUwsInG1osd$nn$GYEi?6GY90P7 zggZ9|N)@!r@8s2kY!2Yby}sImPHn{b&hW4>=*;uBi;ikI<&SUeI!lo9bl;Jc@+)+c zQ1!xBvsPr+v(-;5TY{x4cw5HZ_ASk>$nvH^u+%+oO!h~%(+RZ!aC-u6*ONz*TAF-F zXwqYhIdWU(bo^H0{+Z)A+bu0sU{#B+f2Y?!_*%+q8A~~rYdR;D>C2rv_M8I8DnNg< znnA@g$#dOai6zQSqf=60e?ICxX-vG~m@sClZK12SAZ&i7Oh`>_6XU%5(nwDd?MaFi z%~qB;WVG>Yn$}dAE8BuIIAlr}1orqSPGl=@zo?S)nmL{GYyZ@TzjWbzoEM{P!^4=% zNA07>IcAwu4@ZbSG%fL^vpsHeG%W^aYG-BVl>F^ZvHvjFANpGfy;96P>AYX_^lfciKzyGG24A9t7*$md9tjK+h4bUwhr32ek!fMs8AecY&If-3vEy zcf=dGx|>7=QnKG{b2m$s*_!7uQF^6Y1UTOE+c?DZ=;A0tQGRBWVcw0#D?zaHH$3jF zB3L%FWASOjIzCX~G zp8=_@c%0U$iA!^g%s~!aALtO;9sKYJK>Kg@_`SW92G6DUzCCWGbXp&395EJ zL2Yjbk^UAsNM4iiy4m9qU1IC)l#-sImU`5T`%hK5&_F! zYeC@CLjiw=&IO_Y6KF8NF@W~Hd|-0$QMpA^KYqmtCoN$Qv+b!?J4E=e7qq$UTP3i4zQE#riH z!L5?x=~`S5914%CDc7w}3%d%(j6{w|1N?VM_hZv$=Z zge%rID6;*D0{6G}fjh9}n^}za;R1Gjfuy)Eo4TA(4b6fTR{GZpoM;gh0v$`W2fXFJ z!hID2w|CW-l7;cv+;{@JD^i9TKoicQd`^EI-#WLa^$b|x`Sx&8$Mn-WX3q@In7Me# z+=UB9FLoz8t@8_g>7Le8N_~aa&RlyqdeOqp*6BKFr%~$+ywDyVHF4tP)`>^8PC7oE zbZq;?qmP_;%*2Thwl3z#Ow2u3rOuCKLV(RGm{8eSe#7S)vM^CpYyH%%>?QSbFfzC{4Pjp*Hmg|$2cFt;@ zT%nU@y-~h(rhkpBJ)GQ?E{@*xcP%!q*|2fV+Kp>&-MD7`#x-}l#0?wQTbP(5<5yZntb)bH~Otv{+A``uA*Hb7Ra+ zMI&i3dgGdRIo2i_Chw%_cv?wuz;q<@{*7yHa;4BWkgaBrqYJd~Jnw$uV+B(AX0uJ*a%F69UR+2G&^LkViR)%)z(H2J33dP}YQ~Qym|? zPr{h5Q}@vRHrSKG^Q7b^ryUhEZ|pMhq6Lnj#Rpu%3^NayC`wGer#2(+bNo%}+FAu_ zT#FgBBbt#Qk6Ks2qY|PBklxkK^U-rd8*$baj&aRkBj1dHlz@@3E>J zb1aQ|bV3aNGAqs1(x*mQl(5jD-lB&Va6~l(z#SeWkWG4ntfu)L0Oe%>=1Q5R){$iB zE101~5)0n;5!{AY_>E*I)h0{&jovC3B|q|_Bhs2*c!|x%5JCV82s`+%tNH1d*bSIQ z9V5m3FNIAbzVR4lo1-9F%WhB`x|RY&<|VpVz0A|SD*r;tY(+Eq9a8eJvAGaInj5UA zp|VbaVqNhk{Od1p#hp@MASWypthe`#R@08>aWTuCah}b3Bg^SgKkI zt-h;Ve-JsESCTHlSvIEeEsm^=`UdRWS+?UxbXx#yXp<_*Z{4^sfzxn}wfWdeg(Sdj z)c6bIc--FU0xD76j~a_6ZEa!^-Wozd6RQ~6kLWm4>2WHEn)M@9aO>cIStlL>Hq~0Z zXu6>FOCs_?Jp!A?6lh*{CYVB7N2K5DachAFPn9FAoFHjfPH@$gYuL&a9vr6)Rlo6L zv8R4W=6A@A3Eb!adQk%!^(nQUVhp=(v2Js7sYr|iE~hg!YVnx+wFh^$-Jn`O9W+kS zUmFHBKP04>iKo+YJQt(I+MsHFK=Ar-xOs}^3a&&;%+q#=0#cZ0`r2|q){nfT^Dw$H zOWL{)72be?Z;e&wnM#bm5))%QZV_$kp!zfxjRI~yF^jN`E~DO-0t-GZm}t1U$)zob z8`ta-jAdn6(8E(Gkzs0>TkfF9Ttj@wld*3VP1NCN$f@8P=b76o6?n3`8sDy?Pi;a< zS~nyrB!U~d$2_1I8%6^T42P+!>QrQ)9=!NA{}M8O6j+4~8k_WFA1zq_EI`z*K95k_ z+?3t8(!LrJ<7Mu%3N@q@ai%}K(2FJ54+E>iUr7v8tpN`cN{91_`Co3ah|*BEMx>JU z!I#33IUUKq*C0e}nQu$c;~2Uwa7q}BS~}?@D1laUL}QD&6M;8`1SouwPMWPpo)+f7 ziape@**6(j?7d_6GUQG3n`sCm)VBUW`u)xuezXU!x=gm2B*nruiS8dJQwlvt^_dIA$5X^!$XBS0oaI9v^E=$TLNccyKqE|tSrW@ut! zG&-Guv?EdW%ascrD2$IhV<{}aSx}ivNSFg4Rfp@>%WN54>;B9%R);$1%w+E?!kb3; zf(W+O#z~=MHozP+DW$dbP{ls&x~V{x%yxXPPa0M#@ht{YkM_4G^>9VH7l)9r>Ue=^ z%Ggz8;j2V*UrJjvr#GmO-LW^l@>HX|RVZpqvXxfyv_exG=A^|M%}hFZbcfb!Nu7BC znbeu{kg+~&c2BgeUHnUJBNNBJ+2-5W@3uLo!_dUzE;G@_GUbws66B4@=G+FhQ%zIC z!x;ER*2Cs7D15jWLoyUmM<***%_G+JRKTZFiehqGLWPHtzEMA#V<^41;!0O)Qbp6mvk=;d z(-sk5$O{Bq*^yA`j)?qW37to~B+RXwpsZ~E=^gxs-w8FoP0-plc*;A*-NHBN3&=Fp z+AzVBRNF`t3o6VKWZ6-aB0E-D6dWPAs2Wx=7Fa~UMV%3UuN~vJx|ETy z95|hss39@s@tN|9XwmAslZookTCLPSBb5xhs2JLwO|B|+o^0EFQ%l4wq1j< zTdOA4H8#>Iwgh^qJ8_M9jf%>xo3$uA0a&(V`EEvHB@1Z?uIM|3XhT@K| zOegjfULi`Y*Klq1!K}50-&%Pemms(7Si^)KriK=N(4Zd~njls&MGNFW!Z#|Cpn`TV zxIrGUK?qY?QMNwlX&Y!;7S3r;TPj!(E*~E*8y_x$*xMM3bo8+u#+E)qHnOy14dZ~e z6+mX2fl$H9Vow^@Z*O%*1_At`!3wLFZ(&ZU<*#qqTvM!-&}1#4wG?R7ZbBll0n-yH zLm!&oq%QEu*i<^z)Y7DdYthak1M#FA1hfckfDs>PL?erjbv6w(9()p=Fh-&UC5cK@ zRX5ZW?2psp_vIV@9%bww3rBQ@i48iw~|!(-)$$GaAW0^q|`s-QcV}H8NpJ z|Gn^*F_L z<|Rhc1J$#+4Ri*MTi>k{ZG@R`X-9&%7;a~QLr3Vgihrx;0`GDQJ`I$ru)Ut&B;~hM8Fw50`7Wsr!qQM9{l8<^f4lu*iycHgv-g2Oa(J0c5Pbiwa@Bh=KcipEXnQf@7s zEF{uEhL}dCa{UR0mfsgI2A)i#(ra@vumG~M)6DynCR^GyG<^@`_?y&-J%p3#7~;Zu z4To2{$C{%9qY=qeBz;)-7#ji@SwE|jkqs%blL`*&b>vD9Qc4|MX@Oini|MeB8rx7> zS1^Pu*jy-WxiYjyOvP#cqnaQbJ8guJHmxiOIqdwu=#mi?iDMck(P)+2P3^%&pG zarCjO*`3+X6uU8sg*ctjk6||AY~cFoMgxr2M7|;fwh+?<8U>2LiA54?4cy%W=*ll0 z$8k*kW&;t9fWyUjbZekCKQ{fZ9gjWT^%v#x7twAocO~hetxoGtm|XH z6KrhK);aFqMPu^}o~m{Z{?JNEc%UYum2dMJApt3)SutaNgbrVksb0Hpqm(%U23iDy zxC0uC!O0^GRdlgUi8|GK#VrFPDULRNbya_EdZt1VLeY+I2>GT(*+mPo6c@2kSk6X3 z*>E#I2|luoFoy|iIpV}n!7`Esw#f0Fn2#nhWosF2u5Vz82)M3e*UF)3Gg%NjGvVj;-$`W&~&I zN9J?|Blp-yigMIOB-lF zSxqy?=C~!J#%3v-4oTO0Dxt#_^uAw0>pZ0(q@gw$cAAYsBurN=v6@ad4c*4BvXQLr zqT?&Sx$h-Zes_O!7S{SJw(M^7fHz8^a78sT7+7`_hmAF>wt(O4`co^57iP9rIa_d% zkE#KkKf4F#hsWM(_dpxOm!vNK9t5({6{Qs3weG}1JYYRcP)#ndeD}z~pAfiM4 z{sN_Kpt2>9eCoEACH{7fetEs?xo)j8%r_%!<2E~HXin67N8lR_!&j9ZQ~ZBDu!bwl zG`-mW_&@<|DRZ|j3}$%HvcZ0Kvmz$Gg3N=FrgQ$Q2}D&aGfTr3^U^}f zM@!GheZ9pTjp4}5TyGKbtOkTU-+BN{&m<39=|2A1Qo99DU2V&Rw+I;DZgUC{9d-+& zjUv)*k)plnv|bC5#Ta@~X3Kn{l#N<~)$hVKC+;N}hs>>=m#Tb#V8)4^z1XCqtw6*7 z)x(V!zq&c&?fi{is2tP4i@Rj=H&WC$<|TR)=V@l6hzx|fQ+A!Gh2B;(yros#w*p|E z1c7Sg$6;00->&LU;2ZzvAx?%K3i+-j1t&5x*nOKel`RW8`jf`8BXQ5X%vH2RFXj*0 zFr(GCgdc85D%Othzmd4c$;kqO;AIx#IPdKsQBU@xugT*ZdVGeW>N~50mtt0vUp$>y zB-^tYRD)a{W78mgm2ki$RY0N^2?^?G>P$+hGzn!_0lD?@t^VB-*x1md3EHq_B4H)! zYHN$azBF)*i3WvH{R-%`WzvIIuSrskINHLrY$jU~zBXsc3!KA4UpdsFN#m&=O)-ve zG>^m4bh44)PZMw#6jZ1*G-HAK89~n`AcYg+)YSZ2aUMlZy2NZGQK!2^$sP#!W7zui-$RQfPgTQ(2ToGQ=52i_dcj}GW%`@7h70k_-*xw-L8VI()vM{iy#zYHeA8=+hom08_kfrh7 zkhD1o=JF{Sy<%{G3FbE2#wM@qBC4 z#@$be$jQ^|d~2q!^ACS*34GLZsh-;Xn7|LdW_~Kq@Of(kAJS@h1ieT@fB`JbEo|L(eppf-#?5(+r zFbB1bJ$hJhm7P@;&%u{ET1%kg1cj=xU7H$2%NlAa$3O|VME~y5qSiPeX9nlGe%+c_{AQ+TmhH?cwty|Cw zU1*TVbGM1mSb-?fCLu6$Hv~@W;kw@>tCrSiVvXRLY-zpc6Nl4+YTTPBL!#_j`kND~ z;bh^?cz~s#6zs)vtTGZbH7+6_#`3ggieqpte;Vmz5m}CHN7+HhV~Qbo5(! z^z-Hfu_GkUF(LHCA)K!N`^z!0V5EV{#Q|E9o3`LT2HUy@?tcv%mLKPH{(Wkj6!AMs zU=>r1so-44?|;YndX*?2UfoTCkUKE*_$@|doq|siy5?$)8w5yHowF(<*u;6Yt6bx@QRs;$5(oOA zuzppjY0YuC_)w-d?}!Lf?{M*uWcQ~DyAc-u?-t}SgI(g zq&LxxR+TV=3g&Q;#t=d;ez1d)rReSvdmKXOxA0vhlZOi4a9iJqRv$j7fK*g6b4V+J zhz5ifW)=uF9O^2(>k@;?jBDfo*bS}uSUqp+GOlnFD+`P zzyrFmP3C)(31?bt2$lnMFKr=Ii z^v#;<61S;yj14>}g&%gwnQ(>BLN%GKB@#lTf|+I~E842?LS@rRf{;Q8;TiR`|C@q% zXkZJ3*k(#WRJIm2a;Q+=oB|&?#T79NL1Ese5Q@5&>FPqK(rMBwbZnBrhzQ7GhMKaL zenbj9mA4MUA*3(>THUD_2hWHyN9Nu{!(-MM_I}h_*JCRDyie6f|DMKJP@DTP!SwZS z*;U)-=2|1eEKF9IW0e)*5*n-PEieBhd3Ywyz&CKUe!q_KX~O_olMNsLD3kz!m3q%f zt3z4L*aEt$w$oTKZgYKAS zKCQ$X7F4Ti)$x&TQbSub!7Y@K_JL{3F>1+l{_qBlEZ?y&E1uhV`lwH?E8+g zZm?LFAML(Rj6&yqBr}DW!_B*J@ajTtaZV4SXPF8sq7iy9>zVd)D-~p{$n{S=577#8 z6}4MqS|Z3;Qfxxi_r?Nx>1pzkNk;~SaVUBIBB9I{F(_fF8uOb*W6hw4(l>yD`vXm( zitpG9q#4^}VPlafW-k|;M9)N?O?P-&YX%{SlW+yPl@tHlJf%VBoLT8Ha|@kT2{>$p z18prv=x`+AHLRhv8`)NdC|XfNJ>+6)8BbZ)kZL;BGbLlGL;=6Jz!YB0qA=P$_!#~w58PmY*4&QT zCRqJJDePe4|5hG-(3769kg_n7aYPEOAcr+X1QCtAaY;25w_AweAj^meuPNtdW+f$vQP=@vE~d?wHjB}8c&E<2%cs|a=a-N2OSenZKAbp%RN z67ygqjqI*Co`(w>-LI?wMDasX{5C&0w)eq6UU#>sBNYi10Bj z&`2^&1smVhifnRhK=ZmNOVov@0@_%iE2KoTiE)2K(zu2uv@``FMp+GLN@;8kDLbZ> z*;|7YlWB$a+IYFnprOPkw^ytrY2XdZeN_%#Z*Jh^aRT>OK9HiixN+ zvzel96{+Y_Aq;Epl##<2sPLxRm>`HqOZ@zDveGQjSbwx(n@1m6r`5Q##)LXUQC9B6 zZT=W$i`j499Z6WCfQ<>2G%!JP2Z3l^dmI1Rh_gi7Rw`)8tc#N7YVU9=2((05(k8(N z1_qT~C?HXxM;@0{FOoRS<^w5Y9ceO*2x{7B4IzbM7Ekb$fGr}2*6Rurl!K4VCj(o2Fss{b;1SdsRhC_5Ko2+qR8te`faFd#mYVl}bpjd*wWYu4$M zVKOagpas=RDM~6}NfYh7?SEj7O(cHZBRmKpVM{hlH&9Jm`#r{2=4ZyxWE1ObeyMW@ z-7Fhf6m7<{*-b^3veRf9Sx{-bQI`xvd}9GNtWRH2sXj;*WQ{CN=Co=ne6QBTL}D&R z(|LSjaXB6YHpyr_(TEBt5bRyy$3-%lVXqp0q60NCKvyJFszSnrBME#e|Lar+VR9rX zfDEN z1WPhyuNzr08p5qB62BNNuor zfdNWVr-6WQfcc8NEv=-DIZ|2lv?0J6Z4itWEue*o+M0W0XJQvz-0k;ETZZ@<=qS_6 zFK5r4Q8_cvzG!pW#y|9|^Kr~9yYHH~pyb84t%e6X@E4^Y{&M@4m!u_qfif6pD*|&5 z+YoxoGp82YErjSSI)?u8+YwT1w9jFYXsn!t5)r)`Sq>Uk2CuA@l1 zO#qeAlyAQwt>5=Tf*Ixb&4;qMk)r{sRL*-SVq_8sI0C(}6ft!hVJsp5CDhcZHjg^n zefijinTbV^dnIi6(DnPhL@4~LchZd>VOESt)(wW*`!GVZJ#RtGuf89Vv4i#*oDlRfln@MVhpy1`>0JaqvuVvE|`ov$72+ zNabki5Du;KjxDzP-lLkXL_>8@7zY)j-88l#Rq1TVsW6wq9eLwW zdCAcDB2(iTm5@vkDOx~YJ(OsQJV;Gr?+A*_(xifF(um&zinj3RiHP))&HKnqc**-_ z9{N=LwHs}w%4f%H`D;Rs_ARd$fhnx=!!u*lN(AE=+pEBGPVP}16>`0g6 zvwt{vrWB#CiM0nz7;1$Cp?o#0)_!q;5v=*9m4E5XV#=#&{Qz$gP~j9LR63!)f&jrp zsP1&bn&82Xw-WfOsaaUMt=x9v^U7^7Z zAP**(NoyGLjV~xvbz&yQx^p}t2z}837Nq^Ssi!0l%S|5RT1+%hL>t&f#*eH!@~!L5 zDAFi}1t_RMYh#_W|0P8(99DKCU0*4E{#_Jtp3<&By%f*8#06P-^xwi=C-UFFYM+v7 z;lH#uO%sKQQT=jNcYiM39TnpLkZ6Qp@By!8ZeYRyTZx6B%mC=;83_HS@@P^yk za7r{VwfWeI6I-TCAhngPw~{<`f|5q&9!(Y$S=_L8o6_`xo6+K_2)#8;L1^O=izrGK zh7IOpZ)Y_Zs5FdeNUCgGlWOJNV(%_4ncyPkbX#b7w5S(%lHbS}Ks^c?Yrjlv*P{Mo|jW zjFxX~q#Dko`K~yM3N*#f)+f}}a8BxIVb;}D)6OW^cvyvqPzqtRuw}KP7nRs&TYuWs zJ~e<|Wm>=Er+Z=5&QMD&dFpA;kn<*J{Z|J#`8KOtO~OunW3J%adeZbL8%MiQp{P!0 zH`MiJLACF&2%BYO16?Spt{}Zwc47)Xlq+*>eT!GceF9l0^eH+e>2&%g_sif zN=J>hcq1Uj@TZkIj0*bG8hMk*Ae3*jjWpbBT%))3zPp!C6r`__MkQ>m@9K^@wnjUA zggkSPX-;doM80!ffv-@CB6NWiB2`#B^n_eaNmPx451Osf!)|u*0i3LZqoqRsHnBu1l12&cq!d=@i*4lbghgLvC{hP4M5v_OS{Roh^ee+=^+1}ip(%GL}^dx z1{XwXP7(DM4#P(+RO&=Wi#G@fG@&0Txt=;2N`b^%mO%pDW-4P0)uj2R9A$7a4A!3< zj2YLQDi-b0)vR(9L5LYpB^|ZN%96amj)CrdN!e$UP1z}AwwgB(;UkSwiqO}p zId*xu7$M%`!+NDMtC?&{5oz5_8Xcj)2|h&75L@LAYS54{fE*9t3hJy-LH6PlHqBsU zx5uznc)d7Y=45!mw2G1b+x7TAYjDO;2a)No=)r2D5)WXT`!719d{?ee)n+rjm)L+; zEa030D;u-fM89F^@N5zdHNldIt8-brFV*mJ7QtbC$d4gnA|{jLyJmnmPxJStjI&Zc z6W@-}7%FH@Jnd{&)HGtfPaQo@g}JRVztjr|tN$Z(nj2r6kZB8t^}1X1J9_&sXq(ys zr;-*h_-T4W5wnPvB=|OmsPjxCV~l5P)w(u3y_D`=(U~5IAhBr+LRt~n?8)E@9~{NP z{4xlOS84Qwzv;r{jQGC8---|9O`#m#-!s7guAjV8=D^`h_h z>Npig-K3aNPJL4VcJv43wif%Qi96u$6;=0nQ%F^8AcHT;$sl)KNeP22jvOPwt&}0g z+Vbs8X&?&vS3(j->Q7NB{bLg$ZXrk!h=T661p<63k6D=74AI!lG=a_{mUcGoyxp{e zC8a*LU3J+x8#-^Hc?o~v<|L*dqMBwJwD7kGK??1#!rw$oFDj+BH78>lQ$+jfz=0O- zZkaVIYeg|~p{1s>rK6h?#jO=an2l7?amp$T%dRal%@`fo+buAv^VhX)qdWzzKpDkrF8br1xDb9R*$AylpEZ~$>4Y&FR3@8>7I42!zT2V4=GuohiquB@> zX~^Vf-=?}BvkEwB?jXF}ANaX#w~ZF4bVT`Np{r(U$qzahP;WV-d8YS+E6Nl-OwdHzdZMnluUC7Io|p%84qs zhE6I1P!)9;7K!ohM?9SE&Sp~8lhG^S>sk%*3EDUZqnN3OIV9)+^P;9nLPPzJdnogN z5TbU@UADH%?br^PMs4l5Gg47dfg9)y98h-Ic!Gd6^|1G|tKN=*0=k-|y?Q_6+ABV+ zVeMvL!`OM7Z|i)t@I%(U*v*a^z7VTeRWnvk&W(9VRuFc%?Jn;MHpG&JKF2aqFK`$tM`NXxgB(WFir zGZP*z24I08xej_L<7wIP#6I|0U``UV7xZswe>W zm|xKZB!gs;gf~%$keDz?W(<&`h%~an7Ex@)mJI*GQb2hCQf0spiJ!=~&N_8(RdrRl z+YStv+&Yi_SbOb#&OKeXsu~cWXI-T{_TnpXWw z-3rtmnnSilUHB%#0Q88`Q8mr!cGbQh^iy8Ozhnx2mKki(q(8d5d#+@@q>oVu&^H~g z2zWpf&GiqA_v>FT57XPykDlH4)-@_d@jHV*emn=1iA0q9u^+GX@sh0MKg8d?y!LRHjs}*B?4ntjg*+h3%$*7^*kU1z58dIA)V2Qq z8EzQrO?NXgI-}fUK?NbvJR-8EER60@(h_mS8ZqTTD<;YNQ-oyhQ5Qqm;>kxrZFgE^ zT4#AYx(wBX35^^!xs2BK2}f>LqdT9TlJaAXRr&{UAlTh$z16|_xKu~XmM2V*k&dV# zO6)d-t`S}X{Brw@L0|57jheZO@=2&` zmt|&jt@h1gCLft#(Lval$r7;on8c20LOp=>Iz7vV|60t!U>|H2idnnWS5NjcfLGa+LED6L}dXV|>@% zaa5`GX+Vm#_=G1z0~O?xJA>KQ%$%WL9Fq`oH~g(2_Jf%1UARCvK(bdHpIzR0|LUVZ zJo@0QIx&gv zs^VzfGyXME6`G%z$P$LNyH>{}y%=7-Spx4toc(sn@u ze5J~qb})3B#o6aNEf`!orCsLDy~)tkeVZOGVA6JE;`&tZ9jnFSK!*Q4H0er7`|?G8JkshEQ5# z)zD0dj=3xY*)C?nH zGm_t?2oBHbQsNsfk!(0T&03Bc3LD6f^Y`BRu?O`@(x;rsPriXkDM%F_`(YZ33 zMDdmohBrRDdhJ6iF7Z9>d5f zYh^rdIki0afp=Nh48`8zTC90?lzL4OjH!!*a5<&kn!}e8$tK+5GQmP_d&`0`-;ik> z`?2C*K6>=Whxv4f5~X|OPGnRFvJ*c9OK8Pi(b|-|5*^>z1?Nkj+3b;mOzS25mDwt5 z2knS2F{LwKhRd^yjxtIY6Fdqq87YzVKq63#W_K~x`#ydRJ6H8B`iY6eOx-r9Z8&@7 z##n8cUG3+jazv~$uE9XPxt&2rdV%g=1p@%gN<^M z4FrtMxFTXXUKso|N-C#Zpyj25!(Q$wY- z-qa_F6tzBa79}heZzfI<6h^z67N4=uoVV6ni-1g%Pl6zAa!kR zRbx%KQR1yLo(n(e8Vam#N%M0m>xYHi$SXh+OF0F=o761(ofg|ud&Gj*h8u9F)@kB? zN!68%y?>^|;BJ4F`uCt4*Vq6|C?Sq`Lo)=(_5Sz=u=rd^TDaX4?;h8ba?qGCl;S>E zc+Ey8fZ?|OTSgP^<){mt5?-vbrV+iofZrCMUoNeT;o9t`RUmcUhno(*>LO-tB)Af& zgarhB>bFLji~FL2Pp7WKVOb#Lq{6Be)Y*XJt3qP;R|>9tXSrT}>rH?+1IYEc@1L3b!I`-qo|*g6nYkaInfu9^ zxu2TrEu$M2o-bPMUrVLMem%<#Z={iGyb$2E6Fl zOIW7buwBm`tBzY@mW|X<&XkaFCC7yU;Ut!_iJc97uX6fTpjWG$l|6B+ol+%OVP+KX zP19F8@W=*WIb5J^%ABD?tf^h%XM`ew>dUQAX=v(`v{%xGAUCg@+7S8fz2%nL*V48P z=~S((_Io_oY!&dXNKA)-l#1P\n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "არაბული" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "ბენგალიური" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "ბულგარული" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "კატალანური" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "ჩეხური" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "უელსური" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "დანიური" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "გერმანული" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "ბერძნული" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "ინგლისური" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "ესპანური" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "არგენტინის ესპანური" + +#: conf/global_settings.py:51 +msgid "Persian" +msgstr "სპარსული" + +#: conf/global_settings.py:52 +msgid "Finnish" +msgstr "ფინური" + +#: conf/global_settings.py:53 +msgid "French" +msgstr "ფრანგული" + +#: conf/global_settings.py:54 +msgid "Gaeilge" +msgstr "გალიჯური" + +#: conf/global_settings.py:55 +msgid "Galician" +msgstr "გალიციური" + +#: conf/global_settings.py:56 +msgid "Hungarian" +msgstr "უნგრული" + +#: conf/global_settings.py:57 +msgid "Hebrew" +msgstr "ებრაული" + +#: conf/global_settings.py:58 +msgid "Croatian" +msgstr "ხორვატიული" + +#: conf/global_settings.py:59 +msgid "Icelandic" +msgstr "ისლანდიური" + +#: conf/global_settings.py:60 +msgid "Italian" +msgstr "იტალიური" + +#: conf/global_settings.py:61 +msgid "Japanese" +msgstr "იაპონური" + +#: conf/global_settings.py:62 +#, fuzzy +msgid "Georgian" +msgstr "ქართული" + +#: conf/global_settings.py:63 +msgid "Korean" +msgstr "კორეული" + +#: conf/global_settings.py:64 +msgid "Khmer" +msgstr "ხმერული" + +#: conf/global_settings.py:65 +msgid "Kannada" +msgstr "კანნადა" + +#: conf/global_settings.py:66 +msgid "Latvian" +msgstr "ლატვიური" + +#: conf/global_settings.py:67 +msgid "Macedonian" +msgstr "მაკედონური" + +#: conf/global_settings.py:68 +msgid "Dutch" +msgstr "ჰოლანდიური" + +#: conf/global_settings.py:69 +msgid "Norwegian" +msgstr "ნორვეგიული" + +#: conf/global_settings.py:70 +msgid "Polish" +msgstr "პოლონური" + +#: conf/global_settings.py:71 +msgid "Portugese" +msgstr "პორტუგალიური" + +#: conf/global_settings.py:72 +msgid "Brazilian" +msgstr "ბრაზილიური" + +#: conf/global_settings.py:73 +msgid "Romanian" +msgstr "რუმინული" + +#: conf/global_settings.py:74 +msgid "Russian" +msgstr "რუსული" + +#: conf/global_settings.py:75 +msgid "Slovak" +msgstr "სლოვარური" + +#: conf/global_settings.py:76 +msgid "Slovenian" +msgstr "სლოვენიური" + +#: conf/global_settings.py:77 +msgid "Serbian" +msgstr "სერბული" + +#: conf/global_settings.py:78 +msgid "Swedish" +msgstr "შვედური" + +#: conf/global_settings.py:79 +msgid "Tamil" +msgstr "თამილური" + +#: conf/global_settings.py:80 +msgid "Telugu" +msgstr "ტელუგუ" + +#: conf/global_settings.py:81 +msgid "Turkish" +msgstr "თურქული" + +#: conf/global_settings.py:82 +msgid "Ukrainian" +msgstr "უკრაინული" + +#: conf/global_settings.py:83 +msgid "Simplified Chinese" +msgstr "გამარტივებული ჩინური" + +#: conf/global_settings.py:84 +msgid "Traditional Chinese" +msgstr "ტრადიციული ჩინური" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

      By %s:

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

        %s-ს მიერ:

        \n" +"
          \n" + +#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "ყველა" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "ნებისმიერი თარიღი" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "დღეს" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "ბოლო 7 დღე" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "მიმდინარე თვე" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "მიმდინარე წელი" + +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Yes" +msgstr "კი" + +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "No" +msgstr "არა" + +#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Unknown" +msgstr "გაურკვეველი" + +#: contrib/admin/models.py:18 +msgid "action time" +msgstr "მოქმედების დრო" + +#: contrib/admin/models.py:21 +msgid "object id" +msgstr "ობიექტის id" + +#: contrib/admin/models.py:22 +msgid "object repr" +msgstr "ობიექტის წარმ." + +#: contrib/admin/models.py:23 +msgid "action flag" +msgstr "მოქმედების დროშა" + +#: contrib/admin/models.py:24 +msgid "change message" +msgstr "შეცვლის შეტყობინება" + +#: contrib/admin/models.py:27 +msgid "log entry" +msgstr "ლოგის ერთეული" + +#: contrib/admin/models.py:28 +msgid "log entries" +msgstr "ლოგის ერთეულები" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "გვერდი ვერ მოიძებნა" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "უკაცრავად, მოთხოვნილი გვერდი ვერ მოიძებნა." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:37 +#: contrib/admin/templates/admin/change_form.html:12 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:5 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:4 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "საწყისი გვერდი" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "სერვერის შეცდომა" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "სერვერის შეცდომა (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "სერვერის შეცდომა (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"აქ იყო შეცდომა. იგი გადაგზავნილია საიტის ადმინისტრატორის ელექტრონულ ფოსტაზე " +"და მალე გამოსწორდება. გმადლობთ მოთმინებისათვის." + +#: contrib/admin/templates/admin/base.html:26 +msgid "Welcome," +msgstr "კეთილი იყოს თქვენი მობრძანება," + +#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "დოკუმენტაცია" + +#: contrib/admin/templates/admin/base.html:29 +#: contrib/admin/templates/admin/auth/user/change_password.html:14 +#: contrib/admin/templates/admin/auth/user/change_password.html:45 +msgid "Change password" +msgstr "პაროლის შეცვლა" + +#: contrib/admin/templates/admin/base.html:30 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "გამოსვლა" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django-ს ადმინისტრირების საიტი" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django-ს ადმინისტრირება" + +#: contrib/admin/templates/admin/change_form.html:14 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "დამატება" + +#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/object_history.html:4 +msgid "History" +msgstr "ისტორია" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "წარმოდგენა საიტზე" + +#: contrib/admin/templates/admin/change_form.html:31 +#: contrib/admin/templates/admin/auth/user/change_password.html:23 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "გთხოვთ, გაასწორეთ ქვემოთ მოყვანილი შეცდომა." +msgstr[1] "გთხოვთ, გაასწორეთ ქვემოთ მოყვანილი შეცდომები." + +#: contrib/admin/templates/admin/change_form.html:49 +msgid "Ordering" +msgstr "დალაგება" + +#: contrib/admin/templates/admin/change_form.html:52 +msgid "Order:" +msgstr "დალაგება:" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "დავამატოთ %(name)s" + +#: contrib/admin/templates/admin/delete_confirmation.html:8 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "წავშალოთ" + +#: contrib/admin/templates/admin/delete_confirmation.html:13 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"ობიექტების წაშლა: %(object_name)s '%(escaped_object)s' გამოიწვევს " +"დაკავშირებული ობიექტების წაშლას, მაგრამ თქვენ არა გაქვთ შემდეგი ტიპების " +"ობიექტების წაშლის უფლება:" + +#: contrib/admin/templates/admin/delete_confirmation.html:20 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:25 +msgid "Yes, I'm sure" +msgstr "კი, ნამდვილად" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s მიხედვით " + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "ფილტრი" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "%(name)s აპლიკაციაში არსებული მოდელები." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "შეცვლა" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "თქვენ არა გაქვთ რედაქტირების უფლება." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "ბოლო მოქმედებები" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "ჩემი მოქმედებები" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "არ არის მისაწვდომი" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"თქვენი მონაცემთა ბაზის ინსტალაცია არაკორექტულია. დარწმუნდით, რომ მონაცემთა " +"ბაზის შესაბამისი ცხრილები შექმნილია, და მონაცემთა ბაზის წაკითხვა შეუძლია " +"შესაბამის მომხმარებელს." + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "მომხმარებლის სახელი:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "პაროლი:" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:25 +msgid "Log in" +msgstr "შესვლა" + +#: contrib/admin/templates/admin/object_history.html:17 +msgid "Date/time" +msgstr "თარიღი/დრო" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "User" +msgstr "მომხმარებელი" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "Action" +msgstr "მოქმედება" + +#: contrib/admin/templates/admin/object_history.html:25 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:35 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"ამ ობიექტს ცვლილებების ისტორია არა აქვს. როგორც ჩანს, იგი არ იყო დამატებული " +"ადმინისტრირების საიტის მეშვეობით." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "ვაჩვენოთ ყველა" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "ძებნა" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "ერთი შედეგი" +msgstr[1] "%(counter)s შედეგი" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "სულ %(full_result_count)s" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "შევინახოთ, როგორც ახალი" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "შევინახოთ და დავამატოთ ახალი" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "შევინახოთ და გავაგრძელოთ რედაქტირება" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "შევინახოთ" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"ჯერ შეიყვანეთ მომხმარებლის სახელი და პაროლი. ამის შემდეგ თქვენ გექნებათ " +"მომხმარებლის სხვა ოპციების რედაქტირების შესაძლებლობა." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "მომხმარებელი" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:33 +msgid "Password" +msgstr "პაროლი" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:38 +msgid "Password (again)" +msgstr "პაროლი (განმეორებით)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Enter the same password as above, for verification." +msgstr "შეიყვანეთ იგივე პაროლი, დამოწმებისათვის." + +#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" +"შეიყვანეთ ახალი პაროლი მომხმარებლისათვის %(username)s." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "სანიშნები" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "დოკუმენტაციის სანიშნები" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

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

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

          სანიშნების დასაყენებლად გადაათრიეთ ბმული თქვენი " +"სანიშნების\n" +"პანელზე, ან დააწკაპეთ ბმულზე მარჯვენა ღილაკით და დაამატეთ იგი სანიშნებში.\n" +"ამის შემდეგ თქვენ შეძლებთ სანიშნის არჩევას საიტის ნებისმიერი გვერდიდან.\n" +"გაითვალისწინეთ, რომ ზოგიერთი სანიშნის მოხმარებისათვის საჭიროა, რომ თქვენ\n" +"იყოთ შესული ამ საიტზე ე.წ. \"შიდა\" კომპიუტერიდან (შეუთანხმდით თქვენს\n" +"ადმინისტრატორს, თუ არ ხართ დარწმუნებული, რომ თქვენი კომპიუტერი არის\n" +"\"შიდა\" კომპიუტერი).

          \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "ამ გვერდის დოკუმენტაცია" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"გადასვლა ნებისმიერი გვერდიდან იმ წარმოდგენის დოკუმენტაციაზე, რომელიც ამ " +"გვერდს აგენერირებს." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "ობიექტის ID-ის ჩვენება" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"ერთი ობიექტის ამსახველი გვერდის content-type-ის და უნიკალური ID-ის ჩვენება." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "შევცვალოთ ეს ობიექტი (იმავე ფანჯარაში)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "ერთი ობიექტის ამსახველი გვერდების ადმინისტრირებაზე გადასვლა." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "შევცვალოთ ეს ობიექტი (ახალ ფანჯარაში)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "იგივე, ოღონდ ხსნის ადმინისტრირების გვერდს ახალ ფანჯარაში." + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "გმადლობთ, რომ დღეს ამ საიტთან მუშაობას დაუთმეთ დრო." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "ხელახლა შესვლა" + +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:9 +msgid "Password change" +msgstr "პაროლის შეცვლა" + +#: contrib/admin/templates/registration/password_change_done.html:5 +#: contrib/admin/templates/registration/password_change_done.html:9 +msgid "Password change successful" +msgstr "პაროლი წარმატებით შეიცვალა" + +#: contrib/admin/templates/registration/password_change_done.html:11 +msgid "Your password was changed." +msgstr "თქვენი პაროლი შეიცვალა." + +#: contrib/admin/templates/registration/password_change_form.html:11 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"გთხოვთ, უსაფრთხოების დაცვის მიზნით, შეიყვანოთ თქვენი ძველი პაროლი, შემდეგ კი " +"ახალი პაროლი ორჯერ, რათა დარწმუნდეთ, რომ იგი შეყვანილია სწორად." + +#: contrib/admin/templates/registration/password_change_form.html:16 +msgid "Old password:" +msgstr "ძველი პაროლი:" + +#: contrib/admin/templates/registration/password_change_form.html:18 +msgid "New password:" +msgstr "ახალი პაროლი:" + +#: contrib/admin/templates/registration/password_change_form.html:20 +msgid "Confirm password:" +msgstr "პაროლის დამოწმება:" + +#: contrib/admin/templates/registration/password_change_form.html:22 +msgid "Change my password" +msgstr "შევცვალოთ ჩემი პაროლი" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "პაროლის აღდგენა" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "პაროლის აღდგენა წარმატებით დასრულდა" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"ახალი პაროლი გაიგზავნა თქვენს მიერ მითითებულ ელექტრონულ ფოსტაზე. თქვენ " +"მიიღებთ მას უახლოეს დროში." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "თქვენ მიიღეთ ეს წერილი, რადგანაც მოითხოვეთ პაროლის აღდგენა" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "თქვენი მომხმარებლის ანგარიშისათვის %(site_name)s-საიტზე" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "თქვენი ახალი პაროლია: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "თქვენ შეგიძლიათ შეცვალოთ იგი შემდეგი გვერდიდან:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "თქვენი მომხმარებლის სახელი (თუ დაგავიწყდათ):" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "გმადლობთ, რომ იყენებთ ჩვენს საიტს!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s საიტის გუნდი" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"დაგავიწყდათ პაროლი? შეიყვანეთ თქვენი ელექტრონული ფოსტის მისამართი ამ ველში, " +"ჩვენ დავაგენერირებთ და გამოგიგზავნით ახალ პაროლს." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "ელ. ფოსტა:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "აღვადგინოთ ჩემი პაროლი" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "თარიღი;" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "დრო:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "მიმდინარე:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "შეცვლა:" + +#: contrib/admin/templatetags/admin_list.py:257 +msgid "All dates" +msgstr "ყველა თარიღი" + +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" წარმატებით დაემატა." + +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271 +#: contrib/admin/views/main.py:356 +msgid "You may edit it again below." +msgstr "თქვენ შეგიძლიათ შეცვალოთ იგი." + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "მომხმარებლის დამატება" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "პაროლი წარმატებით შეიცვალა." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "შევცვალოთ პაროლი: %s" + +#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"გთხოვთ, შეიყვანოთ სწორი მომხმარებლის სახელი და პაროლი. გაითვალისწინეთ, რომ " +"ორივე ველი დამოკიდებულია რეგისტრზე." + +#: contrib/admin/views/decorators.py:63 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"გთხოვთ, შეხვიდეთ კიდევ ერთხელ, რადგანაც თქვენი სესიის დრო ამოიწურა. ნუ " +"ღელავთ: თქვენს მიერ შეტანილი ცვლილებები შენახულია." + +#: contrib/admin/views/decorators.py:70 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"როგორც ჩანს, თქვენი ბროუზერი არ ღებულობს cookie-ებს. გთხოვთ, ჩართოთ cookie-" +"ების მიღების ფუნქცია, განაახლეთ ეს გვერდი და სცადეთ კიდევ ერთხელ." + +#: contrib/admin/views/decorators.py:84 +msgid "Usernames cannot contain the '@' character." +msgstr "მომხმარებლის სახელი არ უნდა შეიცავდეს სიმბოლოს '@'." + +#: contrib/admin/views/decorators.py:86 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"ელ-ფოსტის მისამართი არ არის თქვენი მომხმარებლის სახელი. სცადეთ '%s' მის " +"ნაცვლად." + +#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:52 +msgid "tag:" +msgstr "ტეგი:" + +#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:83 +msgid "filter:" +msgstr "ფილტრი:" + +#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:141 +msgid "view:" +msgstr "წარმოდგენა:" + +#: contrib/admin/views/doc.py:166 +#, python-format +msgid "App %r not found" +msgstr "აპლიკაცია %r ვერ მოიძებნა" + +#: contrib/admin/views/doc.py:173 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "მოდელი %(name)r ვერ მოიძებნა აპლიკაციაში %(label)r" + +#: contrib/admin/views/doc.py:185 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "`%(label)s.%(type)s` დაკავშირებული ობიექტი" + +#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207 +#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226 +msgid "model:" +msgstr "მოდელი:" + +#: contrib/admin/views/doc.py:216 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "`%(label)s.%(name)s` დაკავშირებული ობიექტები" + +#: contrib/admin/views/doc.py:221 +#, python-format +msgid "all %s" +msgstr "ყველა %s" + +#: contrib/admin/views/doc.py:226 +#, python-format +msgid "number of %s" +msgstr "%s - რაოდენობა" + +#: contrib/admin/views/doc.py:231 +#, python-format +msgid "Fields on %s objects" +msgstr "%s ობიექტების ველები" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304 +#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315 +msgid "Integer" +msgstr "მთელი" + +#: contrib/admin/views/doc.py:294 +msgid "Boolean (Either True or False)" +msgstr "ლოგიკური (True ან False)" + +#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "სტრიქონი (%(max_length)s სიმბოლომდე)" + +#: contrib/admin/views/doc.py:296 +msgid "Comma-separated integers" +msgstr "მძიმით გამოყოფილი მთელი რიცხვები" + +#: contrib/admin/views/doc.py:297 +msgid "Date (without time)" +msgstr "თარიღი (დროის გარეშე)" + +#: contrib/admin/views/doc.py:298 +msgid "Date (with time)" +msgstr "თარიღი (დროსთან ერთად)" + +#: contrib/admin/views/doc.py:299 +msgid "Decimal number" +msgstr "ათობითი რიცხვი" + +#: contrib/admin/views/doc.py:300 +msgid "E-mail address" +msgstr "ელ. ფოსტის მისამართი" + +#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:305 +msgid "File path" +msgstr "გზა ფაილისაკენ" + +#: contrib/admin/views/doc.py:303 +msgid "Floating point number" +msgstr "რიცხვი მცოცავი წერტილით" + +#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 +msgid "IP address" +msgstr "IP-მისამართი" + +#: contrib/admin/views/doc.py:309 +msgid "Boolean (Either True, False or None)" +msgstr "ლოგიკური (True, False ან None)" + +#: contrib/admin/views/doc.py:310 +msgid "Relation to parent model" +msgstr "მშობელ მოდელთან დამოკიდებულება" + +#: contrib/admin/views/doc.py:311 +msgid "Phone number" +msgstr "ტელეფონის ნომერი" + +#: contrib/admin/views/doc.py:316 +msgid "Text" +msgstr "ტექსტი" + +#: contrib/admin/views/doc.py:317 +msgid "Time" +msgstr "დრო" + +#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "" + +#: contrib/admin/views/doc.py:319 +msgid "U.S. state (two uppercase letters)" +msgstr "აშშ შტატი (ორი ასომთავრული)" + +#: contrib/admin/views/doc.py:320 +msgid "XML text" +msgstr "XML ტექსტი" + +#: contrib/admin/views/doc.py:346 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s არ არის urlpattern-ის შესაბამისი ობიექტი" + +#: contrib/admin/views/main.py:233 +msgid "Site administration" +msgstr "საიტის ადმინისტრირება" + +#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 +#, python-format +msgid "You may add another %s below." +msgstr "შეგიძლიათ დაამატოთ კიდევ ერთი %s." + +#: contrib/admin/views/main.py:298 +#, python-format +msgid "Add %s" +msgstr "დავამატოთ %s" + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Added %s." +msgstr "%s დამატებულია." + +#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:348 core/validators.py:283 +#: db/models/manipulators.py:309 +msgid "and" +msgstr "და" + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Changed %s." +msgstr "%s შეცვლილია." + +#: contrib/admin/views/main.py:348 +#, python-format +msgid "Deleted %s." +msgstr "%s წაშლილია." + +#: contrib/admin/views/main.py:351 +msgid "No fields changed." +msgstr "არცერთი ველი არ შეცვლილა." + +#: contrib/admin/views/main.py:354 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" წარმატებით შეიცვალა." + +#: contrib/admin/views/main.py:362 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" წარმატებით დაემატა. შეგიძლიათ განაგრძოთ მისი " +"რედაქტირება." + +#: contrib/admin/views/main.py:400 +#, python-format +msgid "Change %s" +msgstr "შევცვალოთ %s" + +#: contrib/admin/views/main.py:487 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "ერთი ან რამდენიმე %(fieldname)s ობიექტში %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:492 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "ერთი ან რამდენიმე %(fieldname)s ობიექტში %(name)s:" + +#: contrib/admin/views/main.py:524 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" წარმატებით წაიშალა." + +#: contrib/admin/views/main.py:527 +msgid "Are you sure?" +msgstr "დარწმუნებული ხართ?" + +#: contrib/admin/views/main.py:549 +#, python-format +msgid "Change history: %s" +msgstr "ცვლილებების ისტორია: %s" + +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s" +msgstr "ავირჩიოთ %s" + +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s to change" +msgstr "აირჩიეთ %s შესაცვლელად" + +#: contrib/admin/views/main.py:784 +msgid "Database error" +msgstr "მონაცემთა ბაზის შეცდომა" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "პაროლის ორი ველი ერთმანეთს არ ემთხვევა." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "მომხმარებელი ამ სახელით უკვე არსებობს." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"თქვენი ბროუზერი არ ღებულობს cookie-ებს. Cookie საჭიროა საიტზე შესასვლელად." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "თქვენი ანგარიში არააქტიურია." + +#: contrib/auth/forms.py:84 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"ელ.ფოსტის ეს მისამართი არ შეესაბამება არცერთ მომხმარებელს. ნამდვილად ხართ " +"დარეგისტრირებული?" + +#: contrib/auth/forms.py:107 +#, python-format +msgid "Password reset on %s" +msgstr "პაროლი შეცვლილია: %s" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "'ახალი პაროლის' ორი ველი ერთმანეთს არ ემთხვევა." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "თქვენი ძველი პაროლი შეყვანილია არასწორად. გთხოვთ, შეიყვანოთ ხელახლა." + +#: contrib/auth/models.py:73 contrib/auth/models.py:93 +msgid "name" +msgstr "სახელი" + +#: contrib/auth/models.py:75 +msgid "codename" +msgstr "კოდური სახელი" + +#: contrib/auth/models.py:78 +msgid "permission" +msgstr "უფლება" + +#: contrib/auth/models.py:79 contrib/auth/models.py:94 +msgid "permissions" +msgstr "უფლებები" + +#: contrib/auth/models.py:97 +msgid "group" +msgstr "ჯგუფი" + +#: contrib/auth/models.py:98 contrib/auth/models.py:141 +msgid "groups" +msgstr "ჯგუფები" + +#: contrib/auth/models.py:131 +msgid "username" +msgstr "მომხმარებლის სახელი" + +#: contrib/auth/models.py:131 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"აუცილებელია. 30 ან ნაკლები სიმბოლო. მხოლოდ ლათინური ასოები, ციფრები და " +"ხაზგასმა." + +#: contrib/auth/models.py:132 +msgid "first name" +msgstr "სახელი" + +#: contrib/auth/models.py:133 +msgid "last name" +msgstr "გვარი" + +#: contrib/auth/models.py:134 +msgid "e-mail address" +msgstr "ელ. ფოსტა" + +#: contrib/auth/models.py:135 +msgid "password" +msgstr "პაროლი" + +#: contrib/auth/models.py:135 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"გამოიყენეთ '[algo]$[salt]$[hexdigest]' ან პაროლის " +"შეცვლის ფორმა." + +#: contrib/auth/models.py:136 +msgid "staff status" +msgstr "თანამშრომლობის სტატუსი" + +#: contrib/auth/models.py:136 +msgid "Designates whether the user can log into this admin site." +msgstr "" +"განსაზღვრავს, აქვს თუ არა მომხმარებელს ადმინისტრირების საიტზე შესვლის უფლება." + +#: contrib/auth/models.py:137 +msgid "active" +msgstr "აქტიურია" + +#: contrib/auth/models.py:137 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"განსაზღვრავს, აქვს თუ არა მომხმარებელს Django-ს ადმინისტრირების საიტზე " +"შესვლის შესაძლებლობა. გადანიშნეთ ეს დროშა მომხმარებლის წაშლის მაგივრად." + +#: contrib/auth/models.py:138 +msgid "superuser status" +msgstr "სუპერმომხმარებლის სტატუსი" + +#: contrib/auth/models.py:138 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "განსაზღვრავს, რომ ამ მომხმარებელს აქვს ყველა უფლება." + +#: contrib/auth/models.py:139 +msgid "last login" +msgstr "ბოლო შესვლა" + +#: contrib/auth/models.py:140 +msgid "date joined" +msgstr "გაწევრიანების თარიღი" + +#: contrib/auth/models.py:142 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"ინდივიდუალურად მითითებული უფლებების გარდა, ეს მომხმარებელი მიიღებს აგრეთვე " +"ყველა იმ ჯგუფის უფლებას, რომელშიც იგი გაწევრიანებულია." + +#: contrib/auth/models.py:143 +msgid "user permissions" +msgstr "მომხმარებლის უფლებები" + +#: contrib/auth/models.py:147 +msgid "user" +msgstr "მომხმარებელი" + +#: contrib/auth/models.py:148 +msgid "users" +msgstr "მომხმარებლები" + +#: contrib/auth/models.py:154 +msgid "Personal info" +msgstr "პირადი ინფორმაცია" + +#: contrib/auth/models.py:155 +msgid "Permissions" +msgstr "უფლებები" + +#: contrib/auth/models.py:156 +msgid "Important dates" +msgstr "მნიშვნელოვანი თარიღები" + +#: contrib/auth/models.py:157 +msgid "Groups" +msgstr "ჯგუფები" + +#: contrib/auth/models.py:316 +msgid "message" +msgstr "შეტყობინება" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "გამოსული ხართ" + +#: contrib/comments/models.py:71 contrib/comments/models.py:176 +msgid "object ID" +msgstr "ობიექტის ID" + +#: contrib/comments/models.py:72 +msgid "headline" +msgstr "ჰედლაინი" + +#: contrib/comments/models.py:73 contrib/comments/models.py:95 +#: contrib/comments/models.py:177 +msgid "comment" +msgstr "კომენტარი" + +#: contrib/comments/models.py:74 +msgid "rating #1" +msgstr "რეიტინგი #1" + +#: contrib/comments/models.py:75 +msgid "rating #2" +msgstr "რეიტინგი #2" + +#: contrib/comments/models.py:76 +msgid "rating #3" +msgstr "რეიტინგი #3" + +#: contrib/comments/models.py:77 +msgid "rating #4" +msgstr "რეიტინგი #4" + +#: contrib/comments/models.py:78 +msgid "rating #5" +msgstr "რეიტინგი #5" + +#: contrib/comments/models.py:79 +msgid "rating #6" +msgstr "რეიტინგი #6" + +#: contrib/comments/models.py:80 +msgid "rating #7" +msgstr "რეიტინგი #7" + +#: contrib/comments/models.py:81 +msgid "rating #8" +msgstr "რეიტინგი #8" + +#: contrib/comments/models.py:86 +msgid "is valid rating" +msgstr "დასაშვები რეიტინგია" + +#: contrib/comments/models.py:87 contrib/comments/models.py:179 +msgid "date/time submitted" +msgstr "გაგზავნის თარიღი და დრო" + +#: contrib/comments/models.py:88 contrib/comments/models.py:180 +msgid "is public" +msgstr "საყოველთაოა" + +#: contrib/comments/models.py:90 +msgid "is removed" +msgstr "წაშლილია" + +#: contrib/comments/models.py:90 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"მონიშნეთ ეს დროშა, თუ კომენტარი შეუსაბამოა. მის ნაცვლად გაჩნდება " +"შეტყობინება: \"კომენტარი წაშლილია\"." + +#: contrib/comments/models.py:96 +msgid "comments" +msgstr "კომენტარები" + +#: contrib/comments/models.py:140 contrib/comments/models.py:222 +msgid "Content object" +msgstr "კონტენტის ობიექტი" + +#: contrib/comments/models.py:168 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"გამოგზავნილია %(user)s-ს მიერ, %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:178 +msgid "person's name" +msgstr "პიროვნების სახელი" + +#: contrib/comments/models.py:181 +msgid "ip address" +msgstr "ip-მისამართი" + +#: contrib/comments/models.py:183 +msgid "approved by staff" +msgstr "მოწონებულია პერსონალის მიერ" + +#: contrib/comments/models.py:187 +msgid "free comment" +msgstr "თავისუფალი კომენტარი" + +#: contrib/comments/models.py:188 +msgid "free comments" +msgstr "თავისუფალი კომენტარები" + +#: contrib/comments/models.py:250 +msgid "score" +msgstr "შეფასება" + +#: contrib/comments/models.py:251 +msgid "score date" +msgstr "შეფასების თარიღი" + +#: contrib/comments/models.py:255 +msgid "karma score" +msgstr "კარმა-შეფასება" + +#: contrib/comments/models.py:256 +msgid "karma scores" +msgstr "კარმა-შეფასებები" + +#: contrib/comments/models.py:260 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d შეფასებულია %(user)s-ის მიერ" + +#: contrib/comments/models.py:277 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"ეს კომენტარი მონიშნულია %(user)s-ის მიერ:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:285 +msgid "flag date" +msgstr "მონიშვნის თარიღი" + +#: contrib/comments/models.py:289 +msgid "user flag" +msgstr "მომხმარებლის მონიშვნა" + +#: contrib/comments/models.py:290 +msgid "user flags" +msgstr "მომხმარებლის მონიშვნები" + +#: contrib/comments/models.py:294 +#, python-format +msgid "Flag by %r" +msgstr "%r-ის მონიშვნები" + +#: contrib/comments/models.py:300 +msgid "deletion date" +msgstr "წაშლის თარიღი" + +#: contrib/comments/models.py:303 +msgid "moderator deletion" +msgstr "მოდერატორის წაშლა" + +#: contrib/comments/models.py:304 +msgid "moderator deletions" +msgstr "მოდერატორის წაშლები" + +#: contrib/comments/models.py:308 +#, python-format +msgid "Moderator deletion by %r" +msgstr "მოდერატორის წაშლა %r-ის მიერ" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "დაგავიწყდათ თქვენი პაროლი?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "რეიტინგები" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "აუცილებელია" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "არასავალდებულოა" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "სურათის გაგზავნა" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "კომენტარი:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "კომენტარის წინასწარი ნახვა" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "თქვენი სახელი:" + +#: contrib/comments/views/comments.py:28 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "ეს რეიტინგი აუცილებელია, რადგანაც თქვენ შესულხართ სხვა რეიტინგებში." + +#: contrib/comments/views/comments.py:112 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"ეს კომენტარი გამოგზავნილია მომხმარებლის მიერ, რომელსაც %(count)s-ზე ნაკლები " +"კომენტარი აქვს:\n" +"\n" +"%(text)s" +msgstr[1] "" +"ეს კომენტარი გამოგზავნილია მომხმარებლის მიერ, რომელსაც %(count)s-ზე ნაკლები " +"კომენტარი აქვს:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:117 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"ეს კომენტარი გამოგზავნილია ზერელე მომხმარებლის მიერ:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:190 +#: contrib/comments/views/comments.py:283 +msgid "Only POSTs are allowed" +msgstr "დაშვებულია მხოლოდ POST-ები" + +#: contrib/comments/views/comments.py:194 +#: contrib/comments/views/comments.py:287 +msgid "One or more of the required fields wasn't submitted" +msgstr "ერთი ან რამდენიმე აუცილებელი ველი არ იყო მითითებული" + +#: contrib/comments/views/comments.py:198 +#: contrib/comments/views/comments.py:289 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "ვიღაცა ჩაერია კომენტარის ფორმაში (უსაფრთხოების დარღვევა)" + +#: contrib/comments/views/comments.py:208 +#: contrib/comments/views/comments.py:295 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"კომენტარის ფორმას აქვს არასწორი პარამეტრი 'target' -- ობიექტის ID არ იყო " +"სწორი" + +#: contrib/comments/views/comments.py:259 +#: contrib/comments/views/comments.py:324 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "კომენტარის ფორმას არა აქვს 'წინასწარი ხედვის' ან 'გაგზავნის' საშუალება" + +#: contrib/comments/views/karma.py:21 +msgid "Anonymous users cannot vote" +msgstr "ანონიმურ მომხმარებლებს ხმის მიცემის უფლება არა აქვთ" + +#: contrib/comments/views/karma.py:25 +msgid "Invalid comment ID" +msgstr "კომენტარის ID არასწორია" + +#: contrib/comments/views/karma.py:27 +msgid "No voting for yourself" +msgstr "საკუთარი თავისათვის ხმის მიცემა აკრძალულია" + +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "python-ის მოდელის კლასის სახელი" + +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "კონტენტის ტიპი" + +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "კონტენტის ტიპები" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"მაგალითი: '/about/contact/'. ყურადღება მიაქციეთ დახრილ ხაზებს თავში და ბოლოში." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "სათაური" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "კონტენტი" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "ჩავრთოთ კომენტარები" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "შაბლონის სახელი" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"მაგალითი: 'flatpages/contact_page.html'. თუ იგი მითითებული არ არის, " +"გამოყენებული იქნება 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "რეგისტრაცია აუცილებელია" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"თუ ეს დროშა ჩართულია, მხოლო შემოსულ მომხმარებლებს ექნებათ გვერდის " +"დათვალიერების საშუალება." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "უბრალო გვერდი" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "უბრალო გვერდები" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:52 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f მილიონი" +msgstr[1] "%(value).1f მილიონი" + +#: contrib/humanize/templatetags/humanize.py:55 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f მილიარდი" +msgstr[1] "%(value).1f მილიარდი" + +#: contrib/humanize/templatetags/humanize.py:58 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f ტრილიონი" +msgstr[1] "%(value).1f ტრილიონი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "one" +msgstr "ერთი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "two" +msgstr "ორი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "three" +msgstr "სამი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "four" +msgstr "ოთხი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "five" +msgstr "ხუთი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "six" +msgstr "ექვსი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "seven" +msgstr "შვიდი" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "eight" +msgstr "რვა" + +#: contrib/humanize/templatetags/humanize.py:74 +msgid "nine" +msgstr "ცხრა" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "today" +msgstr "დღეს" + +#: contrib/humanize/templatetags/humanize.py:96 +msgid "tomorrow" +msgstr "ხვალ" + +#: contrib/humanize/templatetags/humanize.py:98 +msgid "yesterday" +msgstr "გუშინ" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "შეიყვანეთ საფოსტო კოდი ერთ-ერთ ფორმატში: NNNN ან ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 +#: contrib/localflavor/pe/forms.py:51 +msgid "This field requires only numbers." +msgstr "ამ ველში შეიძლება იყოს მხოლოდ ციფრები." + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "ამ ველში შეიძლება იყოს მხოლოდ 7 ან 8 თანრიგი." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" +"შეიყვანეთ დასაშვები CUIT ერთ-ერთ ფორმატში: XX-XXXXXXXX-X ან XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "არასწორი CUIT." + +#: contrib/localflavor/au/forms.py:16 +msgid "Enter a 4 digit post code." +msgstr "შეიყვანეთ ოთხთანრიგიანი საფოსტო კოდი" + +#: contrib/localflavor/br/forms.py:21 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "შეიყვანეთ zip-კოდი ფორმატში: XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "ტელეფონის ნომრები უნდა იყოს XX-XXXX-XXXX ფორმატში." + +#: contrib/localflavor/br/forms.py:58 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" +"შეიყვანეთ დასაშვები ბრაზილიური შტატი. მოცემული შტატი არ არის დასაშვები." + +#: contrib/localflavor/br/forms.py:94 +msgid "Invalid CPF number." +msgstr "არასწორი CPF ნომერი." + +#: contrib/localflavor/br/forms.py:95 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "ეს ველი უნდა შეიცავდეს 11 ციფრს ან 14 სიმბოლოს, ან ნაკლებს." + +#: contrib/localflavor/br/forms.py:134 +msgid "Invalid CNPJ number." +msgstr "არასწორი CNPJ ნომერი." + +#: contrib/localflavor/br/forms.py:136 +msgid "This field requires at least 14 digits" +msgstr "ეს ველი მოითხოვს არაუმეტეს 14 თანრიგისა" + +#: contrib/localflavor/ca/forms.py:17 +msgid "Enter a postal code in the format XXX XXX." +msgstr "შეიყვანეთ საფოსტო კოდი ფორმატში: XXX XXX." + +#: contrib/localflavor/ca/forms.py:88 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" +"შეიყვანეთ კანადაში დასაშვები სოციალური დაზღვევის ნომერი ფორმატში: XXX-XXX-XXX" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "აარგაუ" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "აპენცელ ინერჰოდენ" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "აპენცელ აუსერჰოდენ" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "ბაზელ-შტადტ" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "ბაზელ-ლანდ" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "ბერნი" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "ფრაიბურგი" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "ჟენევა" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "გლარუსი" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "გრაუბუენდენ" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "ჯურა" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "ლეცერნი" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "ნოიხატლი" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "ნიდვალდენი" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "ობვალდენი" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "შაფჰაუზენი" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "შვიცი" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "სოლოთურნი" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "სენტ-გალენი" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "თურგაუ" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "ტიჯინო" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "ური" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "ვალაისი" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "ვაუდი" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "ცუგი" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "ციურიხი" + +#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12 +msgid "Enter a zip code in the format XXXX." +msgstr "შეიყვანეთ zip-კოდი ფორმატში XXXX." + +#: contrib/localflavor/ch/forms.py:64 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"შეიყვანეთ შვეიცარიაში დაშვებული პირადი ან პასპორტის ნომერი, ფორმატებში: " +"X1234567<0 ან 1234567890." + +#: contrib/localflavor/cl/forms.py:29 +msgid "Enter a valid Chilean RUT." +msgstr "შეიყვანეთ დასაშვები ჩილიური RUT." + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "შეიყვანეთ დასაშვები ჩილიური RUT. ფორმატი: XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:31 +msgid "The Chilean RUT is not valid." +msgstr "ჩილიური RUT არასწორია." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "ბადენ-ვურტემბერგი" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "ბავარია" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "ბერლინი" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "ბრანდენბურგი" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "ბრემენი" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "ჰამბურგი" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "ჰესენი" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "მეკლენბურგ-ვესტერნ პომერანია" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "ქვემო საქსონია" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "ჩრდილოეთ რაინ-ვესტფალია" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "რაინლანდ-პალატინატა" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "ზაარლანდი" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "საქსონია" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "საქსონია-ანჰალტ" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "შლეზვიგ-ჰოლშტაინი" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "თურინგია" + +#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 +#: contrib/localflavor/fr/forms.py:15 +msgid "Enter a zip code in the format XXXXX." +msgstr "შეიყვანეთ zip-კოდი ფორმატში XXXXX." + +#: contrib/localflavor/de/forms.py:41 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"შეიყვანეთ გერმანიაში დასაშვები პირადობის მოწმობის ნომერი, ფორმატში: " +"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "არავა" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "ალბასეტე" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "ალასანტი" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "ალმერია" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "ავილა" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "ბადაჰოს" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "ილეს ბალეარს" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "ბარსელონა" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "ბურგოს" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "კასერეს" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "კადიზ" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "კასტელო" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "სიუდად რეალ" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "კორდობა" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "ა კორუნია" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "კუენსა" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "გირონა" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "გრანადა" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "გუადალაჯარა" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "გუიპუზკოა" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "ჰუელვა" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "ჰუესკა" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "ჯეინი" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "ლეონი" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "ლეიდა" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "ლა რიოხა" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "ლუგო" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "მადრიდი" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "მალაგა" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "მურსია" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "ნავარე" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "ოურენსი" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "ასტურია" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "პალენსია" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "ლას პალმას" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "პონტევედრა" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "სალამანსა" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "სანტა კრუზ დე ტენერიფე" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "კანტაბრია" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "სეგოვია" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "სევილი" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "სორია" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "ტარაგონა" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "ტერუელი" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "ტოლედო" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "ვალენსია" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "ვალადოლიდი" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "ბიზკაია" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "სამორა" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "სარაგოსა" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "კეუტა" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "მელილა" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "ანდალუზია" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "არაგონ" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "ასტურიის პრინციპატი" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "ბალეარის კუნძულები" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "ბასკების ქვეყანა" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "კანარის კუნძuლები" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "კასტილია ლა მანჩა" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "კასტილია და ლეონი" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "კატალონია" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "ექსტრემადურა" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "გალიცია" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "მურსიის რეგიონი" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "ნავარის ფორალური თემი" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "ვალენსიის თემი" + +#: contrib/localflavor/es/forms.py:19 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:39 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:66 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF or NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:68 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:142 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:143 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: contrib/localflavor/fi/forms.py:28 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/in_/forms.py:14 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:17 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:18 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/it/forms.py:14 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:43 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/jp/forms.py:19 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/nl/forms.py:21 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:52 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/nl/forms.py:78 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/no/forms.py:33 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/pe/forms.py:24 +msgid "This field requires 8 digits." +msgstr "" + +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:39 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:40 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:72 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:73 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:112 +msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:113 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:156 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: contrib/localflavor/us/forms.py:16 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:54 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/za/forms.py:20 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:54 +msgid "Enter a valid South African postal code" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "გადამისამართება გვერდიდან" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"უნდა იყოს აბსოლუტური გზა დომენის სახელის გარეშე. მაგალითი: '/events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "გადამისამართება გვერდზე" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"უნდა იყოს აბსოლუტური გზა (როგორც ზემოთ) ან სრული URL, რომელიც იწყება " +"'http://' სტრიქონით." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "გადამისამართება" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "გადამისამართებები" + +#: contrib/sessions/models.py:46 +msgid "session key" +msgstr "სესიის გასაღები" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "სესიის მონაცემები" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "ამოწურვის თარიღი" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "სესია" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "სესიები" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "დომენის სახელი" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "საჩვენებელი სახელი" + +#: contrib/sites/models.py:37 +msgid "site" +msgstr "საიტი" + +#: contrib/sites/models.py:38 +msgid "sites" +msgstr "საიტები" + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" +"ეს მნიშვნელობა შეიძლება შეიცავდეს მხოლოდ ასოებს, ციფრებს და ხაზგასმის " +"ნიშნებს." + +#: core/validators.py:76 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"ეს მნიშვნელობა შეიძლება შეიცავდეს მხოლოდ ასოებს, ციფრებს, ხაზგასმის ნიშნებს, " +"ტირეებს და დახრილ ხაზებს." + +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"ეს მნიშვნელობა შეიძლება შეიცავდეს მხოლოდ ასოებს, ციფრებს, ხაზგასმის ნიშნებს " +"და დეფისებს." + +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "ასომთავრულები აქ დაუშვებელია." + +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "პატარა ასოები აქ დაუშვებელია." + +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "შეიყვანეთ მხოლოდ მძიმეებით გამოყოფილი ციფრები." + +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "შეიყვანეთ მძიმეებით გამოყოფილი ელ. ფოსტის მისამართები." + +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "გთხოვთ, შეიყვანოთ დასაშვები IP-მისამართი" + +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "ცარიელი მნიშვნელობები აქ დაუშვებელია." + +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "არაციფრული სიმბოლოები აქ დაუშვებელია." + +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "ეს მნიშვნელობა არ უნდა შედგებოდეს მხოლოდ ციფრებისაგან." + +#: core/validators.py:128 newforms/fields.py:151 +msgid "Enter a whole number." +msgstr "შეიყვანეთ მთელი რიცხვი" + +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "მხოლოდ ლათინური ასოებია დასაშვები." + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "წელი უნდა იყოს 1900 ან მეტი." + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "არასწორი თარიღი: %s" + +#: core/validators.py:156 db/models/fields/__init__.py:509 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "შეიყვანეთ სწორი თარიღი YYYY-MM-DD ფორმატში." + +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "შეიყვანეთ სწორი დრო HH:MM ფორმატში." + +#: core/validators.py:165 db/models/fields/__init__.py:583 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "შეიყვანეთ სწორი თარიღი და დრო YYYY-MM-DD HH:MM ფორმატში." + +#: core/validators.py:170 newforms/fields.py:402 +msgid "Enter a valid e-mail address." +msgstr "შეიყვანეთ სწორი ელ. ფოსტის მისამართი." + +#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432 +#: oldforms/__init__.py:687 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"ფაილი არ იყო გამოგზავნილი. შეამოწმეთ კოდირების ტიპი მოცემული ფორმისათვის." + +#: core/validators.py:193 newforms/fields.py:458 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"ატვირთეთ დასაშვები გამოსახულება. თქვენს მიერ გამოგზავნილი ფაილი ან არ არის " +"გამოსახულება, ან დაზიანებულია." + +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s არ მიუთითებს დასაშვებ გამოსახულებას." + +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "ტელეფონის ნომრები უნდა იყოს XXX-XXX-XXXX ფორმატში. \"%s\" არასწორია." + +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s არ მიუთითებს დასაშვებ QuickTime ვიდეოფაილს." + +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "საჭიროა სწორი URL" + +#: core/validators.py:230 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"საჭიროა სწორი HTML. ტიპიური შეცდომებია:\n" +"%s" + +#: core/validators.py:237 +#, python-format +msgid "Badly formed XML: %s" +msgstr "ცუდად დაფორმირებული XML-ია: %s" + +#: core/validators.py:254 +#, python-format +msgid "Invalid URL: %s" +msgstr "არასწორი URL: %s" + +#: core/validators.py:259 core/validators.py:261 +#, python-format +msgid "The URL %s is a broken link." +msgstr "URL %s არის გაწყვეტილი ბმული." + +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "შეიყვანეთ სწორი აშშ შტატის აბრევიატურა." + +#: core/validators.py:281 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "ყურადღება მიაქციეთ ლექსიკას! სიტყვა %s აქ დაუშვებელია." +msgstr[1] "ყურადღება მიაქციეთ ლექსიკას! სიტყვები %s აქ დაუშვებელია." + +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "ველი უნდა ემთხვეოდეს '%s' ველს." + +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "გთხოვთ, შეიყვანოთ რაიმე მნიშვნელობა სულ მცირე ერთ ველში." + +#: core/validators.py:316 core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "გთხოვთ, შეავსოთ ორივე ველი, ან ორივე დატოვოთ ცარიელი." + +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "ეს ველი უნდა იყოს მითითებული, თუ %(field)s არის %(value)s" + +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "ეს ველი უნდა იყოს მითითებული, თუ %(field)s არ არის %(value)s" + +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "განმეორებითი მნიშვნელობები დაუშვებელია." + +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "მნიშვნელობა უნდა იყოს %(lower)s და %(upper)s შორის." + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "მნიშვნელობა უნდა იყოს სულ მცირე %s." + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "მნიშვნელობა არ უნდა აღემატებოდეს %s-ს." + +#: core/validators.py:427 +#, python-format +msgid "This value must be a power of %s." +msgstr "მნიშვნელობა უნდა იყოს %s-ის ხარისხი." + +#: core/validators.py:437 +msgid "Please enter a valid decimal number." +msgstr "გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი." + +#: core/validators.py:444 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +"გთხოვთ, შეიყვანოთ სწორი, არაუმეტეს %s თანრიგისაგან შემდგარი ათობითი რიცხვი" +msgstr[1] "" +"გთხოვთ, შეიყვანოთ სწორი, არაუმეტეს %s თანრიგისაგან შემდგარი ათობითი რიცხვი" + +#: core/validators.py:447 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის მთელი ნაწილის სიგრძე არ " +"აღემატება %s თანრიგს." +msgstr[1] "" +"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის მთელი ნაწილის სიგრძე არ " +"აღემატება %s თანრიგს." + +#: core/validators.py:450 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის წილადი ნაწილის სიგრძე არ " +"აღემატება %s ციფრს." +msgstr[1] "" +"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის წილადი ნაწილის სიგრძე არ " +"აღემატება %s ციფრს." + +#: core/validators.py:458 +msgid "Please enter a valid floating point number." +msgstr "გთხოვთ, შეიყვანოთ სწორი რიცხვი მცოცავი ათობითი წერტილით." + +#: core/validators.py:467 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "" +"დარწმუნდით, რომ თქვენს მიერ ატვირთული ფაილის სიგრძე არ არის %s ბაიტზე " +"ნაკლები." + +#: core/validators.py:468 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "" +"დარწმუნდით, რომ თქვენს მიერ ატვირთული ფაილის სიგრძე არ აღემატება %s ბაიტს." + +#: core/validators.py:485 +msgid "The format for this field is wrong." +msgstr "ამ ველის ფორმატი არასწორია." + +#: core/validators.py:500 +msgid "This field is invalid." +msgstr "ველი არასწორია." + +#: core/validators.py:536 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "%s-დან მნიშვნელობის ამოღება შეუძლებელია." + +#: core/validators.py:539 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"URL %(url)s მისამართმა დააბრუნა არასწორი Content-Type სათაური '%(contenttype)" +"s'." + +#: core/validators.py:572 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"გთხოვთ, დახუროთ დაუხურავი %(tag)s ტეგი, ხაზის ნომერია %(line)s. " +"(სტრიქონი იწყება ტექსტით: \"%(start)s\".)" + +#: core/validators.py:576 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"ტექსტის ნაწილი, რომელიც %(line)s ხაზზე იწყება, დაუშვებელია მიმდინარე კონტექსტში. (სტრიქონი " +"იწყება ტექსტით: \"%(start)s\".)" + +#: core/validators.py:581 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" ატრიბუტი არასწორია %(line)s ხაზზე. (სტრიქონი იწყება ტექსტით: \"%" +"(start)s\".)" + +#: core/validators.py:586 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" ტეგი არასწორია %(line)s ხაზზე. (სტრიქონი იწყება ტექსტით: \"%" +"(start)s\".)" + +#: core/validators.py:590 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"ტეგში %(line)s ხაზზე ერთი ან რამდენიმე ატრიბუტი გამოტოვებულია. (სტრიქონი იწყება " +"ტექსტით: \"%(start)s\".)" + +#: core/validators.py:595 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"\"%(attr)s\" ატრიბუტს %(line)s ხაზზე აქვს არასწორი მნიშვნელობა. (სტრიქონი " +"იწყება ტექსტით: \"%(start)s\".)" + +#: db/models/manipulators.py:308 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s მოცემული %(type)s-ით უკვე არსებობს მოცემული %(field)s-თვის." + +#: db/models/fields/__init__.py:52 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s მოცემული %(fieldname)s-ით უკვე არსებობს." + +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318 +#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746 +#: newforms/fields.py:45 oldforms/__init__.py:374 +msgid "This field is required." +msgstr "ეს ველი აუცილებელია." + +#: db/models/fields/__init__.py:418 +msgid "This value must be an integer." +msgstr "ეს მნიშვნელობა უნდა იყოს მთელი." + +#: db/models/fields/__init__.py:454 +msgid "This value must be either True or False." +msgstr "ეს მნიშვნელობა უნდა იყოს True ან False." + +#: db/models/fields/__init__.py:475 +msgid "This field cannot be null." +msgstr "ეს მნიშვნელობა არ შეიძლება იყოს null." + +#: db/models/fields/__init__.py:644 +msgid "This value must be a decimal number." +msgstr "ეს მნიშვნელობა უნდა იყოს ათობითი რიცხვი." + +#: db/models/fields/__init__.py:755 +msgid "Enter a valid filename." +msgstr "შეიყვანეთ სწორი ფაილის სახელი." + +#: db/models/fields/__init__.py:908 +msgid "This value must be either None, True or False." +msgstr "ეს მნიშვნელობა უნდა იყოს None, True ან False." + +#: db/models/fields/related.py:55 +#, python-format +msgid "Please enter a valid %s." +msgstr "გთხოვთ, შეიყვანოთ სწორი %s." + +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "გამოყავით ID-ები მძიმეებით." + +#: db/models/fields/related.py:660 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"დააჭირეთ \"Control\", ან \"Command\" Mac-ზე, ერთზე მეტი მნიშვნელობის ასარჩევად." + +#: db/models/fields/related.py:707 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "გთხოვთ, შეიყვანოთ სწორი %(self)s ID-ები. მნიშვნელობა %(value)r არასწორია." +msgstr[1] "გთხოვთ, შეიყვანოთ სწორი %(self)s ID-ები. მნიშვნელობები %(value)r არასწორია." + +#: newforms/fields.py:46 +msgid "Enter a valid value." +msgstr "შეიყვანეთ სწორი მნიშვნელობა." + +#: newforms/fields.py:123 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "დარწმუნდით, რომ მნიშვნელობა შედგება არაუმეტეს %(max)d სიმბოლოსაგან (ახლა მისი სიგრძეა %(length)d)." + +#: newforms/fields.py:124 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "დარწმუნდით, რომ მნიშვნელობა შედგება არანაკლებ %(min)d სიმბოლოსაგან (ახლა მისი სიგრძეა %(length)d)." + +#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "დარწმუნდით, რომ მნიშვნელობა ნაკლებია ან ტოლია %s-ზე." + +#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "დარწმუნდით, რომ მნიშვნელობა მეტია ან ტოლია %s-ზე." + +#: newforms/fields.py:180 newforms/fields.py:209 +msgid "Enter a number." +msgstr "შეიყვანეთ რიცხვი." + +#: newforms/fields.py:212 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "დარწმუნდით, რომ მნიშვნელობა %s თანრიგს არ აღემატება." + +#: newforms/fields.py:213 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "დარწმუნდით, რომ წილადი ნაწილი %s თანრიგს არ აღემატება." + +#: newforms/fields.py:214 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "დარწმუნდით, რომ მთელი ნაწილი %s თანრიგს არ აღემატება." + +#: newforms/fields.py:262 newforms/fields.py:723 +msgid "Enter a valid date." +msgstr "შეიყვანეთ სწორი თარიღი." + +#: newforms/fields.py:295 newforms/fields.py:724 +msgid "Enter a valid time." +msgstr "შეიყვანეთ სწორი დრო." + +#: newforms/fields.py:334 +msgid "Enter a valid date/time." +msgstr "შეიყვანეთ სწორი თარიღი და დრო." + +#: newforms/fields.py:433 +msgid "No file was submitted." +msgstr "ფაილი არ იყო გამოგზავნილი." + +#: newforms/fields.py:434 oldforms/__init__.py:689 +msgid "The submitted file is empty." +msgstr "გამოგზავნილი ფაილი ცარიელია." + +#: newforms/fields.py:496 +msgid "Enter a valid URL." +msgstr "შეიყვანეთ სწორი URL." + +#: newforms/fields.py:497 +msgid "This URL appears to be a broken link." +msgstr "როგორც ჩანს, URL არის გაწყვეტილი ბმული." + +#: newforms/fields.py:559 newforms/models.py:317 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "აირჩიეთ დასაშვები მნიშვნელობა. ეს არჩევანი დასაშვები არ არის." + +#: newforms/fields.py:598 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "აირჩიეთ დასაშვები მნიშვნელობა. %(value)s დასაშვები არ არის." + +#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:377 +msgid "Enter a list of values." +msgstr "შეიყვანეთ მნიშვნელობების სია." + +#: newforms/fields.py:752 +msgid "Enter a valid IPv4 address." +msgstr "შეიყვანეთ სწორი IPv4 მისამართი." + +#: newforms/models.py:378 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "აირჩიეთ დასაშვები მნიშვნელობა. %s დასაშვები არ არის." + +#: oldforms/__init__.py:409 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "დარწმუნდით, რომ თქვენს მიერ შეყვანილი ტექსტი %s სიმბოლოზე ნაკლებია." +msgstr[1] "დარწმუნდით, რომ თქვენს მიერ შეყვანილი ტექსტი %s სიმბოლოზე ნაკლებია." + +#: oldforms/__init__.py:414 +msgid "Line breaks are not allowed here." +msgstr "ახალ ხაზზე გადასვლა აქ დაუშვებელია." + +#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "აირჩიეთ დასაშვები მნიშვნელობა; '%(data)s' არ არის %(choices)s მნიშვნელობების სიაში." + +#: oldforms/__init__.py:745 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "შეიყვანეთ მთელი რიცხვი -32,768-დან 32,767-მდე." + +#: oldforms/__init__.py:755 +msgid "Enter a positive number." +msgstr "შეიყვანეთ დადებითი რიცხვი." + +#: oldforms/__init__.py:765 +msgid "Enter a whole number between 0 and 32,767." +msgstr "შეიყვანეთ მთელი რიცხვი 0-დან 32,767-მდე." + +#: template/defaultfilters.py:691 +msgid "yes,no,maybe" +msgstr "კი,არა,შესაძლოა" + +#: template/defaultfilters.py:722 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d ბაიტი" +msgstr[1] "%(size)d ბაიტი" + +#: template/defaultfilters.py:724 +#, python-format +msgid "%.1f KB" +msgstr "%.1f კბაიტი" + +#: template/defaultfilters.py:726 +#, python-format +msgid "%.1f MB" +msgstr "%.1f მბაიტი" + +#: template/defaultfilters.py:727 +#, python-format +msgid "%.1f GB" +msgstr "%.1f გბაიტი" + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "შუაღამე" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "შუადღე" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "ორშაბათი" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "სამშაბათი" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "ოთხშაბათი" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "ხუთშაბათი" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "პარასკევი" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "შაბათი" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "კვირა" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "ორშ" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "სამ" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "ოთხ" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "ხუთ" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "პარ" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "შაბ" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "კვრ" + +#: utils/dates.py:18 +msgid "January" +msgstr "იანვარი" + +#: utils/dates.py:18 +msgid "February" +msgstr "თებერვალი" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "მარტი" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "აპრილი" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "მაისი" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "ივნისი" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "ივლისი" + +#: utils/dates.py:19 +msgid "August" +msgstr "აგვისტო" + +#: utils/dates.py:19 +msgid "September" +msgstr "სექტემბერი" + +#: utils/dates.py:19 +msgid "October" +msgstr "ოქტომბერი" + +#: utils/dates.py:19 +msgid "November" +msgstr "ნოემბერი" + +#: utils/dates.py:20 +msgid "December" +msgstr "დეკემბერი" + +#: utils/dates.py:23 +msgid "jan" +msgstr "იან" + +#: utils/dates.py:23 +msgid "feb" +msgstr "თებ" + +#: utils/dates.py:23 +msgid "mar" +msgstr "მარ" + +#: utils/dates.py:23 +msgid "apr" +msgstr "აპრ" + +#: utils/dates.py:23 +msgid "may" +msgstr "მაი" + +#: utils/dates.py:23 +msgid "jun" +msgstr "ივნ" + +#: utils/dates.py:24 +msgid "jul" +msgstr "ივლ" + +#: utils/dates.py:24 +msgid "aug" +msgstr "აგვ" + +#: utils/dates.py:24 +msgid "sep" +msgstr "სექ" + +#: utils/dates.py:24 +msgid "oct" +msgstr "ოქტ" + +#: utils/dates.py:24 +msgid "nov" +msgstr "ნოე" + +#: utils/dates.py:24 +msgid "dec" +msgstr "დეკ" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "იან." + +#: utils/dates.py:31 +msgid "Feb." +msgstr "თებ." + +#: utils/dates.py:32 +msgid "Aug." +msgstr "აგვ." + +#: utils/dates.py:32 +msgid "Sept." +msgstr "სექტ." + +#: utils/dates.py:32 +msgid "Oct." +msgstr "ოქტ." + +#: utils/dates.py:32 +msgid "Nov." +msgstr "ნოემ." + +#: utils/dates.py:32 +msgid "Dec." +msgstr "დეკ." + +#: utils/text.py:127 +msgid "or" +msgstr "ან" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "წელი" +msgstr[1] "წელი" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "თვე" +msgstr[1] "თვე" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "კვირა" +msgstr[1] "კვირა" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "დღე" +msgstr[1] "დღე" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "საათი" +msgstr[1] "საათი" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "წუთი" +msgstr[1] "წუთი" + +#: utils/timesince.py:46 +msgid "minutes" +msgstr "წუთი" + +#: utils/timesince.py:51 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:57 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: utils/translation/trans_real.py:399 +msgid "DATE_FORMAT" +msgstr "d.m.Y" + +#: utils/translation/trans_real.py:400 +msgid "DATETIME_FORMAT" +msgstr "d.m.Y H:i" + +#: utils/translation/trans_real.py:401 +msgid "TIME_FORMAT" +msgstr "H:i" + +#: utils/translation/trans_real.py:417 +msgid "YEAR_MONTH_FORMAT" +msgstr "d.m.Y" + +#: utils/translation/trans_real.py:418 +msgid "MONTH_DAY_FORMAT" +msgstr "d.m.Y" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s წარმატებით შეიქმნა." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s წარმატებით შეიცვალა." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s წაიშალა." diff --git a/django/conf/locale/ka/LC_MESSAGES/djangojs.mo b/django/conf/locale/ka/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..37251461891b7643fe134ac938183f041a4852f2 GIT binary patch literal 2222 zcmZvaNpBoQ6vrC~O9lubtYVQ0q)0(gJ7Z&vJ%o_KOXA35N1h3hxs|7jnNE7Tt?r%y zOSui?#32reNP-h3tU*Ef3f%Y%91t)kuDNhPT=>1JwjCLlRP}%Lmj7F-e&4t2vd4On z{R;ax_I~#I101aKgP!*YI1D}nj)PBthr!3d*}}dEKFNIvEP*X>H<%W94t$vVd2ko_ zId}?O1BK_WLVpjGJb#0d_a9JrMX7*2pu`^n$H7rhcsro*WT50d2fjxS=RxW17lK{} z{{UYD|1IvX5-j~pfUkoy-~liMCGH|P3f=*q0{<-Z_rSgI@21G-(7*Jk=j{W_pzuwC z5`PkuydgLNepcvz2JdkH6%_wZDPC|5lsq>;=xuMJm-Q@LW-Gih6PXWgcJ1MOo(={+}>LxPHT&*VER5ja4*fa;SH@H+gx0$> zx~gi4g+|w8ay@N=*h!6cH?^vnG!#o+=iL;+Yb5UMBxwrIlF4#o4JXs&42k{O!2iIc zS(wBX6`av=D^ca4iMLCOW+h2;zm~Paz<Xz{vMt3S|t~!70 zRQ1@jIy^UbGzy23v~{FZo2^Z6wKqIeE=?wJZelX7u26bzKFJTQL^_P$VfZ@DO#bev z#*9C{CUIm}Dmp#R07e`V0WX3tw{Obz%gH81EK?nV-)&}jRL4Vz5!SyC)Y~NU0adA0dYwr@$Yp)3+^XLIclfuod7i>_EV z4cLomP#Ffgbi<;AE6PSu#+oe#m9yEBHs*fbC&f@s6p5VqS$h<1k{rh%4c-fr^-{o5OF{Jm`r&P(@e z3B@2P`o6pQdVC}|U&0Z#=6h9YWZx?AE_j1|+p~^ze{l0Y(B hem7q!hkV=JJ=>v-5??Oxx~8si;Tw>I5XQ6a{RbDMZvg-R literal 0 HcmV?d00001 diff --git a/django/conf/locale/ka/LC_MESSAGES/djangojs.po b/django/conf/locale/ka/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..61aaf1070a --- /dev/null +++ b/django/conf/locale/ka/LC_MESSAGES/djangojs.po @@ -0,0 +1,118 @@ +# Translation of Django Java-script part to Georgian. +# Copyright (C) 2008 +# This file is distributed under the same license as the PACKAGE package. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: django 0.97\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-02-16 22:31+0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: David Avsajanishvili \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "მისაწვდომი %s" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "ავირჩიოთ ყველა" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "დავამატოთ" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "წავშალოთ" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "არჩეული %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "აირჩიეთ და დააწკაპეთ " + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "გავასუფთავოთ ყველა" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "იანვარი თებერვალი მარტი აპრილი მაისი ივნისი ივლისი აგვისტო სექტემბერი " +"ოქტომბერი ნოემბერი დეკემბერი" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "კ ო ს ო ხ პ შ" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "კვირა ორშაბათი სამშაბათი ოთხშაბათი ხუთშაბათი პარასკევი შაბათი" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "ვაჩვენოთ" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "დავმალოთ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "ახლა" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "საათი" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "ავირჩიოთ დრო" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "შუაღამე" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "დილის 6 სთ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "შუადღე" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "უარი" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "დღეს" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "კალენდარი" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "გუშინ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "ხვალ" diff --git a/django/contrib/admin/views/decorators.py b/django/contrib/admin/views/decorators.py index 4f6662c970..b9fd9ab900 100644 --- a/django/contrib/admin/views/decorators.py +++ b/django/contrib/admin/views/decorators.py @@ -1,3 +1,11 @@ +import base64 +import md5 +import cPickle as pickle +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.3, 2.4 fallback. + from django import http, template from django.conf import settings from django.contrib.auth.models import User @@ -5,8 +13,6 @@ from django.contrib.auth import authenticate, login from django.shortcuts import render_to_response from django.utils.translation import ugettext_lazy, ugettext as _ from django.utils.safestring import mark_safe -import base64, datetime, md5 -import cPickle as pickle ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.") LOGIN_FORM_KEY = 'this_is_the_login_form' @@ -104,4 +110,4 @@ def staff_member_required(view_func): else: return _display_login_form(request, ERROR_MESSAGE) - return _checklogin + return wraps(view_func)(_checklogin) diff --git a/django/contrib/auth/decorators.py b/django/contrib/auth/decorators.py index f3f7f530ef..25bc20780e 100644 --- a/django/contrib/auth/decorators.py +++ b/django/contrib/auth/decorators.py @@ -1,3 +1,8 @@ +try: + from functools import wraps, update_wrapper +except ImportError: + from django.utils.functional import wraps, update_wrapper # Python 2.3, 2.4 fallback. + from django.contrib.auth import REDIRECT_FIELD_NAME from django.http import HttpResponseRedirect from django.utils.http import urlquote @@ -51,7 +56,7 @@ class _CheckLogin(object): self.test_func = test_func self.login_url = login_url self.redirect_field_name = redirect_field_name - self.__name__ = view_func.__name__ + update_wrapper(self, view_func) def __get__(self, obj, cls=None): view_func = self.view_func.__get__(obj, cls) diff --git a/django/contrib/databrowse/plugins/calendars.py b/django/contrib/databrowse/plugins/calendars.py index 5d5a020e6d..a798868b55 100644 --- a/django/contrib/databrowse/plugins/calendars.py +++ b/django/contrib/databrowse/plugins/calendars.py @@ -8,8 +8,6 @@ from django.utils.translation import get_date_formats from django.utils.encoding import force_unicode from django.utils.safestring import mark_safe from django.views.generic import date_based -import datetime -import time class CalendarPlugin(DatabrowsePlugin): def __init__(self, field_names=None): diff --git a/django/contrib/databrowse/plugins/fieldchoices.py b/django/contrib/databrowse/plugins/fieldchoices.py index dea6bac700..0a58e7a6ab 100644 --- a/django/contrib/databrowse/plugins/fieldchoices.py +++ b/django/contrib/databrowse/plugins/fieldchoices.py @@ -7,8 +7,6 @@ from django.utils.text import capfirst from django.utils.encoding import smart_str, force_unicode from django.utils.safestring import mark_safe from django.views.generic import date_based -import datetime -import time import urllib class FieldChoicePlugin(DatabrowsePlugin): diff --git a/django/contrib/databrowse/views.py b/django/contrib/databrowse/views.py index d493f9dad3..c17aad5d85 100644 --- a/django/contrib/databrowse/views.py +++ b/django/contrib/databrowse/views.py @@ -2,8 +2,6 @@ from django.db.models import FieldDoesNotExist, DateTimeField from django.http import Http404 from django.shortcuts import render_to_response from django.contrib.databrowse.datastructures import EasyModel, EasyChoice -import datetime -import time ########### # CHOICES # diff --git a/django/contrib/formtools/preview.py b/django/contrib/formtools/preview.py index bd0ce5cbb7..66583dde95 100644 --- a/django/contrib/formtools/preview.py +++ b/django/contrib/formtools/preview.py @@ -3,7 +3,6 @@ Formtools Preview application. """ from django.conf import settings -from django.core.exceptions import ImproperlyConfigured from django.http import Http404 from django.shortcuts import render_to_response from django.template.context import RequestContext diff --git a/django/contrib/formtools/tests.py b/django/contrib/formtools/tests.py index a5a9222c46..feda6e041e 100644 --- a/django/contrib/formtools/tests.py +++ b/django/contrib/formtools/tests.py @@ -3,8 +3,6 @@ from django.contrib.formtools import preview from django import http from django.conf import settings from django.test import TestCase -from django.test.client import Client - success_string = "Done was called!" test_data = {'field1': u'foo', @@ -88,6 +86,3 @@ class PreviewTests(TestCase): response = self.client.post('/test1/', test_data) self.assertEqual(response.content, success_string) - -if __name__ == '__main__': - unittest.main() diff --git a/django/contrib/humanize/templatetags/humanize.py b/django/contrib/humanize/templatetags/humanize.py index 4aa5a32e3f..05d322363b 100644 --- a/django/contrib/humanize/templatetags/humanize.py +++ b/django/contrib/humanize/templatetags/humanize.py @@ -2,8 +2,7 @@ from django.utils.translation import ungettext, ugettext as _ from django.utils.encoding import force_unicode from django import template from django.template import defaultfilters -from django.conf import settings -from datetime import date, timedelta +from datetime import date import re register = template.Library() diff --git a/django/contrib/localflavor/ar/forms.py b/django/contrib/localflavor/ar/forms.py index 7827698e77..b23923b47a 100644 --- a/django/contrib/localflavor/ar/forms.py +++ b/django/contrib/localflavor/ar/forms.py @@ -7,7 +7,6 @@ from django.newforms import ValidationError from django.newforms.fields import RegexField, CharField, Select, EMPTY_VALUES from django.utils.encoding import smart_unicode from django.utils.translation import ugettext -import re class ARProvinceSelect(Select): """ diff --git a/django/contrib/localflavor/generic/forms.py b/django/contrib/localflavor/generic/forms.py index a6d813723c..a5e431e4b3 100644 --- a/django/contrib/localflavor/generic/forms.py +++ b/django/contrib/localflavor/generic/forms.py @@ -1,38 +1,38 @@ -from django import newforms as forms - -DEFAULT_DATE_INPUT_FORMATS = ( - '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06' - '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' - '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' - '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' - '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' -) - -DEFAULT_DATETIME_INPUT_FORMATS = ( - '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' - '%Y-%m-%d %H:%M', # '2006-10-25 14:30' - '%Y-%m-%d', # '2006-10-25' - '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' - '%d/%m/%Y %H:%M', # '25/10/2006 14:30' - '%d/%m/%Y', # '25/10/2006' - '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' - '%d/%m/%y %H:%M', # '25/10/06 14:30' - '%d/%m/%y', # '25/10/06' -) - -class DateField(forms.DateField): - """ - A date input field which uses non-US date input formats by default. - """ - def __init__(self, input_formats=None, *args, **kwargs): - input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS - super(DateField, self).__init__(input_formats=input_formats, *args, **kwargs) - -class DateTimeField(forms.DateTimeField): - """ - A date and time input field which uses non-US date and time input formats - by default. - """ - def __init__(self, input_formats=None, *args, **kwargs): - input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS - super(DateTimeField, self).__init__(input_formats=input_formats, *args, **kwargs) +from django import newforms as forms + +DEFAULT_DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06' + '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' +) + +DEFAULT_DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' + '%d/%m/%y %H:%M', # '25/10/06 14:30' + '%d/%m/%y', # '25/10/06' +) + +class DateField(forms.DateField): + """ + A date input field which uses non-US date input formats by default. + """ + def __init__(self, input_formats=None, *args, **kwargs): + input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS + super(DateField, self).__init__(input_formats=input_formats, *args, **kwargs) + +class DateTimeField(forms.DateTimeField): + """ + A date and time input field which uses non-US date and time input formats + by default. + """ + def __init__(self, input_formats=None, *args, **kwargs): + input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS + super(DateTimeField, self).__init__(input_formats=input_formats, *args, **kwargs) diff --git a/django/contrib/localflavor/jp/forms.py b/django/contrib/localflavor/jp/forms.py index 13083aab6e..d726f822d7 100644 --- a/django/contrib/localflavor/jp/forms.py +++ b/django/contrib/localflavor/jp/forms.py @@ -7,8 +7,6 @@ from django.newforms import ValidationError from django.utils.translation import ugettext from django.newforms.fields import RegexField, Select -import re - class JPPostalCodeField(RegexField): """ A form field that validates its input is a Japanese postcode. diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py index dfa7bed226..4769e63b1b 100644 --- a/django/contrib/sessions/models.py +++ b/django/contrib/sessions/models.py @@ -1,10 +1,5 @@ -import os -import sys -import time -import datetime import base64 import md5 -import random import cPickle as pickle from django.db import models diff --git a/django/contrib/webdesign/tests.py b/django/contrib/webdesign/tests.py index da9237a43b..d155620902 100644 --- a/django/contrib/webdesign/tests.py +++ b/django/contrib/webdesign/tests.py @@ -14,7 +14,6 @@ u'lorem ipsum dolor' """ from django.contrib.webdesign.lorem_ipsum import * -import datetime if __name__ == '__main__': import doctest diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index 7f68946f3d..a81bec322f 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -109,7 +109,8 @@ class BaseHandler(object): except exceptions.PermissionDenied: return http.HttpResponseForbidden('

          Permission denied

          ') except SystemExit: - pass # See http://code.djangoproject.com/ticket/1023 + # Allow sys.exit() to actually exit. See tickets #1023 and #4701 + raise except: # Handle everything else, including SuspiciousOperation, etc. # Get the exception info now, in case another exception is thrown later. exc_info = sys.exc_info() diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index e95be6b8d7..dde9e6eb80 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -30,7 +30,8 @@ class Command(BaseCommand): show_traceback = options.get('traceback', False) # Keep a count of the installed objects and fixtures - count = [0, 0] + fixture_count = 0 + object_count = 0 models = set() humanize = lambda dirname: dirname and "'%s'" % dirname or 'absolute path' @@ -65,7 +66,12 @@ class Command(BaseCommand): else: print "Skipping fixture '%s': %s is not a known serialization format" % (fixture_name, format) - for fixture_dir in app_fixtures + list(settings.FIXTURE_DIRS) + ['']: + if os.path.isabs(fixture_name): + fixture_dirs = [fixture_name] + else: + fixture_dirs = app_fixtures + list(settings.FIXTURE_DIRS) + [''] + + for fixture_dir in fixture_dirs: if verbosity > 1: print "Checking %s for fixtures..." % humanize(fixture_dir) @@ -86,14 +92,14 @@ class Command(BaseCommand): transaction.leave_transaction_management() return else: - count[1] += 1 + fixture_count += 1 if verbosity > 0: print "Installing %s fixture '%s' from %s." % \ (format, fixture_name, humanize(fixture_dir)) try: objects = serializers.deserialize(format, fixture) for obj in objects: - count[0] += 1 + object_count += 1 models.add(obj.object.__class__) obj.save() label_found = True @@ -113,7 +119,7 @@ class Command(BaseCommand): print "No %s fixture '%s' in %s." % \ (format, fixture_name, humanize(fixture_dir)) - if count[0] > 0: + if object_count > 0: sequence_sql = connection.ops.sequence_reset_sql(self.style, models) if sequence_sql: if verbosity > 1: @@ -124,9 +130,9 @@ class Command(BaseCommand): transaction.commit() transaction.leave_transaction_management() - if count[0] == 0: + if object_count == 0: if verbosity >= 2: print "No fixtures found." else: if verbosity > 0: - print "Installed %d object(s) from %d fixture(s)" % tuple(count) + print "Installed %d object(s) from %d fixture(s)" % (object_count, fixture_count) diff --git a/django/core/management/commands/sqlall.py b/django/core/management/commands/sqlall.py index d63dfb4b10..bf3c734bb6 100644 --- a/django/core/management/commands/sqlall.py +++ b/django/core/management/commands/sqlall.py @@ -1,7 +1,7 @@ from django.core.management.base import AppCommand class Command(AppCommand): - help = "Prints the CREATE TABLE, initial-data and CREATE INDEX SQL statements for the given model module name(s)." + help = "Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s)." output_transaction = True diff --git a/django/core/serializers/json.py b/django/core/serializers/json.py index e17b821f52..20797c02f6 100644 --- a/django/core/serializers/json.py +++ b/django/core/serializers/json.py @@ -4,7 +4,6 @@ Serialize data to/from JSON import datetime from django.utils import simplejson -from django.utils.simplejson import decoder from django.core.serializers.python import Serializer as PythonSerializer from django.core.serializers.python import Deserializer as PythonDeserializer try: diff --git a/django/core/serializers/pyyaml.py b/django/core/serializers/pyyaml.py index 4c32a9686f..58cf59bed9 100644 --- a/django/core/serializers/pyyaml.py +++ b/django/core/serializers/pyyaml.py @@ -4,7 +4,6 @@ YAML serializer. Requires PyYaml (http://pyyaml.org/), but that's checked for in __init__. """ -import datetime from django.db import models from django.core.serializers.python import Serializer as PythonSerializer from django.core.serializers.python import Deserializer as PythonDeserializer diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index ba3e9efda8..697dcd3a67 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -21,7 +21,6 @@ if (version < (1,2,1) or (version[:3] == (1, 2, 1) and from MySQLdb.converters import conversions from MySQLdb.constants import FIELD_TYPE -import types import re # Raise exceptions for database warnings if DEBUG is on diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py index 20392b238e..15ca957bac 100644 --- a/django/db/backends/postgresql/operations.py +++ b/django/db/backends/postgresql/operations.py @@ -27,6 +27,11 @@ class DatabaseOperations(BaseDatabaseOperations): def deferrable_sql(self): return " DEFERRABLE INITIALLY DEFERRED" + def field_cast_sql(self, db_type): + if db_type == 'inet': + return 'HOST(%s)' + return '%s' + def last_insert_id(self, cursor, table_name, pk_name): cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name)) return cursor.fetchone()[0] diff --git a/django/db/models/base.py b/django/db/models/base.py index 60bf021e4e..d96c93fb0d 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -41,7 +41,9 @@ class ModelBase(type): # Build complete list of parents for base in parents: - if base is not Model: + # Things without _meta aren't functional models, so they're + # uninteresting parents. + if hasattr(base, '_meta'): new_class._meta.parents.append(base) new_class._meta.parents.extend(base._meta.parents) @@ -133,13 +135,16 @@ class Model(object): def __ne__(self, other): return not self.__eq__(other) + def __hash__(self): + return hash(self._get_pk_val()) + def __init__(self, *args, **kwargs): dispatcher.send(signal=signals.pre_init, sender=self.__class__, args=args, kwargs=kwargs) # There is a rather weird disparity here; if kwargs, it's set, then args # overrides it. It should be one or the other; don't duplicate the work # The reason for the kwargs check is that standard iterator passes in by - # args, and nstantiation for iteration is 33% faster. + # args, and instantiation for iteration is 33% faster. args_len = len(args) if args_len > len(self._meta.fields): # Daft, but matches old exception sans the err msg. diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 383000d0aa..d16bb9d15d 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -228,7 +228,11 @@ class Field(object): value = int(value) except ValueError: raise ValueError("The __year lookup type requires an integer argument") - return ['%s-01-01 00:00:00' % value, '%s-12-31 23:59:59.999999' % value] + if settings.DATABASE_ENGINE == 'sqlite3': + first = '%s-01-01' + else: + first = '%s-01-01 00:00:00' + return [first % value, '%s-12-31 23:59:59.999999' % value] raise TypeError("Field has invalid lookup: %s" % lookup_type) def has_default(self): @@ -451,6 +455,9 @@ class BooleanField(Field): kwargs['blank'] = True Field.__init__(self, *args, **kwargs) + def get_internal_type(self): + return "BooleanField" + def to_python(self, value): if value in (True, False): return value if value in ('t', 'True', '1'): return True @@ -469,6 +476,9 @@ class CharField(Field): def get_manipulator_field_objs(self): return [oldforms.TextField] + def get_internal_type(self): + return "CharField" + def to_python(self, value): if isinstance(value, basestring): return value @@ -499,6 +509,9 @@ class DateField(Field): kwargs['blank'] = True Field.__init__(self, verbose_name, name, **kwargs) + def get_internal_type(self): + return "DateField" + def to_python(self, value): if value is None: return value @@ -568,6 +581,9 @@ class DateField(Field): return super(DateField, self).formfield(**defaults) class DateTimeField(DateField): + def get_internal_type(self): + return "DateTimeField" + def to_python(self, value): if value is None: return value @@ -638,6 +654,9 @@ class DecimalField(Field): self.max_digits, self.decimal_places = max_digits, decimal_places Field.__init__(self, verbose_name, name, **kwargs) + def get_internal_type(self): + return "DecimalField" + def to_python(self, value): if value is None: return value @@ -697,9 +716,6 @@ class EmailField(CharField): kwargs['max_length'] = kwargs.get('max_length', 75) CharField.__init__(self, *args, **kwargs) - def get_internal_type(self): - return "CharField" - def get_manipulator_field_objs(self): return [oldforms.EmailField] @@ -717,6 +733,9 @@ class FileField(Field): kwargs['max_length'] = kwargs.get('max_length', 100) Field.__init__(self, verbose_name, name, **kwargs) + def get_internal_type(self): + return "FileField" + def get_db_prep_save(self, value): "Returns field's value prepared for saving into a database." # Need to convert UploadedFile objects provided via a form to unicode for database insertion @@ -826,12 +845,18 @@ class FilePathField(Field): def get_manipulator_field_objs(self): return [curry(oldforms.FilePathField, path=self.path, match=self.match, recursive=self.recursive)] + def get_internal_type(self): + return "FilePathField" + class FloatField(Field): empty_strings_allowed = False def get_manipulator_field_objs(self): return [oldforms.FloatField] + def get_internal_type(self): + return "FloatField" + def formfield(self, **kwargs): defaults = {'form_class': forms.FloatField} defaults.update(kwargs) @@ -854,6 +879,9 @@ class ImageField(FileField): if not self.height_field: setattr(cls, 'get_%s_height' % self.name, curry(cls._get_FIELD_height, field=self)) + def get_internal_type(self): + return "ImageField" + def save_file(self, new_data, new_object, original_object, change, rel, save=True): FileField.save_file(self, new_data, new_object, original_object, change, rel, save) # If the image has height and/or width field(s) and they haven't @@ -876,6 +904,9 @@ class IntegerField(Field): def get_manipulator_field_objs(self): return [oldforms.IntegerField] + def get_internal_type(self): + return "IntegerField" + def formfield(self, **kwargs): defaults = {'form_class': forms.IntegerField} defaults.update(kwargs) @@ -890,6 +921,9 @@ class IPAddressField(Field): def get_manipulator_field_objs(self): return [oldforms.IPAddressField] + def get_internal_type(self): + return "IPAddressField" + def validate(self, field_data, all_data): validators.isValidIPAddress4(field_data, None) @@ -904,6 +938,9 @@ class NullBooleanField(Field): kwargs['null'] = True Field.__init__(self, *args, **kwargs) + def get_internal_type(self): + return "NullBooleanField" + def to_python(self, value): if value in (None, True, False): return value if value in ('None'): return None @@ -923,6 +960,9 @@ class PhoneNumberField(IntegerField): def get_manipulator_field_objs(self): return [oldforms.PhoneNumberField] + def get_internal_type(self): + return "PhoneNumberField" + def validate(self, field_data, all_data): validators.isValidPhone(field_data, all_data) @@ -936,6 +976,9 @@ class PositiveIntegerField(IntegerField): def get_manipulator_field_objs(self): return [oldforms.PositiveIntegerField] + def get_internal_type(self): + return "PositiveIntegerField" + def formfield(self, **kwargs): defaults = {'min_value': 0} defaults.update(kwargs) @@ -945,6 +988,9 @@ class PositiveSmallIntegerField(IntegerField): def get_manipulator_field_objs(self): return [oldforms.PositiveSmallIntegerField] + def get_internal_type(self): + return "PositiveSmallIntegerField" + def formfield(self, **kwargs): defaults = {'min_value': 0} defaults.update(kwargs) @@ -959,14 +1005,23 @@ class SlugField(CharField): kwargs['db_index'] = True super(SlugField, self).__init__(*args, **kwargs) + def get_internal_type(self): + return "SlugField" + class SmallIntegerField(IntegerField): def get_manipulator_field_objs(self): return [oldforms.SmallIntegerField] + def get_internal_type(self): + return "SmallIntegerField" + class TextField(Field): def get_manipulator_field_objs(self): return [oldforms.LargeTextField] + def get_internal_type(self): + return "TextField" + def formfield(self, **kwargs): defaults = {'widget': forms.Textarea} defaults.update(kwargs) @@ -980,6 +1035,9 @@ class TimeField(Field): kwargs['editable'] = False Field.__init__(self, verbose_name, name, **kwargs) + def get_internal_type(self): + return "TimeField" + def get_db_prep_lookup(self, lookup_type, value): if settings.DATABASE_ENGINE == 'oracle': # Oracle requires a date in order to parse. @@ -1044,9 +1102,6 @@ class URLField(CharField): def get_manipulator_field_objs(self): return [oldforms.URLField] - def get_internal_type(self): - return "CharField" - def formfield(self, **kwargs): defaults = {'form_class': forms.URLField, 'verify_exists': self.verify_exists} defaults.update(kwargs) @@ -1056,6 +1111,9 @@ class USStateField(Field): def get_manipulator_field_objs(self): return [oldforms.USStateField] + def get_internal_type(self): + return "USStateField" + def formfield(self, **kwargs): from django.contrib.localflavor.us.forms import USStateSelect defaults = {'widget': USStateSelect} @@ -1067,9 +1125,6 @@ class XMLField(TextField): self.schema_path = schema_path Field.__init__(self, verbose_name, name, **kwargs) - def get_internal_type(self): - return "TextField" - def get_manipulator_field_objs(self): return [curry(oldforms.XMLLargeTextField, schema_path=self.schema_path)] @@ -1080,8 +1135,5 @@ class OrderingField(IntegerField): kwargs['null'] = True IntegerField.__init__(self, **kwargs ) - def get_internal_type(self): - return "IntegerField" - def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True): return [oldforms.HiddenField(name_prefix + self.name)] diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 2ccf1e3dd0..ab23fee210 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -23,26 +23,64 @@ RECURSIVE_RELATIONSHIP_CONSTANT = 'self' pending_lookups = {} -def add_lookup(rel_cls, field): - name = field.rel.to - module = rel_cls.__module__ - key = (module, name) - # Has the model already been loaded? - # If so, resolve the string reference right away - model = get_model(rel_cls._meta.app_label, field.rel.to, False) +def add_lazy_relation(cls, field, relation): + """ + Adds a lookup on ``cls`` when a related field is defined using a string, + i.e.:: + + class MyModel(Model): + fk = ForeignKey("AnotherModel") + + This string can be: + + * RECURSIVE_RELATIONSHIP_CONSTANT (i.e. "self") to indicate a recursive + relation. + + * The name of a model (i.e "AnotherModel") to indicate another model in + the same app. + + * An app-label and model name (i.e. "someapp.AnotherModel") to indicate + another model in a different app. + + If the other model hasn't yet been loaded -- almost a given if you're using + lazy relationships -- then the relation won't be set up until the + class_prepared signal fires at the end of model initialization. + """ + # Check for recursive relations + if relation == RECURSIVE_RELATIONSHIP_CONSTANT: + app_label = cls._meta.app_label + model_name = cls.__name__ + + else: + # Look for an "app.Model" relation + try: + app_label, model_name = relation.split(".") + except ValueError: + # If we can't split, assume a model in current app + app_label = cls._meta.app_label + model_name = relation + + # Try to look up the related model, and if it's already loaded resolve the + # string right away. If get_model returns None, it means that the related + # model isn't loaded yet, so we need to pend the relation until the class + # is prepared. + model = get_model(app_label, model_name, False) if model: field.rel.to = model - field.do_related_class(model, rel_cls) + field.do_related_class(model, cls) else: - # Mark the related field for later lookup - pending_lookups.setdefault(key, []).append((rel_cls, field)) - + key = (app_label, model_name) + value = (cls, field) + pending_lookups.setdefault(key, []).append(value) + def do_pending_lookups(sender): - other_cls = sender - key = (other_cls.__module__, other_cls.__name__) - for rel_cls, field in pending_lookups.setdefault(key, []): - field.rel.to = other_cls - field.do_related_class(other_cls, rel_cls) + """ + Handle any pending relations to the sending model. Sent from class_prepared. + """ + key = (sender._meta.app_label, sender.__name__) + for cls, field in pending_lookups.pop(key, []): + field.rel.to = sender + field.do_related_class(sender, cls) dispatcher.connect(do_pending_lookups, signal=signals.class_prepared) @@ -66,9 +104,7 @@ class RelatedField(object): sup.contribute_to_class(cls, name) other = self.rel.to if isinstance(other, basestring): - if other == RECURSIVE_RELATIONSHIP_CONSTANT: - self.rel.to = cls.__name__ - add_lookup(cls, self) + add_lazy_relation(cls, self, other) else: self.do_related_class(other, cls) diff --git a/django/http/__init__.py b/django/http/__init__.py index 69e9d51204..7a85e20515 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -171,7 +171,7 @@ class QueryDict(MultiValueDict): dict.__setitem__(result, key, value) return result - def __deepcopy__(self, memo={}): + def __deepcopy__(self, memo): import copy result = self.__class__('', mutable=True) memo[id(self)] = result @@ -223,7 +223,7 @@ class QueryDict(MultiValueDict): def copy(self): "Returns a mutable copy of this object." - return self.__deepcopy__() + return self.__deepcopy__({}) def urlencode(self): output = [] diff --git a/django/newforms/forms.py b/django/newforms/forms.py index 04bf62e445..b4ac80c5aa 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -22,23 +22,40 @@ def pretty_name(name): name = name[0].upper() + name[1:] return name.replace('_', ' ') +def get_declared_fields(bases, attrs, with_base_fields=True): + """ + Create a list of form field instances from the passed in 'attrs', plus any + similar fields on the base classes (in 'bases'). This is used by both the + Form and ModelForm metclasses. + + If 'with_base_fields' is True, all fields from the bases are used. + Otherwise, only fields in the 'declared_fields' attribute on the bases are + used. The distinction is useful in ModelForm subclassing. + """ + fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)] + fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter)) + + # If this class is subclassing another Form, add that Form's fields. + # Note that we loop over the bases in *reverse*. This is necessary in + # order to preserve the correct order of fields. + if with_base_fields: + for base in bases[::-1]: + if hasattr(base, 'base_fields'): + fields = base.base_fields.items() + fields + else: + for base in bases[::-1]: + if hasattr(base, 'declared_fields'): + fields = base.declared_fields.items() + fields + + return SortedDict(fields) + class DeclarativeFieldsMetaclass(type): """ Metaclass that converts Field attributes to a dictionary called 'base_fields', taking into account parent class 'base_fields' as well. """ def __new__(cls, name, bases, attrs): - fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)] - fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter)) - - # If this class is subclassing another Form, add that Form's fields. - # Note that we loop over the bases in *reverse*. This is necessary in - # order to preserve the correct order of fields. - for base in bases[::-1]: - if hasattr(base, 'base_fields'): - fields = base.base_fields.items() + fields - - attrs['base_fields'] = SortedDict(fields) + attrs['base_fields'] = get_declared_fields(bases, attrs) return type.__new__(cls, name, bases, attrs) class BaseForm(StrAndUnicode): diff --git a/django/newforms/models.py b/django/newforms/models.py index 0ee911a82f..f3809dc370 100644 --- a/django/newforms/models.py +++ b/django/newforms/models.py @@ -11,7 +11,7 @@ from django.utils.datastructures import SortedDict from django.core.exceptions import ImproperlyConfigured from util import ValidationError, ErrorList -from forms import BaseForm +from forms import BaseForm, get_declared_fields from fields import Field, ChoiceField, EMPTY_VALUES from widgets import Select, SelectMultiple, MultipleHiddenInput @@ -211,57 +211,39 @@ class ModelFormOptions(object): self.fields = getattr(options, 'fields', None) self.exclude = getattr(options, 'exclude', None) + class ModelFormMetaclass(type): def __new__(cls, name, bases, attrs, formfield_callback=lambda f: f.formfield()): - fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)] - fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter)) + try: + parents = [b for b in bases if issubclass(b, ModelForm)] + except NameError: + # We are defining ModelForm itself. + parents = None + if not parents: + return super(ModelFormMetaclass, cls).__new__(cls, name, bases, + attrs) - # If this class is subclassing another Form, add that Form's fields. - # Note that we loop over the bases in *reverse*. This is necessary in - # order to preserve the correct order of fields. - for base in bases[::-1]: - if hasattr(base, 'base_fields'): - fields = base.base_fields.items() + fields - declared_fields = SortedDict(fields) - - opts = ModelFormOptions(attrs.get('Meta', None)) - attrs['_meta'] = opts - - # Don't allow more than one Meta model definition in bases. The fields - # would be generated correctly, but the save method won't deal with - # more than one object. - base_models = [] - for base in bases: - base_opts = getattr(base, '_meta', None) - base_model = getattr(base_opts, 'model', None) - if base_model is not None: - base_models.append(base_model) - if len(base_models) > 1: - raise ImproperlyConfigured("%s's base classes define more than one model." % name) - - # If a model is defined, extract form fields from it and add them to base_fields - if attrs['_meta'].model is not None: - # Don't allow a subclass to define a different Meta model than a - # parent class has. Technically the right fields would be generated, - # but the save method will not deal with more than one model. - for base in bases: - base_opts = getattr(base, '_meta', None) - base_model = getattr(base_opts, 'model', None) - if base_model and base_model is not opts.model: - raise ImproperlyConfigured('%s defines a different model than its parent.' % name) - model_fields = fields_for_model(opts.model, opts.fields, - opts.exclude, formfield_callback) - # fields declared in base classes override fields from the model - model_fields.update(declared_fields) - attrs['base_fields'] = model_fields + new_class = type.__new__(cls, name, bases, attrs) + declared_fields = get_declared_fields(bases, attrs, False) + opts = new_class._meta = ModelFormOptions(getattr(new_class, 'Meta', None)) + if opts.model: + # If a model is defined, extract form fields from it. + fields = fields_for_model(opts.model, opts.fields, + opts.exclude, formfield_callback) + # Override default model fields with any custom declared ones + # (plus, include all the other declared fields). + fields.update(declared_fields) else: - attrs['base_fields'] = declared_fields - return type.__new__(cls, name, bases, attrs) + fields = declared_fields + new_class.declared_fields = declared_fields + new_class.base_fields = fields + return new_class class BaseModelForm(BaseForm): def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, - initial=None, error_class=ErrorList, label_suffix=':', instance=None): + initial=None, error_class=ErrorList, label_suffix=':', + instance=None): opts = self._meta if instance is None: # if we didn't get an instance, instantiate a new one @@ -277,7 +259,8 @@ class BaseModelForm(BaseForm): def save(self, commit=True): """ - Saves this ``form``'s cleaned_data into model instance ``self.instance``. + Saves this ``form``'s cleaned_data into model instance + ``self.instance``. If commit=True, then the changes to ``instance`` will be saved to the database. Returns ``instance``. diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index d3400baac8..8e5bcf5bd8 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -2,6 +2,10 @@ import re import random as random_module +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.3, 2.4 fallback. from django.template import Variable, Library from django.conf import settings @@ -35,7 +39,7 @@ def stringfilter(func): for attr in ('is_safe', 'needs_autoescape'): if hasattr(func, attr): setattr(_dec, attr, getattr(func, attr)) - return _dec + return wraps(func)(_dec) ################### # STRINGS # diff --git a/django/test/_doctest.py b/django/test/_doctest.py index d1308b855e..a56483c3ab 100644 --- a/django/test/_doctest.py +++ b/django/test/_doctest.py @@ -100,7 +100,7 @@ __all__ = [ import __future__ -import sys, traceback, inspect, linecache, os, re, types +import sys, traceback, inspect, linecache, os, re import unittest, difflib, pdb, tempfile import warnings from StringIO import StringIO diff --git a/django/test/client.py b/django/test/client.py index b02d298418..67d3aa9030 100644 --- a/django/test/client.py +++ b/django/test/client.py @@ -1,7 +1,5 @@ -import datetime import sys from cStringIO import StringIO -from urlparse import urlparse from django.conf import settings from django.contrib.auth import authenticate, login from django.core.handlers.base import BaseHandler diff --git a/django/test/simple.py b/django/test/simple.py index 6fa381ac4d..43e1156a0a 100644 --- a/django/test/simple.py +++ b/django/test/simple.py @@ -146,4 +146,3 @@ def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]): teardown_test_environment() return len(result.failures) + len(result.errors) - \ No newline at end of file diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index 82d914000f..4c278c0d8e 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -3,7 +3,7 @@ class MergeDict(object): A simple class for creating new "virtual" dictionaries that actually look up values in more than one dictionary, passed in the constructor. - If a key appears in more than one of the passed in dictionaries, only the + If a key appears in more than one of the given dictionaries, only the first occurrence will be used. """ def __init__(self, *dicts): @@ -145,7 +145,7 @@ class SortedDict(dict): """Returns a copy of this object.""" # This way of initializing the copy means it works for subclasses, too. obj = self.__class__(self) - obj.keyOrder = self.keyOrder + obj.keyOrder = self.keyOrder[:] return obj def __repr__(self): @@ -155,6 +155,10 @@ class SortedDict(dict): """ return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in self.items()]) + def clear(self): + super(SortedDict, self).clear() + self.keyOrder = [] + class MultiValueDictKeyError(KeyError): pass diff --git a/django/utils/decorators.py b/django/utils/decorators.py index 57ce29fca4..27a080e740 100644 --- a/django/utils/decorators.py +++ b/django/utils/decorators.py @@ -1,6 +1,10 @@ "Functions that help with dynamically creating decorators for views." import types +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.3, 2.4 fallback. def decorator_from_middleware(middleware_class): """ @@ -53,5 +57,5 @@ def decorator_from_middleware(middleware_class): if result is not None: return result return response - return _wrapped_view + return wraps(view_func)(_wrapped_view) return _decorator_from_middleware diff --git a/django/utils/functional.py b/django/utils/functional.py index e0c862b0b7..3de693e18c 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -1,8 +1,120 @@ +# License for code in this file that was taken from Python 2.5. + +# PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +# -------------------------------------------- +# +# 1. This LICENSE AGREEMENT is between the Python Software Foundation +# ("PSF"), and the Individual or Organization ("Licensee") accessing and +# otherwise using this software ("Python") in source or binary form and +# its associated documentation. +# +# 2. Subject to the terms and conditions of this License Agreement, PSF +# hereby grants Licensee a nonexclusive, royalty-free, world-wide +# license to reproduce, analyze, test, perform and/or display publicly, +# prepare derivative works, distribute, and otherwise use Python +# alone or in any derivative version, provided, however, that PSF's +# License Agreement and PSF's notice of copyright, i.e., "Copyright (c) +# 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; +# All Rights Reserved" are retained in Python alone or in any derivative +# version prepared by Licensee. +# +# 3. In the event Licensee prepares a derivative work that is based on +# or incorporates Python or any part thereof, and wants to make +# the derivative work available to others as provided herein, then +# Licensee hereby agrees to include in any such work a brief summary of +# the changes made to Python. +# +# 4. PSF is making Python available to Licensee on an "AS IS" +# basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +# IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +# DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +# FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +# INFRINGE ANY THIRD PARTY RIGHTS. +# +# 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +# FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +# A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +# OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. +# +# 6. This License Agreement will automatically terminate upon a material +# breach of its terms and conditions. +# +# 7. Nothing in this License Agreement shall be deemed to create any +# relationship of agency, partnership, or joint venture between PSF and +# Licensee. This License Agreement does not grant permission to use PSF +# trademarks or trade name in a trademark sense to endorse or promote +# products or services of Licensee, or any third party. +# +# 8. By copying, installing or otherwise using Python, Licensee +# agrees to be bound by the terms and conditions of this License +# Agreement. + + def curry(_curried_func, *args, **kwargs): def _curried(*moreargs, **morekwargs): return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs)) return _curried +### Begin from Python 2.5 functools.py ######################################## + +# Summary of changes made to the Python 2.5 code below: +# * swapped ``partial`` for ``curry`` to maintain backwards-compatibility +# in Django. +# * Wrapped the ``setattr`` call in ``update_wrapper`` with a try-except +# block to make it compatible with Python 2.3, which doesn't allow +# assigning to ``__name__``. + +# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation. +# All Rights Reserved. + +############################################################################### + +# update_wrapper() and wraps() are tools to help write +# wrapper functions that can handle naive introspection + +WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__') +WRAPPER_UPDATES = ('__dict__',) +def update_wrapper(wrapper, + wrapped, + assigned = WRAPPER_ASSIGNMENTS, + updated = WRAPPER_UPDATES): + """Update a wrapper function to look like the wrapped function + + wrapper is the function to be updated + wrapped is the original function + assigned is a tuple naming the attributes assigned directly + from the wrapped function to the wrapper function (defaults to + functools.WRAPPER_ASSIGNMENTS) + updated is a tuple naming the attributes off the wrapper that + are updated with the corresponding attribute from the wrapped + function (defaults to functools.WRAPPER_UPDATES) + """ + for attr in assigned: + try: + setattr(wrapper, attr, getattr(wrapped, attr)) + except TypeError: # Python 2.3 doesn't allow assigning to __name__. + pass + for attr in updated: + getattr(wrapper, attr).update(getattr(wrapped, attr)) + # Return the wrapper so this can be used as a decorator via curry() + return wrapper + +def wraps(wrapped, + assigned = WRAPPER_ASSIGNMENTS, + updated = WRAPPER_UPDATES): + """Decorator factory to apply update_wrapper() to a wrapper function + + Returns a decorator that invokes update_wrapper() with the decorated + function as the wrapper argument and the arguments to wraps() as the + remaining arguments. Default arguments are as for update_wrapper(). + This is a convenience function to simplify applying curry() to + update_wrapper(). + """ + return curry(update_wrapper, wrapped=wrapped, + assigned=assigned, updated=updated) + +### End from Python 2.5 functools.py ########################################## + def memoize(func, cache, num_args): """ Wrap a function so that results for any argument tuple are stored in @@ -18,7 +130,7 @@ def memoize(func, cache, num_args): result = func(*args) cache[mem_args] = result return result - return wrapper + return wraps(func)(wrapper) class Promise(object): """ @@ -110,7 +222,7 @@ def lazy(func, *resultclasses): # Creates the proxy object, instead of the actual value. return __proxy__(args, kw) - return __wrapper__ + return wraps(func)(__wrapper__) def allow_lazy(func, *resultclasses): """ @@ -126,4 +238,4 @@ def allow_lazy(func, *resultclasses): else: return func(*args, **kwargs) return lazy(func, *resultclasses)(*args, **kwargs) - return wrapper + return wraps(func)(wrapper) diff --git a/django/views/decorators/cache.py b/django/views/decorators/cache.py index b04cc2340b..8b620c1345 100644 --- a/django/views/decorators/cache.py +++ b/django/views/decorators/cache.py @@ -11,6 +11,11 @@ Additionally, all headers from the response's Vary header will be taken into account on caching -- just like the middleware does. """ +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.3, 2.4 fallback. + from django.utils.decorators import decorator_from_middleware from django.utils.cache import patch_cache_control, add_never_cache_headers from django.middleware.cache import CacheMiddleware @@ -26,7 +31,7 @@ def cache_control(**kwargs): patch_cache_control(response, **kwargs) return response - return _cache_controlled + return wraps(viewfunc)(_cache_controlled) return _cache_controller @@ -39,4 +44,4 @@ def never_cache(view_func): response = view_func(request, *args, **kwargs) add_never_cache_headers(response) return response - return _wrapped_view_func + return wraps(view_func)(_wrapped_view_func) diff --git a/django/views/decorators/http.py b/django/views/decorators/http.py index 9feb8c0d84..dd4f90ea9c 100644 --- a/django/views/decorators/http.py +++ b/django/views/decorators/http.py @@ -2,6 +2,11 @@ Decorators for views based on HTTP headers. """ +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.3, 2.4 fallback. + from django.utils.decorators import decorator_from_middleware from django.middleware.http import ConditionalGetMiddleware from django.http import HttpResponseNotAllowed @@ -24,7 +29,7 @@ def require_http_methods(request_method_list): if request.method not in request_method_list: return HttpResponseNotAllowed(request_method_list) return func(request, *args, **kwargs) - return inner + return wraps(func)(inner) return decorator require_GET = require_http_methods(["GET"]) diff --git a/django/views/decorators/vary.py b/django/views/decorators/vary.py index 9b49c45cf2..ea1b8d307d 100644 --- a/django/views/decorators/vary.py +++ b/django/views/decorators/vary.py @@ -1,3 +1,8 @@ +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.3, 2.4 fallback. + from django.utils.cache import patch_vary_headers def vary_on_headers(*headers): @@ -16,7 +21,7 @@ def vary_on_headers(*headers): response = func(*args, **kwargs) patch_vary_headers(response, headers) return response - return inner_func + return wraps(func)(inner_func) return decorator def vary_on_cookie(func): @@ -32,4 +37,4 @@ def vary_on_cookie(func): response = func(*args, **kwargs) patch_vary_headers(response, ('Cookie',)) return response - return inner_func + return wraps(func)(inner_func) diff --git a/docs/api_stability.txt b/docs/api_stability.txt index 5ccf104327..769359b75e 100644 --- a/docs/api_stability.txt +++ b/docs/api_stability.txt @@ -88,7 +88,7 @@ change: API changes may be necessary. - Generic relations will most likely be moved out of core and into the - content-types contrib package to avoid core dependancies on optional + content-types contrib package to avoid core dependencies on optional components. - The comments framework, which is yet undocumented, will likely get a complete diff --git a/docs/contenttypes.txt b/docs/contenttypes.txt index 3ef83f2066..51ca8f0198 100644 --- a/docs/contenttypes.txt +++ b/docs/contenttypes.txt @@ -215,7 +215,7 @@ each ``TaggedItem`` will have a ``content_object`` field that returns the object it's related to, and you can also assign to that field or use it when creating a ``TaggedItem``:: - >>> from django.contrib.models.auth import User + >>> from django.contrib.auth.models import User >>> guido = User.objects.get(username='Guido') >>> t = TaggedItem(content_object=guido, tag='bdfl') >>> t.save() @@ -235,7 +235,7 @@ a "reverse" generic relationship to enable an additional API. For example:: ``Bookmark`` instances will each have a ``tags`` attribute, which can be used to retrieve their associated ``TaggedItems``:: - >>> b = Bookmark('http://www.djangoproject.com/') + >>> b = Bookmark(url='http://www.djangoproject.com/') >>> b.save() >>> t1 = TaggedItem(content_object=b, tag='django') >>> t1.save() diff --git a/docs/db-api.txt b/docs/db-api.txt index adca8b4d5c..80f8a2d60b 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -1605,8 +1605,7 @@ the cache of all one-to-many relationships ahead of time. Example:: print e.blog # Doesn't hit the database; uses cached version. print e.blog # Doesn't hit the database; uses cached version. -``select_related()`` is documented in the "QuerySet methods that return new -QuerySets" section above. +``select_related()`` is documented in the `QuerySet methods that return new QuerySets`_ section above. Backward ~~~~~~~~ diff --git a/docs/distributions.txt b/docs/distributions.txt index 48c30c7068..0c051c8da5 100644 --- a/docs/distributions.txt +++ b/docs/distributions.txt @@ -5,7 +5,7 @@ Third-party distributions of Django Several third-party distributors are now providing versions of Django integrated with their package-management systems. These can make installation and upgrading much easier for users of Django since the integration includes the ability to -automatically install dependancies (like database adapters) that Django +automatically install dependencies (like database adapters) that Django requires. Typically, these packages are based on the latest stable release of Django, so diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 21821ab2e9..e79c105bbd 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -717,7 +717,7 @@ in Python package syntax, e.g. ``mysite.settings``. If this isn't provided, variable. Note that this option is unnecessary in ``manage.py``, because it uses -``settings.py`` from the current project by default. +``settings.py`` from the current project by default. Extra niceties ============== @@ -765,9 +765,9 @@ a command that can be executed as an action when you run ``manage.py``:: __init__.py explode.py views.py - + In this example, the ``explode`` command will be made available to any project -that includes the ``fancy_blog`` application in ``settings.INSTALLED_APPS``. +that includes the ``blog`` application in ``settings.INSTALLED_APPS``. The ``explode.py`` module has only one requirement -- it must define a class called ``Command`` that extends ``django.core.management.base.BaseCommand``. diff --git a/docs/faq.txt b/docs/faq.txt index cef0508562..3d7db36fbc 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -353,7 +353,7 @@ How do I install mod_python on Windows? working`_. .. _`win32 build of mod_python for Python 2.4`: http://www.lehuen.com/nicolas/index.php/2005/02/21/39-win32-build-of-mod_python-314-for-python-24 -.. _`Django on Windows howto`: http://thinkhole.org/wp/2006/04/03/django-on-windows-howto/ +.. _`Django on Windows howto`: http://thinkhole.org/wp/django-on-windows/ .. _`Running mod_python on Apache on Windows2000`: http://groups-beta.google.com/group/comp.lang.python/msg/139af8c83a5a9d4f .. _`guide to getting mod_python working`: http://www.dscpl.com.au/articles/modpython-001.html diff --git a/docs/install.txt b/docs/install.txt index 331a5ea8e3..542036e2af 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -138,7 +138,7 @@ Installing a distribution-specific package Check the `distribution specific notes`_ to see if your platform/distribution provides official Django packages/installers. Distribution-provided packages will typically allow for automatic -installation of dependancies and easy upgrade paths. +installation of dependencies and easy upgrade paths. Installing an official release ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/model-api.txt b/docs/model-api.txt index 3f908ec158..66fa63e3c6 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -384,7 +384,7 @@ The admin represents this as an ```` (a single-line input). ``IPAddressField`` ~~~~~~~~~~~~~~~~~~ -An IP address, in string format (i.e. "24.124.1.30"). +An IP address, in string format (e.g. "192.0.2.30"). The admin represents this as an ```` (a single-line input). @@ -784,9 +784,17 @@ you can use the name of the model, rather than the model object itself:: class Manufacturer(models.Model): # ... -Note, however, that you can only use strings to refer to models in the same -models.py file -- you cannot use a string to reference a model in a different -application, or to reference a model that has been imported from elsewhere. +Note, however, that this only refers to models in the same models.py file -- you +cannot use a string to reference a model defined in another application or +imported from elsewhere. + +**New in Django development version:** to refer to models defined in another +application, you must instead explicitially specify the application label. That +is, if the ``Manufacturer`` model above is defined in another application called +``production``, you'd need to use:: + + class Car(models.Model): + manufacturer = models.ForeignKey('production.Manufacturer') Behind the scenes, Django appends ``"_id"`` to the field name to create its database column name. In the above example, the database table for the ``Car`` @@ -952,10 +960,10 @@ the relationship should work. All are optional: ``limit_choices_to`` See the description under ``ForeignKey`` above. ``symmetrical`` Only used in the definition of ManyToManyFields on self. - Consider the following model: + Consider the following model:: - class Person(models.Model): - friends = models.ManyToManyField("self") + class Person(models.Model): + friends = models.ManyToManyField("self") When Django processes this model, it identifies that it has a ``ManyToManyField`` on itself, and as a result, it @@ -1872,7 +1880,7 @@ more simply as:: If you define a ``__unicode__()`` method on your model and not a ``__str__()`` method, Django will automatically provide you with a ``__str__()`` that calls -``__unicode()__`` and then converts the result correctly to a UTF-8 encoded +``__unicode__()`` and then converts the result correctly to a UTF-8 encoded string object. This is recommended development practice: define only ``__unicode__()`` and let Django take care of the conversion to string objects when required. diff --git a/docs/modelforms.txt b/docs/modelforms.txt index a99e27fff7..853fb3159e 100644 --- a/docs/modelforms.txt +++ b/docs/modelforms.txt @@ -320,3 +320,41 @@ parameter when declaring the form field:: ... ... class Meta: ... model = Article + +Form inheritance +---------------- + +As with basic forms, you can extend and reuse ``ModelForms`` by inheriting +them. This is useful if you need to declare extra fields or extra methods on a +parent class for use in a number of forms derived from models. For example, +using the previous ``ArticleForm`` class:: + + >>> class EnhancedArticleForm(ArticleForm): + ... def clean_pub_date(self): + ... ... + +This creates a form that behaves identically to ``ArticleForm``, except there's +some extra validation and cleaning for the ``pub_date`` field. + +You can also subclass the parent's ``Meta`` inner class if you want to change +the ``Meta.fields`` or ``Meta.excludes`` lists:: + + >>> class RestrictedArticleForm(EnhancedArticleForm): + ... class Meta(ArticleForm.Meta): + ... exclude = ['body'] + +This adds the extra method from the ``EnhancedArticleForm`` and modifies +the original ``ArticleForm.Meta`` to remove one field. + +There are a couple of things to note, however. + + * Normal Python name resolution rules apply. If you have multiple base + classes that declare a ``Meta`` inner class, only the first one will be + used. This means the child's ``Meta``, if it exists, otherwise the + ``Meta`` of the first parent, etc. + + * For technical reasons, a subclass cannot inherit from both a ``ModelForm`` + and a ``Form`` simultaneously. + +Chances are these notes won't affect you unless you're trying to do something +tricky with subclassing. diff --git a/docs/request_response.txt b/docs/request_response.txt index 47c66355e8..e50cfc5ea3 100644 --- a/docs/request_response.txt +++ b/docs/request_response.txt @@ -576,7 +576,7 @@ Three things to note about 404 views: in the 404. * The 404 view is passed a ``RequestContext`` and will have access to - variables supplied by your ``TEMPLATE_CONTEXT_PROCESSORS`` (e.g. + variables supplied by your ``TEMPLATE_CONTEXT_PROCESSORS`` setting (e.g., ``MEDIA_URL``). * If ``DEBUG`` is set to ``True`` (in your settings module), then your 404 diff --git a/docs/serialization.txt b/docs/serialization.txt index dff33f219f..e901410f1c 100644 --- a/docs/serialization.txt +++ b/docs/serialization.txt @@ -88,7 +88,7 @@ something like:: for deserialized_object in serializers.deserialize("xml", data): if object_should_be_saved(deserialized_object): - obj.save() + deserialized_object.save() In other words, the usual use is to examine the deserialized objects to make sure that they are "appropriate" for saving before doing so. Of course, if you trust your data source you could just save the object and move on. diff --git a/docs/shortcuts.txt b/docs/shortcuts.txt index f1d7f38ffa..005fdc3029 100644 --- a/docs/shortcuts.txt +++ b/docs/shortcuts.txt @@ -30,9 +30,9 @@ Optional arguments ``context_instance`` The context instance to render the template with. By default, the template will be rendered with a ``Context`` instance (filled with values from - ``dictionary``). If you need to use `context processors`_, you will want to - render the template with a ``RequestContext`` instance instead. Your code - might look something like this:: + ``dictionary``). If you need to use `context processors`_, render the + template with a ``RequestContext`` instance instead. Your code might look + something like this:: return render_to_response('my_template.html', my_data_dictionary, diff --git a/docs/templates.txt b/docs/templates.txt index c351c951c9..d473a6f06f 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -1406,6 +1406,8 @@ Joins a list with a string, like Python's ``str.join(list)``. last ~~~~ +**New in Django development version.** + Returns the last item in a list. length diff --git a/docs/templates_python.txt b/docs/templates_python.txt index f98cfa3249..c6e9223e9f 100644 --- a/docs/templates_python.txt +++ b/docs/templates_python.txt @@ -395,6 +395,8 @@ See the `internationalization docs`_ for more. django.core.context_processors.media ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**New in Django development version** + If ``TEMPLATE_CONTEXT_PROCESSORS`` contains this processor, every ``RequestContext`` will contain a variable ``MEDIA_URL``, providing the value of the `MEDIA_URL setting`_. @@ -1014,7 +1016,7 @@ This is not a very common situation, but it's useful if you're rendering a template yourself. For example:: def render(self, context): - t = template.load_template('small_fragment.html') + t = template.loader.get_template('small_fragment.html') return t.render(Context({'var': obj}, autoescape=context.autoescape)) If we had neglected to pass in the current ``context.autoescape`` value to our diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt index 6ed7043fd5..789399de8d 100644 --- a/docs/url_dispatch.txt +++ b/docs/url_dispatch.txt @@ -190,6 +190,28 @@ The remaining arguments should be tuples in this format:: ...where ``optional dictionary`` and ``optional name`` are optional. (See `Passing extra options to view functions`_ below.) +.. note:: + Because `patterns()` is a function call, it accepts a maximum of 255 + arguments (URL patterns, in this case). This is a limit for all Python + function calls. This is rarely a problem in practice, because you'll + typically structure your URL patterns modularly by using `include()` + sections. However, on the off-chance you do hit the 255-argument limit, + realize that `patterns()` returns a Python list, so you can split up the + construction of the list. + + :: + + urlpatterns = patterns('', + ... + ) + urlpatterns += patterns('', + ... + ) + + Python lists have unlimited size, so there's no limit to how many URL + patterns you can construct. The only limit is that you can only create 254 + at a time (the 255th argument is the initial prefix argument). + url --- diff --git a/extras/django_bash_completion b/extras/django_bash_completion index 8906609a68..7b2b1947d8 100644 --- a/extras/django_bash_completion +++ b/extras/django_bash_completion @@ -61,13 +61,13 @@ _django_completion() || # python manage.py, /some/path/python manage.py (if manage.py exists) ( ${COMP_CWORD} -eq 2 && - ( $( basename ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && - ( $( basename ${COMP_WORDS[1]} ) == manage.py) && + ( $( basename -- ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && + ( $( basename -- ${COMP_WORDS[1]} ) == manage.py) && ( -r ${COMP_WORDS[1]} ) ) || ( ${COMP_CWORD} -eq 2 && - ( $( basename ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && - ( $( basename ${COMP_WORDS[1]} ) == django-admin.py) && + ( $( basename -- ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && + ( $( basename -- ${COMP_WORDS[1]} ) == django-admin.py) && ( -r ${COMP_WORDS[1]} ) ) ]] ; then case ${cur} in @@ -149,7 +149,7 @@ unset pythons if command -v whereis &>/dev/null; then python_interpreters=$(whereis python | cut -d " " -f 2-) for python in $python_interpreters; do - pythons="${pythons} $(basename $python)" + pythons="${pythons} $(basename -- $python)" done pythons=$(echo $pythons | tr " " "\n" | sort -u | tr "\n" " ") else diff --git a/setup.py b/setup.py index 61e0fd55e9..3cbfc55460 100644 --- a/setup.py +++ b/setup.py @@ -27,19 +27,16 @@ for scheme in INSTALL_SCHEMES.values(): # an easy way to do this. packages, data_files = [], [] root_dir = os.path.dirname(__file__) -django_dir = os.path.join(root_dir, 'django') -pieces = fullsplit(root_dir) -if pieces[-1] == '': - len_root_dir = len(pieces) - 1 -else: - len_root_dir = len(pieces) +if root_dir != '': + os.chdir(root_dir) +django_dir = 'django' for dirpath, dirnames, filenames in os.walk(django_dir): # Ignore dirnames that start with '.' for i, dirname in enumerate(dirnames): if dirname.startswith('.'): del dirnames[i] if '__init__.py' in filenames: - packages.append('.'.join(fullsplit(dirpath)[len_root_dir:])) + packages.append('.'.join(fullsplit(dirpath))) elif filenames: data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]]) diff --git a/tests/modeltests/basic/models.py b/tests/modeltests/basic/models.py index 2f4b932fe0..557331a36e 100644 --- a/tests/modeltests/basic/models.py +++ b/tests/modeltests/basic/models.py @@ -5,6 +5,11 @@ This is a basic model with only two non-primary-key fields. """ +try: + set +except NameError: + from sets import Set as set + from django.db import models class Article(models.Model): @@ -389,4 +394,10 @@ year, including Jan. 1 and Dec. 31. >>> a.save() >>> Article.objects.get(pk=a.id).headline u'\u6797\u539f \u3081\u3050\u307f' + +# Model instances have a hash function, so they can be used in sets or as +# dictionary keys. Two models compare as equal if their primary keys are equal. +>>> s = set([a10, a11, a12]) +>>> Article.objects.get(headline='Article 11') in s +True """ diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index f1fed8f1e1..c480899f84 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -64,11 +64,11 @@ class TextFile(models.Model): def __unicode__(self): return self.description - + class ImageFile(models.Model): description = models.CharField(max_length=20) image = models.FileField(upload_to=tempfile.gettempdir()) - + def __unicode__(self): return self.description @@ -155,29 +155,52 @@ familiar with the mechanics. ... class Meta: ... model = Category ->>> class BadForm(CategoryForm): +>>> class OddForm(CategoryForm): ... class Meta: ... model = Article -Traceback (most recent call last): -... -ImproperlyConfigured: BadForm defines a different model than its parent. + +OddForm is now an Article-related thing, because BadForm.Meta overrides +CategoryForm.Meta. +>>> OddForm.base_fields.keys() +['headline', 'slug', 'pub_date', 'writer', 'article', 'status', 'categories'] >>> class ArticleForm(ModelForm): ... class Meta: ... model = Article +First class with a Meta class wins. + >>> class BadForm(ArticleForm, CategoryForm): ... pass -Traceback (most recent call last): -... -ImproperlyConfigured: BadForm's base classes define more than one model. +>>> OddForm.base_fields.keys() +['headline', 'slug', 'pub_date', 'writer', 'article', 'status', 'categories'] -This one is OK since the subclass specifies the same model as the parent. +Subclassing without specifying a Meta on the class will use the parent's Meta +(or the first parent in the MRO if there are multiple parent classes). ->>> class SubCategoryForm(CategoryForm): +>>> class CategoryForm(ModelForm): ... class Meta: ... model = Category +>>> class SubCategoryForm(CategoryForm): +... pass +>>> SubCategoryForm.base_fields.keys() +['name', 'slug', 'url'] +We can also subclass the Meta inner class to change the fields list. + +>>> class CategoryForm(ModelForm): +... checkbox = forms.BooleanField() +... +... class Meta: +... model = Category +>>> class SubCategoryForm(CategoryForm): +... class Meta(CategoryForm.Meta): +... exclude = ['url'] + +>>> print SubCategoryForm() + + + # Old form_for_x tests ####################################################### diff --git a/tests/modeltests/mutually_referential/models.py b/tests/modeltests/mutually_referential/models.py index 7cf7bf8bb2..5176721f3d 100644 --- a/tests/modeltests/mutually_referential/models.py +++ b/tests/modeltests/mutually_referential/models.py @@ -1,18 +1,22 @@ """ 24. Mutually referential many-to-one relationships -To define a many-to-one relationship, use ``ForeignKey()`` . +Strings can be used instead of model literals to set up "lazy" relations. """ from django.db.models import * class Parent(Model): name = CharField(max_length=100, core=True) + + # Use a simple string for forward declarations. bestchild = ForeignKey("Child", null=True, related_name="favoured_by") class Child(Model): name = CharField(max_length=100) - parent = ForeignKey(Parent) + + # You can also explicitally specify the related app. + parent = ForeignKey("mutually_referential.Parent") __test__ = {'API_TESTS':""" # Create a Parent diff --git a/tests/modeltests/ordering/models.py b/tests/modeltests/ordering/models.py index 3e651d4ee7..9b342a9265 100644 --- a/tests/modeltests/ordering/models.py +++ b/tests/modeltests/ordering/models.py @@ -2,8 +2,8 @@ 6. Specifying ordering Specify default ordering for a model using the ``ordering`` attribute, which -should be a list or tuple of field names. This tells Django how to order the -results of ``get_list()`` and other similar functions. +should be a list or tuple of field names. This tells Django how to order +queryset results. If a field name in ``ordering`` starts with a hyphen, that field will be ordered in descending order. Otherwise, it'll be ordered in ascending order. diff --git a/tests/regressiontests/datastructures/tests.py b/tests/regressiontests/datastructures/tests.py index b5dc5d171b..b51b4b1233 100644 --- a/tests/regressiontests/datastructures/tests.py +++ b/tests/regressiontests/datastructures/tests.py @@ -77,6 +77,8 @@ MultiValueDictKeyError: "Key 'lastname' not found in >> d.keys() == d.copy().keys() True +>>> d2 = d.copy() +>>> d2['four'] = 'four' >>> print repr(d) {'one': 'not one', 'two': 'two', 'three': 'three'} >>> d.pop('one', 'missing') @@ -99,6 +101,12 @@ Init from sequence of tuples >>> print repr(d) {1: 'one', 0: 'zero', 2: 'two'} +>>> d.clear() +>>> d +{} +>>> d.keyOrder +[] + ### DotExpandedDict ############################################################ >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']}) diff --git a/tests/regressiontests/datatypes/models.py b/tests/regressiontests/datatypes/models.py index ff9666bc0c..9ebb6402e2 100644 --- a/tests/regressiontests/datatypes/models.py +++ b/tests/regressiontests/datatypes/models.py @@ -56,4 +56,30 @@ datetime.date(1938, 6, 4) datetime.time(5, 30) >>> d3.consumed_at datetime.datetime(2007, 4, 20, 16, 19, 59) + +# Year boundary tests (ticket #3689) + +>>> d = Donut(name='Date Test 2007', baked_date=datetime.datetime(year=2007, month=12, day=31), consumed_at=datetime.datetime(year=2007, month=12, day=31, hour=23, minute=59, second=59)) +>>> d.save() +>>> d1 = Donut(name='Date Test 2006', baked_date=datetime.datetime(year=2006, month=1, day=1), consumed_at=datetime.datetime(year=2006, month=1, day=1)) +>>> d1.save() + +>>> Donut.objects.filter(baked_date__year=2007) +[] + +>>> Donut.objects.filter(baked_date__year=2006) +[] + +>>> Donut.objects.filter(consumed_at__year=2007).order_by('name') +[, ] + +>>> Donut.objects.filter(consumed_at__year=2006) +[] + +>>> Donut.objects.filter(consumed_at__year=2005) +[] + +>>> Donut.objects.filter(consumed_at__year=2008) +[] + """} diff --git a/tests/regressiontests/decorators/__init__.py b/tests/regressiontests/decorators/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/decorators/models.py b/tests/regressiontests/decorators/models.py new file mode 100644 index 0000000000..e5a795067b --- /dev/null +++ b/tests/regressiontests/decorators/models.py @@ -0,0 +1,2 @@ +# A models.py so that tests run. + diff --git a/tests/regressiontests/decorators/tests.py b/tests/regressiontests/decorators/tests.py new file mode 100644 index 0000000000..0c434772f8 --- /dev/null +++ b/tests/regressiontests/decorators/tests.py @@ -0,0 +1,56 @@ +from unittest import TestCase +from sys import version_info + +from django.http import HttpResponse +from django.utils.functional import allow_lazy, lazy, memoize +from django.views.decorators.http import require_http_methods, require_GET, require_POST +from django.views.decorators.vary import vary_on_headers, vary_on_cookie +from django.views.decorators.cache import cache_page, never_cache, cache_control +from django.contrib.auth.decorators import login_required, permission_required, user_passes_test +from django.contrib.admin.views.decorators import staff_member_required + +def fully_decorated(request): + """Expected __doc__""" + return HttpResponse('dummy') +fully_decorated.anything = "Expected __dict__" + +# django.views.decorators.http +fully_decorated = require_http_methods(["GET"])(fully_decorated) +fully_decorated = require_GET(fully_decorated) +fully_decorated = require_POST(fully_decorated) + +# django.views.decorators.vary +fully_decorated = vary_on_headers('Accept-language')(fully_decorated) +fully_decorated = vary_on_cookie(fully_decorated) + +# django.views.decorators.cache +fully_decorated = cache_page(60*15)(fully_decorated) +fully_decorated = cache_control(private=True)(fully_decorated) +fully_decorated = never_cache(fully_decorated) + +# django.contrib.auth.decorators +fully_decorated = user_passes_test(lambda u:True)(fully_decorated) +fully_decorated = login_required(fully_decorated) +fully_decorated = permission_required('change_world')(fully_decorated) + +# django.contrib.admin.views.decorators +fully_decorated = staff_member_required(fully_decorated) + +# django.utils.functional +fully_decorated = memoize(fully_decorated, {}, 1) +fully_decorated = allow_lazy(fully_decorated) +fully_decorated = lazy(fully_decorated) + +class DecoratorsTest(TestCase): + + def test_attributes(self): + """ + Tests that django decorators set certain attributes of the wrapped + function. + """ + # Only check __name__ on Python 2.4 or later since __name__ can't be + # assigned to in earlier Python versions. + if version_info[0] >= 2 and version_info[1] >= 4: + self.assertEquals(fully_decorated.__name__, 'fully_decorated') + self.assertEquals(fully_decorated.__doc__, 'Expected __doc__') + self.assertEquals(fully_decorated.__dict__['anything'], 'Expected __dict__') diff --git a/tests/regressiontests/fixtures_regress/fixtures/absolute.json b/tests/regressiontests/fixtures_regress/fixtures/absolute.json new file mode 100644 index 0000000000..37ed3f6886 --- /dev/null +++ b/tests/regressiontests/fixtures_regress/fixtures/absolute.json @@ -0,0 +1,9 @@ +[ + { + "pk": "1", + "model": "fixtures_regress.absolute", + "fields": { + "name": "Load Absolute Path Test" + } + } +] \ No newline at end of file diff --git a/tests/regressiontests/fixtures_regress/models.py b/tests/regressiontests/fixtures_regress/models.py index a62925eb37..144debe05a 100644 --- a/tests/regressiontests/fixtures_regress/models.py +++ b/tests/regressiontests/fixtures_regress/models.py @@ -1,6 +1,7 @@ from django.db import models from django.contrib.auth.models import User from django.conf import settings +import os class Animal(models.Model): name = models.CharField(max_length=150) @@ -28,6 +29,16 @@ class Stuff(models.Model): name = None return unicode(name) + u' is owned by ' + unicode(self.owner) +class Absolute(models.Model): + name = models.CharField(max_length=40) + + load_count = 0 + + def __init__(self, *args, **kwargs): + super(Absolute, self).__init__(*args, **kwargs) + Absolute.load_count += 1 + + __test__ = {'API_TESTS':""" >>> from django.core import management @@ -49,4 +60,15 @@ __test__ = {'API_TESTS':""" >>> Stuff.objects.all() [] +############################################### +# Regression test for ticket #6436 -- +# os.path.join will throw away the initial parts of a path if it encounters +# an absolute path. This means that if a fixture is specified as an absolute path, +# we need to make sure we don't discover the absolute path in every fixture directory. + +>>> load_absolute_path = os.path.join(os.path.dirname(__file__), 'fixtures', 'absolute.json') +>>> management.call_command('loaddata', load_absolute_path, verbosity=0) +>>> Absolute.load_count +1 + """} diff --git a/tests/regressiontests/i18n/misc.py b/tests/regressiontests/i18n/misc.py index eb64263799..6ed8afaee3 100644 --- a/tests/regressiontests/i18n/misc.py +++ b/tests/regressiontests/i18n/misc.py @@ -1,3 +1,5 @@ +import sys + tests = """ >>> from django.utils.translation.trans_real import parse_accept_lang_header >>> p = parse_accept_lang_header @@ -83,7 +85,14 @@ source tree. >>> r.META = {'HTTP_ACCEPT_LANGUAGE': 'es-ar,de'} >>> g(r) 'es-ar' +""" +# Python 2.3 returns slightly different results for completely bogus locales, +# so we omit this test for that anything below 2.4. It's relatively harmless in +# any cases (GIGO). This also means this won't be executed on Jython currently, +# but life's like that sometimes. +if sys.version_info >= (2, 4): + tests += """ This test assumes there won't be a Django translation to a US variation of the Spanish language, a safe assumption. When the user sets it as the preferred language, the main 'es' translation should be selected @@ -91,7 +100,9 @@ instead. >>> r.META = {'HTTP_ACCEPT_LANGUAGE': 'es-us'} >>> g(r) 'es' +""" +tests += """ This tests the following scenario: there isn't a main language (zh) translation of Django but there is a translation to variation (zh_CN) the user sets zh-cn as the preferred language, it should be selected by diff --git a/tests/regressiontests/string_lookup/models.py b/tests/regressiontests/string_lookup/models.py index 9deeb18763..1bdb2d4452 100644 --- a/tests/regressiontests/string_lookup/models.py +++ b/tests/regressiontests/string_lookup/models.py @@ -39,6 +39,7 @@ class Base(models.Model): class Article(models.Model): name = models.CharField(max_length=50) text = models.TextField() + submitted_from = models.IPAddressField(blank=True, null=True) def __str__(self): return "Article %s" % self.name @@ -98,4 +99,11 @@ __test__ = {'API_TESTS': ur""" >>> Article.objects.get(text__contains='quick brown fox') + +# Regression test for #708: "like" queries on IP address fields require casting +# to text (on PostgreSQL). +>>> Article(name='IP test', text='The body', submitted_from='192.0.2.100').save() +>>> Article.objects.filter(submitted_from__contains='192.0.2') +[] + """}