From 1d46d20038a8473fc2e75f832c770f17d558d0fc Mon Sep 17 00:00:00 2001 From: Joseph Kocherhans Date: Sat, 22 Mar 2008 19:20:19 +0000 Subject: [PATCH] newforms-admin: Merged from trunk up to [7350]. git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7351 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 18 + django/conf/global_settings.py | 2 +- django/conf/locale/ar/LC_MESSAGES/django.mo | Bin 41884 -> 41880 bytes django/conf/locale/ar/LC_MESSAGES/django.po | 2 +- django/conf/locale/ar/LC_MESSAGES/djangojs.mo | Bin 1774 -> 1770 bytes django/conf/locale/ar/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/bg/LC_MESSAGES/django.mo | Bin 51713 -> 51713 bytes django/conf/locale/bg/LC_MESSAGES/django.po | 2 +- django/conf/locale/bg/LC_MESSAGES/djangojs.mo | Bin 1727 -> 1725 bytes django/conf/locale/bg/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/bn/LC_MESSAGES/django.mo | Bin 25779 -> 25775 bytes django/conf/locale/bn/LC_MESSAGES/django.po | 2 +- django/conf/locale/bn/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes django/conf/locale/bn/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/ca/LC_MESSAGES/django.mo | Bin 66924 -> 66924 bytes django/conf/locale/ca/LC_MESSAGES/django.po | 2 +- django/conf/locale/ca/LC_MESSAGES/djangojs.mo | Bin 1683 -> 1681 bytes django/conf/locale/ca/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/cs/LC_MESSAGES/django.mo | Bin 41797 -> 41779 bytes django/conf/locale/cs/LC_MESSAGES/django.po | 2 +- django/conf/locale/cs/LC_MESSAGES/djangojs.mo | Bin 1555 -> 1526 bytes django/conf/locale/cs/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/cy/LC_MESSAGES/django.mo | Bin 22765 -> 22756 bytes django/conf/locale/cy/LC_MESSAGES/django.po | 3 +- django/conf/locale/cy/LC_MESSAGES/djangojs.po | 1 - django/conf/locale/da/LC_MESSAGES/django.mo | Bin 32010 -> 32010 bytes django/conf/locale/da/LC_MESSAGES/django.po | 4 +- django/conf/locale/da/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes django/conf/locale/da/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/de/LC_MESSAGES/django.mo | Bin 46485 -> 48100 bytes django/conf/locale/de/LC_MESSAGES/django.po | 949 +-- django/conf/locale/de/LC_MESSAGES/djangojs.mo | Bin 1571 -> 1556 bytes django/conf/locale/de/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/el/LC_MESSAGES/django.mo | Bin 38998 -> 38998 bytes django/conf/locale/el/LC_MESSAGES/django.po | 4 +- django/conf/locale/el/LC_MESSAGES/djangojs.mo | Bin 1810 -> 1801 bytes django/conf/locale/el/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/en/LC_MESSAGES/django.mo | Bin 627 -> 618 bytes django/conf/locale/en/LC_MESSAGES/django.po | 2 +- django/conf/locale/en/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes django/conf/locale/en/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/es/LC_MESSAGES/django.mo | Bin 61344 -> 61344 bytes django/conf/locale/es/LC_MESSAGES/django.po | 2 +- django/conf/locale/es/LC_MESSAGES/djangojs.mo | Bin 1561 -> 1546 bytes django/conf/locale/es/LC_MESSAGES/djangojs.po | 2 +- .../conf/locale/es_AR/LC_MESSAGES/djangojs.mo | Bin 1633 -> 1618 bytes .../conf/locale/es_AR/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/eu/LC_MESSAGES/django.mo | Bin 44912 -> 44912 bytes django/conf/locale/eu/LC_MESSAGES/django.po | 2 +- django/conf/locale/eu/LC_MESSAGES/djangojs.mo | Bin 1575 -> 1560 bytes django/conf/locale/eu/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/fa/LC_MESSAGES/django.mo | Bin 32108 -> 32104 bytes django/conf/locale/fa/LC_MESSAGES/django.po | 2 +- django/conf/locale/fa/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes django/conf/locale/fa/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/fi/LC_MESSAGES/django.mo | Bin 49408 -> 49408 bytes django/conf/locale/fi/LC_MESSAGES/django.po | 2 +- django/conf/locale/fi/LC_MESSAGES/djangojs.mo | Bin 1529 -> 1520 bytes django/conf/locale/fi/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/fr/LC_MESSAGES/django.mo | Bin 49592 -> 67089 bytes django/conf/locale/fr/LC_MESSAGES/django.po | 5520 ++++++++++------- django/conf/locale/fr/LC_MESSAGES/djangojs.mo | Bin 1540 -> 1531 bytes django/conf/locale/fr/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/ga/LC_MESSAGES/django.mo | Bin 4426 -> 4426 bytes django/conf/locale/ga/LC_MESSAGES/django.po | 2 +- django/conf/locale/ga/LC_MESSAGES/djangojs.mo | Bin 1610 -> 1606 bytes django/conf/locale/ga/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/gl/LC_MESSAGES/django.mo | Bin 49175 -> 49175 bytes django/conf/locale/gl/LC_MESSAGES/django.po | 2 +- django/conf/locale/gl/LC_MESSAGES/djangojs.mo | Bin 1519 -> 1519 bytes django/conf/locale/gl/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/he/LC_MESSAGES/django.mo | Bin 62506 -> 62501 bytes django/conf/locale/he/LC_MESSAGES/django.po | 2 +- django/conf/locale/he/LC_MESSAGES/djangojs.mo | Bin 1716 -> 1710 bytes django/conf/locale/he/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/hr/LC_MESSAGES/django.mo | Bin 31812 -> 31812 bytes django/conf/locale/hr/LC_MESSAGES/django.po | 2 +- django/conf/locale/hr/LC_MESSAGES/djangojs.mo | Bin 1607 -> 1605 bytes django/conf/locale/hr/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/hu/LC_MESSAGES/django.mo | Bin 55510 -> 55510 bytes django/conf/locale/hu/LC_MESSAGES/django.po | 2 +- django/conf/locale/hu/LC_MESSAGES/djangojs.mo | Bin 1640 -> 1638 bytes django/conf/locale/hu/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/is/LC_MESSAGES/django.mo | Bin 44731 -> 44727 bytes django/conf/locale/is/LC_MESSAGES/django.po | 2 +- django/conf/locale/is/LC_MESSAGES/djangojs.mo | Bin 1609 -> 1603 bytes django/conf/locale/is/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/it/LC_MESSAGES/django.mo | Bin 52741 -> 52741 bytes django/conf/locale/it/LC_MESSAGES/django.po | 2 +- django/conf/locale/it/LC_MESSAGES/djangojs.mo | Bin 1637 -> 1635 bytes django/conf/locale/it/LC_MESSAGES/djangojs.po | 4 +- django/conf/locale/ja/LC_MESSAGES/django.mo | Bin 71127 -> 71123 bytes django/conf/locale/ja/LC_MESSAGES/django.po | 2 +- django/conf/locale/ja/LC_MESSAGES/djangojs.mo | Bin 1601 -> 1597 bytes django/conf/locale/ja/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/ka/LC_MESSAGES/django.mo | Bin 67203 -> 67194 bytes django/conf/locale/ka/LC_MESSAGES/django.po | 3 +- django/conf/locale/ka/LC_MESSAGES/djangojs.mo | Bin 2222 -> 2217 bytes django/conf/locale/ka/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/km/LC_MESSAGES/django.mo | Bin 68550 -> 68554 bytes django/conf/locale/km/LC_MESSAGES/django.po | 2 +- django/conf/locale/km/LC_MESSAGES/djangojs.mo | Bin 1934 -> 1938 bytes django/conf/locale/km/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/kn/LC_MESSAGES/django.mo | Bin 56746 -> 56739 bytes django/conf/locale/kn/LC_MESSAGES/django.po | 2 +- django/conf/locale/kn/LC_MESSAGES/djangojs.mo | Bin 2205 -> 2198 bytes django/conf/locale/kn/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/ko/LC_MESSAGES/django.mo | Bin 42612 -> 42608 bytes django/conf/locale/ko/LC_MESSAGES/django.po | 2 +- django/conf/locale/ko/LC_MESSAGES/djangojs.mo | Bin 1577 -> 1568 bytes django/conf/locale/ko/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/lv/LC_MESSAGES/django.mo | Bin 38363 -> 38354 bytes django/conf/locale/lv/LC_MESSAGES/django.po | 3 +- django/conf/locale/lv/LC_MESSAGES/djangojs.mo | Bin 1587 -> 1578 bytes django/conf/locale/lv/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/mk/LC_MESSAGES/django.mo | Bin 57210 -> 57210 bytes django/conf/locale/mk/LC_MESSAGES/django.po | 2 +- django/conf/locale/mk/LC_MESSAGES/djangojs.mo | Bin 1921 -> 1919 bytes django/conf/locale/mk/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/nl/LC_MESSAGES/django.mo | Bin 42344 -> 42340 bytes django/conf/locale/nl/LC_MESSAGES/django.po | 2 +- django/conf/locale/nl/LC_MESSAGES/djangojs.mo | Bin 1588 -> 1584 bytes django/conf/locale/nl/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/no/LC_MESSAGES/django.mo | Bin 40780 -> 40780 bytes django/conf/locale/no/LC_MESSAGES/django.po | 3 +- django/conf/locale/no/LC_MESSAGES/djangojs.mo | Bin 1527 -> 1525 bytes django/conf/locale/no/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/pl/LC_MESSAGES/django.mo | Bin 66225 -> 66225 bytes django/conf/locale/pl/LC_MESSAGES/django.po | 2 +- django/conf/locale/pl/LC_MESSAGES/djangojs.mo | Bin 1645 -> 1648 bytes django/conf/locale/pl/LC_MESSAGES/djangojs.po | 4 +- django/conf/locale/pt/LC_MESSAGES/django.mo | Bin 36791 -> 36783 bytes django/conf/locale/pt/LC_MESSAGES/django.po | 2 +- django/conf/locale/pt/LC_MESSAGES/djangojs.mo | Bin 1514 -> 1506 bytes django/conf/locale/pt/LC_MESSAGES/djangojs.po | 2 +- .../conf/locale/pt_BR/LC_MESSAGES/django.mo | Bin 30723 -> 30723 bytes .../conf/locale/pt_BR/LC_MESSAGES/django.po | 2 +- .../conf/locale/pt_BR/LC_MESSAGES/djangojs.mo | Bin 1537 -> 1537 bytes .../conf/locale/pt_BR/LC_MESSAGES/djangojs.po | 3 +- django/conf/locale/ro/LC_MESSAGES/django.mo | Bin 21716 -> 21715 bytes django/conf/locale/ro/LC_MESSAGES/django.po | 2 +- django/conf/locale/ro/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes django/conf/locale/ro/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/ru/LC_MESSAGES/django.mo | Bin 56778 -> 56773 bytes django/conf/locale/ru/LC_MESSAGES/django.po | 2 +- django/conf/locale/ru/LC_MESSAGES/djangojs.mo | Bin 1746 -> 1737 bytes django/conf/locale/ru/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/sk/LC_MESSAGES/django.mo | Bin 44426 -> 44426 bytes django/conf/locale/sk/LC_MESSAGES/django.po | 2 +- django/conf/locale/sk/LC_MESSAGES/djangojs.mo | Bin 1539 -> 1535 bytes django/conf/locale/sk/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/sl/LC_MESSAGES/django.mo | Bin 49385 -> 49385 bytes django/conf/locale/sl/LC_MESSAGES/django.po | 2 +- django/conf/locale/sl/LC_MESSAGES/djangojs.mo | Bin 1612 -> 1609 bytes django/conf/locale/sl/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/sr/LC_MESSAGES/django.mo | Bin 32246 -> 32213 bytes django/conf/locale/sr/LC_MESSAGES/django.po | 2 +- django/conf/locale/sr/LC_MESSAGES/djangojs.mo | Bin 1669 -> 1669 bytes django/conf/locale/sr/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/sv/LC_MESSAGES/django.mo | Bin 52717 -> 57255 bytes django/conf/locale/sv/LC_MESSAGES/django.po | 599 +- django/conf/locale/sv/LC_MESSAGES/djangojs.mo | Bin 1675 -> 1673 bytes django/conf/locale/sv/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/ta/LC_MESSAGES/django.mo | Bin 60022 -> 60018 bytes django/conf/locale/ta/LC_MESSAGES/django.po | 2 +- django/conf/locale/ta/LC_MESSAGES/djangojs.mo | Bin 2336 -> 2334 bytes django/conf/locale/ta/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/te/LC_MESSAGES/django.mo | Bin 35161 -> 35161 bytes django/conf/locale/te/LC_MESSAGES/django.po | 2 +- django/conf/locale/te/LC_MESSAGES/djangojs.mo | Bin 2206 -> 2204 bytes django/conf/locale/te/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/tr/LC_MESSAGES/django.mo | Bin 40120 -> 40120 bytes django/conf/locale/tr/LC_MESSAGES/django.po | 2 +- django/conf/locale/tr/LC_MESSAGES/djangojs.mo | Bin 1596 -> 1591 bytes django/conf/locale/tr/LC_MESSAGES/djangojs.po | 2 +- django/conf/locale/uk/LC_MESSAGES/django.mo | Bin 24836 -> 24827 bytes django/conf/locale/uk/LC_MESSAGES/django.po | 2 +- django/conf/locale/uk/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes django/conf/locale/uk/LC_MESSAGES/djangojs.po | 2 +- .../conf/locale/zh_CN/LC_MESSAGES/django.mo | Bin 41991 -> 41986 bytes .../conf/locale/zh_CN/LC_MESSAGES/django.po | 2 +- .../conf/locale/zh_CN/LC_MESSAGES/djangojs.mo | Bin 1498 -> 1493 bytes .../conf/locale/zh_CN/LC_MESSAGES/djangojs.po | 2 +- .../conf/locale/zh_TW/LC_MESSAGES/django.mo | Bin 41345 -> 41340 bytes .../conf/locale/zh_TW/LC_MESSAGES/django.po | 2 +- .../conf/locale/zh_TW/LC_MESSAGES/djangojs.mo | Bin 367 -> 358 bytes .../conf/locale/zh_TW/LC_MESSAGES/djangojs.po | 2 +- .../admin/templates/admin_doc/index.html | 56 +- .../admin/templates/admin_doc/view_index.html | 86 +- django/contrib/formtools/preview.py | 2 +- django/contrib/formtools/wizard.py | 246 + django/contrib/sessions/backends/file.py | 4 +- django/contrib/syndication/feeds.py | 22 +- django/core/mail.py | 84 +- django/core/management/__init__.py | 2 +- .../core/management/commands/startproject.py | 9 +- django/core/paginator.py | 202 +- django/core/serializers/base.py | 10 +- django/core/servers/fastcgi.py | 14 +- django/core/validators.py | 4 +- django/db/backends/postgresql/base.py | 3 + django/db/backends/util.py | 3 + django/db/models/fields/__init__.py | 17 +- django/db/models/fields/related.py | 7 + django/db/models/query.py | 15 +- django/http/__init__.py | 14 +- django/newforms/extras/widgets.py | 28 +- django/newforms/fields.py | 30 +- django/newforms/models.py | 43 +- django/template/__init__.py | 5 +- django/template/debug.py | 2 +- django/template/defaultfilters.py | 5 +- django/templatetags/i18n.py | 7 +- django/test/client.py | 5 +- django/utils/daemonize.py | 6 +- django/utils/decorators.py | 2 +- django/views/debug.py | 17 +- django/views/generic/list_detail.py | 50 +- docs/authentication.txt | 2 +- docs/contributing.txt | 6 +- docs/custom_model_fields.txt | 4 +- docs/db-api.txt | 4 +- docs/form_wizard.txt | 304 + docs/generic_views.txt | 17 +- docs/i18n.txt | 7 +- docs/install.txt | 14 + docs/model-api.txt | 30 +- docs/modelforms.txt | 10 + docs/newforms.txt | 82 +- docs/pagination.txt | 133 + docs/request_response.txt | 27 + docs/sessions.txt | 8 +- docs/settings.txt | 16 +- docs/syndication_feeds.txt | 7 + docs/templates.txt | 277 +- docs/tutorial04.txt | 6 + docs/url_dispatch.txt | 8 +- tests/modeltests/custom_pk/models.py | 5 +- tests/modeltests/lookup/models.py | 7 +- tests/modeltests/manipulators/models.py | 36 +- tests/modeltests/model_forms/models.py | 73 +- tests/modeltests/pagination/models.py | 205 +- tests/modeltests/validation/models.py | 24 +- tests/regressiontests/forms/extra.py | 83 +- tests/regressiontests/forms/fields.py | 27 + tests/regressiontests/forms/forms.py | 159 +- tests/regressiontests/i18n/misc.py | 11 +- tests/regressiontests/model_fields/models.py | 24 + tests/regressiontests/requests/tests.py | 4 + tests/regressiontests/syndication/__init__.py | 0 tests/regressiontests/syndication/models.py | 0 tests/regressiontests/syndication/tests.py | 14 + tests/regressiontests/syndication/urls.py | 18 + .../test_client_regress/models.py | 30 +- .../test_client_regress/urls.py | 1 + .../test_client_regress/views.py | 16 +- tests/regressiontests/utils/decorators.py | 13 + tests/regressiontests/utils/tests.py | 1 + tests/regressiontests/utils/urls.py | 7 + tests/regressiontests/utils/views.py | 10 + tests/urls.py | 7 +- 261 files changed, 6621 insertions(+), 3402 deletions(-) create mode 100644 django/contrib/formtools/wizard.py create mode 100644 docs/form_wizard.txt create mode 100644 docs/pagination.txt create mode 100644 tests/regressiontests/syndication/__init__.py create mode 100644 tests/regressiontests/syndication/models.py create mode 100644 tests/regressiontests/syndication/tests.py create mode 100644 tests/regressiontests/syndication/urls.py create mode 100644 tests/regressiontests/utils/decorators.py create mode 100644 tests/regressiontests/utils/urls.py create mode 100644 tests/regressiontests/utils/views.py diff --git a/AUTHORS b/AUTHORS index 763c95222c..a23e4f30a8 100644 --- a/AUTHORS +++ b/AUTHORS @@ -43,6 +43,7 @@ answer newbie questions, and generally made Django that much better: alang@bright-green.com Marty Alchin + atlithorn Daniel Alves Barbosa de Oliveira Vaz AgarFu Dagur Páll Ammendrup @@ -58,6 +59,9 @@ answer newbie questions, and generally made Django that much better: Arthur David Avsajanishvili axiak@mit.edu + Niran Babalola + Morten Bagai + Mikaël Barbero Jiri Barton Ned Batchelder Shannon -jj Behrens @@ -65,6 +69,7 @@ answer newbie questions, and generally made Django that much better: Chris Bennett James Bennett Ben + Arvis Bickovskis Paul Bissex Simon Blanchard David Blewett @@ -142,6 +147,7 @@ answer newbie questions, and generally made Django that much better: Jorge Gajon gandalf@owca.info Marc Garcia + Alex Gaynor Andy Gayton Baishampayan Ghose Dimitris Glezos @@ -184,6 +190,7 @@ answer newbie questions, and generally made Django that much better: junzhang.jn@gmail.com Antti Kaihola Bahadır Kandemir + Karderio Nagy Károly Erik Karulf Ben Dean Kawamura @@ -207,11 +214,13 @@ answer newbie questions, and generally made Django that much better: knox David Krauth kurtiss@meetro.com + Panos Laganakos lakin.wecker@gmail.com Nick Lane Stuart Langridge Paul Lanier Nicola Larosa + Rune Rønde Laursen Eugene Lazutkin Jeong-Min Lee Jannis Leidel @@ -241,6 +250,8 @@ answer newbie questions, and generally made Django that much better: michael.mcewan@gmail.com michal@plovarna.cz Mikko Hellsing + Daniel Lindsley + Orestis Markou Slawek Mikula mitakummaa@gmail.com mmarshall @@ -253,17 +264,21 @@ answer newbie questions, and generally made Django that much better: Robin Munn Robert Myers Nebojša Dorđević + Doug Napoleone Gopal Narayanan Fraser Nevett Sam Newman + Afonso Fernández Nogueira Neal Norwitz Todd O'Bryan oggie rob Jay Parlar + Carlos Eduardo de Paula pavithran s Barry Pederson permonik@mesias.brnonet.cz petr.marhoun@gmail.com + peter@mymart.com pgross@thoughtworks.com phaedo phil@produxion.net @@ -279,6 +294,7 @@ answer newbie questions, and generally made Django that much better: Johann Queuniet Jan Rademaker Michael Radziej + Laurent Rahuel Amit Ramon Philippe Raoult Massimiliano Ravelli @@ -302,6 +318,7 @@ answer newbie questions, and generally made Django that much better: serbaut@gmail.com John Shaffer Pete Shinners + Leo Shklovskii jason.sidabras@gmail.com Jozko Skrablin Ben Slavin @@ -343,6 +360,7 @@ answer newbie questions, and generally made Django that much better: tstromberg@google.com Makoto Tsuyuki tt@gurgle.no + David Tulig Amit Upadhyay Geert Vanderkelen I.S. van Oostveen diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 6be789a853..3917d40943 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -287,7 +287,7 @@ SESSION_COOKIE_PATH = '/' # The path of the sessio SESSION_SAVE_EVERY_REQUEST = False # Whether to save the session data on every request. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether sessions expire when a user closes his browser. SESSION_ENGINE = 'django.contrib.sessions.backends.db' # The module to store session data -SESSION_FILE_PATH = '/tmp/' # Directory to store session files if using the file session module +SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If set to None the backend will use a sensible default. ######### # CACHE # diff --git a/django/conf/locale/ar/LC_MESSAGES/django.mo b/django/conf/locale/ar/LC_MESSAGES/django.mo index 323e53321daab2e7ce409922157189654170163b..c52a2ab638b6ab5e916535178308ea634af88e16 100644 GIT binary patch delta 3226 zcmXZe32=``7{~D^p>ah*;wFcqnz$oHsfr^S+94rGP*mzZ>%KDn5=xM%`-rn)I(48ic8KvJ}cV{y5*=OH9;Dh<0fggj+ zI;5G+4>qgc->i;f!CbtCO>t<3 zSs3PGWn6=ixGlp1R+YvC(%+|F*(@gg114RM)vLQT*cmEZu>0$JD=7hxxa7MXR#si71YlEL7ix5;0-q*0X4xZsH5tI@tA?Jn1gy@7b^1-)QQ|d?WoNA z)c02zW)?z!ebl^-@FKRvCHNF4V_@-cv$HhHuqGZG;THTBBZ&XNI1G8y*%}jxGf@lY zV+$<6mUtSw;GftY6Gu`XI03b>_pyDD*&&Q#eY>A!_A(DDy=B%Bd*Z7Yzz%pCWAQ1r z!I)8Q;xtse44KG|px(QJ{8`j!t_yQ95AUK9o-)R{0Ee-@<0 zu>~0?p^kFWI5)u@?-K7C)bkxa-itcHV(f}%up(9-@5V*qG}gCh8r5($D#Jol(S3wE zvSYXo&!Mhp#00ZTI15z+DHE9kGw=nRjhbf%Dxv+}V&8w#$LBG?X6-r+=CZDn{0pe+ zEkN3aNBy<&IL2aUEJe!5>QA9Qa6W3>cix+*tG!ljsuAv4Ts;p?a(&B6#=gbi_BfJQit!^m%t zokC98VrH6M#eDn$N6m8If68pLR>YIAUa;9#{F34T7TAbdcqghjOHg0I zZPbZA!v+|>n3KU4$bz;LYvU&vsx6$Mp*y~U>+mjS;JhWAL=c}EDuLhLaYy?EwX;@B zogGodnvAK~8=GSRvKKpry0VmIW@B+SDlWxlI>M@Xu1H?Op~R`EtJsgPV9;`YzcC31 zVHWZs*imeX@he<4r{Oi?CD;Uqt)zZ17kgniK{96IdN#Hl13ltDHHtOyRP%nIj zeb839pXR=(Bh15nxCKXH&(-e#g?*SxTz8EdKOVJ#-PjH9Aa!hw*HZ9Uu$J?$P9v3b z55Tg6F$*hW4%WnctcJTV5sR=Q{)Bq}chr3UB5PUrdiTRrh;hWFsP`*ua5YnB z1Lyx59SL*{!E98OUd2?7=ppte?!Jk|a06?zqBMcNML$E^#*2#Eqzh4`47J#uj)4HSR8| z+Ml5kt-Z|^dn0ckfrbWj#rl}(or&?ptFa+|j#}_0>WCj=B$nUq7OaCB*Aq3*Sk(B% zs6+}-MF|Zbp6rZ_86(}zb_3fkcGOV$*9b?qjpk++SvuvxHA9zi8tasH$KkW1+{?z zs11xpo!DGd5w1XOphyO2ob(+Rytlmfy^p*V3f+q}Q3*E2SnP-ma0qJWb5J{9h59P? z`u<{6t(^DIuVO$il+n=6D(!LuYM|mM)IxFC4!fX^cqWEn9%`qXQ1k4;C_I5NSnB(q iVh!S2yWKBnb8JjJY&SPpi$+e-qdJ)#iUy{or2hwcy64>h delta 3231 zcmXZe32@Fw7{~F)>#Q7()P3YY9F4jf8HzgMYMLTJ5Jz2cpRJZS-V_N%Nr@uFIrLOo zZ9_^2!x&OkRBNar!*rtUFm0pNX-&Vs?#^W9v%CNO?>_tN^M5Cs&jhxe2^?G#8vLo8 zS;9cG%z#;BidkJV%O7ku6A$5Jj2U9q6jx(19>nMHF}A{PL(O>AreGu<#ijTI#^RVX zvvAD8s<;s&aA%qYEsVye420rItb!M?9$v*n{0*yN!Z5c$U))VU1r=}^Hp1}XW~ms5 z+9=Dr8WqUfsC|xMJv=u&=uUQrfoB+aVuXvd8)|`MRDi=!8)RU6T#iv#h#`0tHUAF2 zi}x`eH>bPjUt=`=Yp9d|gUV?2;7B(i9<@LZRH|OUmY9xFn2ma2A1d-~Cvm=uYmTitjPj$I6r3 z#xWR2#Jy0doITksu+Y2GyAkz#x9{&qWv~dl<9V!t;ZxkaIyi^@Erv#Q%tJ-E7gcnh zpi*`mH{b=-6^);2b`ck#Y9MKvSz}Dc=9r0EXE!RK1KuJ(e%kjhp|W5%Xt0(gPWLaM zs<#Lg@dMOn_Q>~ZQaKuLfXA>YcEJ*)j4W~{Ukolm&HLVa3w70{*bJM^BLCqul4iM+ zjzB$_f)#Kb>O^@s8;@d3Y)z*(rePQsU?_gzJ?uU0z2v=#TK^YR5!Y1y6;Yo#W`l4k zYQnduD*hW4V5hmxe%>@xAQ>2ix!4vzMg?4giCFbzv)VWSRiqhM6PIH&ZVJ+-)F{GRPnYdP*@ z?Y&)5#o7-CU@|_11;|I6` zI21FG55bOMEVf?ds(CP8rN0uJ;@H*vxM2?V!w5QwI1=+X*e(qAVxZ$%w?QWA?h8;a ze1XYWVV(PFPC=z`4Ze@taRT{5BV80}Q7h>kY=!(1b*6fFr&0u_gUHjK(if8{R^t_#sAMl>)b6L)5(fsCA~H z=C42nQh=IY=*Nq(yT1S1G^+6+X1jZ#Ju1chP(PK!Q7N8|3g|V|Z~iV+st@?*pQAQ7 zfjZC?)W*M}uA=e|Hy-2dj1l_&Q)p;|4AdRXK}Eg`b&^8V$u6VjmHFqk)6J{xjq~yITZAgYwWtFW${>x?YT#w>ZSQ^Wzuu5tZeBf9fXy)qyJABejXL>4)X6uX zzKZ>Rya-h*m;CeV7}N`8G<34C-EKl%R6iQEQ5?o&PgIKMql#z^>ZDsy>wJif@DxU3 ri60N_F?*7JeQbwqunCUc!wuG^k$vb<-C+q8qEd&xcxceTzN!BK5Ygr} diff --git a/django/conf/locale/ar/LC_MESSAGES/django.po b/django/conf/locale/ar/LC_MESSAGES/django.po index 203d50d7de..5bbe749c23 100644 --- a/django/conf/locale/ar/LC_MESSAGES/django.po +++ b/django/conf/locale/ar/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django SVN\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-07-03 19:22+0300\n" "PO-Revision-Date: 2006-07-06 23:46+0300\n" diff --git a/django/conf/locale/ar/LC_MESSAGES/djangojs.mo b/django/conf/locale/ar/LC_MESSAGES/djangojs.mo index 02c1d67b587e2f42407cae325d949041676cdd6a..9e50b91363d64e42ccd62b3404a122da185026f6 100644 GIT binary patch delta 191 zcmaFI`-*qMnffV=3=B5R3=FIc3=9`p7#O&K^mQQ352POfX+9wR2`bJAR3rxE^8jg4 zAgv6fLFz1_v?q|}0rDe(bSIEb1JWRMAAmH-TsAfa1`Z%C2&93CL5ht*k3j^;Pz3S} mfV3HqP5{#BKpLds1ds-4xD2Fuf%Kitm5g^8H%Bo~VFm!bTof?? delta 196 zcmXZUp$fuK6vpxIataQUQrZeZ~->EXmk-)K^#!f>Lk0#X0Vt9qfYi`0b(7OU~mh9 z?*-HI@$rUpa~HRHtlCEETPc(@E=gsaVGWm9#Wlvb!zLau!7JABg)RJ`@1sE4VuBSs tp~E{y_(b0ofjVk%ym|ESixcd!#)tdANAv^Ed1eX|4yL1dy2yt%wLjU98Djtd delta 200 zcmXZWAqoOf6oujQ7)OS|CyIi|tia+1#&y^QnSlW{Ow!^83^tR+Bp9Dn6tlr5x&(t; z(EowyyIlToPWEiqw`I>rgFvcE$|_O~C)mUVHgJV8Zn1-V?BWGm_`(D~==(U7Hke=? v9a_9%gm?7aGgMz~jyI1KznEdl8XxZd9?%asy199nXk3h@`K&12Fvx=+BE%Yu diff --git a/django/conf/locale/bg/LC_MESSAGES/djangojs.po b/django/conf/locale/bg/LC_MESSAGES/djangojs.po index 2caffdca53..9f5f19773b 100644 --- a/django/conf/locale/bg/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/bg/LC_MESSAGES/djangojs.po @@ -2,7 +2,7 @@ # msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2007-05-12 17:51+0300\n" diff --git a/django/conf/locale/bn/LC_MESSAGES/django.mo b/django/conf/locale/bn/LC_MESSAGES/django.mo index 672e73e816f8a98d3364f97bd6acc464e3d11f2b..b4fdb8e9ed93db53ff0fdd59a4214786fca7e64c 100644 GIT binary patch delta 1613 zcmXZcdrZw?9LMp`!AwNvl2Q)kR!HuVq}(cUE0=OPid<4Qx6LwhTry*0^N;&2n~5=T z6m!Wx+2Z_xHk;XyoJgDh+;Z8xzx$oPUeEXG*Y|mz@AG|*@2TtNQ&&}XM{lM}`ZQEJ zBPlUnI*xw)j;n`BshBrh3c(W?juqGg@8LW2V`scJ!kMqenZ)%NhTRgRD0E{4CgVKJ zO^{dV3@$NIhyg6XStFeVuLQk?k<359uJ{Tq(MO!m0sdk&arP)_9JU)R&A=qgz+D)F zb(oKz&<>C`#w*QXkUK_Ni5GAa{=?Z=GFHmL8k~wDWZ#TgxE=4~T}&J=J;Tq~18+~@ zwD<(CVgR?Z(W6ODMcPkt4$#xfz)CX$dt)YcL=W!5wP*>OFciPzdu*5NoU{oo?lV~$ zj6c!7@0a3KY7|p~Jf=^PDzOnQ!66#LHh2nc zp^Ioe;X~R+&#)N3A$ygFve^bsqV>ovw1Ymx?yRqd;KWC?jkMu99Fiunrj8(0mLJK< zjwJd`Q;}+`1f#J6Z9}yfhc9tA{>JNAHjQh>A=9aXOWKLWF0a%;rxfsqlv&ahJcngC zlg>HChmX+`=4Uxwy$|gK^%#Qh&=zjNp7;md7)Arx)s94pso7|G4x$~X3S(Jc%?vDI zCpz&By3ziz4J~o+Z0Rt@VKMsf4)&WX^}+@$$IocZSvrqbfp5`XK>|S@Zp958$dAp$ z;}%kXD`DRpX$LMqD_K46#|-M#ihjI-HH)MJShU!wSSy|-p0mVxUM*;M-Fd0Av4Qx5 zcp}=BCbEkdJdTNYFOT~#VbH?F2V9iTedB~>bSFElL#sewxl`JoXmOVn5>H)jEXDa) zgAb8nY8!942y1aK4)i#$<1$*4`_b|=d#L|#2EUlFD;Ts&;qEC|`%Tn<@VR#X{je delta 1617 zcmXZcdrZw?9LMp`*(_rv-#*<_xV2EXm{Oiciqem@@BiFu2`u? zl4qoJ0)6-mOXH<EeUItd0WE_my7=$Ib4a?CIc4097#Mc-!**R$!S{#uojlf@M z-^Zjml^TmysSLEMSc-O)>u@-FH#6XxbR5I64a@K))?(Ha=@Py}OK_NmunnF;Tj(5G zPc$HHqsLf|KajnugtFNNPNVfmJ=#HAu|MmpGceJOwvj(rit*DV*3?m?%JLyO)oZ#$ zzbO-`wkj|Z&!cUq4dd_`?!doz6}M+dc^IF`b-VZt%UxcnlTIn-hiNmVi+C2d;%qwS zBp*INOSpWt)7AUXPSAmU@GaWHJs5`nFbczHAiLTWq?pP<%X0|rKzGp1`uf1Y5(d+W zFVKzlhkwu#hi6L%aTJzg1Kz=ydD0;4#69>4tvM@mcop~t?G=n6D8wyT#({kJo_OK{ z>Te~CS}0ZHBD9iq;BK5ty*{E3uVK?7X)l&7b}IG-PZQ_nJI|{J?XLS3I2((_@5E_n zSL$IGF?b4-u(^=?U&o+_i8okSM1$evC3Gh{eTY^8|5B&4ztG~)WxN=4<9f`)yV!~p zQ`NlXHQ0u`Fm{FWIxeF%xeqPRhZWR6fx&Mk>^z?g zj3zEYtK@F91sVfBLHqtQTHdf#(k9HpNNn&ju%>y6c2|C!fQcnebFIZF;tI68K7!U8 zb%FU7w5EE6wovcYPMnCgU_RQx4xk%r1K!7A;z{oqgfjRV&_&&BLj%wfjKCpSfR<<@ X@?TebZf_0VAJHp1Ge7TE+>NyVF`wdO diff --git a/django/conf/locale/bn/LC_MESSAGES/django.po b/django/conf/locale/bn/LC_MESSAGES/django.po index 5171baf3f0..0a23ba79b0 100644 --- a/django/conf/locale/bn/LC_MESSAGES/django.po +++ b/django/conf/locale/bn/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django CVS\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" "PO-Revision-Date: 2005-11-12 20:05+0530\n" diff --git a/django/conf/locale/bn/LC_MESSAGES/djangojs.mo b/django/conf/locale/bn/LC_MESSAGES/djangojs.mo index 1db40df91002f439139614f3e547bb0e3a43fecf..fae1fdc90ecbfb026c72e4a868c2e7b98f635067 100644 GIT binary patch delta 22 dcmaFQ^o(hO3Zu?MRShBc5+Nq5SLo|l%q9ja|Bp_; zoSSp+J;$f`c-s|5vc42bih{o#Y?J%gzyUUKgk4N4=hz}Iv4=TExWzhJT;KuSojbZe v59Fm@fhNC&H-m)12Zxx@atFqk;tXq8AQjmv@5_rZUO3HH>ughA{ipW@0^Syg delta 216 zcmXZVy$-=(7>42JYnA$`AR^9y)hrlo1}D%+B$7rL96*OA(n%^Nn{(*t*vtlr!RY?z zbme(}&%q_g?r~zIqbrpq)x5uLY?Av}#R1lFge{yDF0erkv4dOmF~$m}xWo+Yod?=K xPvoWEo~FNr4}~rTLwAThv, 2007. msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-05-20 18:25+0200\n" "PO-Revision-Date: 2008-01-22 19:39+0100\n" diff --git a/django/conf/locale/cs/LC_MESSAGES/django.mo b/django/conf/locale/cs/LC_MESSAGES/django.mo index aacfcb6f61aea3d1520be435bb4358c5a1e3f99b..1b1e158dbd7a84345cf2f098b7fb71d98d260e03 100644 GIT binary patch delta 3987 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 delta 238 zcmeyyJ(*|1oqBaf28K3f1_pKp28MMk5PBPs<^l5e0ckEEeHuu!0qJW{@w-s^6_Dlz zihl>vyg-_n6{1cMN=pFgXrQ<}kOrAw4W*lbG!QX#vohF&B_;xSAOmIsX>lOE97uyS z><7{oK>9e42HF8O9pn&JAOWIz*f!5%WMh(5@JcL83{Eb}EGSWMu1ZbLP$(%%%qz}G OEXmBz+q{4|j0pgn${+~< diff --git a/django/conf/locale/cs/LC_MESSAGES/djangojs.po b/django/conf/locale/cs/LC_MESSAGES/djangojs.po index 652f00f819..1b07931d69 100644 --- a/django/conf/locale/cs/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/cs/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django JavaScript Czech translation\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-06-18 11:26+0200\n" "Language-Team: Czech\n" diff --git a/django/conf/locale/cy/LC_MESSAGES/django.mo b/django/conf/locale/cy/LC_MESSAGES/django.mo index 7d5bf1dda86e9ed79ce6df62085479d2e04d6ea4..6c92b2b86922284eed892b6b79d2aaff820a6e48 100644 GIT binary patch delta 2458 zcmXZdeN5F=9LMoE0Tww#EeOr@^wA z<#1y~TTWK79$bYuqgr#htbcNm)m^sM%6!OC_J~a|?ESgFv$6X+=lsq+-|zYU&bjee^%V z>3AG9Zx}Q2N8A4wXVCX8b;mQ7I>w|hP{cqkR-zW#gxYBnPQ^zt9a}LC_n;O!fJ*Fb z)V%jFo(RShvE#$23dQgR{26Po-C5?A@EB$@@C^p=BF@4w3}R-bF*#U{$rwf@9>GFv zx4w$G^iQA?xrj>q66Rx|%9!hM0aA41Y^0%udoc^&#{&EkLwFhUFz;qJ(Un+C{~o*% zpT!0|irX;#7Pk`ZsLJd@{!AAis=(){S91#6iEl2@(8LFqyE|`2_1ml+s57w#wWDt2 z&-C)4l7DYKjSBD!>ieU3Cr+R$R>uMB!p*1zM&dfgjMLDNbQ> z^LAn$K7)Ey2T`Yc2=&fC!#Q{o%W%|MbgR4W12~!SC}tDiG}BO^-KfmEQSY`7C*dFl z@rd`wSdWgE#&#NVCu+iOR3d#i8wXGc zeStan6KbcPmG0q6KqV4H-Hs6I`7&hlrWRGf=TMb9gF1xMYI*;AX_VD+#qd*{kL9;< z6>%%7gsg37AEFNL*XYAv(To3}Dm9L(h;OwqGcf@(v0ydz*G?-L zQ0eYK9hOGqikgQ|UwqB_CTih#P?b1>njb?gcpg=O3EY6GYutVds)8M;I6WA}{SFOf z?7!W8kb(*@(;7s6v`ir?;8xs*ov3>~g2WA1S5C@>h!;i+R0Izj^{B6|H6ehX{~$8OYwgCD^Qi|$5K3v zN+^q8D{Uk{F7LmHh88SEUAHPs#^o5owWzc31kS?`P>1d;F2D&?A|=#QR-rajhg$Dm z+uw*vAc{Iut>`1Z*_>ex2!|fU&pF@7CYw21-U% z;#$-zorhYt*t(?A{{OFKKnpb52U}2?Hd}XCyR0u-`>ltq$E?GsKtI_2i1jk6!oIM3 zdosh+U#D_D0}8khwSy{D<~4S_9<|fWsQD38!Y!yk+c68DMy<0SHSZuQ;2})MkL~jq Zdg%KG|4i-4_f|)@G&i*j_ACwu{|8~#Bw+vm delta 2467 zcmXZce@vBC9LMnk7r6XVE(n4WatY&?X-X1^5Zw^Ch6+f+ZR%2M5H4Fn4QE>qL#)Yg zT8`XkYm2s=tRf;;%bZcIxm?yixyb4+tFA?gJ&@qkL>bdvZp>U`%sUmvY{4mP!$qr%>B6UR0fsRF|F(K6jY*?F2b0l{DY(>H zjRo}Aqt<^4<8UAD#lcGBL>|PhHl~(=bd14}bt`7m-+}S?EGoeBcn2P}qVf9tWIiw}fXgi-8|732$OHdhRtQ4|6dW1L(u;sKmRm2nVch zqM!bGR3bM~iQmG-m|ny2;40)4jMGU&3y)$ZevF0qEf!<+ea7VDov5>J#%1^jmf?%| zAfCYv%n7)a7(i8K5cxAl_@@edjXIi(_zdyQ4H}yG#QpBhdr|#;)*;lL7)I@A1o<;X?WuI3JfcQh)8VfdQ4S z9d%i@A+M;}jVk3^)=AXD@1rVl8Z|$RTJRdG0^W7*moyvI--D{)5Gu|qxD$^#G?a1L zdiTLXRDgVI3G(qWD^LM{jZ|}oWVrAhAH?DuE3;L_m)@V4*Kg*l^e&EcnOt| zpRbiRvNWQ@SB!=htVX?VLG)oG7ULGwU3d;l@DtRfyMoKnOC6O+g*Avt^h2oi9<}{W zR02JyJJp9?;+y^U!9ko$e?$-PIO=F7FcrVB&%-!}{uNBXe^Cj?wYl>$QR@_=HdcX3 zuom^ZR@D6M=-fr4n}!08q81!OW%{ml%6bmxF@6EH;8oPw-a`E@zTG|BG*qAks7e%~ zj`VKSy5-h2?Y#fWw1ojJu+2W$iCUo7y5D-l`l@x@ddhm%I*khStL@KNqeE_Ge3;Jj z+z|EGtz5}~0#>4KXAqTnlO5lT+G!VRem5%NJ*Ytan2Co_>l{PPJAvBZNmRhk?ej23 h(f3YXPa9sG(j2I53^dgF+v+y9u5H>dIaD6X`yc!Z9_Ii6 diff --git a/django/conf/locale/cy/LC_MESSAGES/django.po b/django/conf/locale/cy/LC_MESSAGES/django.po index 281c1af5ee..ab07be6701 100644 --- a/django/conf/locale/cy/LC_MESSAGES/django.po +++ b/django/conf/locale/cy/LC_MESSAGES/django.po @@ -1,12 +1,11 @@ # Translation of Django to Welsh. # Copyright (C) 2005 Django. # This file is distributed under the same license as the Django package. -# Jason Davies , 2005. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" "PO-Revision-Date: 2005-11-05 HO:MI+ZONE\n" diff --git a/django/conf/locale/cy/LC_MESSAGES/djangojs.po b/django/conf/locale/cy/LC_MESSAGES/djangojs.po index 991c2f786c..1da646bbda 100644 --- a/django/conf/locale/cy/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/cy/LC_MESSAGES/djangojs.po @@ -1,7 +1,6 @@ # Translation of Django admin JS to Welsh. # Copyright (C) 2005 Django project # This file is distributed under the same license as the Django package. -# Jason Davies , 2005. # #, fuzzy msgid "" diff --git a/django/conf/locale/da/LC_MESSAGES/django.mo b/django/conf/locale/da/LC_MESSAGES/django.mo index 9f86e56407653f78b699b4e95b2a4df457b2e6ae..4878b29d0630708601809cf03ccf4ba5f7dabbc7 100644 GIT binary patch delta 16 XcmeDB#n|, 2006. # Copyright (C) 2005 and beyond # This file is distributed under the same license as the PACKAGE package. -# Morten Bagai , Nov 2005. -# Rune Rønde Laursen , Sept 2006. msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" "PO-Revision-Date: 2006-09-24 10:34+0200\n" diff --git a/django/conf/locale/da/LC_MESSAGES/djangojs.mo b/django/conf/locale/da/LC_MESSAGES/djangojs.mo index 1db40df91002f439139614f3e547bb0e3a43fecf..fae1fdc90ecbfb026c72e4a868c2e7b98f635067 100644 GIT binary patch delta 22 dcmaFQ^o(hO3Zu?MRSh43r58M!~F7gpl>PG8$F9CZg{umWbII!>~AG3rizsD7)l z3U0(8+>g4z(|8Xa!%*zf)~rY>a&OK!48#=}%=Mks1l4c@hU0!U;LE6$c*A-18sgAYP_+wJ_mj3m`|VyOtmh=F!Hrn9e1HlJdV1+ zD_Df@qL#RSqFE6)RweghWt@qc*kaqh4=a*CgIckd5?Oy;=oA$i_yX#JS5Pzm4K+|u zl3D6-RC^?9;z_81x}%mf1@&lBQRfXujgy5MKM!}}R7}IDWY(Y9nVQV=#uBW7_1c>| ziAO!d?pPNGVLi;n#yAf(fvuk&t7pm9Q+-V!sga%^-jz{%hgxcI2 zkWYzo5O3A{f0;l_UcH;yEYYZeQ!yIv!${nYn$Q{B{xfQ2V!As{KfDw3a2skb)ahaN zLPJa>Z-$z{Sk&Gr#$dhwJ_7CTIXDa#p?2vfsEK`zy2Buz$7F1X+EmN2EIx+Xbn9&W z7Mt(3`C*$MwfRXbL;u$?i0eCV+J>{JiF|1D%hs=L{dHt6&Tklq-Pt(0lRl^k54QPe z>`k7H+6%kz9()cpen%R$5_5x;Vcyz-~tBWXBdoM*!u6VG5IgHzCnul0yagR z7mr$jBrL=pw*3$`BYy!k;V)7BenY(#75cLN2?SmGnhQ@xJ=43f0nWr|d>r-qyoA~d z*HQh#*m;_0b*zYWQI9ARHSTx}#dWA>z7w^Ad$1;+@DcEBaNf5SwfZ|wbMjc!2W1qh zqX%^dGqD0bj9R(XSRU8ed<$wtcA_qP0B^w)sPD&B)Z0~efEm}9N}vWeYM^DPJ6dD& zji{OLKuu`3t$z+Rp_fp5=Pc@j^f@-fz*N&e0=3y%q4rj9)D5I#h~EDRCUB;pW-`TN z%X3{Ypu5fcp*Gu4n~y*}`*hTKS*WF*jx4FO95vDPsFmD|)$jmn z=}%&Hd=q_|`6U7^ZOm=v!;y=L8CV{MA^V z>pPnWf^a8x#eJwpavil~F*)YKw_#QCJFy;4LJjyJ>OFrLHKDcG0AE4vrO&ZD274Tb z?d0^u_P7~+de)y1+=5@DCQx&{*)$_Cio6iD0*_$`uD9;MVDiJ(qo@hJh??jtHa~B@ zh?S}T6wBlH<5~Z51i#vfpb6$tR7NdjP1K!5Um}o3+I zujvc&HA3>lC$Dl44hoP8+x?peA1%_Y^9F0w}5cP~7K~3;+)SYiZE%6T23hYOX za||{9Db#uIVxZpt^S0t6)Bu-J6Z!%*z}Hv>Z=hBtG~Z0H8mgZQn_&cM;C|LY*5RlN zk4BB3g&Jo(nt%T%&>c)gUFd$)3CmFfK5pHJ>bKRpA2q?Fs1ISk^89t7;3Bih!jM1HoCxfUMd-qPs1x4C7WgejW20hY3Tnv6rjcbOUXz&_-6pa$NAn$T9%>$wN@ zdY(Xy^PX+Lh+2`$Hvb0osD4Bj22M2}Fkd8r?yNuRM`Hx)0+UfQzQ?xDLk+mh)<1@| z$)7?^_$X@cyn|YyOQ;FmK)p>t)A$Tyb!>{Oknw%avjiI8B&y>F*a*KwEn(<%Gf*wm zL|xVvsEH=pyff;8{V)uNqE;poHKDsuH}oLtyhkvQ>pN=+bmB(T1$Nl{Fls`_@CAGw z_4B#nZhk`XdwdK#-(!C5&S5R`uTbX&&oIwA9QBt`9BMNTL_LZrSeffP_Y-KwOR+gV zfiZX*8{@C22{xj00!Cp69D|9t8i(UsI22pVG=Fm4i#mTdGAHK@w!^f0%?i&$pHAFN zPzUwzM|!R5qVBK!($xBcZJd1kms<8nE zVq4UW&Y8{n>wVr!g$Dir^;c=dIc9*4*pxg2lW-nt1&(1O{K?kWo@*vN7&}qF29xm| zw!vESOnrasNWK93;mLU{88_wBm~URMN3b0E8q|e0p*GR`SOLGrVEh@&qw|3IFQFAs zn|KE5Q7%KBw-LE{=Md_dcU)jT*?m#x5AYG_g14bAFa`rL$L4vqeF~PPUi~ZLEL*?G zy292!j+)>Wo9{*s`O_GLkqgarnxn??B@l!VbU|&N{-`h8deo-bjhbofgJyTP!7*1a4zZ&mtZ)qLiO8;TA_nj1y3zw{TmW|K!rBZ zZ?;3j<>tpI0i&rOg4z@JpdQg&tc=T118>A?xWl#|#RT$Gn1X>T_|H0+iu&N~Lw*RI zN-KH(O$cVMG|zl9ZY6&M*=Nq(k2uau3|VC+ve0?}J5&E5#-Qs_Rtr;c8(zV&xPnSe z@JH0d^@C9dDq}y4@)1-eC_-(rIanQ+U_E>iwY0~u5Kr6s?rY4Wx)ZhJ`KSv`v(7?o zwuPuiyV$xCHSSt$fWD^*^vutqI)08?+H0sKbsje}uZ}vgG4{od*d6C#Q+yS*)YmW; z+pjfm$9UAEn~44iqQ;qp+?dZ=HhYt=5|hevd84e?_gxtsBgZ#-RWGPax3y+XXe#9@bRU+c5&W;b_#eUWd7O3bU~N z6Xr*21Kv*lHnzn0jmC7;`~NU%BHPi0XEDx4@OOeFY`)3-heS6j--cSsPq86}KWYB+ zTx%RnJ{_CkS#)8*Q)VJfP!}48>+n9CM{G8KMW>-Anuq#7W;!Pc`rz-l3;S#_ADW*~ zGq1bV{IQsT+O>C}`fs-N*RT?KZMJ?9Mq(B|iX$;#yZJ!fj!nrIVl?jA&huBr`?kT^ zVZMNo*n;}e*bE=Q#<&-I;9EEt>+Cc?TDcfP{ydh!*RUeKZhapE$v?v&ylTC+ll9m8 z_#+iMu`0J;9>Y<4p#f?F%`g-Pq6Qvq+jB6Dya1!{IBEsHK#h~W+pNrZ)cI4eEzZVR zJmMn=Be;t9;4j!0r|#kVj3-bNOWtb+?1;M4UZ@EU#sPQ-cEGLJ5-*`9P^-jjZWl(9 zH${!t7ptLf0D<b4W?FV19~Vr_H4d2iI;byX1JoV0L`@(O^(eYwFb=T!P^?6L zCu+%au?9{pN@w0l(*{0rz8NJc`;hr%?mEg&Ob*`X`Lsfpfzec+lK& zC9F<;HPi)fK~1P|jK4SW^-6SwVU z|6*3E3hE15AEU4xs{dHjBN^`_&>c-fE#(Z+35^pe1aH8mNsm8Fj%fw!Js%g8fl%!!Xpdo`727 zS*Vp%@L7w{r;Q^Ro7#R~nkpxe{5D&cf?B0M0eb&9Zl$cJ^0YrQ|ITJZXC?J> zNy^y4yAtcaa?L`$=lcJS+CV8!(GiNRP|II>6jJvgr6VPU%6P__K&aOEaj6v;{_6*LSiB4JSzQWSu!O{R_zh(c@n*b0(LOkVBQT5d0i}pCoVrD*KW2U= zo^0-)UoR3J+E5i4T*pz$Vg(#yX-}opq%0$^V*3oX=UwvmGCyPrr&HR{w$-*jfvu_Y z;d^+$t$#+({~8tJDf%@2PD5SFeYQgmbuGBqPZ)0NW@2;lg_LMYKk_>CsYK!J@*l0J z8*bw;V!h(u;aSQk;`X-9|NN7wEIkepgxI?~N&F>k;pD}*gHnr_zp(v3v3K2c-Xqk# zO3{&La2~ZjVEYZl+LSkJ?xNlIEdOZ0pt)2&MY)4K(M}+exb%o94Xk>XM^akZzEka> zJ8^-H^_RwX^m&lH8$N_}P~RIJx0F8r4s^Uqqdp8v@Ggv{oFR7E3p_x6k+O?YmHN`- zAn`9YACI@vesgRgUy)47~&qpT_`#}CSQ*G{h9eMstP0N zI}ej^4t??{VZ^1!(^`nWR3=l?=%$7zsVkw*OZkde$0|xy`b1N{@YnDerR{s-jg%K{ zzi{G7#JTtqj#)Y>y1MUgWTl6j;Gj)n=rN4AxU|u_7H3i_&|ZtOm$H*Q3zKj=MMq`w zLzK0Y`s8yc@2i1hA$9vqXtr4kDteg;=LSAQ*-h!lEzPH`2}Q>z);Ea*iDxLMl!MPH z>BRS{j-wI2N9kbm)z(nPyw%2)^qG6uCa-bQE0l3I-;Z}vJd{G}r(gq0=~0e>_@DDW zb@`O%h`UhH1Z$|l9!u>xw@~*Hac}B>#kQ(9_iuXMX-_Dn8z($Xr}LB$N>81@5sQ29 zLrMm5ApQPMypH%92=KT(Z}WPze^1=d_EXbQ*Vps^m<}&f zHmE1Zaf1^<$DfI(P-@td)buTJT~6*xeEp_+wXLLFrF=vAjIxUMZj}DE-xs)^`qJa} zL@GYAS!D**F@O?dW98lHGl+7E(vteWVaJl7md8U%P9?upw%d>?p29+xC)4dM@)S*V z;=~JEF>A9W^PrBFX?e@ASrS4O_K zkcL86ewM49mM6)T>B;sK6~;QLrGupS*Eq|Q;jbti;pQ{r4iQQLW^?T z1zuN5fjc+dn^|%wWouZAlnj63$*|Auk10u(Xl04G9N3qG$prnNPMCzJ|Q_i zE+#Hv>D=57jr*p1y`Dl>e>a;n*VSRXKkbt1Ph&mato)@P=3XxOIB$OF(oWOMmE1Lb zf8dZI897tjo@qR&(s@nruX2vyUIiE%Ic$^#YVuFO8bt$d^`d{74p?JAC)s{&^iU zJ#LrRzOMi4eaAZg+h{lK!}fes?CSmJvxgM9i&+G-Ma^rn^yTeY6ALDXB`Tzg` delta 12401 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\n" +"Last-Translator: Jannis Leidel \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,6 @@ msgstr "" "X-Poedit-Country: GERMANY\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Generator: KBabel 1.11.4\n" #: conf/global_settings.py:39 msgid "Arabic" @@ -217,10 +216,8 @@ msgstr "" "

Nach %s:

\n" "
    \n" -#: contrib/admin/filterspecs.py:74 -#: contrib/admin/filterspecs.py:92 -#: contrib/admin/filterspecs.py:147 -#: contrib/admin/filterspecs.py:173 +#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 msgid "All" msgstr "Alle" @@ -244,20 +241,17 @@ msgstr "Diesen Monat" msgid "This year" msgstr "Dieses Jahr" -#: contrib/admin/filterspecs.py:147 -#: newforms/widgets.py:231 +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 #: oldforms/__init__.py:592 msgid "Yes" msgstr "Ja" -#: contrib/admin/filterspecs.py:147 -#: newforms/widgets.py:231 +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 #: oldforms/__init__.py:592 msgid "No" msgstr "Nein" -#: contrib/admin/filterspecs.py:154 -#: newforms/widgets.py:231 +#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231 #: oldforms/__init__.py:592 msgid "Unknown" msgstr "Unbekannt" @@ -297,7 +291,8 @@ msgstr "Seite nicht gefunden" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden." +msgstr "" +"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden." #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/base.html:37 @@ -329,8 +324,13 @@ msgid "Server Error (500)" msgstr "Serverfehler (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 "Ein Fehler ist aufgetreten. Dieser Fehler wurde an die Serververwalter per E-Mail weitergegeben und sollte bald behoben sein. Vielen Dank für Ihr Verständnis." +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Ein Fehler ist aufgetreten. Dieser Fehler wurde an die Serververwalter per E-" +"Mail weitergegeben und sollte bald behoben sein. Vielen Dank für Ihr " +"Verständnis." #: contrib/admin/templates/admin/base.html:26 msgid "Welcome," @@ -401,13 +401,23 @@ msgstr "Löschen" #: 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 "Die Löschung des %(object_name)s '%(escaped_object)s' hätte die Löschung von abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die folgenden abhängigen Daten zu löschen:" +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Die Löschung des %(object_name)s '%(escaped_object)s' hätte die Löschung von " +"abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die " +"folgenden abhängigen Daten zu löschen:" #: contrib/admin/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 "Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen wollen? Es werden zusätzlich die folgenden abhängigen Daten mit gelöscht:" +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen " +"wollen? Es werden zusätzlich die folgenden abhängigen Daten mit gelöscht:" #: contrib/admin/templates/admin/delete_confirmation.html:25 msgid "Yes, I'm sure" @@ -438,7 +448,7 @@ msgstr "Ändern" #: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." -msgstr "Sie haben keine Berechtigung irgendwas zu ändern." +msgstr "Sie haben keine Berechtigung, irgendetwas zu ändern." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" @@ -453,8 +463,14 @@ msgid "None available" msgstr "Keine vorhanden" #: 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 "Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom verwendeten Datenbankbenutzer auch lesbar ist." +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass " +"die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom " +"verwendeten Datenbankbenutzer auch lesbar ist." #: contrib/admin/templates/admin/login.html:17 #: contrib/comments/templates/comments/form.html:6 @@ -489,8 +505,12 @@ msgid "DATE_WITH_TIME_FULL" msgstr "j. N Y, H:i" #: 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 "Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht über diese Verwaltungsseiten angelegt." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht " +"über diese Verwaltungsseiten angelegt." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" @@ -529,8 +549,12 @@ msgid "Save" msgstr "Sichern" #: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "First, enter a username and password. Then, you'll be able to edit more user options." -msgstr "Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere Optionen für den Benutzer geändert werden." +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere " +"Optionen für den Benutzer geändert werden." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -554,7 +578,9 @@ msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben." #: contrib/admin/templates/admin/auth/user/change_password.html:27 #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "Bitte geben Sie ein neues Passwort für den Benutzer %(username)s ein." +msgstr "" +"Bitte geben Sie ein neues Passwort für den Benutzer %(username)s ein." #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -575,9 +601,12 @@ msgid "" "your computer is \"internal\").

    \n" msgstr "" "\n" -"

    Um Bookmarklets zu installieren, müssen diese Links in die\n" -"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in die\n" -"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder Seite\n" +"

    Um Bookmarklets zu installieren, müssen diese Links in " +"die\n" +"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in " +"die\n" +"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder " +"Seite\n" "aufgerufen werden. Einige Bookmarklets sind für den Zugriff von 'internen'\n" "Rechnern eingeschränkt. Falls nicht klar ist, ob ein Rechner als 'intern'\n" "bewertet wird, bitte den Administrator fragen.

    \n" @@ -587,16 +616,24 @@ msgid "Documentation for this page" msgstr "Dokumentation für diese Seite" #: 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 "Springt von jeder Seite zu der Dokumentation für den View der diese Seite erzeugt." +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Springt von jeder Seite zu der Dokumentation für den View der diese Seite " +"erzeugt." #: contrib/admin/templates/admin_doc/bookmarklets.html:21 msgid "Show object ID" msgstr "Objekt-ID anzeigen" #: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Zeigt den Content-Type und die eindeutige ID für Seiten die ein einzelnes Objekt repräsentieren." +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Zeigt den Content-Type und die eindeutige ID für Seiten die ein einzelnes " +"Objekt repräsentieren." #: contrib/admin/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" @@ -604,7 +641,9 @@ msgstr "Dieses Objekt im aktuellen Fenster ändern." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein Objekt repräsentiert." +msgstr "" +"Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein " +"Objekt repräsentiert." #: contrib/admin/templates/admin_doc/bookmarklets.html:27 msgid "Edit this object (new window)" @@ -612,7 +651,8 @@ msgstr "Dieses Objekt in einem neuen Fenster ändern." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "As above, but opens the admin page in a new window." -msgstr "Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster." +msgstr "" +"Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster." #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." @@ -639,8 +679,13 @@ msgid "Your password was changed." msgstr "Ihr Passwort wurde geändert." #: 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 "Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das neue Kennwort ein." +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter " +"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das " +"neue Kennwort ein." #: contrib/admin/templates/registration/password_change_form.html:16 msgid "Old password:" @@ -671,8 +716,12 @@ msgid "Password reset successful" msgstr "Passwort wurde erfolgreich zurückgesetzt" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Wir haben ein neues Passwort an die von Ihnen angegebene E-Mail-Adresse geschickt. Sie sollten es in Kürze erhalten." +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Wir haben ein neues Passwort an die von Ihnen angegebene E-Mail-Adresse " +"geschickt. Sie sollten es in Kürze erhalten." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -706,8 +755,12 @@ msgid "The %(site_name)s team" msgstr "Das Team von %(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 "Passwort vergessen? Einfach die E-Mail-Adresse eingeben und wir setzen das Passwort zurück und lassen es Ihnen per E-Mail zukommen." +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Passwort vergessen? Einfach die E-Mail-Adresse eingeben und wir setzen das " +"Passwort zurück und lassen es Ihnen per E-Mail zukommen." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -737,14 +790,12 @@ msgstr "Ändern:" msgid "All dates" msgstr "Alle Tage" -#: contrib/admin/views/auth.py:20 -#: contrib/admin/views/main.py:267 +#: 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\" wurde erfolgreich hinzugefügt." -#: contrib/admin/views/auth.py:25 -#: contrib/admin/views/main.py:271 +#: 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 "Das Element kann jetzt weiter bearbeitet werden." @@ -762,18 +813,29 @@ msgstr "Passwort erfolgreich geändert." msgid "Change password: %s" msgstr "Passwort ändern: %s" -#: contrib/admin/views/decorators.py:17 -#: contrib/auth/forms.py:60 -msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "Bitte einen gültigen Benutzernamen und ein Passwort eingeben. Beide Felder berücksichtigen die Groß-/Kleinschreibung." +#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Bitte einen gültigen Benutzernamen und ein Passwort eingeben. Beide Felder " +"berücksichtigen die Groß-/Kleinschreibung." #: contrib/admin/views/decorators.py:69 -msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." -msgstr "Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die Beiträge wurden gesichert." +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die " +"Beiträge wurden gesichert." #: contrib/admin/views/decorators.py:76 -msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "Es sieht danach aus, dass der Browser keine Cookies akzeptiert. Bitte im Browser Cookies aktivieren und diese Seite neu laden." +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Es sieht danach aus, dass der Browser keine Cookies akzeptiert. Bitte im " +"Browser Cookies aktivieren und diese Seite neu laden." #: contrib/admin/views/decorators.py:90 msgid "Usernames cannot contain the '@' character." @@ -782,22 +844,21 @@ msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten." #: contrib/admin/views/decorators.py:92 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%s' versuchen." +msgstr "" +"Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen " +"'%s' versuchen." -#: contrib/admin/views/doc.py:48 -#: contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50 #: contrib/admin/views/doc.py:52 msgid "tag:" msgstr "Schlagwort:" -#: contrib/admin/views/doc.py:79 -#: contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81 #: contrib/admin/views/doc.py:83 msgid "filter:" msgstr "Filter:" -#: contrib/admin/views/doc.py:137 -#: contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139 #: contrib/admin/views/doc.py:141 msgid "view:" msgstr "Ansicht:" @@ -817,10 +878,8 @@ msgstr "Modell %(name)r wurde nicht in Anwendung %(label)r gefunden" msgid "the related `%(label)s.%(type)s` object" msgstr "Das verknüpfte `%(label)s.%(type)s` Objekt" -#: contrib/admin/views/doc.py:185 -#: contrib/admin/views/doc.py:207 -#: contrib/admin/views/doc.py:221 -#: contrib/admin/views/doc.py:226 +#: 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 "Modell:" @@ -844,12 +903,9 @@ msgstr "Anzahl von %s" msgid "Fields on %s objects" msgstr "Felder am %s Objekt" -#: 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 +#: 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 "Ganzzahl" @@ -857,8 +913,7 @@ msgstr "Ganzzahl" msgid "Boolean (Either True or False)" msgstr "Boolscher Wert (True oder False)" -#: contrib/admin/views/doc.py:295 -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314 #, python-format msgid "String (up to %(max_length)s)" msgstr "Zeichenkette (bis zu %(max_length)s Zeichen)" @@ -883,8 +938,7 @@ msgstr "Dezimalzahl" msgid "E-mail address" msgstr "E-Mail-Adresse" -#: contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302 #: contrib/admin/views/doc.py:305 msgid "File path" msgstr "Dateipfad" @@ -893,8 +947,7 @@ msgstr "Dateipfad" msgid "Floating point number" msgstr "Fließkommazahl" -#: contrib/admin/views/doc.py:307 -#: contrib/comments/models.py:89 +#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 msgid "IP address" msgstr "IP-Adresse" @@ -918,8 +971,7 @@ msgstr "Text" msgid "Time" msgstr "Zeit" -#: contrib/admin/views/doc.py:318 -#: contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7 msgid "URL" msgstr "Adresse (URL)" @@ -940,8 +992,7 @@ msgstr "%s ist scheinbar kein urlpattern Objekt" msgid "Site administration" msgstr "Website-Verwaltung" -#: contrib/admin/views/main.py:280 -#: contrib/admin/views/main.py:365 +#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 #, python-format msgid "You may add another %s below." msgstr "Jetzt kann ein weiteres Element vom Typ %s angelegt werden." @@ -956,10 +1007,8 @@ msgstr "%s hinzufügen" msgid "Added %s." msgstr "%s hinzugefügt." -#: contrib/admin/views/main.py:344 -#: contrib/admin/views/main.py:346 -#: contrib/admin/views/main.py:348 -#: core/validators.py:283 +#: 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 "und" @@ -985,8 +1034,11 @@ msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert." #: 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\" wurde erfolgreich hinzugefügt. Das Element kann jetzt geändert werden." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Das Element kann jetzt " +"geändert werden." #: contrib/admin/views/main.py:400 #, python-format @@ -1031,8 +1083,7 @@ msgstr "%s zur Änderung auswählen" msgid "Database error" msgstr "Datenbankfehler" -#: contrib/auth/forms.py:17 -#: contrib/auth/forms.py:138 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." msgstr "Die beiden Passwörter sind nicht identisch." @@ -1041,16 +1092,24 @@ msgid "A user with that username already exists." msgstr "Ein Benutzer mit diesem Namen existiert bereits." #: contrib/auth/forms.py:53 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." -msgstr "Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für die Anmeldung zwingend erforderlich." +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für " +"die Anmeldung zwingend erforderlich." #: contrib/auth/forms.py:62 msgid "This account is inactive." msgstr "Dieser Benutzer ist inaktiv." #: contrib/auth/forms.py:84 -msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" -msgstr "Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit dieser Adresse angemeldet haben?" +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit " +"dieser Adresse angemeldet haben?" #: contrib/auth/forms.py:107 #, python-format @@ -1065,8 +1124,7 @@ msgstr "Die beiden neuen Passwörter sind nicht identisch." msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Das alte Passwort war falsch. Bitte neu eingeben." -#: contrib/auth/models.py:73 -#: contrib/auth/models.py:93 +#: contrib/auth/models.py:73 contrib/auth/models.py:93 msgid "name" msgstr "Name" @@ -1078,8 +1136,7 @@ msgstr "Codename" msgid "permission" msgstr "Berechtigung" -#: contrib/auth/models.py:79 -#: contrib/auth/models.py:94 +#: contrib/auth/models.py:79 contrib/auth/models.py:94 msgid "permissions" msgstr "Berechtigungen" @@ -1087,8 +1144,7 @@ msgstr "Berechtigungen" msgid "group" msgstr "Gruppe" -#: contrib/auth/models.py:98 -#: contrib/auth/models.py:141 +#: contrib/auth/models.py:98 contrib/auth/models.py:141 msgid "groups" msgstr "Gruppen" @@ -1097,8 +1153,12 @@ msgid "username" msgstr "Benutzername" #: contrib/auth/models.py:131 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, Ziffern und Unterstriche sind erlaubt)." +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, " +"Ziffern und Unterstriche sind erlaubt)." #: contrib/auth/models.py:132 msgid "first name" @@ -1117,8 +1177,12 @@ msgid "password" msgstr "Passwort" #: contrib/auth/models.py:135 -msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." -msgstr "Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das Passwort ändern Formular benutzen." +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das Passwort ändern Formular benutzen." #: contrib/auth/models.py:136 msgid "staff status" @@ -1126,23 +1190,33 @@ msgstr "Administrator" #: contrib/auth/models.py:136 msgid "Designates whether the user can log into this admin site." -msgstr "Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann." +msgstr "" +"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann." #: contrib/auth/models.py:137 msgid "active" msgstr "Aktiv" #: contrib/auth/models.py:137 -msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." -msgstr "Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann. Anstatt einen Benutzer zu löschen, kann er hier auch einfach deaktiviert werden." +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann. " +"Anstatt einen Benutzer zu löschen, kann er hier auch einfach deaktiviert " +"werden." #: contrib/auth/models.py:138 msgid "superuser status" msgstr "Hauptadmin." #: contrib/auth/models.py:138 -msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln zuweisen zu müssen." +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln " +"zuweisen zu müssen." #: contrib/auth/models.py:139 msgid "last login" @@ -1153,8 +1227,12 @@ msgid "date joined" msgstr "Mitglied seit" #: 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 "Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch alle Rechte, die seine zugewiesenen Gruppen haben." +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch " +"alle Rechte, die seine zugewiesenen Gruppen haben." #: contrib/auth/models.py:143 msgid "user permissions" @@ -1192,8 +1270,7 @@ msgstr "Mitteilung" msgid "Logged out" msgstr "Abgemeldet" -#: contrib/comments/models.py:71 -#: contrib/comments/models.py:176 +#: contrib/comments/models.py:71 contrib/comments/models.py:176 msgid "object ID" msgstr "Objekt-ID" @@ -1201,8 +1278,7 @@ msgstr "Objekt-ID" msgid "headline" msgstr "Überschrift" -#: contrib/comments/models.py:73 -#: contrib/comments/models.py:95 +#: contrib/comments/models.py:73 contrib/comments/models.py:95 #: contrib/comments/models.py:177 msgid "comment" msgstr "Kommentar" @@ -1243,13 +1319,11 @@ msgstr "Bewertung #8" msgid "is valid rating" msgstr "ist eine Bewertung" -#: contrib/comments/models.py:87 -#: contrib/comments/models.py:179 +#: contrib/comments/models.py:87 contrib/comments/models.py:179 msgid "date/time submitted" msgstr "Datum/Zeit Erstellung" -#: contrib/comments/models.py:88 -#: contrib/comments/models.py:180 +#: contrib/comments/models.py:88 contrib/comments/models.py:180 msgid "is public" msgstr "ist öffentlich" @@ -1258,15 +1332,18 @@ msgid "is removed" msgstr "ist gelöscht" #: 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 "Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird dann \"Dieser Kommentar wurde entfernt\" Meldung angezeigt." +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird " +"dann \"Dieser Kommentar wurde entfernt\" Meldung angezeigt." #: contrib/comments/models.py:96 msgid "comments" msgstr "Kommentare" -#: contrib/comments/models.py:140 -#: contrib/comments/models.py:222 +#: contrib/comments/models.py:140 contrib/comments/models.py:222 msgid "Content object" msgstr "Inhaltsobjekt" @@ -1408,25 +1485,32 @@ msgid "Your name:" msgstr "Ihr Name:" #: contrib/comments/views/comments.py:28 -msgid "This rating is required because you've entered at least one other rating." -msgstr "Diese Abstimmung ist zwingend erforderlich, da Sie an mindestens einer weiteren Abstimmung teilnehmen." +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"Diese Abstimmung ist zwingend erforderlich, da Sie an mindestens einer " +"weiteren Abstimmung teilnehmen." #: contrib/comments/views/comments.py:112 #, python-format msgid "" -"This comment was posted by a user who has posted fewer than %(count)s comment:\n" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" "\n" "%(text)s" msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s comments:\n" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" "\n" "%(text)s" msgstr[0] "" -"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s Kommentar:\n" +"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s " +"Kommentar:\n" "\n" "%(text)s" msgstr[1] "" -"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s Kommentaren:\n" +"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s " +"Kommentaren:\n" "\n" "%(text)s" @@ -1454,17 +1538,23 @@ msgstr "Eines oder mehrere der erforderlichen Felder fehlen" #: contrib/comments/views/comments.py:198 #: contrib/comments/views/comments.py:289 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)" +msgstr "" +"Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)" #: 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 "Das Kommentarformular hatte einen falschen 'target' Parameter -- die Objekt-ID ist ungültig." +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"Das Kommentarformular hatte einen falschen 'target' Parameter -- die Objekt-" +"ID ist ungültig." #: contrib/comments/views/comments.py:259 #: contrib/comments/views/comments.py:324 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Das Kommentarformular wurde nicht mit 'preview' oder 'post' abgeschickt" +msgstr "" +"Das Kommentarformular wurde nicht mit 'preview' oder 'post' abgeschickt" #: contrib/comments/views/karma.py:21 msgid "Anonymous users cannot vote" @@ -1478,21 +1568,23 @@ msgstr "Ungültige Kommentar-ID" msgid "No voting for yourself" msgstr "Keine Abstimmung für dich selbst" -#: contrib/contenttypes/models.py:37 +#: contrib/contenttypes/models.py:67 msgid "python model class name" msgstr "Python Model-Klassenname" -#: contrib/contenttypes/models.py:40 +#: contrib/contenttypes/models.py:71 msgid "content type" msgstr "Inhaltstyp" -#: contrib/contenttypes/models.py:41 +#: contrib/contenttypes/models.py:72 msgid "content types" msgstr "Inhaltstypen" #: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Beispiel: '/about/contact/'. Wichtig: Am Anfang und Ende muss ein / stehen." #: contrib/flatpages/models.py:9 msgid "title" @@ -1511,8 +1603,12 @@ msgid "template name" msgstr "Name der Vorlage" #: contrib/flatpages/models.py:13 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gefüllt ist, wird 'flatpages/default.html' als Standard gewählt." +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gefüllt ist, " +"wird 'flatpages/default.html' als Standard gewählt." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1520,7 +1616,9 @@ msgstr "Registrierung erforderlich" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer diese Seite sehen." +msgstr "" +"Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer diese Seite " +"sehen." #: contrib/flatpages/models.py:18 msgid "flat page" @@ -1618,31 +1716,31 @@ msgstr "gestern" #: contrib/localflavor/ar/forms.py:27 #, fuzzy msgid "Enter a postal code in the format NNNN or ANNNNAAA." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." +msgstr "" +"Bitte eine gültige Postleitzahl im Format NNNN oder ANNNNAAA eingeben." -#: contrib/localflavor/ar/forms.py:49 -#: contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 -#: contrib/localflavor/pe/forms.py:23 +#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 #: contrib/localflavor/pe/forms.py:51 #, fuzzy msgid "This field requires only numbers." -msgstr "Dieses Feld ist zwingend erforderlich." +msgstr "Dieses Feld darf nur Ziffern enthalten." #: contrib/localflavor/ar/forms.py:50 #, fuzzy msgid "This field requires 7 or 8 digits." -msgstr "Dieses Feld ist zwingend erforderlich." +msgstr "Dieses Feld benötigt 7 oder 8 Ziffern." #: contrib/localflavor/ar/forms.py:79 #, fuzzy msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." -msgstr "Bitte eine gültige deutsche Personalausweisnummer im Format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X eingeben." +msgstr "" +"Bitte eine gültige CUIT im Format XX-XXXXXXXX-X oder XXXXXXXXXXXX eingeben." #: contrib/localflavor/ar/forms.py:80 #, fuzzy msgid "Invalid CUIT." -msgstr "Ungültige URL: %s" +msgstr "Ungültige CUIT." #: contrib/localflavor/au/forms.py:16 msgid "Enter a 4 digit post code." @@ -1654,30 +1752,32 @@ msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben." #: contrib/localflavor/br/forms.py:30 msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben." +msgstr "Telefonnummern müssen das Format XX-XXXX-XXXX haben." #: contrib/localflavor/br/forms.py:58 #, fuzzy -msgid "Select a valid brazilian state. That state is not one of the available states." -msgstr "Bitte eine gültige Auswahl treffen." +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "Bitte einen gültigen brasilianischen Bundesstaat auswählen." #: contrib/localflavor/br/forms.py:94 msgid "Invalid CPF number." -msgstr "" +msgstr "Ungültige CPF-Nummer." #: contrib/localflavor/br/forms.py:95 #, fuzzy msgid "This field requires at most 11 digits or 14 characters." -msgstr "Bitte sicherstellen, dass der Text maximal %d Zeichen hat." +msgstr "Dieses Feld benötigt mindestens 11 Ziffern oder 14 Zeichen." #: contrib/localflavor/br/forms.py:134 msgid "Invalid CNPJ number." -msgstr "" +msgstr "Ungültige CNPJ-Nummer." #: contrib/localflavor/br/forms.py:136 #, fuzzy msgid "This field requires at least 14 digits" -msgstr "Dieses Feld ist zwingend erforderlich." +msgstr "Dieses Feld benötigt mindestens 14 Ziffern." #: contrib/localflavor/ca/forms.py:17 #, fuzzy @@ -1687,7 +1787,9 @@ msgstr "Bitte eine gültige Postleitzahl im Format XXXXX eingeben." #: contrib/localflavor/ca/forms.py:88 #, fuzzy msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format XXX-XX-XXXX eingeben." +msgstr "" +"Bitte eine gültige kanadische Sozialversicherungsnummer im Format XXX-" +"XXX-XXX eingeben." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1712,15 +1814,15 @@ msgstr "" #: contrib/localflavor/ch/ch_states.py:10 #, fuzzy msgid "Berne" -msgstr "Berlin" +msgstr "Bern" #: contrib/localflavor/ch/ch_states.py:11 msgid "Fribourg" -msgstr "" +msgstr "Freiburg" #: contrib/localflavor/ch/ch_states.py:12 msgid "Geneva" -msgstr "" +msgstr "Genf" #: contrib/localflavor/ch/ch_states.py:13 #, fuzzy @@ -1771,7 +1873,7 @@ msgstr "" #: contrib/localflavor/ch/ch_states.py:24 #, fuzzy msgid "Thurgau" -msgstr "Thüringen" +msgstr "" #: contrib/localflavor/ch/ch_states.py:25 msgid "Ticino" @@ -1780,7 +1882,7 @@ msgstr "" #: contrib/localflavor/ch/ch_states.py:26 #, fuzzy msgid "Uri" -msgstr "Fr" +msgstr "" #: contrib/localflavor/ch/ch_states.py:27 msgid "Valais" @@ -1793,31 +1895,34 @@ msgstr "" #: contrib/localflavor/ch/ch_states.py:29 #, fuzzy msgid "Zug" -msgstr "Aug" +msgstr "" #: contrib/localflavor/ch/ch_states.py:30 #, fuzzy msgid "Zurich" -msgstr "Türkisch" +msgstr "Zürich" -#: contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12 msgid "Enter a zip code in the format XXXX." msgstr "Bitte eine gültige Postleitzahl im Format XXXX eingeben." #: contrib/localflavor/ch/forms.py:64 -msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." msgstr "" +"Bitte eine gültige Schweizer Identifikations- oder Reisepassnummer im Format" +"X1234567<0 oder 1234567890 eingeben." #: contrib/localflavor/cl/forms.py:29 #, fuzzy msgid "Enter a valid Chilean RUT." -msgstr "Bitte einen gültigen Dateinamen eingeben." +msgstr "Bitte einen gültige chilenische RUT eingeben." #: contrib/localflavor/cl/forms.py:30 #, fuzzy msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben." +msgstr "Bitte eine chilenische RUT im Format XX.XXX.XXX-X eingeben." #: contrib/localflavor/cl/forms.py:31 #, fuzzy @@ -1888,15 +1993,18 @@ msgstr "Schleswig-Holstein" msgid "Thuringia" msgstr "Thüringen" -#: contrib/localflavor/de/forms.py:14 -#: contrib/localflavor/fi/forms.py:12 +#: 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 "Bitte eine gültige Postleitzahl im Format XXXXX eingeben." #: contrib/localflavor/de/forms.py:41 -msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." -msgstr "Bitte eine gültige deutsche Personalausweisnummer im Format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X eingeben." +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Bitte eine gültige deutsche Personalausweisnummer im Format XXXXXXXXXXX-" +"XXXXXXX-XXXXXXX-X eingeben." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" @@ -1917,7 +2025,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:9 #, fuzzy msgid "Avila" -msgstr "April" +msgstr "" #: contrib/localflavor/es/es_provinces.py:10 msgid "Badajoz" @@ -1930,7 +2038,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:12 #, fuzzy msgid "Barcelona" -msgstr "Mazedonisch" +msgstr "" #: contrib/localflavor/es/es_provinces.py:13 msgid "Burgos" @@ -1971,7 +2079,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:22 #, fuzzy msgid "Granada" -msgstr "Kannada" +msgstr "" #: contrib/localflavor/es/es_provinces.py:23 msgid "Guadalajara" @@ -1988,17 +2096,17 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:26 #, fuzzy msgid "Huesca" -msgstr "Dienstag" +msgstr "" #: contrib/localflavor/es/es_provinces.py:27 #, fuzzy msgid "Jaen" -msgstr "Jan." +msgstr "" #: contrib/localflavor/es/es_provinces.py:28 #, fuzzy msgid "Leon" -msgstr "Anmelden" +msgstr "" #: contrib/localflavor/es/es_provinces.py:29 msgid "Lleida" @@ -2041,7 +2149,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:38 #, fuzzy msgid "Palencia" -msgstr "Galicisch" +msgstr "" #: contrib/localflavor/es/es_provinces.py:39 msgid "Las Palmas" @@ -2063,12 +2171,12 @@ msgstr "" #: contrib/localflavor/es/es_regions.py:11 #, fuzzy msgid "Cantabria" -msgstr "Katalanisch" +msgstr "" #: contrib/localflavor/es/es_provinces.py:44 #, fuzzy msgid "Segovia" -msgstr "Slowenisch" +msgstr "" #: contrib/localflavor/es/es_provinces.py:45 msgid "Seville" @@ -2077,7 +2185,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:46 #, fuzzy msgid "Soria" -msgstr "Serbisch" +msgstr "" #: contrib/localflavor/es/es_provinces.py:47 msgid "Tarragona" @@ -2086,7 +2194,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:48 #, fuzzy msgid "Teruel" -msgstr "Di" +msgstr "" #: contrib/localflavor/es/es_provinces.py:49 msgid "Toledo" @@ -2095,7 +2203,7 @@ msgstr "" #: contrib/localflavor/es/es_provinces.py:50 #, fuzzy msgid "Valencia" -msgstr "Galicisch" +msgstr "" #: contrib/localflavor/es/es_provinces.py:51 msgid "Valladolid" @@ -2144,7 +2252,7 @@ msgstr "" #: contrib/localflavor/es/es_regions.py:10 #, fuzzy msgid "Canary Islands" -msgstr "Saarland" +msgstr "" #: contrib/localflavor/es/es_regions.py:12 msgid "Castile-La Mancha" @@ -2157,7 +2265,7 @@ msgstr "" #: contrib/localflavor/es/es_regions.py:14 #, fuzzy msgid "Catalonia" -msgstr "Katalanisch" +msgstr "" #: contrib/localflavor/es/es_regions.py:15 msgid "Extremadura" @@ -2166,7 +2274,7 @@ msgstr "" #: contrib/localflavor/es/es_regions.py:16 #, fuzzy msgid "Galicia" -msgstr "Galicisch" +msgstr "Galicien" #: contrib/localflavor/es/es_regions.py:19 msgid "Region of Murcia" @@ -2183,43 +2291,50 @@ msgstr "" #: contrib/localflavor/es/forms.py:19 #, fuzzy msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." +msgstr "" +"Bitte eine gültige Postleitzahl im Format 01XXX bis 52XXX eingeben." #: contrib/localflavor/es/forms.py:39 #, fuzzy -msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Bitte eine gültige Telefonnummer in einem der folgenden Formate eingeben " +"6XXXXXXXX, 8XXXXXXXX oder 9XXXXXXXX." #: contrib/localflavor/es/forms.py:66 #, fuzzy msgid "Please enter a valid NIF, NIE, or CIF." -msgstr "Bitte eine gültige IP-Adresse eingeben." +msgstr "Bitte eine gültige NIF, NIE oder CIF eingeben." #: contrib/localflavor/es/forms.py:67 #, fuzzy msgid "Please enter a valid NIF or NIE." -msgstr "Bitte ein gültiges '%s' eingeben." +msgstr "Bitte eine gültige NIF oder NIE eingeben." #: contrib/localflavor/es/forms.py:68 msgid "Invalid checksum for NIF." -msgstr "" +msgstr "Ungültige Prüfsumme für NIF." #: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIE." -msgstr "" +msgstr "Ungültige Prüfsumme für NIE." #: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for CIF." -msgstr "" +msgstr "Ungültige Prüfsumme für CIF." #: contrib/localflavor/es/forms.py:142 #, fuzzy -msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "Bitte eine gültige deutsche Personalausweisnummer im Format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X eingeben." +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" +"Bitte eine gültige Kontonummer im Format XXXX-XXXX-XX-XXXXXXXXXX eingeben." #: contrib/localflavor/es/forms.py:143 msgid "Invalid checksum for bank account number." -msgstr "" +msgstr "Ungültige Prüfsumme für Kontonummer." #: contrib/localflavor/fi/forms.py:28 msgid "Enter a valid Finnish social security number." @@ -2228,35 +2343,39 @@ msgstr "Bitte eine gültige finnische Sozialversicherungsnummer eingeben." #: contrib/localflavor/in_/forms.py:14 #, fuzzy msgid "Enter a zip code in the format XXXXXXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben." +msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX eingeben." #: contrib/localflavor/is_/forms.py:17 #, fuzzy -msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben." +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" +"Bitte eine gültige isländische Identifikationsnummer im Format XXXXXX-XXXX " +"eingeben." #: contrib/localflavor/is_/forms.py:18 msgid "The Icelandic identification number is not valid." -msgstr "" +msgstr "Die isländische Identifikationsnummer ist nicht gültig." #: contrib/localflavor/it/forms.py:14 #, fuzzy msgid "Enter a valid zip code." -msgstr "Bitte ein gültiges Datum eingeben." +msgstr "Bitte eine Postleitzahl eingeben." #: contrib/localflavor/it/forms.py:43 #, fuzzy msgid "Enter a valid Social Security number." -msgstr "Bitte eine gültige finnische Sozialversicherungsnummer eingeben." +msgstr "Bitte eine gültige Sozialversicherungsnummer eingeben." #: contrib/localflavor/it/forms.py:68 #, fuzzy msgid "Enter a valid VAT number." -msgstr "Bitte eine gültige Uhrzeit eingeben." +msgstr "Bitte eine gültige Umsatzsteuernummer eingeben." #: contrib/localflavor/jp/forms.py:17 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." +msgstr "" +"Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" @@ -2408,7 +2527,7 @@ msgstr "" #: contrib/localflavor/jp/jp_prefectures.py:41 msgid "Ehime" -msgstr "Zeit" +msgstr "" #: contrib/localflavor/jp/jp_prefectures.py:42 msgid "Kochi" @@ -2461,7 +2580,7 @@ msgstr "" #: contrib/localflavor/mx/mx_states.py:15 #, fuzzy msgid "Campeche" -msgstr "Tschechisch" +msgstr "" #: contrib/localflavor/mx/mx_states.py:16 msgid "Chihuahua" @@ -2490,7 +2609,7 @@ msgstr "" #: contrib/localflavor/mx/mx_states.py:22 #, fuzzy msgid "Guerrero" -msgstr "Serverfehler" +msgstr "" #: contrib/localflavor/mx/mx_states.py:23 msgid "Guanajuato" @@ -2543,7 +2662,7 @@ msgstr "" #: contrib/localflavor/mx/mx_states.py:35 #, fuzzy msgid "Sinaloa" -msgstr "Slowakisch" +msgstr "" #: contrib/localflavor/mx/mx_states.py:36 msgid "San Luis Potosí" @@ -2580,22 +2699,22 @@ msgstr "" #: contrib/localflavor/nl/forms.py:21 #, fuzzy msgid "Enter a valid postal code" -msgstr "Bitte einen gültigen Wert eingeben." +msgstr "Bitte eine gültige Postleitzahl eingeben." #: contrib/localflavor/nl/forms.py:52 #, fuzzy msgid "Enter a valid phone number" -msgstr "Bitte eine ganze Zahl eingeben." +msgstr "Bitte eine gültige Telefonnummer eingeben." #: contrib/localflavor/nl/forms.py:78 #, fuzzy msgid "Enter a valid SoFi number" -msgstr "Bitte eine gültige Uhrzeit eingeben." +msgstr "Bitte eine gültige SoFi-Nummer eingeben." #: contrib/localflavor/nl/nl_provinces.py:4 #, fuzzy msgid "Drente" -msgstr "Löschen" +msgstr "" #: contrib/localflavor/nl/nl_provinces.py:5 msgid "Flevoland" @@ -2608,17 +2727,17 @@ msgstr "" #: contrib/localflavor/nl/nl_provinces.py:7 #, fuzzy msgid "Gelderland" -msgstr "Deutsch" +msgstr "" #: contrib/localflavor/nl/nl_provinces.py:8 #, fuzzy msgid "Groningen" -msgstr "neun" +msgstr "" #: contrib/localflavor/nl/nl_provinces.py:9 #, fuzzy msgid "Limburg" -msgstr "Hamburg" +msgstr "" #: contrib/localflavor/nl/nl_provinces.py:10 msgid "Noord-Brabant" @@ -2635,12 +2754,12 @@ msgstr "" #: contrib/localflavor/nl/nl_provinces.py:13 #, fuzzy msgid "Utrecht" -msgstr "Französisch" +msgstr "" #: contrib/localflavor/nl/nl_provinces.py:14 #, fuzzy msgid "Zeeland" -msgstr "Isländisch" +msgstr "" #: contrib/localflavor/nl/nl_provinces.py:15 msgid "Zuid-Holland" @@ -2653,47 +2772,52 @@ msgstr "Bitte eine gültige norwegische Sozialversicherungsnummer eingeben." #: contrib/localflavor/pe/forms.py:24 #, fuzzy msgid "This field requires 8 digits." -msgstr "Dieses Feld ist zwingend erforderlich." +msgstr "Dieses Feld benötigt 8 Zeichen." #: contrib/localflavor/pe/forms.py:52 #, fuzzy msgid "This field requires 11 digits." -msgstr "Dieses Feld ist zwingend erforderlich." +msgstr "Dieses Feld benötigt 11 Zeichen." #: contrib/localflavor/pl/forms.py:39 msgid "National Identification Number consists of 11 digits." -msgstr "" +msgstr "Nationale Identifikationsnummer besteht aus 11 Ziffern." #: contrib/localflavor/pl/forms.py:40 msgid "Wrong checksum for the National Identification Number." -msgstr "" +msgstr "Falsche Prüfsumme für die nationale Identifikationsnummer." #: contrib/localflavor/pl/forms.py:72 #, fuzzy -msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" +"Bitte eine Steuernummer (NIP) im Format XXX-XXX-XX-XX oder XX-XX-XXX-XXX " +"eingeben." #: contrib/localflavor/pl/forms.py:73 msgid "Wrong checksum for the Tax Number (NIP)." -msgstr "" +msgstr "Falsche Prüfsumme für die Steuernummer (NIP)." #: contrib/localflavor/pl/forms.py:112 msgid "National Business Register Number (REGON) consists of 7 or 9 digits." -msgstr "" +msgstr "Nationale Geschäftsregistrierungsnummer (REGON) besteht aus 7 oder " +"9 Zeichen." #: contrib/localflavor/pl/forms.py:113 msgid "Wrong checksum for the National Business Register Number (REGON)." -msgstr "" +msgstr "Falsche Prüfsumme für die nationale Geschäftsregistrierungsnummer " +"(REGON)." #: contrib/localflavor/pl/forms.py:156 #, fuzzy msgid "Enter a postal code in the format XX-XXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXX eingeben." +msgstr "Bitte eine gültige Postleitzahl im Format XX-XXX eingeben." #: contrib/localflavor/pl/pl_voivodeships.py:8 #, fuzzy msgid "Lower Silesia" -msgstr "Niedersachsen" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:9 msgid "Kuyavia-Pomerania" @@ -2722,7 +2846,7 @@ msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:15 #, fuzzy msgid "Opole" -msgstr "Optional" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:16 msgid "Subcarpatia" @@ -2735,12 +2859,12 @@ msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:18 #, fuzzy msgid "Pomerania" -msgstr "Rumänisch" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:19 #, fuzzy msgid "Silesia" -msgstr "Slowenisch" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:20 msgid "Swietokrzyskie" @@ -2757,12 +2881,13 @@ msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:23 #, fuzzy msgid "West Pomerania" -msgstr "Mecklenburg-Vorpommern" +msgstr "" #: contrib/localflavor/sk/forms.py:30 #, fuzzy msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben." +msgstr "" +"Bitte eine gültige Postleitzahl im Format XXXXX oder XXX XX eingeben." #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -2783,7 +2908,7 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:12 #, fuzzy msgid "Brezno" -msgstr "Bremen" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:13 msgid "Bratislava I" @@ -2828,12 +2953,12 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:23 #, fuzzy msgid "Galanta" -msgstr "Galicisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:24 #, fuzzy msgid "Gelnica" -msgstr "Galicisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:25 msgid "Hlohovec" @@ -2854,7 +2979,7 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:29 #, fuzzy msgid "Komarno" -msgstr "Koreanisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:30 msgid "Kosice I" @@ -2903,12 +3028,12 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:41 #, fuzzy msgid "Malacky" -msgstr "Mai" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:42 #, fuzzy msgid "Martin" -msgstr "Lettisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:43 msgid "Medzilaborce" @@ -2949,7 +3074,7 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:52 #, fuzzy msgid "Piestany" -msgstr "Persisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:53 msgid "Poltar" @@ -2994,7 +3119,7 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:63 #, fuzzy msgid "Sabinov" -msgstr "Nov" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:64 msgid "Senec" @@ -3003,17 +3128,17 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:65 #, fuzzy msgid "Senica" -msgstr "Slowenisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:66 #, fuzzy msgid "Skalica" -msgstr "Galicisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:67 #, fuzzy msgid "Snina" -msgstr "neun" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:68 msgid "Sobrance" @@ -3038,7 +3163,7 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:73 #, fuzzy msgid "Sala" -msgstr "Saarland" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:74 msgid "Topolcany" @@ -3051,7 +3176,7 @@ msgstr "" #: contrib/localflavor/sk/sk_districts.py:76 #, fuzzy msgid "Trencin" -msgstr "Französisch" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:77 msgid "Trnava" @@ -3128,7 +3253,7 @@ msgstr "" #: contrib/localflavor/uk/forms.py:21 #, fuzzy msgid "Enter a valid postcode." -msgstr "Bitte ein gültiges Datum eingeben." +msgstr "Bitte eine gültige Postleitzahl eingeben." #: contrib/localflavor/uk/uk_regions.py:11 msgid "Bedfordshire" @@ -3157,7 +3282,7 @@ msgstr "" #: contrib/localflavor/uk/uk_regions.py:18 #, fuzzy msgid "Devon" -msgstr "sieben" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:19 msgid "Dorset" @@ -3198,7 +3323,7 @@ msgstr "" #: contrib/localflavor/uk/uk_regions.py:28 #, fuzzy msgid "Kent" -msgstr "Koreanisch" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:29 msgid "Lancashire" @@ -3352,7 +3477,7 @@ msgstr "" #: contrib/localflavor/uk/uk_regions.py:75 #, fuzzy msgid "Borders" -msgstr "Reihenfolge:" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:76 msgid "Central Scotland" @@ -3365,12 +3490,12 @@ msgstr "" #: contrib/localflavor/uk/uk_regions.py:78 #, fuzzy msgid "Fife" -msgstr "Filter" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:79 #, fuzzy msgid "Grampian" -msgstr "Deutsch" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:80 msgid "Highland" @@ -3379,7 +3504,7 @@ msgstr "" #: contrib/localflavor/uk/uk_regions.py:81 #, fuzzy msgid "Lothian" -msgstr "Lettisch" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:82 msgid "Orkney Islands" @@ -3404,54 +3529,57 @@ msgstr "" #: contrib/localflavor/uk/uk_regions.py:90 #, fuzzy msgid "England" -msgstr "und" +msgstr "England" #: contrib/localflavor/uk/uk_regions.py:91 msgid "Northern Ireland" -msgstr "" +msgstr "Nordirland" #: contrib/localflavor/uk/uk_regions.py:92 #, fuzzy msgid "Scotland" -msgstr "Saarland" +msgstr "Schottland" #: contrib/localflavor/uk/uk_regions.py:93 #, fuzzy msgid "Wales" -msgstr "Walisisch" +msgstr "Wales" #: contrib/localflavor/us/forms.py:16 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Bitte eine gültige Postleitzahl im Format XXXXX oder XXXXX-XXXX eingeben." +msgstr "" +"Bitte eine gültige Postleitzahl im Format XXXXX oder XXXXX-XXXX eingeben." #: contrib/localflavor/us/forms.py:54 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format XXX-XX-XXXX eingeben." +msgstr "" +"Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format XXX-" +"XX-XXXX eingeben." #: contrib/localflavor/za/forms.py:20 #, fuzzy msgid "Enter a valid South African ID number" -msgstr "Bitte eine gültige norwegische Sozialversicherungsnummer eingeben." +msgstr "Bitte eine gültige südafrikanische Sozialversicherungsnummer eingeben." #: contrib/localflavor/za/forms.py:54 #, fuzzy msgid "Enter a valid South African postal code" -msgstr "Bitte eine gültige vierstellige Postleitzahl eingeben." +msgstr "Bitte eine gültige südafrikanische Postleitzahl eingeben." #: contrib/localflavor/za/za_provinces.py:4 #, fuzzy msgid "Eastern Cape" -msgstr "Benutzername" +msgstr "" #: contrib/localflavor/za/za_provinces.py:5 #, fuzzy msgid "Free State" -msgstr "Bewertungsdatum" +msgstr "" #: contrib/localflavor/za/za_provinces.py:6 #, fuzzy msgid "Gauteng" -msgstr "Aug" +msgstr "" #: contrib/localflavor/za/za_provinces.py:7 msgid "KwaZulu-Natal" @@ -3472,28 +3600,36 @@ msgstr "" #: contrib/localflavor/za/za_provinces.py:11 #, fuzzy msgid "North West" -msgstr "Nordrhein-Westfalen" +msgstr "" #: contrib/localflavor/za/za_provinces.py:12 #, fuzzy msgid "Western Cape" -msgstr "Benutzername" +msgstr "" #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "Umleitung von" #: contrib/redirects/models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/events/search/'." +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/" +"events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "Umleitung zu" #: contrib/redirects/models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am Anfang stehen." +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am " +"Anfang stehen." #: contrib/redirects/models.py:13 msgid "redirect" @@ -3544,12 +3680,18 @@ msgid "This value must contain only letters, numbers and underscores." msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." #: core/validators.py:76 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche enthalten." +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche " +"enthalten." #: core/validators.py:80 msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche enthalten." +msgstr "" +"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche " +"enthalten." #: core/validators.py:84 msgid "Uppercase letters are not allowed here." @@ -3583,8 +3725,7 @@ msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt." msgid "This value can't be comprised solely of digits." msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen." -#: core/validators.py:128 -#: newforms/fields.py:151 +#: core/validators.py:128 newforms/fields.py:151 msgid "Enter a whole number." msgstr "Bitte eine ganze Zahl eingeben." @@ -3601,8 +3742,7 @@ msgstr "Das Jahr muss 1900 oder später sein." msgid "Invalid date: %s" msgstr "Ungültiges Datum: %s" -#: core/validators.py:156 -#: db/models/fields/__init__.py:522 +#: core/validators.py:156 db/models/fields/__init__.py:527 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben." @@ -3610,27 +3750,29 @@ msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben." msgid "Enter a valid time in HH:MM format." msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben." -#: core/validators.py:165 -#: db/models/fields/__init__.py:599 +#: core/validators.py:165 db/models/fields/__init__.py:604 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM eingeben." +msgstr "" +"Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM " +"eingeben." -#: core/validators.py:170 -#: newforms/fields.py:402 +#: core/validators.py:170 newforms/fields.py:402 msgid "Enter a valid e-mail address." msgstr "Bitte eine gültige E-Mail-Adresse eingeben." -#: core/validators.py:182 -#: core/validators.py:474 -#: newforms/fields.py:432 +#: 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 "Es wurde keine Datei übermittelt. Eventuell ist das Formular-Encoding falsch." +msgstr "" +"Es wurde keine Datei übermittelt. Eventuell ist das Formular-Encoding falsch." -#: 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 "Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild, oder ist defekt." +#: 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 "" +"Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild, oder ist " +"defekt." #: core/validators.py:200 #, python-format @@ -3640,7 +3782,8 @@ msgstr "Die URL %s zeigt nicht auf ein gültiges Bild." #: core/validators.py:204 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig." +msgstr "" +"Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig." #: core/validators.py:212 #, python-format @@ -3670,8 +3813,7 @@ msgstr "Ungültiges XML: %s" msgid "Invalid URL: %s" msgstr "Ungültige URL: %s" -#: core/validators.py:259 -#: core/validators.py:261 +#: core/validators.py:259 core/validators.py:261 #, python-format msgid "The URL %s is a broken link." msgstr "Die URL %s funktioniert nicht." @@ -3696,20 +3838,21 @@ msgstr "Dieses Feld muss zum Feld '%s' passen." msgid "Please enter something for at least one field." msgstr "Bitte mindestens eines der Felder ausfüllen." -#: core/validators.py:316 -#: core/validators.py:327 +#: core/validators.py:316 core/validators.py:327 msgid "Please enter both fields or leave them both empty." msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen." #: core/validators.py:335 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat." +msgstr "" +"Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat." #: core/validators.py:348 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist." +msgstr "" +"Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist." #: core/validators.py:367 msgid "Duplicate values are not allowed." @@ -3742,23 +3885,33 @@ msgstr "Bitte eine gültige Dezimalzahl eingeben." #: 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." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." msgstr[0] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben." msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben." #: core/validators.py: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] "Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffer eingeben." -msgstr[1] "Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffern eingeben." +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +"Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffer " +"eingeben." +msgstr[1] "" +"Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffern " +"eingeben." #: core/validators.py: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] "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben." -msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben." +msgstr[1] "" +"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben." #: core/validators.py:458 msgid "Please enter a valid floating point number." @@ -3767,12 +3920,15 @@ msgstr "Bitte eine gültige Dezimalzahl eingeben." #: core/validators.py:467 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß ist." +msgstr "" +"Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß " +"ist." #: core/validators.py:468 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist." +msgstr "" +"Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist." #: core/validators.py:485 msgid "The format for this field is wrong." @@ -3789,79 +3945,103 @@ msgstr "Konnte nichts von %s empfangen." #: core/validators.py:539 #, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'." #: core/validators.py:572 #, python-format -msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile " +"beginnt mit \"%(start)s\"." #: core/validators.py:576 #, python-format -msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" -msgstr "In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile " +"beginnt mit \"%(start)s\"." #: core/validators.py:581 #, python-format -msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit " +"\"%(start)s\"." #: core/validators.py:586 #, python-format -msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" -msgstr "<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s" +"\"." #: core/validators.py:590 #, python-format -msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" -msgstr "Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die " +"Zeile beginnt mit \"%(start)s\"." #: core/validators.py:595 #, python-format -msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" -msgstr "Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile " +"beginnt mit \"%(start)s\"." #: db/models/manipulators.py:308 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "Ein '%(object)s' in dieser '%(type)s' existiert bereits für dieses '%(field)s'." +msgstr "" +"Ein '%(object)s' in dieser '%(type)s' existiert bereits für dieses '%(field)" +"s'." #: db/models/fields/__init__.py:52 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ein '%(optname)s' mit diesem '%(fieldname)s' existiert bereits." -#: db/models/fields/__init__.py:161 -#: db/models/fields/__init__.py:322 -#: db/models/fields/__init__.py:754 -#: db/models/fields/__init__.py:765 -#: newforms/fields.py:45 -#: oldforms/__init__.py:374 +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:327 +#: db/models/fields/__init__.py:759 db/models/fields/__init__.py:770 +#: newforms/fields.py:45 oldforms/__init__.py:374 msgid "This field is required." msgstr "Dieses Feld ist zwingend erforderlich." -#: db/models/fields/__init__.py:422 +#: db/models/fields/__init__.py:427 msgid "This value must be an integer." msgstr "Dieser Wert muss eine Ganzzahl sein." -#: db/models/fields/__init__.py:461 +#: db/models/fields/__init__.py:466 msgid "This value must be either True or False." msgstr "Dieser Wert muss wahr oder falsch sein." -#: db/models/fields/__init__.py:485 +#: db/models/fields/__init__.py:490 msgid "This field cannot be null." msgstr "Dieses Feld darf nicht leer sein." -#: db/models/fields/__init__.py:663 +#: db/models/fields/__init__.py:668 msgid "This value must be a decimal number." msgstr "Dieser Wert muss eine Ganzzahl sein." -#: db/models/fields/__init__.py:774 +#: db/models/fields/__init__.py:779 msgid "Enter a valid filename." msgstr "Bitte einen gültigen Dateinamen eingeben." -#: db/models/fields/__init__.py:945 +#: db/models/fields/__init__.py:950 msgid "This value must be either None, True or False." msgstr "Dieser Wert muss None, True oder False sein." @@ -3875,15 +4055,21 @@ msgid "Separate multiple IDs with commas." msgstr "Mehrere IDs können mit Komma getrennt werden." #: db/models/fields/related.py:696 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command\", beim Klicken gedrückt halten." +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command" +"\", beim Klicken gedrückt halten." #: db/models/fields/related.py:743 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Bitte gültige IDs für %(self)s eingeben. Der Wert %(value)r ist ungültig." -msgstr[1] "Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Bitte gültige IDs für %(self)s eingeben. Der Wert %(value)r ist ungültig." +msgstr[1] "" +"Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig." #: newforms/fields.py:46 msgid "Enter a valid value." @@ -3892,29 +4078,28 @@ msgstr "Bitte einen gültigen Wert eingeben." #: newforms/fields.py:123 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Bitte sicherstellen, dass der Text maximal %(max)d Zeichen hat. (Er hat %(length)d)." +msgstr "" +"Bitte sicherstellen, dass der Text maximal %(max)d Zeichen hat. (Er hat %" +"(length)d)." #: newforms/fields.py:124 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "Bitte sicherstellen, dass der Text wenigstens %(min)d Zeichen hat. (Er hat %(length)d.)" +msgstr "" +"Bitte sicherstellen, dass der Text wenigstens %(min)d Zeichen hat. (Er hat %" +"(length)d.)" -#: newforms/fields.py:152 -#: newforms/fields.py:181 -#: newforms/fields.py:210 +#: 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 "Dieser Wert darf maximal %s sein." -#: newforms/fields.py:153 -#: newforms/fields.py:182 -#: newforms/fields.py:211 +#: 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 "Dieser Wert muss größer oder gleich %s sein." -#: newforms/fields.py:180 -#: newforms/fields.py:209 +#: newforms/fields.py:180 newforms/fields.py:209 msgid "Enter a number." msgstr "Bitte eine Zahl eingeben." @@ -3933,13 +4118,11 @@ msgstr "Bitte geben Sie nicht mehr als %s Dezimalstellen ein." msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Bitte geben Sie nicht mehr als %s Ziffern vor dem Komma ein." -#: newforms/fields.py:262 -#: newforms/fields.py:723 +#: newforms/fields.py:262 newforms/fields.py:723 msgid "Enter a valid date." msgstr "Bitte ein gültiges Datum eingeben." -#: newforms/fields.py:295 -#: newforms/fields.py:724 +#: newforms/fields.py:295 newforms/fields.py:724 msgid "Enter a valid time." msgstr "Bitte eine gültige Uhrzeit eingeben." @@ -3951,8 +4134,7 @@ msgstr "Bitte gültiges Datum und Uhrzeit eingeben." msgid "No file was submitted." msgstr "Es wurde keine Datei übertragen." -#: newforms/fields.py:434 -#: oldforms/__init__.py:689 +#: newforms/fields.py:434 oldforms/__init__.py:689 msgid "The submitted file is empty." msgstr "Die ausgewählte Datei ist leer." @@ -3964,19 +4146,17 @@ msgstr "Bitte eine gültige Adresse eingeben." msgid "This URL appears to be a broken link." msgstr "Diese Adresse scheint nicht gültig zu sein." -#: newforms/fields.py:559 -#: newforms/models.py:300 +#: newforms/fields.py:559 newforms/models.py:300 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Bitte eine gültige Auswahl treffen." #: newforms/fields.py:598 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." -msgstr "Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl." +msgstr "" +"Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl." -#: newforms/fields.py:599 -#: newforms/fields.py:661 -#: newforms/models.py:360 +#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:360 msgid "Enter a list of values." msgstr "Eine Liste mit Werten eingeben." @@ -4000,12 +4180,11 @@ msgstr[1] "Bitte sicherstellen, dass der Text weniger als %s Zeichen hat." msgid "Line breaks are not allowed here." msgstr "Zeilenumbrüche sind hier nicht erlaubt." -#: oldforms/__init__.py:512 -#: oldforms/__init__.py:586 -#: oldforms/__init__.py:625 +#: 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 "Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s." +msgstr "" +"Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s." #: oldforms/__init__.py:745 msgid "Enter a whole number between -32,768 and 32,767." @@ -4133,28 +4312,23 @@ msgstr "Januar" msgid "February" msgstr "Februar" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "März" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "April" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "Mai" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "Juni" -#: utils/dates.py:19 -#: utils/dates.py:31 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "Juli" @@ -4308,23 +4482,23 @@ msgstr "%(number)d %(type)s" msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:404 +#: utils/translation/trans_real.py:403 msgid "DATE_FORMAT" msgstr "j. N Y" -#: utils/translation/trans_real.py:405 +#: utils/translation/trans_real.py:404 msgid "DATETIME_FORMAT" msgstr "j. N Y, H:i" -#: utils/translation/trans_real.py:406 +#: utils/translation/trans_real.py:405 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:422 +#: utils/translation/trans_real.py:421 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:423 +#: utils/translation/trans_real.py:422 msgid "MONTH_DAY_FORMAT" msgstr "j. F" @@ -4342,10 +4516,3 @@ msgstr "%(verbose_name)s wurde erfolgreich aktualisiert." #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s wurde gelöscht" - -#~ msgid "" -#~ "Enter a postcode. A space is required between the two postcode parts." -#~ msgstr "" -#~ "Bitte eine gültige Postleitzahl eingeben. Ein Leerzeichen trennt die zwei " -#~ "Teile." - diff --git a/django/conf/locale/de/LC_MESSAGES/djangojs.mo b/django/conf/locale/de/LC_MESSAGES/djangojs.mo index 896847bb993eca04f09f40785492b05cdd3f454e..55f527318a5d5617e177d1b32b80ef3d208e88b4 100644 GIT binary patch delta 207 zcmXZWEe^s!5QgEeKil%Nr48W#+=GNmaETtE4nZ)O8br-11hN8Ahpk59&>W$*yxWjW z=E-a(-|XEs_WC)k1L+b;Mv{xACEjp_Eza;ictaWJxDmawKJSsf|zc@r6x%V+#v(vBWNZFu?C$hY+IFM>9Xb z2*+r0_t?NAQaU?YRD&s9hl?AAm|?XT=kx_q@_B6ndK~5>!~ANwwIE!^yEs~H*PA4q KO{V$XPHI1xF&WDM diff --git a/django/conf/locale/de/LC_MESSAGES/djangojs.po b/django/conf/locale/de/LC_MESSAGES/djangojs.po index 936dcb454f..6e0daaca91 100644 --- a/django/conf/locale/de/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/de/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django JavaScript 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2005-12-04 13:21+0100\n" diff --git a/django/conf/locale/el/LC_MESSAGES/django.mo b/django/conf/locale/el/LC_MESSAGES/django.mo index cfd591b05186599f92d7cee1556722ddfa1c728e..cd6050901c415a5f6828d57b5b240731f697860f 100644 GIT binary patch delta 16 Ycmcb%f$7=?rVV%88C^Etb*~Hn07i`m$p8QV delta 16 Ycmcb%f$7=?rVV%88B;djb*~Hn07p#+=>Px# diff --git a/django/conf/locale/el/LC_MESSAGES/django.po b/django/conf/locale/el/LC_MESSAGES/django.po index cc14eee072..d9793c843a 100644 --- a/django/conf/locale/el/LC_MESSAGES/django.po +++ b/django/conf/locale/el/LC_MESSAGES/django.po @@ -1,12 +1,10 @@ # translation of django.po to el # Copyright (C) 2006 and beyond # This file is distributed under the same license as the DJANGO package. -# Panos Laganakos , Mar 2006. # -# Dimitris Glezos , 2007. msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-04-05 01:32+1000\n" "PO-Revision-Date: 2007-09-03 04:19+0100\n" diff --git a/django/conf/locale/el/LC_MESSAGES/djangojs.mo b/django/conf/locale/el/LC_MESSAGES/djangojs.mo index 7d43b315fe3e5985cdbcc02df9692d09ca67bce3..b689bf8fbfd50b0c04ef8891e2c5dcfc66d3dc2b 100644 GIT binary patch delta 198 zcmbQl*U2~GOuafI1A`4S0|N&G149Z61A_pN&IQtxS{6wE1JWRMGOP>?H-WS|kQM^cjBF5dMSwKO9#tq`kBvbOY=J#cKnExh q0;JP`bR&@F0n#skG|0fOKpLcxVRI$pbw)Oqti-(Z{LS&qo0$RWsTNNF delta 207 zcmeC=o5VNaOuYdk1A`4S0|N&G14Awg1A_pNE(6k{K)M}Biva1lK$;6kZvxWdKzc8f zz6zuzf&8~XS{6vNvqIFV0_mGTz5$RH0@7S;5OZaLG{_!3DBqloK@V(!2T(uAAvN;;(tIIq>*!TCF6BQ{s2d3Z%21mg)rBkU{8O)&0)-&nE{J)7xe%D diff --git a/django/conf/locale/el/LC_MESSAGES/djangojs.po b/django/conf/locale/el/LC_MESSAGES/djangojs.po index 545f9f8601..28c06e3507 100644 --- a/django/conf/locale/el/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/el/LC_MESSAGES/djangojs.po @@ -1,11 +1,10 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) 2006 and beyond. # This file is distributed under the same license as the Django package. -# Orestis Markou , 2006. # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" diff --git a/django/conf/locale/en/LC_MESSAGES/django.mo b/django/conf/locale/en/LC_MESSAGES/django.mo index 5bb3059a2cdf97f98edc0f60579e3c68ff569d14..1367370ea214dcdc1d749cc23090ba712c33cea6 100644 GIT binary patch delta 75 zcmey&@``0bh^Y=E1A_z*b22b6xH2&?umNd*APwS&0cmC+odBePN*Ge0{IrRki`iVV O67$mYH(N7WFaiK-@e05I delta 84 zcmaFG@|k5qh^Z+f1A_z*b22b6_%SgsumR}^APwTj18HU;oe89YN*HpX{QQZXi}?c_ XoxL61T@}JygMvN%{WcphS}+0t+lma{ diff --git a/django/conf/locale/en/LC_MESSAGES/django.po b/django/conf/locale/en/LC_MESSAGES/django.po index a2dd52978b..c080c6156b 100644 --- a/django/conf/locale/en/LC_MESSAGES/django.po +++ b/django/conf/locale/en/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-11-29 10:57-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" diff --git a/django/conf/locale/en/LC_MESSAGES/djangojs.mo b/django/conf/locale/en/LC_MESSAGES/djangojs.mo index 41cc5b54c031661dd8e9b9daa94107b58b0076d8..80dd04a10de989ea23fee0f137755afa599a5f31 100644 GIT binary patch delta 22 dcmaFQ^o(hO3Zu?MRShlT>Ta3}| r+2ITiNa<*_84ji-w;;y^FX$e*;~JmHk7~z$hun~9N-y%8I@tSvada0G delta 223 zcmXZWu@1p-5XbRfTh*e<&`l)u0>WbS09K1tOiUuuRV)S;#%^K}qx1!=Vv-nbUcm$S z{u{|9pWNkg_uB?(uz#-_mb7uCqNGzn^6-KoUa^cf^zreZzpzgK!3ut{igNQ(h-N>+ z5jN4>Nw9=#q_lI@&mSJ>%z+eJct#WCjy-%L8Re7G%md`7qAayMyA}_|$#^(fOy|qE L+wNpXXJ-EZQg<0e diff --git a/django/conf/locale/es/LC_MESSAGES/djangojs.po b/django/conf/locale/es/LC_MESSAGES/djangojs.po index d193cf660e..f85ea6dcb6 100644 --- a/django/conf/locale/es/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/es/LC_MESSAGES/djangojs.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django JavaScript 1.0\n" +"Project-Id-Version: Django\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" diff --git a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo index 32035fae25dbea6d062de77d8d252cb476cce4c8..b7683ea354a7abcfaae7d7c6c5734b4c83d6598b 100644 GIT binary patch delta 207 zcmXZWp$>vz6vgqwhln7!@dQ4A!Db*h3~Uy&k7F}iZFYj2%w#2!Flw>VtsGU~Iko*_mU zVb*iN0-li3*-`IXeBts5ZrH>Wvx0!HI#@-1)CjXYM1ImZ*%_``sSn~+yqL_Vvt_;A KXeE2=Xnp{EHyQo_ diff --git a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po index 3a671b7439..32a37eb044 100644 --- a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django Javascript 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-10-06 14:18-0300\n" "PO-Revision-Date: 2007-07-14 14:36-0300\n" diff --git a/django/conf/locale/eu/LC_MESSAGES/django.mo b/django/conf/locale/eu/LC_MESSAGES/django.mo index c001bc8268707d27d9e777de8c9a555171568b44..c19c32116ff63c42512004b76729b0748cd90a68 100644 GIT binary patch delta 16 XcmexxkLklbrVaLaj4qoU@(dgSM{EZb delta 16 XcmexxkLklbrVaLaj47KP@(dgSNGu06 diff --git a/django/conf/locale/eu/LC_MESSAGES/django.po b/django/conf/locale/eu/LC_MESSAGES/django.po index 0cef98a4d9..37a829d1ca 100644 --- a/django/conf/locale/eu/LC_MESSAGES/django.po +++ b/django/conf/locale/eu/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"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" diff --git a/django/conf/locale/eu/LC_MESSAGES/djangojs.mo b/django/conf/locale/eu/LC_MESSAGES/djangojs.mo index b3e94ad711d682780941c50b0495cb7880c09c04..646aa0f0517a0ca3f41c23821a0ccbf176431aca 100644 GIT binary patch delta 207 zcmZ3^GlOTsoq8Td28K3f1_m|;28PKj5PBAn<^%E<0%;B)y#Xq|6G#gJ`3Io#mw+@c zkpB=$zX#InK>lAK4bsQT%D@l2Wx`DJJke&&o oK^k@gX=fmP1V{tTWZ(e063ArW1=1kC@aCC}>`a^2GgmMH09YIqa{vGU delta 223 zcmbQivz%wboqB0T28K3f1_m|;28Kl}5PBt$<^%FK0BH^&y&o!m0!Rx2`RAeX4}ml< zkpBTn{{zzOKt2yEM4t$djsfyzq5LW+-3+9Gh@pp-!49lp5|9TnXcmxG1kx*jG|1vp zK-w8dUk1`Zvl+yJt^_g}WPmh?ue5n4BRdnnf>&Z$VsLU%WZpBdgJ1`mR zu`iy)IJ|;=ur1#Nx<7p4Ug$Z+m}nj(;Q$Y<9B>i2e z_x9jOJcHr*FKWIZcB73%6a6<8hW`8NR?THq8a!gJ2+s7$n?cG&6qPw)@=-a=yofGrq>Pf-(iXBd-($+!q-VHzIB zp?D2RhVjfa<^?Qt)*@wNPUBeYHOuyMkaYs4hQ<&coIy?0j!JQ2v7M*{{q%R?61<3G zaMVloESEc1<1)spFacXJ8lSl5-q{o+{X|spHDN64n;&S5XW$y1#n_i^_1|#bK^?(8 z^x{7li9vI00MV!;?1yzY7C)B49AO-_03Hhs>(L!1Jq8RVkIt~ z>jFY8bjS7EF^>L2*N>QItGX{}&0unT))k5_F*LvS?xJPat3^)wV=4f=2=YR3mK z6OUmA-bNKwNQn(N6ZQRb&dF|krn3Z9bY-ZFRiier-94`_A^%EABLfL|!o7GE_2C`# z;Zq!l39qpjj>B|ZjSBEH)CNwY=DUJA`#&)rA7U(e=NrRMjTwj|v3x%Hzf5B{1H-YR z)IQjas)_T+x2E?3V~Vg0jfbm-S7{!8-R`V*p-Lf`RMq((i z6bxk2P^yZsAC}@~+<+>s|4|BIeXcZ>mdd$R6QGvIhGIjwKNGmE+4>ZpD<}nQg&}WmKC>^zfp{_p?HIW~6?eb7N zorC&rAu52Cn1Sn1-#4HZ`r6s##*d=DKY`k~=XpAMd^&r4TJnRv zxjx1W$ulO}7*m~ZOh2r{AZ*5gxDN~QB8Fh}L}LcvAbbfYVE}&Q+=jiVH(>%cV-%jo zNW6{_*g4U7pAGaWupNRhoDYeZh*_wKrsF{@LrvIgk}(S~4Fhni^AilEz6;fFA7iKCJjP-!qLt&Y*U9(Rm9Mi4N2WdtBY8*qGbYJ-8dYa6N7>G3GFaO|}#N zh`OR{sE9nmI1HG=wP7-91KvW{P=>iQY{CiHhJDa?s-3`tS=5uU0%u_|9>W*#CK3$e zKh2mNoa$^q(#D*_G1&W6ThB+<@tS%HX?!@3ny3pE;)LmTqH@fpz6;;ND>xEI&#-s7 z%vp<-v~R>1?7(pJnQ8lZa69z`RPwc;hxN@_3gcd(B=yIx9{#$`>V9~Q_Eglkr|5@)b8JL|aRl{3^lB&TC}@ZE7>hemCvL@bJb@{A z50zBGbM1yRP~*os3tan5XE`eAs!$QDLmgm;``$d4_$ws)X^6p7uHy~V!21}BzVnQE z9{b}c%*BCNi`wAlr~{ls&37Gj_kUnCK1L6E%8cQ+#|*|ytS%$|zf#yu!%(bw!+zL} z%85(JSQAoiObJ$@@iFEoUZr^KO?$G2`F6pbxPMHWE8YiO;aKcML zA-v-{bUM48Pf@uM$j@CW_C>wl98^RqP$#d$ENnuB`X}dg)K%U?y|PYJM50KrB=lxb zP^hM1f2_a_xB-=1|Dh)IETrzkn@9BA+vUMTpVN&1bpAPFV1b@LsyoD2R85gUh z`UbPrj$_gDj@`%fpcH8jL!L2g7hM zYT|6n#v;@SH@fc)sDtcs?JchTIO<>*P~)#*1U|ql^gf}Woo9Stca(#gxBz2u8tQ~q zs14O)G=7P(c+}M|p~gKxKl}@I!ft$)#B1zTgrW`i_iE{>OgL6<> zUx_+NjdK%f!X2muzd~)`5Nh5ds9ZYfzWeH zd?9Mw3QWPZsPTJH3w`ZuaqY)Z<4@su-RT7i{jnVrum{y1yWZ}2C@P7@VGI_cCa7qw SifK>xOUlZ~Y%R!3e(`^jq@j-h diff --git a/django/conf/locale/fa/LC_MESSAGES/django.po b/django/conf/locale/fa/LC_MESSAGES/django.po index 915d9bea4a..16b0d7c981 100644 --- a/django/conf/locale/fa/LC_MESSAGES/django.po +++ b/django/conf/locale/fa/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-01 03:29+0330\n" "PO-Revision-Date: 2008-02-01 05:19+0330\n" diff --git a/django/conf/locale/fa/LC_MESSAGES/djangojs.mo b/django/conf/locale/fa/LC_MESSAGES/djangojs.mo index 8d3f8e505fc2d3fe893ca65cbf5d6c195ec9ec0d..f2e89405d7c30031aff55c6507aa02c3b9715624 100644 GIT binary patch delta 22 dcmaFQ^o(hO3Zu?MRShxLzR(HmIW9W2-k%Ytdi zYV-esaNu`7;5^^p6I>qY)JQW|awH`!sgEZdVuoGJv5hwj@&3P;*ki76girMFjWIT8 v|1MctS4foB=wsw*q5;j8#Tbt`#~f{NjU9X;rKUKW+W3ojv)>(x$h|s02d)`1 delta 207 zcmeys{gZpbnR-V?1_m2u1_mYu28KEo1_mA=-3X-lfOH>_<^|1@(gHyG4v=OA(rbFOZQB z6p#nfwLsblNY4e*Ad4RWX$~O$3P=MH!{^PFjMo|Y100>b9o=0O!d!!bJ^lSQhcVA$ F0suea8`l5; diff --git a/django/conf/locale/fi/LC_MESSAGES/djangojs.po b/django/conf/locale/fi/LC_MESSAGES/djangojs.po index 35aa82e893..b430f3b110 100644 --- a/django/conf/locale/fi/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/fi/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2006-08-05 15:27+0300\n" diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo index 55e4e57f5a77906be6f69405a2bfe0df71ab197c..efefb0bb6f9df57386692201d79337a5544f330e 100644 GIT binary patch literal 67089 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]*?J{jj!Z3$c)!ju9+XiE48OeWz1t+k#2#Tfj$ZfN1FPYby{ndD6ZG zIxG?HPM=Uh^h%)(<;t7g3wG$TvRMrFpS6uaeDq6<&jz=Or)gwe;^G|*k6byHe$Axn z;^(vdlLXN^Ko`y4277u(!bf88#2@c$V0g*Ru6gU~7xF3GjtVW>uiVG>J4GQR72W&X z;CI{a-_W0KZ!-Iw-@w@4)20WBqfd)KN1mM9=M3}CcKfMji!CGVSK14KLJthH!0H7@ zajTEIx=J;N?woJrWelB-ok@ojXyrM;4~}A^gwC&O@AQA~l%rpiqhFSzUzMX@m!sd5 zqu-XJcVj>%X+XUF0g&1*9iXFv=CL`U#6bQy;iV>oRV-m)2X|VG95SCS-zfn_>zx!d zcPEO(#biq=fhku`wOc1-UPg^m-cDf)+q3=L?4t1XVP~sZ|4li3nx6F_J*;M?LdQw} zrH=>(y@cEd3{z8r+!vO-oCD;!%e&j5x+zZL*#n=Bw~W zavQt02UW$i@#1D3=+R2IVx^(!ks`(;w2OKBOVdt;nanbGgnekjtKXLiMo|kza)fKI LIaJ$;&!zi6cc82E delta 16490 zcmZwN2Yi%8;{Wky6Ka5np@o{IhZ0((2nd9ZR3U(LmSjnmB)hPirHHsFN>LDDL=X!o zA_N4~Ac~Zei*PE3XF(AZRK$M5sbE1)f1huj;g0kFe_l6vPkUzOnP+C6J$2RcGA}KP zkDW;>v&P|y#5qnq++EFa2E;qgkmkyDoZK56=RuF-1h59_-#a=^CRXp{IKwf3b#X6N z!1s_QoHLk?KcL!e*4ecWs_Ch&F=r`}7Gyk&PAr2jpl)~>lkgB$ z$K#lQUt=Y_h?+sCn`;HseN|B%*FrsLeQba&G1i30AR=lYhtVjn&2u zn2JM?H4<~8M6}wMp$2dOH52cnMtTt&V`Uy&i>e)J_4h@UkHdC23tQros8@3go8V`t z_A3l<&xP*Tl=O6Lrv1O1h$Xx^4)4YCxC%$(!>C1l0h8(9xlCj>R=e5WfbpbPp*mP&^B>2uq&K4)+>RBo7*+28 zs>37JW2k{1x9O7@NBR@g?)eO3YVd-sa0!*Zg6bfS$5w+0*6UFnCZoz5p*n7fyk;jI z)!|%Jy#=WDmS6&|K;5^_mTw%){0|^w8yQ-JKi~q48{$@6h?>%+sCWMus@`*`MRf?Z z&yS-9@;R!5^Qex0LJjDO&G!s->s3VMCk3WJZc7BL_N_#R7bC& zI(i$`(MeRjk8SxEHva;u-X&~^|3=kI8Rj0v&0<7UAssbE-7tdvZH1SyIqAQl>RmuR z@z1FG6^6TuwHoStxEVE|g{U>O7`2=3wdt*>0X&0xkXSJhb+8}P@EmFzCXH|#Xob3= zEvmy#Hl2ZLU?6HLZ$Zt_7_5R*Z90e=_*~TDTZnpfi?F8l|3gGtk+B04@uXYee1&T8 z4^#&gZ*et?#IEP`Ir%kd%Hfs3&(r_Nn?6r13%G46~ejK|V)4`FEI%S5PxngVFo2 z0bY*_$1(raiL53=6}F%nc-E$0LcQZdHvb4}RljM=-?8N%qT2ZcYvU!<6kj*q9e7>T z%r-&|yd5UtP2-t=J=q8{^kieP8v0OE9>oE;8@u2Y)SBox!L8p7HQ;`z@BL6z2LV(E zvr+Yzq3W$fJ?L8N#uyPzRS^!umrysBpXd&x4r+jHPy_5}?TLCdgRnd9z+Lzas-yLj z-0k`#)>AoZ=H5WH_a>@d>^&lys?(^Eer+pUKu!HmsG0Z;>tNT(`~t?&I0c_at(_zi zgE0f!;R@?PtV#L;s$RLN?n&4YNynVAMA}oZ7}dZ_sFSP=E2R~7MLofE?23z!Gs-!L zjWKbWTiyXxe>gV9`M4OLu<2B$OKW2ovJsqIY^(i$kjM>WoX6*}akl%U@1sWkJ?e)> z1wVTqz1Rsyp*p%3o8hzA8BbtCyl%St3fdzZ!0C>Ia1FAtoR6_B{X3m=+BxaCb}F#i?F zXhDV=N=LS?(+!*B8e8!IY6=gb23RN0-9{;>`%_Wxz5{9?ld&!OQT5lLw&i-%18>0` zd^V5y*E>tjXMy1e)W}~%HM|dX!(r5nylKs2S*ndh*^_ z2?tn5+43pY*mNQqVFBuiX4&*2>k>>P|31`AtVg}7O*XyVrgvjy^7msEd>z&C3DlbS z40Zp{sQ#RprS)P?86vtd33WpXs>4>ODesEcVJ}-g0@c7o)Ig?U0_LKgID&c=bFFvT z^5v)*T#KrA5G!l{mk`m2-$HeG1~rA}P$T{p)xkyUAE*uzX1V#*Q3Fgt4Xmv--P#%T zVBJs;IsnyPCRWt`pJFQnltDU*YA9x1gnH5?r~$1+&Coj3K)0a289Px^eF)Xjd#EQp zi*fj+O@Cv(fH8G+k%(^i1vP-OVb|+WBd?9B*VNhq)o>bWKpjv|)D2a?KWautqE61K zSo%t=cUhN*?f!qrW^A->v+lMYL_NW4s1A>!IyjE%@GPo>^H>9aK^-)S5%-n0M-8wu z>Op#=X0(5V`PY*VBSQ^MKy{FVS_?B#PdeMC=c5|96E&cFQ1>szs<;MK|7p|!x1;Lq z#iqC))$UpAS1}@L@I30qA5c&7Git=1Lbu_{sDaf-HPFo38da}@^(NGS24ZgyUpm~2 z>!R+*Y~&pN83N@29D}h}iFk?Bo$Gec9jlSy9A zQ8V!os)H|4Gxcw4{CszYE28QrVjJ!M6q_*&)$kP5lTAmR(JQSxPz@fnzKu_iK7rTc zyxU#x!x5w(L)AZTy@)y|E~92RVF82C{%=4;Pnd>!$2Xz|(%U)+)zApk42(f-tI1d& zXQS?a5H$lEQTK00)qmdlGOGQ*q88^-jOpE;BvKoH#kyGS4!7a9sDoxGuEvR|fn30* zcnQ@|U7n&Iwm>~$f9!~3Q1>rKb^HiwfKQ>?*%f2{HS!n8&`1wq9ef=%Mdz%)pl+8L56h??Oj zGQ%-vC6RVy?7)_I234`*eeS>-VGq(H@djLl>gWjGg#SbhpyhJ+mCZms*;4F_`!Nqa zE8PFbRDfkkzl{~N|4$Inlzf8fxc>d_lXk*#q=#YxX5tK-f|~L-P&4xp7U7Rr5g%LW z9_d@K0_pA6-KdTaV0kRT((nIKTj4!haK@&;z%o?4fEvg}TmG9h{sFhV5~{(fs1A}* z9XGJ~%~9>NMGf!<)C2Xvm@)mE?4sP_7y+8=@Ha5QQFlimE7<0qnyW}rqIw&}Ung{TgfVj4b< z9r5qhxOMIk-UU06e=Dk^m8kaCSszEu%u}dWb_8o{|G!H_Px76$>ceh29h;Ls22=44 z)QwxPI_^eI>FcPD-osk>A=bnnF#{9UyZ^vp2#zKFB#yw#SVaHM;78mBFQGm<36Ih^ zrsBPL8W&^kW9|ug0rjMH*lPpu7VL@-<2`sBOK|)K_iNW+qdOyOP`lu9tcqJP)}P2; zB3{(b89hlu)IM#Fb?`Ntf$BI1)xce-sa|3=m_&L5>i*|ZPqY^`gKuDG{0fJoca!^1MrNW0 z_#$d14s2rnmGL(+ym$=t2RMM`umtsFZ`l0f z*qihz)Xdc1;(iUgVLs{D79w4URNw0U6Of^JBkA3!MRguE6D^9|ZI^+qNY6o)Z$h1L zXHcsL4AgergnG4a;}ATL0qnNj{{G)gq%Ik+VRt--t+C-Vyk8uKT5RW0+bVH~ zJJ6=6U9cScV+p>42|L|ac^Xy!cdU&ycDVy?iy5S6U<>X4XG$ad3rEyUIM2G<>_$u= znT_)?gnjT^oQ!RsbANc;kF7|*i5mE2Y=q69cYhn+j6Fz)ur2Pip224H?<5xUFA=aK zs^Nv0iyvcU9LQmycRv~{;5h3v)Vt5aayZMT=b{$b9oEHIiS+$g5!a*cdkSN!xQ&P! zcpj_cUQ~x~qAI?FW$*)RiKlIOg%{igE2G+}i8HAlU|cBlb% zL(M=RRK1}uG5>1t7F#ghnvJRC2W`c*Sd;W4sNL~A>Ye`+wLO#f(ijfFTwH^L@pse{ z-~6)sc^-p3NiW4F_*#re3nJg4p0w6JcLwUAroJ(%;})oy>Sgmsq8h#x<1ibwO>ajj^K6pCTgnBU=m(H4Ipm6`^%>`YM`lD4bxEfW!Umt zP%}CeRWE>bFo=49Wj6m2q+ZO~NJIlDvIWnfD(=B5_!_E%_pv#Cfm$Pp2i$r!Py=a> z%I}71uQzH2Zbm)n2-I4bWX;7Y+W!$EdeS>lQ}>{Co%K;nB!44nAiGc<{>7HRi#14} z!0Py&&5t|iwpR`{paj$alThu|#?s&asYEnI9k4DARRIQ21B#%YU=C_Z@3tgwZa~OBT+Lo!8#SS7W}CD^H4JtdL`z*iv?sPld&At;bv5W&!R^D3Tp8kLp5~C`Wvbv z&mnh8%b|8l5^6iPzh%$k#$;T;9Nc3I z%kx5a+e$YO?@0U|%094per!x=WYcYN67_Uxrel68FD4u&jG|yTnT?3ACj3nN80z9< zRr=on)*zi~8(2=z9GKETKvB1`v zNV?rMcRXO@oT$!UugNc~`w6!aifsN}*0-(iVLD+yb?zsOrR@czpZ4(nZzrP)8J!5l zWIjdEb;`v_qg+=MJ=F0MZ$O-=)0aPeaUALI@#-}~gm`wfvTSl_<%H(ei^0bdLsi#F%AKMdjoyUuW4~hQ^m*DG! zF5FX_v=(h^jQvPt72$6rycBLBev0_BI29|9cLUBOU6F7PL0414VL~m+b=^lWgbXFP z<`5bZwEEjo=O)y3hPHJ5i}1eQ{|q8csqg|OQ+NW$6K*FAA^kZ{r@S8V6npcVR&BNN zHXbFet0L*!@OA7|n#0rDL3SeVAB1v*X9?%@{s&X3GYJnNiHh3iHxe$8K25lKWnGO} zn^5-v<=+ynBmP&MMp+Nsh$n5mdXzOF%q2b9=G7-XjIc)UzXxF;iOJmfrmZlH_-q@m zM*OJa)JY=VjqnwrCFxr*3xA{dJ>tg+SFgI{FCqOFp&6M|2}=pN5qEa^D8`4(@cT#T#VLPFSkU`nE7{BtHi6|V9MUd zYp;KjXimPa%Y;`5U9@j!+KRo*ErYAYHj(N|s7^^8TuA6gc$)Op>od~t+C;!wmpom~ za4c>nd`-M7dQqRVUWA`*y_bpWXU`o3T@ja<^8poZC6Q<=He<{;6F*H}fz4Zq9Z0`m z(~F7!Kv+rmoV-U+*FhKONt|Y%U0Inn-p|^CdrAl?EC}b{R5(WXOf|W-x%}tv4l1rC zEG3L5T)p<$cp;7;a}14dA)bQ+NLM8sB>fj#ZvyGph)=?rxJ>!o3 z-a1v_`o?;vn=JjijK4pUe>3$45`UQR5$WoLk+wZm+(!D(R|@6XWR9gQHl9QtiIcWs z1>*Aw-N^4xxJ3T1N)x6K&Jku277=t+ru-Gc7<<3+3b-$e^jpM@&3^!=tB^~-Jf@Mp zMbDpSD+I~B&BmWlEqkTYn69e03-fGRc};EoPl+cJLX=GUHYPMiB-bnuU_NKC2+v!Phs#)IVFLkJOSQLiWNB$B9ycF>BO&I@kGiK_7P&gQ?S*R?8JviwuDai zX6jp5bDW}NPbbVLRHkZoPw}u@R>qmenUgC=0=M~FWP7L0EA&Uq9hnVHucC_P!ORr1 zA+v$mnwgfE?JWr8=LaJGtWYpJV&2UhTCHhnRwx=Q^oLtSykUPNnqL?(DWhwfjL|2O z16jENCnGOV=yNji^A)_=KDC`c<~H-=n0FJRIc=PbXihXzXucfVs(r+tpEkr7%yxSF z6dhIQ%Pu57+ZPV_oZkLmjxRre;ru{Q1pOv{+^DoLcld+TqTw8;ci4AZAV1)vIP5R* zLo`1}cL$w5zCvHVFKCvHpKg8|AB_u4GrJ}XFm)$3G0#ohZDvh+#-vXE!E~NdV9rfx z9AB7~Yf`2*G~=e`n`2WysFdx^%JqePSv;u8m{!A_@m2X#Ub1OE?KTsgmg+&a?-}2{~T?MPnkYH^S_qRH+K$d1@fIsM;?SpWEQi17F zXF$F$9F6F|a2pWzMW;pmnqA_4e;$8BQT`jA0nuQA&l%_|D4q0y{%K+V9A}_E5~1S2 zKsXf14X8X2DGY_@IRis^dA>k)h)906H#;;Z=xx-;RGit%Oqt1hpLxXWn{~bE8?IM_ z`|^Bqe9j#(n=Z}3iGVa;AnxbAXFG~2G7&qA-=-dsyrkR^m`eJ zFV8#?t!<7MKAJFx`55J!8w$=d4@6s)%_?0oA4XG*XLdn+m^Zv~b`$gS?2hrinKMoM zIb$l$^JZif213Dzd2UX%xUkPmnA^Hq$Qc&$P7nC=vm;sr!5n|~>Um>YhYNGPBXj9A zZLB|1I5Ss6re=7KKS#qE7Mk5gfBXg0{Ndt0w^jC3R?EJ8XL!Vy=QA7T*D$ZoUuY)Z z-q&oq{Wg=fU|~{LC>-`@6_zdre>fZpN6h03cA411M04Se=EfImWqQT3vA6j=)(1Nl zPh9Bnc%0%%ceeMGVPoc+gLh3y4EtvX{Byinp#t_mp?P9a9rO1^Yr1N%Y=P{w5$uG* zK#<9GMuvFt8t=$xBqB%od|_20lH=nKo43Gc%G`6G*?3QDvvF|+6Ii_6^j$K_+;Xm_ zIkF_zWGt=TsL=2AWfug3yz($jhiE51G~1U~ieDX=hn7BThA-POekT1za-C6yZM*|~ z`S~oFQH9|^Fvpu3o#`zMd7Gvd_~w$GQ<&Q#(!v=Pr9w2A?VIO}n&Z#bt(k*{_M6gw z_{gCdnNFsU6UoW+=W~h_H@R<3T=9t&-^ZJ-s~VUUtJ;|wtA8t=X}*a!S!+{_S=%Tn z>UT1u{)n2(jE3`QuDIE{NuF|Jn36!m?0h&qIhyT^(e#Ca-bjEc8q4dNr%4#PzM~nw zzIJ@X+mt1iZ0=mYzj*wkS#b&DqdCs_Xqe;9^x3d4-Zw8|u57qmHa8UI4PM%Kx?Djh zSeP3zZ$B}_c%S@d>2kY%)2>nvZ)#{RZ5o))DUcU&=J|c$(m#quS_ea|3w-mY`JEBr z&RTt9DLn$N#!`+jr{PF1=N|4(7S1lB;$~YuB+fvt!rx z9h7#p^d8jx$@g`m5LjKg6-dVUtkQyo@i*xt>zgkR!i52bud3 zDBm*TG;Py!hUj-i>JX6%5_`RYE9`7|DhRjg3 z(9s`%#G6lWKM*~(?=3F-OtL2-RI;zo$tjw|KHDn znX)sZb?Mh&8Z)o20bTPsP_1yuwgSKX9Qgn9G5BEDBWB^VYxFV5d@jp;`dlZo_W2T% zTYR{<%kFv}6L}$KI_+uKfRjsmf)(QQq3JM(!G9v&u4d1knCbQ64^{X`lzt;LzKHqs zC2zgy>>qDIC=leq{9fkje=F=aS$n%M&E9>p&j{vdHMa4N4to9W zH-jU_{b)qIZ0WGyohyHIZs~_2;5R$>C!6^Ps+rCE3rwqhRZPzVx#sYJcIM#z3dK_n z{^&6?4kZ>3KlG%>)G4{gbl5-AY$)krek^&*y!EQzbUpmENj!4Me0Zec)vp7y#@C@_ z>ukS1+l;q6Z+StUi;p&)C+-0_b) z;@GDR-fC%9yfw0PQ=WTkS^{g4&;7L@gSPM7U_$TIHW%NCmBKk_IkC&6eXz8;j`~0j-zTkk&U(L&iVYupW71EJ zGhdu)XZD?%UOu~|D2p$tS@~g)1RJNiS@mIGv--o{#Wg=_uCxE9(~CUi^7*uIeqB0~ zZ5Dm(HRnH0HdQ{^oSs`!6y&`1|M$q}#OM3T4=5e@ehzs0{@=5H?5A5z)w8|K_Oq4E zPiJ?Vlb=oHtbaP4-x|RXzg;4Mf|>b&>4B0W7Dz-hHo9-_<~uv+#c22VUZ2!8t59)As>oz%9j-7 zhoU*5XtDRJO7X=5zkRTbX?>wXag~4d^%U>^enS~E@u#Nd!Jir>4&@XjWCwJ}XBF4` zd7r0>d%`S|kG%Md$CKn)yEo1gda+f! zr;As_Tu9laeTob%i0ogLeW5LZ!i>W?Vah57N(VK IW9K{n2aY36Z2$lO diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index ba335f5eae..55387f4bd3 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -1,145 +1,18 @@ # translation of django.po to french # This file is distributed under the same license as the PACKAGE package. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. -# Laurent Rahuel , 2005. +# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-07-08 16:03+0200\n" -"PO-Revision-Date: 2006-05-08 15:12+0200\n" +"POT-Creation-Date: 2008-03-16 15:42+0100\n" +"PO-Revision-Date: 2008-03-17 00:00+0100\n" "Last-Translator: Baptiste \n" "Language-Team: français \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: oldforms/__init__.py:369 db/models/fields/__init__.py:125 -#: db/models/fields/__init__.py:282 db/models/fields/__init__.py:679 -#: db/models/fields/__init__.py:690 newforms/models.py:188 -#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:523 -#: newforms/fields.py:534 -msgid "This field is required." -msgstr "Ce champ est obligatoire." - -#: oldforms/__init__.py:404 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Assurez-vous que votre texte fait moins de %s caractère." -msgstr[1] "Assurez-vous que votre texte fait moins de %s caractères." - -#: oldforms/__init__.py:409 -msgid "Line breaks are not allowed here." -msgstr "Les retours à la ligne ne sont pas autorisés ici." - -#: oldforms/__init__.py:507 oldforms/__init__.py:581 oldforms/__init__.py:620 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Sélectionnez un choix valide ; '%(data)s' n'est pas dans %(choices)s." - -#: oldforms/__init__.py:587 newforms/widgets.py:181 -#: contrib/admin/filterspecs.py:152 -msgid "Unknown" -msgstr "Inconnu" - -#: oldforms/__init__.py:587 newforms/widgets.py:181 -#: contrib/admin/filterspecs.py:145 -msgid "Yes" -msgstr "Oui" - -#: oldforms/__init__.py:587 newforms/widgets.py:181 -#: contrib/admin/filterspecs.py:145 -msgid "No" -msgstr "Non" - -#: oldforms/__init__.py:682 core/validators.py:178 core/validators.py:456 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "" - -#: oldforms/__init__.py:684 -msgid "The submitted file is empty." -msgstr "Le fichier soumis est vide." - -#: oldforms/__init__.py:740 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Entrez un nombre entier entre -32 768 et 32 767." - -#: oldforms/__init__.py:750 -msgid "Enter a positive number." -msgstr "Entrez un nombre entier positif." - -#: oldforms/__init__.py:760 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Entrez un nombre entier entre 0 et 32 767." - -#: db/models/manipulators.py:304 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" - -#: db/models/manipulators.py:305 -msgid "and" -msgstr "et" - -#: db/models/fields/__init__.py:46 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s avec le champ %(fieldname)s existe déjà." - -#: db/models/fields/__init__.py:377 -msgid "This value must be an integer." -msgstr "Cette valeur doit être un entier." - -#: db/models/fields/__init__.py:412 -msgid "This value must be either True or False." -msgstr "Cette valeur doit être soit Vraie soit Fausse." - -#: db/models/fields/__init__.py:433 -msgid "This field cannot be null." -msgstr "Ce champ ne peut pas être vide." - -#: db/models/fields/__init__.py:467 core/validators.py:152 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Entrez une date valide au format AAAA-MM-JJ." - -#: db/models/fields/__init__.py:536 core/validators.py:161 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM." - -#: db/models/fields/__init__.py:596 -msgid "This value must be a decimal number." -msgstr "Cette valeur doit être un nombre décimal." - -#: db/models/fields/__init__.py:699 -msgid "Enter a valid filename." -msgstr "Entrez un nom de fichier valide." - -#: db/models/fields/__init__.py:824 -msgid "This value must be either None, True or False." -msgstr "Cette valeur doit être Nulle, Vraie ou Fausse." - -#: db/models/fields/related.py:55 -#, python-format -msgid "Please enter a valid %s." -msgstr "Entrez un %s valide." - -#: db/models/fields/related.py:623 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Maintenez \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un Mac, " -"pour en sélectionner plusieurs." - -#: db/models/fields/related.py:667 -#, 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] "Entrez un ID %(self)s valide. La valeur %(value)r est invalide." -msgstr[1] "" -"Entrez des ID %(self)s valides. Les valeurs %(value)r sont invalides." +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit" #: conf/global_settings.py:39 msgid "Arabic" @@ -190,985 +63,146 @@ msgid "Argentinean Spanish" msgstr "Espagnol Argentin" #: conf/global_settings.py:51 +msgid "Basque" +msgstr "Basque" + +#: conf/global_settings.py:52 msgid "Persian" msgstr "Perse" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Finnish" msgstr "Finlandais" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "French" msgstr "Français" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "Irish" +msgstr "Irlandais" + +#: conf/global_settings.py:56 msgid "Galician" msgstr "Galicien" -#: conf/global_settings.py:55 +#: conf/global_settings.py:57 msgid "Hungarian" msgstr "Hongrois" -#: conf/global_settings.py:56 +#: conf/global_settings.py:58 msgid "Hebrew" msgstr "Hébreu" -#: conf/global_settings.py:57 +#: conf/global_settings.py:59 +msgid "Croatian" +msgstr "Croate" + +#: conf/global_settings.py:60 msgid "Icelandic" msgstr "Islandais" -#: conf/global_settings.py:58 +#: conf/global_settings.py:61 msgid "Italian" msgstr "Italien" -#: conf/global_settings.py:59 +#: conf/global_settings.py:62 msgid "Japanese" msgstr "Japonais" -#: conf/global_settings.py:60 +#: conf/global_settings.py:63 +msgid "Georgian" +msgstr "Géorgien" + +#: conf/global_settings.py:64 msgid "Korean" msgstr "Coréen" -#: conf/global_settings.py:61 +#: conf/global_settings.py:65 +msgid "Khmer" +msgstr "Khmer" + +#: conf/global_settings.py:66 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:62 +#: conf/global_settings.py:67 msgid "Latvian" msgstr "Letton" -#: conf/global_settings.py:63 +#: conf/global_settings.py:68 msgid "Macedonian" msgstr "Macédonien" -#: conf/global_settings.py:64 +#: conf/global_settings.py:69 msgid "Dutch" msgstr "Hollandais" -#: conf/global_settings.py:65 +#: conf/global_settings.py:70 msgid "Norwegian" msgstr "Norvégien" -#: conf/global_settings.py:66 +#: conf/global_settings.py:71 msgid "Polish" msgstr "Polonais" -#: conf/global_settings.py:67 +#: conf/global_settings.py:72 msgid "Portugese" msgstr "Portugais" -#: conf/global_settings.py:68 +#: conf/global_settings.py:73 msgid "Brazilian" msgstr "Brésilien" -#: conf/global_settings.py:69 +#: conf/global_settings.py:74 msgid "Romanian" msgstr "Roumain" -#: conf/global_settings.py:70 +#: conf/global_settings.py:75 msgid "Russian" msgstr "Russe" -#: conf/global_settings.py:71 +#: conf/global_settings.py:76 msgid "Slovak" msgstr "Slovaque" -#: conf/global_settings.py:72 +#: conf/global_settings.py:77 msgid "Slovenian" msgstr "Slovaque" -#: conf/global_settings.py:73 +#: conf/global_settings.py:78 msgid "Serbian" msgstr "Serbe" -#: conf/global_settings.py:74 +#: conf/global_settings.py:79 msgid "Swedish" msgstr "Suédois" -#: conf/global_settings.py:75 +#: conf/global_settings.py:80 msgid "Tamil" msgstr "Tamoul" -#: conf/global_settings.py:76 +#: conf/global_settings.py:81 msgid "Telugu" msgstr "Télougou" -#: conf/global_settings.py:77 +#: conf/global_settings.py:82 msgid "Turkish" msgstr "Turc" -#: conf/global_settings.py:78 +#: conf/global_settings.py:83 msgid "Ukrainian" msgstr "Ukrainien" -#: conf/global_settings.py:79 +#: conf/global_settings.py:84 msgid "Simplified Chinese" msgstr "Chinois simplifié" -#: conf/global_settings.py:80 +#: conf/global_settings.py:85 msgid "Traditional Chinese" msgstr "Chinois traditionnel" -#: core/validators.py:68 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Ce champ ne doit contenir que des lettres, des nombres et des" -"tirets bas _." - -#: core/validators.py:72 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _," -"des traits d'union, et des '/'." - -#: core/validators.py:76 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "" -"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _" -"et des traits d'union." - -#: core/validators.py:80 -msgid "Uppercase letters are not allowed here." -msgstr "Les lettres majuscules ne sont pas autorisées ici." - -#: core/validators.py:84 -msgid "Lowercase letters are not allowed here." -msgstr "Les lettres minuscules ne sont pas autorisées ici." - -#: core/validators.py:91 -msgid "Enter only digits separated by commas." -msgstr "Saisissez uniquement des chiffres séparés par des virgules." - -#: core/validators.py:103 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Entrez des adresses de courriel valides séparées par des virgules." - -#: core/validators.py:107 -msgid "Please enter a valid IP address." -msgstr "Entrez une adresse IP valide." - -#: core/validators.py:111 -msgid "Empty values are not allowed here." -msgstr "Vous ne pouvez pas laisser ce champ vide." - -#: core/validators.py:115 -msgid "Non-numeric characters aren't allowed here." -msgstr "Les caractères non numériques ne sont pas autorisés ici." - -#: core/validators.py:119 -msgid "This value can't be comprised solely of digits." -msgstr "Cette valeur ne peut pas être composé uniquement de chiffres." - -#: core/validators.py:124 newforms/fields.py:135 -msgid "Enter a whole number." -msgstr "Entrez un nombre entier." - -#: core/validators.py:128 -msgid "Only alphabetical characters are allowed here." -msgstr "Seules les lettres de l'alphabet sont autorisées ici." - -#: core/validators.py:143 -msgid "Year must be 1900 or later." -msgstr "L'année doit être supérieure à 1900." - -#: core/validators.py:147 -#, python-format -msgid "Invalid date: %s" -msgstr "Date invalide : %s" - -#: core/validators.py:157 -msgid "Enter a valid time in HH:MM format." -msgstr "Entrez une heure valide au format HH:MM." - -#: core/validators.py:166 newforms/fields.py:339 -msgid "Enter a valid e-mail address." -msgstr "Entrez une adresse de courriel valide." - -#: core/validators.py:182 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une " -"image ou bien est corrompu." - -#: core/validators.py:189 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "L'URL %s ne pointe pas vers une image valide." - -#: core/validators.py:193 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Les numéros de téléphone doivent être au format XXX-XXX-XXXX. \"%s\" est " -"incorrect." - -#: core/validators.py:201 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide." - -#: core/validators.py:205 -msgid "A valid URL is required." -msgstr "Une URL valide est requise." - -#: core/validators.py:219 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Du HTML valide est requis. Les erreurs sont les suivantes :\n" -"%s" - -#: core/validators.py:226 -#, python-format -msgid "Badly formed XML: %s" -msgstr "XML mal formé : %s" - -#: core/validators.py:243 -#, python-format -msgid "Invalid URL: %s" -msgstr "URL invalide : %s" - -#: core/validators.py:248 core/validators.py:250 -#, python-format -msgid "The URL %s is a broken link." -msgstr "L'URL %s est un lien cassé." - -#: core/validators.py:256 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Entrez une abréviation d'État Américain valide." - -#: core/validators.py:270 -#, 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] "Attention à votre langage ! Le mot %s n'est pas autorisé ici." -msgstr[1] "Attention à votre langage ! Les mots %s ne sont pas autorisés ici." - -#: core/validators.py:277 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Ce champ doit correspondre au champ '%s'." - -#: core/validators.py:296 -msgid "Please enter something for at least one field." -msgstr "Veuillez saisir quelque chose dans au moins un des champs." - -#: core/validators.py:305 core/validators.py:316 -msgid "Please enter both fields or leave them both empty." -msgstr "Veuillez renseigner les deux champs ou les laisser tous les deux vides." - -#: core/validators.py:324 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s" - -#: core/validators.py:337 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s" - -#: core/validators.py:356 -msgid "Duplicate values are not allowed." -msgstr "Les valeurs identiques ne sont pas autorisées." - -#: core/validators.py:371 -#, python-format -msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Cette valeur doit être comprise entre %(lower)s et %(upper)s." - -#: core/validators.py:373 -#, python-format -msgid "This value must be at least %s." -msgstr "Cette valeur doit être au moins %s." - -#: core/validators.py:375 -#, python-format -msgid "This value must be no more than %s." -msgstr "Cette valeur ne doit pas dépasser %s." - -#: core/validators.py:411 -#, python-format -msgid "This value must be a power of %s." -msgstr "Cette valeur doit être une puissance de %s." - -#: core/validators.py:420 -msgid "Please enter a valid decimal number." -msgstr "Veuillez saisir un nombre décimal valide." - -#: core/validators.py:426 -#, 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] "" -"Veuillez saisir un nombre décimal valide avec au plus %s chiffre." -msgstr[1] "" -"Veuillez saisir un nombre décimal valide avec au plus %s chiffres." - -#: core/validators.py:429 -#, 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] "Veuillez saisir un nombre décimal valide avec une partie entière de %s chiffre au plus." -msgstr[1] "Veuillez saisir un nombre décimal valide avec une partie entière de %s chiffres au plus." - -#: core/validators.py:432 -#, 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] "Veuillez saisir un nombre décimal valide avec au plus %s décimale." -msgstr[1] "Veuillez saisir un nombre décimal valide avec au plus %s décimales." - -#: core/validators.py:440 -msgid "Please enter a valid floating point number." -msgstr "Veuillez entrer un nombre à virgule flottante valide." - -#: core/validators.py:449 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" -"Vérifiez que le fichier transféré fait au moins %s octets." - -#: core/validators.py:450 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" -"Vérifiez que le fichier transféré fait au plus %s octets." - -#: core/validators.py:467 -msgid "The format for this field is wrong." -msgstr "Le format de ce champ est mauvais." - -#: core/validators.py:482 -msgid "This field is invalid." -msgstr "Ce champ est invalide." - -#: core/validators.py:518 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Impossible de récupérer quoi que ce soit depuis %s." - -#: core/validators.py:521 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est " -"pas valide." - -#: core/validators.py:554 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Veuillez fermer le tag %(tag)s à la ligne %(line)s. (Ligne débutant par " -"\"%(start)s\".)" - -#: core/validators.py:558 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. " -"(Ligne débutant par \"%(start)s\".)" - -#: core/validators.py:563 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant " -"par \"%(start)s\".)" - -#: core/validators.py:568 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%" -"(start)s\".)" - -#: core/validators.py:572 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. " -"(Ligne débutant par \"%(start)s\".)" - -#: core/validators.py:577 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. " -"(Ligne débutant par \"%(start)s\".)" - -#: views/generic/create_update.py:43 -#, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "L'objet %(verbose_name)s a été créé avec succès." - -#: views/generic/create_update.py:117 -#, python-format -msgid "The %(verbose_name)s was updated successfully." -msgstr "L'objet %(verbose_name)s a été mis à jour avec succès." - -#: views/generic/create_update.py:184 -#, python-format -msgid "The %(verbose_name)s was deleted." -msgstr "L'objet %(verbose_name)s a été supprimé." - -#: newforms/models.py:175 newforms/fields.py:432 -msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "" -"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux " -"disponibles." - -#: newforms/models.py:192 newforms/fields.py:448 newforms/fields.py:527 -msgid "Enter a list of values." -msgstr "Entrez une liste de valeurs." - -#: newforms/models.py:198 newforms/fields.py:457 -#, python-format -msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Sélectionnez un choix valide; %s n'en fait pas partie." - -#: newforms/fields.py:110 newforms/fields.py:324 -#, python-format -msgid "Ensure this value has at most %d characters." -msgstr "Assurez-vous que cette valeur fait moins de %d caractères." - -#: newforms/fields.py:112 newforms/fields.py:326 -#, python-format -msgid "Ensure this value has at least %d characters." -msgstr "Assurez-vous que cette valeur fait plus de %d caractères." - -#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Assurez-vous que cette valeur soit inférieure ou égale à %s." - -#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Assurez-vous que cette valeur soit supérieure ou égale à %s." - -#: newforms/fields.py:158 newforms/fields.py:186 -msgid "Enter a number." -msgstr "Entrez un nombre." - -#: newforms/fields.py:196 -#, python-format -msgid "Ensure that there are no more than %s digits in total." -msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres au total." - -#: newforms/fields.py:198 -#, python-format -msgid "Ensure that there are no more than %s decimal places." -msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres après la virgule." - -#: newforms/fields.py:200 -#, python-format -msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres avant la virgule." - -#: newforms/fields.py:233 newforms/fields.py:567 -msgid "Enter a valid date." -msgstr "Entrez une date valide." - -#: newforms/fields.py:260 newforms/fields.py:569 -msgid "Enter a valid time." -msgstr "Entrez une heure valide." - -#: newforms/fields.py:296 -msgid "Enter a valid date/time." -msgstr "Entrez une date et une heure valides." - -#: newforms/fields.py:310 -msgid "Enter a valid value." -msgstr "Entrez une valeur valide." - -#: newforms/fields.py:357 newforms/fields.py:379 -msgid "Enter a valid URL." -msgstr "Entrez une URL valide." - -#: newforms/fields.py:381 -msgid "This URL appears to be a broken link." -msgstr "Cette URL semble être cassée." - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "th" -msgstr "e" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "st" -msgstr "er" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "nd" -msgstr "d" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "rd" -msgstr "e" - -#: contrib/humanize/templatetags/humanize.py:47 -#, python-format -msgid "%(value).1f million" -msgid_plural "%(value).1f million" -msgstr[0] "%(value).1f million" -msgstr[1] "%(value).1f millions" - -#: contrib/humanize/templatetags/humanize.py:50 -#, python-format -msgid "%(value).1f billion" -msgid_plural "%(value).1f billion" -msgstr[0] "%(value).1f milliard" -msgstr[1] "%(value).1f milliards" - -#: contrib/humanize/templatetags/humanize.py:53 -#, python-format -msgid "%(value).1f trillion" -msgid_plural "%(value).1f trillion" -msgstr[0] "%(value).1f billion" -msgstr[1] "%(value).1f billions" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "one" -msgstr "un" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "two" -msgstr "deux" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "three" -msgstr "trois" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "four" -msgstr "quatre" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "five" -msgstr "cinq" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "six" -msgstr "six" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "seven" -msgstr "sept" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "eight" -msgstr "huit" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "nine" -msgstr "neuf" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "redirigé depuis" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/evenements/" -"rechercher/'." - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "redirigé vers" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète " -"débutant par 'http://'." - -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "redirige" - -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "redirige" - -#: contrib/comments/models.py:67 contrib/comments/models.py:156 -msgid "object ID" -msgstr "ID de l'objet" - -#: contrib/comments/models.py:68 -msgid "headline" -msgstr "titre" - -#: contrib/comments/models.py:69 contrib/comments/models.py:91 -#: contrib/comments/models.py:157 -msgid "comment" -msgstr "commentaire" - -#: contrib/comments/models.py:70 -msgid "rating #1" -msgstr "vote n°1" - -#: contrib/comments/models.py:71 -msgid "rating #2" -msgstr "vote n°2" - -#: contrib/comments/models.py:72 -msgid "rating #3" -msgstr "vote n°3" - -#: contrib/comments/models.py:73 -msgid "rating #4" -msgstr "vote n°4" - -#: contrib/comments/models.py:74 -msgid "rating #5" -msgstr "vote n°5" - -#: contrib/comments/models.py:75 -msgid "rating #6" -msgstr "vote n°6" - -#: contrib/comments/models.py:76 -msgid "rating #7" -msgstr "vote n°7" - -#: contrib/comments/models.py:77 -msgid "rating #8" -msgstr "vote n°8" - -#: contrib/comments/models.py:82 -msgid "is valid rating" -msgstr "est un vote valide" - -#: contrib/comments/models.py:83 contrib/comments/models.py:159 -msgid "date/time submitted" -msgstr "date et heure soumises" - -#: contrib/comments/models.py:84 contrib/comments/models.py:160 -msgid "is public" -msgstr "est public" - -#: contrib/comments/models.py:85 contrib/admindocs/views.py:305 -msgid "IP address" -msgstr "adresse IP" - -#: contrib/comments/models.py:86 -msgid "is removed" -msgstr "est supprimé" - -#: contrib/comments/models.py:86 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Cochez cette case si le commentaire est inadéquat. Un message type \"Ce " -"commentaire a été supprimé\" sera affiché en lieu et place de celui-ci." - -#: contrib/comments/models.py:92 -msgid "comments" -msgstr "commentaires" - -#: contrib/comments/models.py:121 contrib/comments/models.py:188 -msgid "Content object" -msgstr "Type de contenu" - -#: contrib/comments/models.py:149 -#, python-format -msgid "" -"Posted by %(user)s at %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" -msgstr "" -"Posté par %(user)s à %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" - -#: contrib/comments/models.py:158 -msgid "person's name" -msgstr "nom de la personne" - -#: contrib/comments/models.py:161 -msgid "ip address" -msgstr "adresse IP" - -#: contrib/comments/models.py:163 -msgid "approved by staff" -msgstr "approuvé par l'équipe" - -#: contrib/comments/models.py:167 -msgid "free comment" -msgstr "commentaire libre" - -#: contrib/comments/models.py:168 -msgid "free comments" -msgstr "commentaires libres" - -#: contrib/comments/models.py:214 -msgid "score" -msgstr "evaluation" - -#: contrib/comments/models.py:215 -msgid "score date" -msgstr "date d'évaluation" - -#: contrib/comments/models.py:219 -msgid "karma score" -msgstr "point de Karma" - -#: contrib/comments/models.py:220 -msgid "karma scores" -msgstr "points de Karma" - -#: contrib/comments/models.py:224 -#, python-format -msgid "%(score)d rating by %(user)s" -msgstr "%(score)d évalué par %(user)s" - -#: contrib/comments/models.py:240 -#, python-format -msgid "" -"This comment was flagged by %(user)s:\n" -"\n" -"%(text)s" -msgstr "" -"Ce commentaire a été marqué par %(user)s:\n" -"\n" -"%(text)s" - -#: contrib/comments/models.py:247 -msgid "flag date" -msgstr "date d'indicateur" - -#: contrib/comments/models.py:251 -msgid "user flag" -msgstr "indicateur utilisateur" - -#: contrib/comments/models.py:252 -msgid "user flags" -msgstr "indicateurs utilisateur" - -#: contrib/comments/models.py:256 -#, python-format -msgid "Flag by %r" -msgstr "Indicateur par %r" - -#: contrib/comments/models.py:261 -msgid "deletion date" -msgstr "date de suppression" - -#: contrib/comments/models.py:264 -msgid "moderator deletion" -msgstr "suppression de modérateur" - -#: contrib/comments/models.py:265 -msgid "moderator deletions" -msgstr "suppressions de modérateur" - -#: contrib/comments/models.py:269 -#, python-format -msgid "Moderator deletion by %r" -msgstr "Suppression de modérateur par %r" - -#: contrib/comments/views/karma.py:20 -msgid "Anonymous users cannot vote" -msgstr "Les utilisateurs anonymes ne peuvent pas voter" - -#: contrib/comments/views/karma.py:24 -msgid "Invalid comment ID" -msgstr "Identifiant de commentaire invalide" - -#: contrib/comments/views/karma.py:26 -msgid "No voting for yourself" -msgstr "Impossible de voter pour soi-même" - -#: contrib/comments/views/comments.py:28 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "" -"Ce vote est nécessaire car vous avez saisi au moins un autre vote." - -#: 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] "" -"Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s " -"commentaire :\n" -"\n" -"%(text)s" -msgstr[1] "" -"Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s " -"commentaires :\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 "" -"Ce commentaire a été posté par un utilisateur imprécis :\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:189 -#: contrib/comments/views/comments.py:281 -msgid "Only POSTs are allowed" -msgstr "Seuls les POSTs sont autorisés" - -#: contrib/comments/views/comments.py:193 -#: contrib/comments/views/comments.py:285 -msgid "One or more of the required fields wasn't submitted" -msgstr "Un ou plusieurs champs requis n'ont pas été remplis" - -#: contrib/comments/views/comments.py:197 -#: contrib/comments/views/comments.py:287 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "" -"Quelqu'un a trafiqué le formulaire de commentaire (violation des règles de " -"sécurité)" - -#: contrib/comments/views/comments.py:207 -#: contrib/comments/views/comments.py:293 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "" -"Ce formulaire de commentaire avait un paramètre cible invalide; l'identifiant de " -"l'objet était invalide" - -#: contrib/comments/views/comments.py:258 -#: contrib/comments/views/comments.py:322 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "" -"Le formulaire de commentaire ne proposait ni la prévisualisation " -"ni l'envoi" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Votre nom :" - -#: contrib/comments/templates/comments/freeform.html:5 -#: contrib/comments/templates/comments/form.html:28 -msgid "Comment:" -msgstr "Commentaire :" - -#: contrib/comments/templates/comments/freeform.html:10 -#: contrib/comments/templates/comments/form.html:35 -msgid "Preview comment" -msgstr "Prévisualisation du commentaire" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:19 -msgid "Username:" -msgstr "Nom d'utilisateur" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/object_history.html:4 -#: contrib/admin/templates/admin/change_list.html:8 -#: contrib/admin/templates/admin/change_form.html:16 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:4 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Log out" -msgstr "Déconnexion" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:22 -msgid "Password:" -msgstr "Mot de passe" - -#: contrib/comments/templates/comments/form.html:8 -msgid "Forgotten your password?" -msgstr "Mot de passe oublié ?" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Votes" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Requis" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Optionel" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Poster une photo" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nom de domaine" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "nom à afficher" - -#: contrib/sites/models.py:16 -msgid "site" -msgstr "site" - -#: contrib/sites/models.py:17 -msgid "sites" -msgstr "sites" - -#: contrib/admin/filterspecs.py:42 +#: contrib/admin/filterspecs.py:44 #, python-format msgid "" "

    By %s:

    \n" @@ -1177,312 +211,100 @@ msgstr "" "

    Par %s :

    \n" "
      \n" -#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 -#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 +#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 msgid "All" msgstr "Tout" -#: contrib/admin/filterspecs.py:111 +#: contrib/admin/filterspecs.py:113 msgid "Any date" msgstr "Toutes les dates" -#: contrib/admin/filterspecs.py:112 +#: contrib/admin/filterspecs.py:114 msgid "Today" msgstr "Aujourd'hui" -#: contrib/admin/filterspecs.py:115 +#: contrib/admin/filterspecs.py:117 msgid "Past 7 days" msgstr "Les 7 derniers jours" -#: contrib/admin/filterspecs.py:117 +#: contrib/admin/filterspecs.py:119 msgid "This month" msgstr "Ce mois-ci" -#: contrib/admin/filterspecs.py:119 +#: contrib/admin/filterspecs.py:121 msgid "This year" msgstr "Cette année" -#: contrib/admin/options.py:323 contrib/admin/views/auth.py:20 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès." +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Yes" +msgstr "Oui" -#: contrib/admin/options.py:327 contrib/admin/options.py:385 -#: contrib/admin/views/auth.py:25 -msgid "You may edit it again below." -msgstr "Vous pouvez continuez de l'éditez ci-dessous." +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "No" +msgstr "Non" -#: contrib/admin/options.py:337 contrib/admin/options.py:394 -#, python-format -msgid "You may add another %s below." -msgstr "Vous pouvez ajouter un autre %s ci-dessous." +#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Unknown" +msgstr "Inconnu" -#: contrib/admin/options.py:380 -msgid "No fields changed." -msgstr "Aucun champ modifié." - -#: contrib/admin/options.py:383 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "L'objet %(name)s \"%(obj)s\" a été modifié avec succès." - -#: contrib/admin/options.py:391 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"L'objet %(name)s \"%(obj)s\" a été ajouté avec succès.Vous pouvez continuez " -"de l'éditez ci-dessous." - -#: contrib/admin/options.py:437 -#, python-format -msgid "Add %s" -msgstr "Ajouter %s" - -#: contrib/admin/options.py:504 -#, python-format -msgid "Change %s" -msgstr "Changement %s" - -#: contrib/admin/options.py:531 -msgid "Database error" -msgstr "Erreur de base de données" - -#: contrib/admin/options.py:576 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "L'objet %(name)s \"%(obj)s\" a été supprimé avec succès." - -#: contrib/admin/options.py:579 -msgid "Are you sure?" -msgstr "Êtes-vous sûr ?" - -#: contrib/admin/options.py:601 -#, python-format -msgid "Change history: %s" -msgstr "Historique des changements : %s" - -#: contrib/admin/models.py:17 +#: contrib/admin/models.py:18 msgid "action time" msgstr "heure de l'action" -#: contrib/admin/models.py:20 +#: contrib/admin/models.py:21 msgid "object id" msgstr "id de l'objet" -#: contrib/admin/models.py:21 +#: contrib/admin/models.py:22 msgid "object repr" msgstr "représentation de l'objet" -#: contrib/admin/models.py:22 +#: contrib/admin/models.py:23 msgid "action flag" msgstr "indicateur de l'action" -#: contrib/admin/models.py:23 +#: contrib/admin/models.py:24 msgid "change message" msgstr "message de modification" -#: contrib/admin/models.py:26 +#: contrib/admin/models.py:27 msgid "log entry" msgstr "entrée d'historique" -#: contrib/admin/models.py:27 +#: contrib/admin/models.py:28 msgid "log entries" msgstr "entrées d'historique" -#: contrib/admin/widgets.py:44 -msgid "Date:" -msgstr "Date :" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Cette page n'a pas été trouvée" -#: contrib/admin/widgets.py:44 -msgid "Time:" -msgstr "Heure :" +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Nous sommes désolés, mais la page demandée est introuvable." -#: contrib/admin/sites.py:13 contrib/admin/views/decorators.py:10 -#: contrib/auth/forms.py:60 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Veuillez saisir un nom d'utilisateur et un mot de passe valide. " -"Remarquez que chacun de ces champs est sensible à la casse (différenciation " -"des majuscules/minuscules)." - -#: contrib/admin/sites.py:33 contrib/admin/views/decorators.py:24 -#: contrib/admin/templates/admin/login.html:27 -msgid "Log in" -msgstr "Connectez-vous" - -#: contrib/admin/sites.py:186 contrib/admin/views/decorators.py:62 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Veuillez vous reconnecter, car votre session a expiré. Ne vous " -"inquiétez pas, votre soumission a été enregistrée." - -#: contrib/admin/sites.py:193 contrib/admin/views/decorators.py:69 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Il semblerait que votre navigateur n'accepte pas les cookies. Veuillez" -"les activer, recharger cette page, puis rééssayer." - -#: contrib/admin/sites.py:207 contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Les noms d'utilisateur ne peuvent contenir le caractère '@'" - -#: contrib/admin/sites.py:209 contrib/admin/views/decorators.py:85 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"Votre courriel n'est pas votre nom d'utilisateur. Essayez '%s' à la place." - -#: contrib/admin/sites.py:276 contrib/admin/views/main.py:143 -msgid "Site administration" -msgstr "Gestion du site" - -#: contrib/admin/templatetags/admin_list.py:252 -msgid "All dates" -msgstr "Toutes les dates" - -#: contrib/admin/views/auth.py:31 -msgid "Add user" -msgstr "Ajouter l'utilisateur" - -#: contrib/admin/views/auth.py:56 -msgid "Password changed successfully." -msgstr "Mot de passe modifié avec succés" - -#: contrib/admin/views/auth.py:63 -#, python-format -msgid "Change password: %s" -msgstr "Modifier le mot de passe : %s" - -#: contrib/admin/views/main.py:222 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s" - -#: contrib/admin/views/main.py:227 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :" - -#: contrib/admin/views/main.py:269 -#, python-format -msgid "Select %s" -msgstr "Sélectionnez %s" - -#: contrib/admin/views/main.py:269 -#, python-format -msgid "Select %s to change" -msgstr "Sélectionnez %s pour changer" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Actuellement :" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modification :" - -#: contrib/admin/templates/admin/object_history.html:4 -#: contrib/admin/templates/admin/change_list.html:8 -#: contrib/admin/templates/admin/change_form.html:16 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:4 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "Documentation" - -#: contrib/admin/templates/admin/object_history.html:4 -#: contrib/admin/templates/admin/change_list.html:8 -#: contrib/admin/templates/admin/change_form.html:16 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:4 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin/auth/user/change_password.html:15 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Change password" -msgstr "Modifier votre mot de passe" - -#: contrib/admin/templates/admin/object_history.html:7 -#: contrib/admin/templates/admin/change_list.html:10 #: 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/change_form.html:20 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/delete_confirmation.html:8 -#: contrib/admin/templates/admin/auth/user/change_password.html:12 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.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 "Accueil" -#: contrib/admin/templates/admin/object_history.html:7 -#: contrib/admin/templates/admin/change_form.html:29 -msgid "History" -msgstr "Historique" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Date/Heure" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Utilisateur" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Action" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j. N Y, H:i" - -#: contrib/admin/templates/admin/object_history.html:34 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été " -"ajouté au moyen de ce site d'administration." - -#: contrib/admin/templates/admin/change_list.html:18 -#, python-format -msgid "Add %(name)s" -msgstr "Ajouter %(name)s" - -#: contrib/admin/templates/admin/change_list.html:28 -msgid "Filter" -msgstr "Filtre" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Par %(filter_title)s " - #: contrib/admin/templates/admin/500.html:4 msgid "Server error" msgstr "Erreur du serveur" @@ -1501,37 +323,28 @@ msgid "" "mail and should be fixed shortly. Thanks for your patience." msgstr "" "Une erreur est survenue. Elle a été transmise par courriel aux " -"administrateurs du site et sera corrigée dans les meilleurs délais. Merci " -"de votre patience." +"administrateurs du site et sera corrigée dans les meilleurs délais. Merci de " +"votre patience." -#: contrib/admin/templates/admin/invalid_setup.html:7 -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 "" -"Quelque chose ne va pas avec votre base de données. Vérifiez que les bonnes " -"tables ont été créées, et que la base est lisible par le bon utilisateur." +#: contrib/admin/templates/admin/base.html:26 +msgid "Welcome," +msgstr "Bienvenue," -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Envoyer" +#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Documentation" -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 résultat" -msgstr[1] "%(counter)s résultats" +#: 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 "Modifier votre mot de passe" -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "%(full_result_count)s résultats" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Tout montrer" +#: contrib/admin/templates/admin/base.html:30 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Déconnexion" #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" @@ -1541,71 +354,44 @@ msgstr "Site d'administration de Django" msgid "Django administration" msgstr "Administration de Django" -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Cette page n'a pas été trouvée" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Nous sommes désolés, mais la page demandée est introuvable." - -#: contrib/admin/templates/admin/index.html:18 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Modèles disponibles dans l'application %(name)s." - -#: contrib/admin/templates/admin/index.html:19 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - -#: contrib/admin/templates/admin/index.html:29 -#: contrib/admin/templates/admin/change_form.html:22 +#: contrib/admin/templates/admin/change_form.html:14 +#: contrib/admin/templates/admin/index.html:28 msgid "Add" msgstr "Ajouter" -#: contrib/admin/templates/admin/index.html:35 -msgid "Change" -msgstr "Modifier" +#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/object_history.html:4 +msgid "History" +msgstr "Historique" -#: contrib/admin/templates/admin/index.html:45 -msgid "You don't have permission to edit anything." -msgstr "Vous n'avez pas la permission d'éditer quoi que ce soit." - -#: contrib/admin/templates/admin/index.html:53 -msgid "Recent Actions" -msgstr "Actions récentes" - -#: contrib/admin/templates/admin/index.html:54 -msgid "My Actions" -msgstr "Mes actions" - -#: contrib/admin/templates/admin/index.html:58 -msgid "None available" -msgstr "Aucun(e) disponible" - -#: contrib/admin/templates/admin/change_form.html:30 +#: contrib/admin/templates/admin/change_form.html:21 msgid "View on site" msgstr "Voir sur le site" -#: contrib/admin/templates/admin/change_form.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: 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] "Veuillez corriger l'erreur ci-dessous." -msgstr[1] "Veuillez corriger les erreurs ci-dessous." +msgstr "Veuillez corriger l'erreur ci-dessous." -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Bienvenue," +#: contrib/admin/templates/admin/change_form.html:49 +msgid "Ordering" +msgstr "Tri" -#: contrib/admin/templates/admin/delete_confirmation.html:11 +#: contrib/admin/templates/admin/change_form.html:52 +msgid "Order:" +msgstr "Ordre :" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "Ajouter %(name)s" + +#: contrib/admin/templates/admin/delete_confirmation.html:8 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" msgstr "Supprimer" -#: contrib/admin/templates/admin/delete_confirmation.html:17 +#: contrib/admin/templates/admin/delete_confirmation.html:13 #, python-format msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " @@ -1616,7 +402,7 @@ msgstr "" "suppression des objets qui lui sont liés mais votre compte ne possède pas la " "permission de supprimer les types d'objets suivants :" -#: contrib/admin/templates/admin/delete_confirmation.html:24 +#: 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\"? " @@ -1626,10 +412,116 @@ msgstr "" "(escaped_object)s\" ? Les éléments suivant sont liés à celui-ci et seront " "aussi supprimés :" -#: contrib/admin/templates/admin/delete_confirmation.html:29 +#: contrib/admin/templates/admin/delete_confirmation.html:25 msgid "Yes, I'm sure" msgstr "Oui, j'en suis certain" +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Par %(filter_title)s " + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtre" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modèles disponibles dans l'application %(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 "Modifier" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Vous n'avez pas la permission d'éditer quoi que ce soit." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Actions récentes" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Mes actions" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Aucun(e) disponible" + +#: 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 "" +"Quelque chose ne va pas avec votre base de données. Vérifiez que les bonnes " +"tables ont été créées, et que la base est lisible par le bon utilisateur." + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Nom d'utilisateur" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Mot de passe" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:31 +msgid "Log in" +msgstr "Connectez-vous" + +#: contrib/admin/templates/admin/object_history.html:17 +msgid "Date/time" +msgstr "Date/Heure" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "User" +msgstr "Utilisateur" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "Action" +msgstr "Action" + +#: contrib/admin/templates/admin/object_history.html:25 +msgid "DATE_WITH_TIME_FULL" +msgstr "j. N Y, H:i" + +#: 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 "" +"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été " +"ajouté au moyen de ce site d'administration." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Tout montrer" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Envoyer" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgstr "1 résultat" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s résultats" + #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Sauver en tant que nouveau" @@ -1646,28 +538,6 @@ msgstr "Sauver et continuer les modifications" msgid "Save" msgstr "Sauver" -#: contrib/admin/templates/admin/auth/user/change_password.html:28 -#, python-format -msgid "Enter a new password for the user %(username)s." -msgstr "" -"Entrez un nouveau mot de passe pour l'utilisateur %(username)s." - -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/admin/templates/admin/auth/user/add_form.html:18 -msgid "Password" -msgstr "Mot de passe" - -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -msgid "Password (again)" -msgstr "Mot de passe (à nouveau)" - -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -msgid "Enter the same password as above, for verification." -msgstr "Entrez le même mot de passe que précedemment, par sécurité." - #: 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 " @@ -1680,45 +550,96 @@ msgstr "" msgid "Username" msgstr "Nom d'utilisateur" -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -msgid "Password change" -msgstr "Modification de votre mot de passe" +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:33 +msgid "Password" +msgstr "Mot de passe" -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Mot de passe modifié avec succés" +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:38 +msgid "Password (again)" +msgstr "Mot de passe (à nouveau)" -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Votre mot de passe a été modifié." +#: 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 "Entrez le même mot de passe que précedemment, par sécurité." -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -#: contrib/admin/templates/registration/password_reset_done.html:4 -msgid "Password reset" -msgstr "Réinitialisation de votre mot de passe" - -#: 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." +#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#, python-format +msgid "Enter a new password for the user %(username)s." msgstr "" -"Mot de passe perdu ? Saisissez votre adresse de courriel ci-dessous et nous " -"annulerons votre mot de passe actuel avant de vous en faire parvenir un " -"nouveau par courriel." +"Entrez un nouveau mot de passe pour l'utilisateur %(username)s." -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Courriel :" +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Signets" -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Réinitialiser mon mot de passe" +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "Documentation des signets" + +#: 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" +"

      Pour installer des signets, faîtes glisser le lien vers\n" +"votre barre de marques-pages, ou cliquez droit dessus et ajoutez-y le.\n" +"Maintenant, vous pouvez le sélectionner depuis n'importe quelle page\n" +"du site. Notez que certains d'entre eux nécessitent que vous visionniez\n" +"le site depuis un ordinateur dit \"interne\" (veuillez contacter votre\n" +"administrateur système si vous n'êtes pas sûr que votre ordinateur le soit)." +"

      \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "Documentation pour cette page" + +#: 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 "" +"Vous envoie de n'importe quelle page vers la documentation de la vue qui a " +"généré cette page." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Afficher l'identifiant de l'objet" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Montre le content-type et l'identifiant unique pour les pages qui " +"représentent un objet unique." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Editer cet objet (fenêtre courante)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Renvoie à la page d'administration qui représente un objet seul." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Editer cet objet (nouvelle fenêtre)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "" +"Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle " +"fenêtre." #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." @@ -1728,6 +649,54 @@ msgstr "Merci pour le temps que vous avez accordé à ce site aujourd'hui." msgid "Log in again" msgstr "Connectez vous à nouveau" +#: 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 "Modification de votre mot de passe" + +#: contrib/admin/templates/registration/password_change_done.html:5 +#: contrib/admin/templates/registration/password_change_done.html:9 +msgid "Password change successful" +msgstr "Mot de passe modifié avec succés" + +#: contrib/admin/templates/registration/password_change_done.html:11 +msgid "Your password was changed." +msgstr "Votre mot de passe a été modifié." + +#: 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 "" +"Pour des raisons de sécurité, veuillez entrer votre ancien mot de passe puis " +"saisissez deux fois votre nouveau mot de passe afin que nous puissions " +"vérifier que vous l'avez tapé correctement." + +#: contrib/admin/templates/registration/password_change_form.html:16 +msgid "Old password:" +msgstr "Ancien mot de passe :" + +#: contrib/admin/templates/registration/password_change_form.html:18 +msgid "New password:" +msgstr "Nouveau mot de passe :" + +#: contrib/admin/templates/registration/password_change_form.html:20 +msgid "Confirm password:" +msgstr "Confirmation du mot de passe" + +#: contrib/admin/templates/registration/password_change_form.html:22 +msgid "Change my password" +msgstr "Modifier mon mot de passe" + +#: 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 "Réinitialisation de votre mot de passe" + #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" @@ -1741,31 +710,6 @@ msgstr "" "Nous vous avons envoyé par courriel un nouveau mot de passe. Vous devriez le " "recevoir rapidement." -#: contrib/admin/templates/registration/password_change_form.html:12 -msgid "" -"Please enter your old password, for security's sake, and then enter your new " -"password twice so we can verify you typed it in correctly." -msgstr "" -"Pour des raisons de sécurité, veuillez entrer votre ancien mot de passe puis " -"saisissez deux fois votre nouveau mot de passe afin que nous puissions " -"vérifier que vous l'avez tapé correctement." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Ancien mot de passe :" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Nouveau mot de passe :" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Confirmation du mot de passe" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Modifier mon mot de passe" - #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "" @@ -1798,231 +742,335 @@ msgstr "Merci d'utiliser notre site !" msgid "The %(site_name)s team" msgstr "L'équipe %(site_name)s" -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Signets" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Documentation des signets" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +#: contrib/admin/templates/registration/password_reset_form.html:12 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" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." msgstr "" -"\n" -"

      Pour installer des signets, faîtes glisser le lien vers\n" -"votre barre de marques-pages, ou cliquez droit dessus et ajoutez-y le.\n" -"Maintenant, vous pouvez le sélectionner depuis n'importe quelle page\n" -"du site. Notez que certains d'entre eux nécessitent que vous visionniez\n" -"le site depuis un ordinateur dit \"interne\" (veuillez contacter votre\n" -"administrateur système si vous n'êtes pas sûr que votre ordinateur le soit)." -"

      \n" +"Mot de passe perdu ? Saisissez votre adresse de courriel ci-dessous et nous " +"annulerons votre mot de passe actuel avant de vous en faire parvenir un " +"nouveau par courriel." -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Documentation pour cette page" +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Courriel :" -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Réinitialiser mon mot de passe" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Date :" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Heure :" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Actuellement :" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modification :" + +#: contrib/admin/templatetags/admin_list.py:257 +msgid "All dates" +msgstr "Toutes les dates" + +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "L'objet %(name)s \"%(obj)s\" a été ajouté avec succè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 "Vous pouvez continuez de l'éditez ci-dessous." + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Ajouter l'utilisateur" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Mot de passe modifié avec succés" + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Modifier le mot de passe : %s" + +#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60 msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." msgstr "" -"Vous envoie de n'importe quelle page vers la documentation de la vue qui a " -"généré cette page." +"Veuillez saisir un nom d'utilisateur et un mot de passe valide. Remarquez " +"que chacun de ces champs est sensible à la casse (différenciation des " +"majuscules/minuscules)." -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Afficher l'identifiant de l'objet" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +#: contrib/admin/views/decorators.py:69 msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." msgstr "" -"Montre le content-type et l'identifiant unique pour les pages qui représentent un objet " -"unique." +"Veuillez vous reconnecter, car votre session a expiré. Ne vous inquiétez " +"pas, votre soumission a été enregistrée." -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Editer cet objet (fenêtre courante)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Renvoie à la page d'administration qui représente un objet seul." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Editer cet objet (nouvelle fenêtre)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "" -"Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle " -"fenêtre." - -#: contrib/contenttypes/models.py:37 -msgid "python model class name" -msgstr "nom du module python" - -#: contrib/contenttypes/models.py:40 -msgid "content type" -msgstr "type de contenu" - -#: contrib/contenttypes/models.py:41 -msgid "content types" -msgstr "types de contenu" - -#: contrib/auth/views.py:41 -msgid "Logged out" -msgstr "Déconnecté" - -#: contrib/auth/models.py:51 contrib/auth/models.py:71 -msgid "name" -msgstr "nom" - -#: contrib/auth/models.py:53 -msgid "codename" -msgstr "nom de code" - -#: contrib/auth/models.py:56 -msgid "permission" -msgstr "permission" - -#: contrib/auth/models.py:57 contrib/auth/models.py:72 -msgid "permissions" -msgstr "permissions" - -#: contrib/auth/models.py:75 -msgid "group" -msgstr "groupe" - -#: contrib/auth/models.py:76 contrib/auth/models.py:113 -msgid "groups" -msgstr "groupes" - -#: contrib/auth/models.py:103 -msgid "username" -msgstr "nom d'utilisateur" - -#: contrib/auth/models.py:103 +#: contrib/admin/views/decorators.py:76 msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." msgstr "" -"Requis. 30 caractères maximum, alphanumériques uniquement (lettres, " -"chiffres, et tirets bas _)." +"Il semblerait que votre navigateur n'accepte pas les cookies. Veuillezles " +"activer, recharger cette page, puis rééssayer." -#: contrib/auth/models.py:104 -msgid "first name" -msgstr "prénom" +#: contrib/admin/views/decorators.py:90 +msgid "Usernames cannot contain the '@' character." +msgstr "Les noms d'utilisateur ne peuvent contenir le caractère '@'" -#: contrib/auth/models.py:105 -msgid "last name" -msgstr "nom" +#: contrib/admin/views/decorators.py:92 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Votre courriel n'est pas votre nom d'utilisateur. Essayez '%s' à la place." -#: contrib/auth/models.py:106 -msgid "e-mail address" -msgstr "courriel" +#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:52 +msgid "tag:" +msgstr "mot-clé :" -#: contrib/auth/models.py:107 -msgid "password" -msgstr "mot de passe" +#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:83 +msgid "filter:" +msgstr "filtre :" -#: contrib/auth/models.py:107 +#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:141 +msgid "view:" +msgstr "vue :" + +#: contrib/admin/views/doc.py:166 +#, python-format +msgid "App %r not found" +msgstr "L'application %r n'a pas été trouvée." + +#: contrib/admin/views/doc.py:173 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Le modèle %(name)r n'a pas été trouvé dans l'application %(label)r" + +#: contrib/admin/views/doc.py:185 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "l'objet `%(label)s.%(type)s` en relation " + +#: 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 "modèle :" + +#: contrib/admin/views/doc.py:216 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "les objets `%(label)s.%(name)s` en relation" + +#: contrib/admin/views/doc.py:221 +#, python-format +msgid "all %s" +msgstr "tous les %s" + +#: contrib/admin/views/doc.py:226 +#, python-format +msgid "number of %s" +msgstr "nombre de %s" + +#: contrib/admin/views/doc.py:231 +#, python-format +msgid "Fields on %s objects" +msgstr "Champs sur les objets %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 "Entier" + +#: contrib/admin/views/doc.py:294 +msgid "Boolean (Either True or False)" +msgstr "Booléen (Vrai ou Faux)" + +#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Chaîne de caractère (jusqu'à %(max_length)s)" + +#: contrib/admin/views/doc.py:296 +msgid "Comma-separated integers" +msgstr "Des entiers séparés par une virgule" + +#: contrib/admin/views/doc.py:297 +msgid "Date (without time)" +msgstr "Date (sans l'heure)" + +#: contrib/admin/views/doc.py:298 +msgid "Date (with time)" +msgstr "Date (avec l'heure)" + +#: contrib/admin/views/doc.py:299 +msgid "Decimal number" +msgstr "Nombre décimal" + +#: contrib/admin/views/doc.py:300 +msgid "E-mail address" +msgstr "Courriel" + +#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:305 +msgid "File path" +msgstr "Chemin vers le fichier" + +#: contrib/admin/views/doc.py:303 +msgid "Floating point number" +msgstr "Nombre à virgule flottante" + +#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 +msgid "IP address" +msgstr "adresse IP" + +#: contrib/admin/views/doc.py:309 +msgid "Boolean (Either True, False or None)" +msgstr "Booléen (Vrai, Faux ou None)" + +#: contrib/admin/views/doc.py:310 +msgid "Relation to parent model" +msgstr "Relation au modèle parent" + +#: contrib/admin/views/doc.py:311 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: contrib/admin/views/doc.py:316 +msgid "Text" +msgstr "Texte" + +#: contrib/admin/views/doc.py:317 +msgid "Time" +msgstr "Heure" + +#: 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 "État Américain (deux lettres majuscules)" + +#: contrib/admin/views/doc.py:320 +msgid "XML text" +msgstr "Texte XML" + +#: contrib/admin/views/doc.py:346 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ne semble pas être un objet urlpattern" + +#: contrib/admin/views/main.py:233 +msgid "Site administration" +msgstr "Gestion du site" + +#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 +#, python-format +msgid "You may add another %s below." +msgstr "Vous pouvez ajouter un autre %s ci-dessous." + +#: contrib/admin/views/main.py:298 +#, python-format +msgid "Add %s" +msgstr "Ajouter %s" + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Added %s." +msgstr "Ajouté %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 "et" + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Changed %s." +msgstr "Modifié %s." + +#: contrib/admin/views/main.py:348 +#, python-format +msgid "Deleted %s." +msgstr "Supprimé %s." + +#: contrib/admin/views/main.py:351 +msgid "No fields changed." +msgstr "Aucun champ modifié." + +#: contrib/admin/views/main.py:354 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "L'objet %(name)s \"%(obj)s\" a été modifié avec succès." + +#: contrib/admin/views/main.py:362 +#, python-format msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "" -"Utilisez [algo]$[salt]$[hexdigest]' ou le formulaire " -"de changement de mot de passe." +"L'objet %(name)s \"%(obj)s\" a été ajouté avec succès.Vous pouvez continuez " +"de l'éditez ci-dessous." -#: contrib/auth/models.py:108 -msgid "staff status" -msgstr "statut équipe" +#: contrib/admin/views/main.py:400 +#, python-format +msgid "Change %s" +msgstr "Changement %s" -#: contrib/auth/models.py:108 -msgid "Designates whether the user can log into this admin site." -msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration." +#: contrib/admin/views/main.py:487 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s" -#: contrib/auth/models.py:109 -msgid "active" -msgstr "actif" +#: contrib/admin/views/main.py:492 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :" -#: contrib/auth/models.py:109 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "" -"Précise si l'utilisateur peut se connecter à l'administration. " -"Déselectionnez ceci plutôt que supprimer le compte." +#: contrib/admin/views/main.py:524 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "L'objet %(name)s \"%(obj)s\" a été supprimé avec succès." -#: contrib/auth/models.py:110 -msgid "superuser status" -msgstr "statut super-utilisateur" +#: contrib/admin/views/main.py:527 +msgid "Are you sure?" +msgstr "Êtes-vous sûr ?" -#: contrib/auth/models.py:110 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" -"Précise que l'utilisateur possède toutes les permissions sans les assigner " -"explicitement." +#: contrib/admin/views/main.py:549 +#, python-format +msgid "Change history: %s" +msgstr "Historique des changements : %s" -#: contrib/auth/models.py:111 -msgid "last login" -msgstr "dernière connexion" +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s" +msgstr "Sélectionnez %s" -#: contrib/auth/models.py:112 -msgid "date joined" -msgstr "date d'inscription" +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s to change" +msgstr "Sélectionnez %s pour changer" -#: contrib/auth/models.py:114 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"En plus des permissions qui lui sont manuellement assignées, cet utilisateur " -"recevra aussi toutes les permissions de tous les groupes auquels il " -"appartient. " - -#: contrib/auth/models.py:115 -msgid "user permissions" -msgstr "permissions de l'utilisateur" - -#: contrib/auth/models.py:119 -msgid "user" -msgstr "utilisateur" - -#: contrib/auth/models.py:120 -msgid "users" -msgstr "utilisateurs" - -#: contrib/auth/models.py:259 -msgid "message" -msgstr "message" - -#: contrib/auth/models.py:334 -msgid "Personal info" -msgstr "Information personnelle" - -#: contrib/auth/models.py:335 -msgid "Permissions" -msgstr "Permissions" - -#: contrib/auth/models.py:336 -msgid "Important dates" -msgstr "Dates importantes" - -#: contrib/auth/models.py:337 -msgid "Groups" -msgstr "Groupes" +#: contrib/admin/views/main.py:784 +msgid "Database error" +msgstr "Erreur de base de données" #: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." @@ -2052,6 +1100,11 @@ msgstr "" "Cette adresse e-mail ne correspond à aucun compte utilisateur. Êtes-vous sûr " "de vous être enregistré ?" +#: contrib/auth/forms.py:107 +#, python-format +msgid "Password reset on %s" +msgstr "Mot de passe réinitialisé le %s" + #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." msgstr "Les deux champs \"nouveau mot de passe\" ne correspondent pas." @@ -2060,153 +1113,1195 @@ msgstr "Les deux champs \"nouveau mot de passe\" ne correspondent pas." msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier." -#: contrib/admindocs/views.py:47 contrib/admindocs/views.py:49 -#: contrib/admindocs/views.py:51 -msgid "tag:" -msgstr "mot-clé :" +#: contrib/auth/models.py:73 contrib/auth/models.py:93 +msgid "name" +msgstr "nom" -#: contrib/admindocs/views.py:78 contrib/admindocs/views.py:80 -#: contrib/admindocs/views.py:82 -msgid "filter:" -msgstr "filtre :" +#: contrib/auth/models.py:75 +msgid "codename" +msgstr "nom de code" -#: contrib/admindocs/views.py:136 contrib/admindocs/views.py:138 -#: contrib/admindocs/views.py:140 -msgid "view:" -msgstr "vue :" +#: contrib/auth/models.py:78 +msgid "permission" +msgstr "permission" -#: contrib/admindocs/views.py:165 -#, python-format -msgid "App %r not found" -msgstr "L'application %r n'a pas été trouvée." +#: contrib/auth/models.py:79 contrib/auth/models.py:94 +msgid "permissions" +msgstr "permissions" -#: contrib/admindocs/views.py:172 -#, python-format -msgid "Model %(name)r not found in app %(app)r" -msgstr "Le modèle %(name)r n'a pas été trouvé dans l'application %(app)r" +#: contrib/auth/models.py:97 +msgid "group" +msgstr "groupe" -#: contrib/admindocs/views.py:184 -#, python-format -msgid "the related `%(app)s.%(type)s` object" -msgstr "l'objet `%(app)s.%(type)s` en relation " +#: contrib/auth/models.py:98 contrib/auth/models.py:141 +msgid "groups" +msgstr "groupes" -#: contrib/admindocs/views.py:184 contrib/admindocs/views.py:206 -#: contrib/admindocs/views.py:220 contrib/admindocs/views.py:225 -msgid "model:" -msgstr "modèle :" +#: contrib/auth/models.py:131 +msgid "username" +msgstr "nom d'utilisateur" -#: contrib/admindocs/views.py:215 -#, python-format -msgid "related `%(app)s.%(name)s` objects" -msgstr "les objets `%(app)s.%(name)s` en relation" - -#: contrib/admindocs/views.py:220 -#, python-format -msgid "all %s" -msgstr "tous les %s" - -#: contrib/admindocs/views.py:225 -#, python-format -msgid "number of %s" -msgstr "nombre de %s" - -#: contrib/admindocs/views.py:230 -#, python-format -msgid "Fields on %s objects" -msgstr "Champs sur les objets %s" - -#: contrib/admindocs/views.py:292 contrib/admindocs/views.py:302 -#: contrib/admindocs/views.py:304 contrib/admindocs/views.py:310 -#: contrib/admindocs/views.py:311 contrib/admindocs/views.py:313 -msgid "Integer" -msgstr "Entier" - -#: contrib/admindocs/views.py:293 -msgid "Boolean (Either True or False)" -msgstr "Booléen (Vrai ou Faux)" - -#: contrib/admindocs/views.py:294 contrib/admindocs/views.py:312 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Chaîne de caractère (jusqu'à %(maxlength)s)" - -#: contrib/admindocs/views.py:295 -msgid "Comma-separated integers" -msgstr "Des entiers séparés par une virgule" - -#: contrib/admindocs/views.py:296 -msgid "Date (without time)" -msgstr "Date (sans l'heure)" - -#: contrib/admindocs/views.py:297 -msgid "Date (with time)" -msgstr "Date (avec l'heure)" - -#: contrib/admindocs/views.py:298 -msgid "E-mail address" -msgstr "Courriel" - -#: contrib/admindocs/views.py:299 contrib/admindocs/views.py:300 -#: contrib/admindocs/views.py:303 -msgid "File path" -msgstr "Chemin vers le fichier" - -#: contrib/admindocs/views.py:301 -msgid "Decimal number" -msgstr "Nombre décimal" - -#: contrib/admindocs/views.py:307 -msgid "Boolean (Either True, False or None)" -msgstr "Booléen (Vrai, Faux ou None)" - -#: contrib/admindocs/views.py:308 -msgid "Relation to parent model" -msgstr "Relation au modèle parent" - -#: contrib/admindocs/views.py:309 -msgid "Phone number" -msgstr "Numéro de téléphone" - -#: contrib/admindocs/views.py:314 -msgid "Text" -msgstr "Texte" - -#: contrib/admindocs/views.py:315 -msgid "Time" -msgstr "Heure" - -#: contrib/admindocs/views.py:316 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:317 -msgid "U.S. state (two uppercase letters)" -msgstr "État Américain (deux lettres majuscules)" - -#: contrib/admindocs/views.py:318 -msgid "XML text" -msgstr "Texte XML" - -#: contrib/admindocs/views.py:344 -#, python-format -msgid "%s does not appear to be a urlpattern object" -msgstr "%s ne semble pas être un objet urlpattern" - -#: contrib/localflavor/uk/forms.py:18 -msgid "Enter a postcode. A space is required between the two postcode parts." +#: contrib/auth/models.py:131 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." msgstr "" -"Entrez un code postal Anglais. Un espace est requis entre les deux parties." +"Requis. 30 caractères maximum, alphanumériques uniquement (lettres, " +"chiffres, et tirets bas _)." -#: contrib/localflavor/au/forms.py:18 +#: contrib/auth/models.py:132 +msgid "first name" +msgstr "prénom" + +#: contrib/auth/models.py:133 +msgid "last name" +msgstr "nom" + +#: contrib/auth/models.py:134 +msgid "e-mail address" +msgstr "courriel" + +#: contrib/auth/models.py:135 +msgid "password" +msgstr "mot de passe" + +#: contrib/auth/models.py:135 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Utilisez [algo]$[salt]$[hexdigest]' ou le formulaire " +"de changement de mot de passe." + +#: contrib/auth/models.py:136 +msgid "staff status" +msgstr "statut équipe" + +#: contrib/auth/models.py:136 +msgid "Designates whether the user can log into this admin site." +msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration." + +#: contrib/auth/models.py:137 +msgid "active" +msgstr "actif" + +#: contrib/auth/models.py:137 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Précise si l'utilisateur peut se connecter à l'administration. " +"Déselectionnez ceci plutôt que supprimer le compte." + +#: contrib/auth/models.py:138 +msgid "superuser status" +msgstr "statut super-utilisateur" + +#: contrib/auth/models.py:138 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Précise que l'utilisateur possède toutes les permissions sans les assigner " +"explicitement." + +#: contrib/auth/models.py:139 +msgid "last login" +msgstr "dernière connexion" + +#: contrib/auth/models.py:140 +msgid "date joined" +msgstr "date d'inscription" + +#: 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 "" +"En plus des permissions qui lui sont manuellement assignées, cet utilisateur " +"recevra aussi toutes les permissions de tous les groupes auquels il " +"appartient. " + +#: contrib/auth/models.py:143 +msgid "user permissions" +msgstr "permissions de l'utilisateur" + +#: contrib/auth/models.py:147 +msgid "user" +msgstr "utilisateur" + +#: contrib/auth/models.py:148 +msgid "users" +msgstr "utilisateurs" + +#: contrib/auth/models.py:154 +msgid "Personal info" +msgstr "Information personnelle" + +#: contrib/auth/models.py:155 +msgid "Permissions" +msgstr "Permissions" + +#: contrib/auth/models.py:156 +msgid "Important dates" +msgstr "Dates importantes" + +#: contrib/auth/models.py:157 +msgid "Groups" +msgstr "Groupes" + +#: contrib/auth/models.py:316 +msgid "message" +msgstr "message" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Déconnecté" + +#: contrib/comments/models.py:71 contrib/comments/models.py:176 +msgid "object ID" +msgstr "ID de l'objet" + +#: contrib/comments/models.py:72 +msgid "headline" +msgstr "titre" + +#: contrib/comments/models.py:73 contrib/comments/models.py:95 +#: contrib/comments/models.py:177 +msgid "comment" +msgstr "commentaire" + +#: contrib/comments/models.py:74 +msgid "rating #1" +msgstr "vote n°1" + +#: contrib/comments/models.py:75 +msgid "rating #2" +msgstr "vote n°2" + +#: contrib/comments/models.py:76 +msgid "rating #3" +msgstr "vote n°3" + +#: contrib/comments/models.py:77 +msgid "rating #4" +msgstr "vote n°4" + +#: contrib/comments/models.py:78 +msgid "rating #5" +msgstr "vote n°5" + +#: contrib/comments/models.py:79 +msgid "rating #6" +msgstr "vote n°6" + +#: contrib/comments/models.py:80 +msgid "rating #7" +msgstr "vote n°7" + +#: contrib/comments/models.py:81 +msgid "rating #8" +msgstr "vote n°8" + +#: contrib/comments/models.py:86 +msgid "is valid rating" +msgstr "est un vote valide" + +#: contrib/comments/models.py:87 contrib/comments/models.py:179 +msgid "date/time submitted" +msgstr "date et heure soumises" + +#: contrib/comments/models.py:88 contrib/comments/models.py:180 +msgid "is public" +msgstr "est public" + +#: contrib/comments/models.py:90 +msgid "is removed" +msgstr "est supprimé" + +#: 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 "" +"Cochez cette case si le commentaire est inadéquat. Un message type \"Ce " +"commentaire a été supprimé\" sera affiché en lieu et place de celui-ci." + +#: contrib/comments/models.py:96 +msgid "comments" +msgstr "commentaires" + +#: contrib/comments/models.py:140 contrib/comments/models.py:222 +msgid "Content object" +msgstr "Type de contenu" + +#: 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 "" +"Posté par %(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 "nom de la personne" + +#: contrib/comments/models.py:181 +msgid "ip address" +msgstr "adresse IP" + +#: contrib/comments/models.py:183 +msgid "approved by staff" +msgstr "approuvé par l'équipe" + +#: contrib/comments/models.py:187 +msgid "free comment" +msgstr "commentaire libre" + +#: contrib/comments/models.py:188 +msgid "free comments" +msgstr "commentaires libres" + +#: contrib/comments/models.py:250 +msgid "score" +msgstr "evaluation" + +#: contrib/comments/models.py:251 +msgid "score date" +msgstr "date d'évaluation" + +#: contrib/comments/models.py:255 +msgid "karma score" +msgstr "point de Karma" + +#: contrib/comments/models.py:256 +msgid "karma scores" +msgstr "points de Karma" + +#: contrib/comments/models.py:260 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d évalué par %(user)s" + +#: contrib/comments/models.py:277 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"Ce commentaire a été marqué par %(user)s:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:285 +msgid "flag date" +msgstr "date d'indicateur" + +#: contrib/comments/models.py:289 +msgid "user flag" +msgstr "indicateur utilisateur" + +#: contrib/comments/models.py:290 +msgid "user flags" +msgstr "indicateurs utilisateur" + +#: contrib/comments/models.py:294 +#, python-format +msgid "Flag by %r" +msgstr "Indicateur par %r" + +#: contrib/comments/models.py:300 +msgid "deletion date" +msgstr "date de suppression" + +#: contrib/comments/models.py:303 +msgid "moderator deletion" +msgstr "suppression de modérateur" + +#: contrib/comments/models.py:304 +msgid "moderator deletions" +msgstr "suppressions de modérateur" + +#: contrib/comments/models.py:308 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Suppression de modérateur par %r" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Mot de passe oublié ?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Votes" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Requis" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Optionel" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Poster une photo" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Commentaire :" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Prévisualisation du commentaire" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Votre nom :" + +#: contrib/comments/views/comments.py:28 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "Ce vote est nécessaire car vous avez saisi au moins un autre vote." + +#: 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" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr "" +"Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s " +"commentaire :\n" +"\n" +"%(text)s" +"Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s " +"commentaires :\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 "" +"Ce commentaire a été posté par un utilisateur imprécis :\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:190 +#: contrib/comments/views/comments.py:283 +msgid "Only POSTs are allowed" +msgstr "Seuls les POSTs sont autorisés" + +#: contrib/comments/views/comments.py:194 +#: contrib/comments/views/comments.py:287 +msgid "One or more of the required fields wasn't submitted" +msgstr "Un ou plusieurs champs requis n'ont pas été remplis" + +#: contrib/comments/views/comments.py:198 +#: contrib/comments/views/comments.py:289 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "" +"Quelqu'un a trafiqué le formulaire de commentaire (violation des règles de " +"sécurité)" + +#: 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 "" +"Ce formulaire de commentaire avait un paramètre cible invalide; " +"l'identifiant de l'objet était invalide" + +#: contrib/comments/views/comments.py:259 +#: contrib/comments/views/comments.py:324 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "" +"Le formulaire de commentaire ne proposait ni la prévisualisation ni l'envoi" + +#: contrib/comments/views/karma.py:21 +msgid "Anonymous users cannot vote" +msgstr "Les utilisateurs anonymes ne peuvent pas voter" + +#: contrib/comments/views/karma.py:25 +msgid "Invalid comment ID" +msgstr "Identifiant de commentaire invalide" + +#: contrib/comments/views/karma.py:27 +msgid "No voting for yourself" +msgstr "Impossible de voter pour soi-même" + +#: contrib/contenttypes/models.py:67 +msgid "python model class name" +msgstr "nom du module python" + +#: contrib/contenttypes/models.py:71 +msgid "content type" +msgstr "type de contenu" + +#: contrib/contenttypes/models.py:72 +msgid "content types" +msgstr "types de contenu" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Par exemple : '/a_propos/contact/'. Vérifiez la présence du caractère '/' en " +"début et en fin de chaine." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "titre" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contenu" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "autoriser les commentaires" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nom du template" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera " +"'flatfiles/default'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "enregistrement requis" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Si coché, seuls les utilisateurs connectés auront la possibilité de voir " +"cette page." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "page statique" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "pages statiques" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "e" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "er" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "d" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "e" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgstr "%(value).1f million" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgstr "%(value).1f milliard" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgstr "%(value).1f billion" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "un" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "deux" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "trois" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "quatre" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "cinq" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "six" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "sept" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "huit" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "neuf" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "aujourd'hui" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "demain" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "hier" + +#: contrib/localflavor/ar/forms.py:27 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Entrez un code postal au format NNNN ou ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:49 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 "Ce champ ne doit contenir que des nombres." + +#: contrib/localflavor/ar/forms.py:50 +msgid "This field requires 7 or 8 digits." +msgstr "Ce champ requiert au 7 ou 8 chiffres." + +#: contrib/localflavor/ar/forms.py:79 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" +"Entrez un numéro CUIT (format XX-XXXXXXXX-X ou XXXXXXXXXXXX)." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Invalid CUIT." +msgstr "CUIT invalide." + +#: contrib/localflavor/au/forms.py:16 msgid "Enter a 4 digit post code." msgstr "Entrez un code postal Australien (4 chiffres)." -#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 -#: contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/br/forms.py:21 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Entrez un code postal Brésilien (format XXXXX-XXX)." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Les numéros de téléphone doivent être au format 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 "" +"Sélectionnez un etat·brésilien valide. Cet etat ne fait pas partie de ceux " +"disponibles." + +#: contrib/localflavor/br/forms.py:94 +msgid "Invalid CPF number." +msgstr "Numéro CPF invalide." + +#: contrib/localflavor/br/forms.py:95 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Ce champ requiert au plus 11 chiffres ou 14 caractères." + +#: contrib/localflavor/br/forms.py:134 +msgid "Invalid CNPJ number." +msgstr "Numéro CNPJ invalide." + +#: contrib/localflavor/br/forms.py:136 +msgid "This field requires at least 14 digits" +msgstr "Ce champ requiert au minimum 14 chiffres." + +#: contrib/localflavor/ca/forms.py:17 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Entrez un code postal au format XXX XXX." + +#: contrib/localflavor/ca/forms.py:88 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "Entrez un numéro de sécurité sociale Canadien (format XXX-XXX-XXX)." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Argovie" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Rhodes-Intérieures" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Rhodes-Extérieures" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Bâle-Ville" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Bâle-Campagne" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Berne" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Genève" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glaris" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Grisons" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Lucerne" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchâtel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwald" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwald" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhouse" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Suisse" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Soleure" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "Saint Gall" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thuringe" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Tessin" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Valais" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zoug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zurich" + +#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12 +msgid "Enter a zip code in the format XXXX." +msgstr "Entrez un code postal Norvégien (format XXXX)." + +#: contrib/localflavor/ch/forms.py:64 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Entrez un numéro de passeport ou de carte d'identité valide au format " +"X1234567<0 ou 1234567890." + +#: contrib/localflavor/cl/forms.py:29 +msgid "Enter a valid Chilean RUT." +msgstr "Entrez un RUT Chilien valide." + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Entrez un RUT Chilien valide (format XX.XXX.XXX-X)." + +#: contrib/localflavor/cl/forms.py:31 +msgid "The Chilean RUT is not valid." +msgstr "Ce RUT chilien est invalide." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Bade-Wurtemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bavière" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandebourg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Brême" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hambourg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hess" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklembourg-Poméranie occidentale" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Basse Saxe" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Rhénanie-du-Nord-Westphalie" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rhénanie-Palatinat" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Sarre" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Saxe" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Saxe-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Thuringe" + +#: 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 "Entrez un code postal (format XXXXX)." -#: contrib/localflavor/jp/forms.py:21 +#: contrib/localflavor/de/forms.py:41 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Entrez un numéro de carte d'identité Allemand (format XXXXXXXXXXX-XXXXXXX-" +"XXXXXXX-X)." + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "Álava" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "Albacete" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "Alicante" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "Almería" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "Ávila" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "Badajoz" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "Îles Baléares" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "Barcelone" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "Burgos" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "Cáceres" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "Cadix" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "Castellón" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "Ciudad Real" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "Córdoba" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "La Corogne" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "Cuenca" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "Gérone" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "Grenade" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "Guadalajara" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Guipúzcoa" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "Huelva" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "Huesca" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "Jaén" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "León" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "Lérida" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "La Rioja" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "Lugo" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "Madrid" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "Málaga" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "Murcie" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "Navarre" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "Orense" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "Asturias" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "Palencia" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "Las Palmas" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "Pontevedra" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "Salamanca" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "Santa Cruz de Ténérife" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "Cantabrie" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "Ségovie" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "Séville" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "Soria" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "Tarragone" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "Teruel" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "Toledo" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "Valence" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "Valladolid" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "Biscaye" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "Zamora" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "Saragosse" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "Ceuta" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "Melilla" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "Andalousie" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "Aragon" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Principauté des Asturies" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "Îles Baléares" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "Pays basque" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "Îles Canaries" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "Castille-La Manche" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "Castille-et-León" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "Catalogne" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "Estrémadure" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "Galice" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "Murcie" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Navarre" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "Communauté valencienne" + +#: contrib/localflavor/es/forms.py:19 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Entrez un code postal dans la plage et au format 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:39 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "Entrez un numero de téléphone au format 6XXXXXXXX, 8XXXXXXXX ou " +"9XXXXXXXX." + +#: contrib/localflavor/es/forms.py:66 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Veuillez entrer une adresse NIF, NIE ou CIF valide." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF or NIE." +msgstr "Entrez un NIF ou NIE valide." + +#: contrib/localflavor/es/forms.py:68 +msgid "Invalid checksum for NIF." +msgstr "Mauvais checksum pour NIF." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIE." +msgstr "Mauvais checksum pour NIE." + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for CIF." +msgstr "Mauvais checksum pour CIF." + +#: contrib/localflavor/es/forms.py:142 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Veuillez entrer un numéro de compte bancaire valide au format XXXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:143 +msgid "Invalid checksum for bank account number." +msgstr "Mauvais checksum pour le numero de compte bancaire." + +#: contrib/localflavor/fi/forms.py:28 +msgid "Enter a valid Finnish social security number." +msgstr "Entrez un numéro de sécurité sociale Finlandais." + +#: contrib/localflavor/in_/forms.py:14 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Entrez un code postal au format XXXXXXX." + +#: contrib/localflavor/is_/forms.py:17 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Entrez un code postal islandais valide (format XXXXXX-XXXX)." + +#: contrib/localflavor/is_/forms.py:18 +msgid "The Icelandic identification number is not valid." +msgstr "Le numéro d'identification Islandais est invalide." + +#: contrib/localflavor/it/forms.py:14 +msgid "Enter a valid zip code." +msgstr "Entrez un code postal valide." + +#: contrib/localflavor/it/forms.py:43 +msgid "Enter a valid Social Security number." +msgstr "Entrez un numéro valide de Sécurité Sociale." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Entrez une TVA valide." + +#: contrib/localflavor/jp/forms.py:17 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." msgstr "Entrez un code postal Japonais (format XXXXXXX ou XXX-XXXX)." @@ -2398,335 +2493,1603 @@ msgstr "Kagoshima" msgid "Okinawa" msgstr "Okinawa" -#: contrib/localflavor/br/forms.py:18 -msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "Entrez un code postal Brésilien (format XXXXX-XXX)." +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "Aguascalientes" -#: contrib/localflavor/br/forms.py:30 -msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "Les numéros de téléphone doivent être au format XX-XXXX-XXXX." +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "Baja California" -#: contrib/localflavor/br/forms.py:72 -msgid "This field requires only numbers." -msgstr "Ce champ ne doit contenir que des nombres." +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "Baja California Sur" -#: contrib/localflavor/br/forms.py:74 -msgid "This field requires at most 11 digits or 14 characters." -msgstr "Ce champ requiert au plus 11 chiffres ou 14 caractères." +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "Campeche" -#: contrib/localflavor/br/forms.py:84 -msgid "Invalid CPF number." -msgstr "Numéro CPF invalide." +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "Chihuahua" -#: contrib/localflavor/br/forms.py:106 -msgid "This field requires at least 14 digits" -msgstr "Ce champ requiert au minimum 14 chiffres." +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "Chiapas" -#: contrib/localflavor/br/forms.py:116 -msgid "Invalid CNPJ number." -msgstr "Numéro CNPJ invalide." +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "Coahuila" -#: contrib/localflavor/de/de_states.py:5 -msgid "Baden-Wuerttemberg" -msgstr "Bade-Wurtemberg" +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "Colima" -#: contrib/localflavor/de/de_states.py:6 -msgid "Bavaria" -msgstr "Bavière" +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "District fédéral" -#: contrib/localflavor/de/de_states.py:7 -msgid "Berlin" -msgstr "Berlin" +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "Durango" -#: contrib/localflavor/de/de_states.py:8 -msgid "Brandenburg" -msgstr "Brandebourg" +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "Guerrero" -#: contrib/localflavor/de/de_states.py:9 -msgid "Bremen" -msgstr "Brême" +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "Guanajuato" -#: contrib/localflavor/de/de_states.py:10 -msgid "Hamburg" -msgstr "Hambourg" +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "Hidalgo" -#: contrib/localflavor/de/de_states.py:11 -msgid "Hessen" -msgstr "Hess" +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "Jalisco" -#: contrib/localflavor/de/de_states.py:12 -msgid "Mecklenburg-Western Pomerania" -msgstr "Mecklembourg-Poméranie occidentale" +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "État de Mexico" -#: contrib/localflavor/de/de_states.py:13 -msgid "Lower Saxony" -msgstr "Basse Saxe" +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "Michoacán" -#: contrib/localflavor/de/de_states.py:14 -msgid "North Rhine-Westphalia" -msgstr "Rhénanie-du-Nord-Westphalie" +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "Morelos" -#: contrib/localflavor/de/de_states.py:15 -msgid "Rhineland-Palatinate" -msgstr "Rhénanie-Palatinat" +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "Nayarit" -#: contrib/localflavor/de/de_states.py:16 -msgid "Saarland" -msgstr "Sarre" +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "Nuevo León" -#: contrib/localflavor/de/de_states.py:17 -msgid "Saxony" -msgstr "Saxe" +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "Oaxaca" -#: contrib/localflavor/de/de_states.py:18 -msgid "Saxony-Anhalt" -msgstr "Saxe-Anhalt" +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "Puebla" -#: contrib/localflavor/de/de_states.py:19 -msgid "Schleswig-Holstein" -msgstr "Schleswig-Holstein" +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "Querétaro" -#: contrib/localflavor/de/de_states.py:20 -msgid "Thuringia" -msgstr "Thuringe" +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "Quintana Roo" -#: contrib/localflavor/de/forms.py:60 -msgid "" -"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " -"format." -msgstr "" -"Entrez un numéro de carte d'identité Allemand (format XXXXXXXXXXX-XXXXXXX-" -"XXXXXXX-X)." +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "Sinaloa" -#: contrib/localflavor/it/forms.py:16 -msgid "Enter a valid zip code." +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "San Luis Potosí" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "Sonora" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "Tabasco" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "Tamaulipas" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "Tlaxcala" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "Veracruz" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "Yucatán" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "Zacatecas" + +#: contrib/localflavor/nl/forms.py:21 +msgid "Enter a valid postal code" msgstr "Entrez un code postal valide." -#: contrib/localflavor/it/forms.py:41 -msgid "Enter a valid Social Security number." -msgstr "Entrez un numéro valide de Sécurité Sociale." +#: contrib/localflavor/nl/forms.py:52 +msgid "Enter a valid phone number" +msgstr "Entrez un numero de telephone valide." -#: contrib/localflavor/it/forms.py:68 -msgid "Enter a valid VAT number." -msgstr "Entrez une TVA valide." +#: contrib/localflavor/nl/forms.py:78 +msgid "Enter a valid SoFi number" +msgstr "Entrez un numero SoFi valide." -#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18 -msgid "Enter a zip code in the format XXXX." -msgstr "Entrez un code postal Norvégien (format XXXX)." +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "Drenthe" -#: contrib/localflavor/no/forms.py:36 +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Flevoland" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Frise" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Gueldre" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Groningue" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Limbourg" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Brabant-du-Nord" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Hollande-du-Nord" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Overijssel" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Utrecht" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Zeeland" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Hollande-Méridionale" + +#: contrib/localflavor/no/forms.py:33 msgid "Enter a valid Norwegian social security number." msgstr "Entrez un numéro de sécurité sociale Norvégien." -#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 -msgid "Enter a valid Finnish social security number." -msgstr "Entrez un numéro de sécurité sociale Finlandais." +#: contrib/localflavor/pe/forms.py:24 +msgid "This field requires 8 digits." +msgstr "Ce champ requiert 8 chiffres." -#: contrib/localflavor/us/forms.py:18 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires 11 digits." +msgstr "Ce champ requiert 11 chiffres." + +#: contrib/localflavor/pl/forms.py:39 +msgid "National Identification Number consists of 11 digits." +msgstr "Le numéro national d'identification (NIN) comporte 11 chiffres." + +#: contrib/localflavor/pl/forms.py:40 +msgid "Wrong checksum for the National Identification Number." +msgstr "Mavais checksum pour le·\"National·Identification·Number\"." + +#: 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 "Entrez un code NIP (impots) au format XXX-XXX-XX-XX ou XX-XX-XXX-XXX." + +#: contrib/localflavor/pl/forms.py:73 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Mavais checksum pour le \"Tax·Number\"·(NIP)." + +#: contrib/localflavor/pl/forms.py:112 +msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +msgstr "Le \"National·Business·Register·Number\"·(REGON) comporte 7 ou 9 chiffres." + +#: contrib/localflavor/pl/forms.py:113 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "Mavais checksum pour le \"National·Business·Register·Number\"·(REGON)." + +#: contrib/localflavor/pl/forms.py:156 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Entrez un code postal au format XX-XXX." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Basse-Silésie" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Cujavie-Poméranie" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Łódź" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Petite-Pologne" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Mazovie " + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Basses-Carpates" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlachie" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Poméranie" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Silésie" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Varmie-Mazurie" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Grande-Pologne" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "Poméranie Occidentale" + +#: contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Entrez un code postal au format XXXXX ou XXX XX." + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banská Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banská Štiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Bánovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava·I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava·II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava·III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava·IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava·V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytča" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Čadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolný Kubín" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajská Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenné" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kežmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komárno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Košice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Košice·II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Košice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Košice·IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Košice–okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucké Nové Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoča" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovský Mikuláš" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lučenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Námestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nové Mesto nad Váhom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nové Zámky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizánske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piešťany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltár" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Považská Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Prešov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Púchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revúca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavská Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Rožňava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ružomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spišská Nová Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stará Ľubovňa" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidník" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Šaľa" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topoľčany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebišov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trenčín" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turčianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdošín" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Veľký Krtíš" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Topľou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlaté Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Žarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Žiar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Žilina" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Région de Banská Bystrica" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Région de Bratislava" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Région de Košice" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Prešov" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trenčín" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Žilina" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "Entrez un code postal valide." + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "Bedfordshire" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "Buckinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "Cheshire" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "Cornouailles et les îles Scilly" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "Cumbrie" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "Derbyshire" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "Devon" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "Dorset" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "Durham" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "Sussex de l'Est" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "Essex" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "Gloucestershire" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "Grand Londres" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "Grand Manchester" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "Hampshire" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "Hertfordshire" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "Kent" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "Lancastre" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "Leicestershire" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "Lincolnshire" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "Merseyside" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "Norfolk" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "Yorkshire du Nord" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "Northamptonshire" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "Northumberland" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "Nottinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "Oxfordshire" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "Shropshire" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "Somerset" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "Yorkshire du Su" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "Staffordshire" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "Suffolk" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "Surrey" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "Tyne et Wear" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "Warwickshire" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "Midlands de l'Ouest" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "Sussex de l'Ouest" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "Yorkshire de l'Ouest" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "Wiltshire" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "Worcestershire" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "Comté d'Antrim" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "Comté d'Armagh" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "Comté de Down" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "Comté de Fermanagh" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "Comté de Londonderry" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "Comté de Tyrone" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "Clwyd" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "Dyfed" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "Gwent" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "Gwynedd" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "Mid·Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "Powys" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "South Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "West Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "Borders" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "Centre" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "Dumfries and Galloway" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "Fife" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "Grampian" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "Highland" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "Lothian" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "Orcades" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "îles Shetland" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "Strathclyde" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "Tayside" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "Hébrides extérieures" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "Angleterre" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Irlande du Nord" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "Écosse" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "Pays de Galles" + +#: contrib/localflavor/us/forms.py:16 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Entrez un code postal Américain (format XXXXX ou XXXXX-XXXX)." -#: contrib/localflavor/us/forms.py:51 +#: contrib/localflavor/us/forms.py:54 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Entrez un numéro de sécurité sociale Américain (format XXX-XX-XXXX)." -#: contrib/localflavor/ch/ch_states.py:5 -msgid "Aargau" -msgstr "Argovie" +#: contrib/localflavor/za/forms.py:20 +msgid "Enter a valid South African ID number" +msgstr "Entrez un numero d'identification sud-africain valide." -#: contrib/localflavor/ch/ch_states.py:6 -msgid "Appenzell Innerrhoden" -msgstr "Appenzell Rhodes-Intérieures" +#: contrib/localflavor/za/forms.py:54 +msgid "Enter a valid South African postal code" +msgstr "Entrez un code postal sud-africain valide." -#: contrib/localflavor/ch/ch_states.py:7 -msgid "Appenzell Ausserrhoden" -msgstr "Appenzell Rhodes-Extérieures" +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "Cap-Oriental" -#: contrib/localflavor/ch/ch_states.py:8 -msgid "Basel-Stadt" -msgstr "Bâle-Ville" +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "État-Libre" -#: contrib/localflavor/ch/ch_states.py:9 -msgid "Basel-Land" -msgstr "Bâle-Campagne" +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "Gauteng" -#: contrib/localflavor/ch/ch_states.py:10 -msgid "Berne" -msgstr "Berne" +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "KwaZulu-Natal" -#: contrib/localflavor/ch/ch_states.py:11 -msgid "Fribourg" -msgstr "Fribourg" +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "Limpopo" -#: contrib/localflavor/ch/ch_states.py:12 -msgid "Geneva" -msgstr "Genève" +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "Mpumalanga" -#: contrib/localflavor/ch/ch_states.py:13 -msgid "Glarus" -msgstr "Glaris" +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "Cap-du-Nord" -#: contrib/localflavor/ch/ch_states.py:14 -msgid "Graubuenden" -msgstr "Grisons" +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "Nord-Ouest" -#: contrib/localflavor/ch/ch_states.py:15 -msgid "Jura" -msgstr "Jura" +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "Cap-Occidental" -#: contrib/localflavor/ch/ch_states.py:16 -msgid "Lucerne" -msgstr "Lucerne" +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redirigé depuis" -#: contrib/localflavor/ch/ch_states.py:17 -msgid "Neuchatel" -msgstr "Neuchâtel" - -#: contrib/localflavor/ch/ch_states.py:18 -msgid "Nidwalden" -msgstr "Nidwald" - -#: contrib/localflavor/ch/ch_states.py:19 -msgid "Obwalden" -msgstr "Obwald" - -#: contrib/localflavor/ch/ch_states.py:20 -msgid "Schaffhausen" -msgstr "Schaffhouse" - -#: contrib/localflavor/ch/ch_states.py:21 -msgid "Schwyz" -msgstr "Suisse" - -#: contrib/localflavor/ch/ch_states.py:22 -msgid "Solothurn" -msgstr "Soleure" - -#: contrib/localflavor/ch/ch_states.py:23 -msgid "St. Gallen" -msgstr "Saint Gall" - -#: contrib/localflavor/ch/ch_states.py:24 -msgid "Thurgau" -msgstr "Thuringe" - -#: contrib/localflavor/ch/ch_states.py:25 -msgid "Ticino" -msgstr "Tessin" - -#: contrib/localflavor/ch/ch_states.py:26 -msgid "Uri" -msgstr "Uri" - -#: contrib/localflavor/ch/ch_states.py:27 -msgid "Valais" -msgstr "Valais" - -#: contrib/localflavor/ch/ch_states.py:28 -msgid "Vaud" -msgstr "Vaud" - -#: contrib/localflavor/ch/ch_states.py:29 -msgid "Zug" -msgstr "Zoug" - -#: contrib/localflavor/ch/ch_states.py:30 -msgid "Zurich" -msgstr "Zurich" - -#: contrib/localflavor/ch/forms.py:90 +#: contrib/redirects/models.py:8 msgid "" -"Enter a valid Swiss identity or passport card number in X1234567<0 or " -"1234567890 format." +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." msgstr "" -"Entrez un numéro de passeport ou de carte d'identité valide au format " -"X1234567<0 ou 1234567890." +"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/" +"evenements/rechercher/'." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redirigé vers" + +#: contrib/redirects/models.py:10 msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "Entrez un code postal islandais valide (format XXXXXX-XXXX)." +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète " +"débutant par 'http://'." -#: contrib/localflavor/is_/forms.py:31 -msgid "The Icelandic identification number is not valid." -msgstr "Le numéro d'identification Islandais est invalide." +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redirige" -#: contrib/localflavor/cl/forms.py:22 -msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "Entrez un RUT Chilien valide (format XX.XXX.XXX-X)." +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redirige" -#: contrib/localflavor/cl/forms.py:27 -msgid "Enter valid a Chilean RUT" -msgstr "Entrez un RUT Chilien valide." - -#: contrib/sessions/models.py:68 +#: contrib/sessions/models.py:41 msgid "session key" msgstr "clé de session" -#: contrib/sessions/models.py:69 +#: contrib/sessions/models.py:42 msgid "session data" msgstr "données de session" -#: contrib/sessions/models.py:70 +#: contrib/sessions/models.py:43 msgid "expire date" msgstr "date d'expiration" -#: contrib/sessions/models.py:74 +#: contrib/sessions/models.py:48 msgid "session" msgstr "session" -#: contrib/sessions/models.py:75 +#: contrib/sessions/models.py:49 msgid "sessions" msgstr "sessions" -#: contrib/flatpages/models.py:8 +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "nom de domaine" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "nom à afficher" + +#: contrib/sites/models.py:37 +msgid "site" +msgstr "site" + +#: contrib/sites/models.py:38 +msgid "sites" +msgstr "sites" + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres et destirets bas _." + +#: core/validators.py:76 msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." msgstr "" -"Par exemple : '/a_propos/contact/'. Vérifiez la présence du caractère " -"'/' en début et en fin de chaine." +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _,des " +"traits d'union, et des '/'." -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "titre" +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _et " +"des traits d'union." -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "contenu" +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "Les lettres majuscules ne sont pas autorisées ici." -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "autoriser les commentaires" +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "Les lettres minuscules ne sont pas autorisées ici." -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nom du template" +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "Saisissez uniquement des chiffres séparés par des virgules." -#: contrib/flatpages/models.py:13 +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Entrez des adresses de courriel valides séparées par des virgules." + +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "Entrez une adresse IP valide." + +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "Vous ne pouvez pas laisser ce champ vide." + +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "Les caractères non numériques ne sont pas autorisés ici." + +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "Cette valeur ne peut pas être composé uniquement de chiffres." + +#: core/validators.py:128 newforms/fields.py:151 +msgid "Enter a whole number." +msgstr "Entrez un nombre entier." + +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "Seules les lettres de l'alphabet sont autorisées ici." + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "L'année doit être supérieure à 1900." + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "Date invalide : %s" + +#: core/validators.py:156 db/models/fields/__init__.py:522 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Entrez une date valide au format AAAA-MM-JJ." + +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "Entrez une heure valide au format HH:MM." + +#: core/validators.py:165 db/models/fields/__init__.py:599 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM." + +#: core/validators.py:170 newforms/fields.py:402 +msgid "Enter a valid e-mail address." +msgstr "Entrez une adresse de courriel valide." + +#: 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 "Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire." + +#: core/validators.py:193 newforms/fields.py:458 msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." msgstr "" -"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera " -"'flatfiles/default'." +"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une " +"image ou bien est corrompu." -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "enregistrement requis" +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "L'URL %s ne pointe pas vers une image valide." -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -"Si coché, seuls les utilisateurs connectés auront la possibilité de voir " -"cette page." +"Les numéros de téléphone doivent être au format XXX-XXX-XXXX. \"%s\" est " +"incorrect." -#: contrib/flatpages/models.py:19 -msgid "flat page" -msgstr "page statique" +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide." -#: contrib/flatpages/models.py:20 -msgid "flat pages" -msgstr "pages statiques" +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "Une URL valide est requise." + +#: core/validators.py:230 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Du HTML valide est requis. Les erreurs sont les suivantes :\n" +"%s" + +#: core/validators.py:237 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML mal formé : %s" + +#: core/validators.py:254 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL invalide : %s" + +#: core/validators.py:259 core/validators.py:261 +#, python-format +msgid "The URL %s is a broken link." +msgstr "L'URL %s est un lien cassé." + +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Entrez une abréviation d'État Américain valide." + +#: core/validators.py:281 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgstr "Attention à votre langage ! Le mot %s n'est pas autorisé ici." + +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Ce champ doit correspondre au champ '%s'." + +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "Veuillez saisir quelque chose dans au moins un des champs." + +#: core/validators.py:316 core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "" +"Veuillez renseigner les deux champs ou les laisser tous les deux vides." + +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s" + +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s" + +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "Les valeurs identiques ne sont pas autorisées." + +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Cette valeur doit être comprise entre %(lower)s et %(upper)s." + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "Cette valeur doit être au moins %s." + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "Cette valeur ne doit pas dépasser %s." + +#: core/validators.py:427 +#, python-format +msgid "This value must be a power of %s." +msgstr "Cette valeur doit être une puissance de %s." + +#: core/validators.py:437 +msgid "Please enter a valid decimal number." +msgstr "Veuillez saisir un nombre décimal valide." + +#: core/validators.py:444 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +"Please enter a valid decimal number with at most %s total digits." +msgstr "Veuillez saisir un nombre décimal valide avec au plus %s chiffre." +"Veuillez saisir un nombre décimal valide avec au plus %s chiffres." + +#: core/validators.py:447 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr "" +"Veuillez saisir un nombre décimal valide avec une partie entière de %s " +"chiffre au plus." +"Veuillez saisir un nombre décimal valide avec une partie entière de %s " +"chiffres au plus." + +#: core/validators.py:450 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +"Please enter a valid decimal number with at most %s decimal places." +msgstr "Veuillez saisir un nombre décimal valide avec au plus %s chiffre après la virgiule." +"Veuillez saisir un nombre décimal valide avec au plus %s chiffres après la virgiule." + +#: core/validators.py:458 +msgid "Please enter a valid floating point number." +msgstr "Veuillez entrer un nombre à virgule flottante valide." + +#: core/validators.py:467 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Vérifiez que le fichier transféré fait au moins %s octets." + +#: core/validators.py:468 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Vérifiez que le fichier transféré fait au plus %s octets." + +#: core/validators.py:485 +msgid "The format for this field is wrong." +msgstr "Le format de ce champ est mauvais." + +#: core/validators.py:500 +msgid "This field is invalid." +msgstr "Ce champ est invalide." + +#: core/validators.py:536 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Impossible de récupérer quoi que ce soit depuis %s." + +#: core/validators.py:539 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est " +"pas valide." + +#: core/validators.py:572 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Veuillez fermer le tag %(tag)s à la ligne %(line)s. (Ligne débutant par \"%" +"(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 "" +"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. " +"(Ligne débutant par \"%(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\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant " +"par \"%(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>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%" +"(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 "" +"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. " +"(Ligne débutant par \"%(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 "" +"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. " +"(Ligne débutant par \"%(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·de ce·%(type)s·existent déjà pour le %(field)s données." + +#: db/models/fields/__init__.py:52 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s avec le champ %(fieldname)s existe déjà." + +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:322 +#: db/models/fields/__init__.py:754 db/models/fields/__init__.py:765 +#: newforms/fields.py:45 oldforms/__init__.py:374 +msgid "This field is required." +msgstr "Ce champ est obligatoire." + +#: db/models/fields/__init__.py:422 +msgid "This value must be an integer." +msgstr "Cette valeur doit être un entier." + +#: db/models/fields/__init__.py:461 +msgid "This value must be either True or False." +msgstr "Cette valeur doit être soit Vraie soit Fausse." + +#: db/models/fields/__init__.py:485 +msgid "This field cannot be null." +msgstr "Ce champ ne peut pas être vide." + +#: db/models/fields/__init__.py:663 +msgid "This value must be a decimal number." +msgstr "Cette valeur doit être un nombre décimal." + +#: db/models/fields/__init__.py:774 +msgid "Enter a valid filename." +msgstr "Entrez un nom de fichier valide." + +#: db/models/fields/__init__.py:945 +msgid "This value must be either None, True or False." +msgstr "Cette valeur doit être Nulle, Vraie ou Fausse." + +#: db/models/fields/related.py:93 +#, python-format +msgid "Please enter a valid %s." +msgstr "Entrez un %s valide." + +#: db/models/fields/related.py:694 +msgid "Separate multiple IDs with commas." +msgstr "Séparez les ID par des virgules." + +#: db/models/fields/related.py:696 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Maintenez \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un Mac, " +"pour en sélectionner plusieurs." + +#: db/models/fields/related.py:743 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr "Entrez un ID %(self)s valide. La valeur %(value)r est invalide." +"Entrez des ID %(self)s valides. Les valeurs %(value)r sont invalides." + +#: newforms/fields.py:46 +msgid "Enter a valid value." +msgstr "Entrez une valeur valide." + +#: newforms/fields.py:123 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Assurez-vous que cette valeur fait moins de %(max)d caractères (il fait actuellement %(length)d caractères)." + +#: newforms/fields.py:124 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "Assurez-vous que cette valeur fait plus de %(min)d caractères (il fait actuellement %(length)d caractères)." + +#: 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 "Assurez-vous que cette valeur soit inférieure ou égale à %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 "Assurez-vous que cette valeur soit supérieure ou égale à %s." + +#: newforms/fields.py:180 newforms/fields.py:209 +msgid "Enter a number." +msgstr "Entrez un nombre." + +#: newforms/fields.py:212 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres au total." + +#: newforms/fields.py:213 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres après la virgule." + +#: newforms/fields.py:214 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres avant la virgule." + +#: newforms/fields.py:262 newforms/fields.py:723 +msgid "Enter a valid date." +msgstr "Entrez une date valide." + +#: newforms/fields.py:295 newforms/fields.py:724 +msgid "Enter a valid time." +msgstr "Entrez une heure valide." + +#: newforms/fields.py:334 +msgid "Enter a valid date/time." +msgstr "Entrez une date et une heure valides." + +#: newforms/fields.py:433 +msgid "No file was submitted." +msgstr "Aucun fichier n'a été soumis." + +#: newforms/fields.py:434 oldforms/__init__.py:689 +msgid "The submitted file is empty." +msgstr "Le fichier soumis est vide." + +#: newforms/fields.py:496 +msgid "Enter a valid URL." +msgstr "Entrez une URL valide." + +#: newforms/fields.py:497 +msgid "This URL appears to be a broken link." +msgstr "Cette URL semble être cassée." + +#: newforms/fields.py:559 newforms/models.py:300 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux " +"disponibles." + +#: newforms/fields.py:598 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Sélectionnez un choix valide. %(value)s n'en fait pas partie." + +#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:360 +msgid "Enter a list of values." +msgstr "Entrez une liste de valeurs." + +#: newforms/fields.py:752 +msgid "Enter a valid IPv4 address." +msgstr "Entrez une adresse IPv4 valide." + +#: newforms/models.py:361 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Sélectionnez un choix valide; %s n'en fait pas partie." + +#: oldforms/__init__.py:409 +#, python-format +msgid "Ensure your text is less than %s character." +msgstr "Assurez-vous que votre texte fait moins de %s caractère." + +#: oldforms/__init__.py:414 +msgid "Line breaks are not allowed here." +msgstr "Les retours à la ligne ne sont pas autorisés ici." + +#: 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 "Sélectionnez un choix valide ; '%(data)s' n'est pas dans %(choices)s." + +#: oldforms/__init__.py:745 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Entrez un nombre entier entre -32 768 et 32 767." + +#: oldforms/__init__.py:755 +msgid "Enter a positive number." +msgstr "Entrez un nombre entier positif." + +#: oldforms/__init__.py:765 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Entrez un nombre entier entre 0 et 32 767." + +#: template/defaultfilters.py:695 +msgid "yes,no,maybe" +msgstr "oui, non, peut-être" + +#: template/defaultfilters.py:726 +#, python-format +msgid "%(size)d byte" +msgstr "%(size)d octet" + +#: template/defaultfilters.py:728 +#, python-format +msgid "%.1f KB" +msgstr "%.1f Ko" + +#: template/defaultfilters.py:730 +#, python-format +msgid "%.1f MB" +msgstr "%.1f Mo" + +#: template/defaultfilters.py:731 +#, python-format +msgid "%.1f GB" +msgstr "%.1f Go" + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "après-midi" + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "matin" + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "Matin" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "Après-midi" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "minuit" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "midi" #: utils/dates.py:6 msgid "Monday" @@ -2908,126 +4271,91 @@ msgstr "Nov." msgid "Dec." msgstr "Déc." -#: utils/timesince.py:12 +#: utils/text.py:127 +msgid "or" +msgstr "ou" + +#: utils/timesince.py:21 msgid "year" -msgid_plural "years" -msgstr[0] "année" -msgstr[1] "années" +msgstr "année" -#: utils/timesince.py:13 +#: utils/timesince.py:22 msgid "month" -msgid_plural "months" -msgstr[0] "mois" -msgstr[1] "mois" +msgstr "mois" -#: utils/timesince.py:14 +#: utils/timesince.py:23 msgid "week" -msgid_plural "weeks" -msgstr[0] "semaine" -msgstr[1] "semaines" +msgstr "semaine" -#: utils/timesince.py:15 +#: utils/timesince.py:24 msgid "day" -msgid_plural "days" -msgstr[0] "journée" -msgstr[1] "jours" +msgstr "journée" -#: utils/timesince.py:16 +#: utils/timesince.py:25 msgid "hour" -msgid_plural "hours" -msgstr[0] "heure" -msgstr[1] "heures" +msgstr "heure" -#: utils/timesince.py:17 +#: utils/timesince.py:26 msgid "minute" -msgid_plural "minutes" -msgstr[0] "minute" -msgstr[1] "minutes" +msgstr "minute" -#: utils/timesince.py:40 -#, python-format -msgid "%d milliseconds" -msgstr "%d millisecondes" +#: utils/timesince.py:46 +msgid "minutes" +msgstr "minutes" -#: utils/timesince.py:41 +#: utils/timesince.py:51 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" -#: utils/timesince.py:47 +#: utils/timesince.py:57 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/dateformat.py:41 -msgid "p.m." -msgstr "après-midi" - -#: utils/dateformat.py:42 -msgid "a.m." -msgstr "matin" - -#: utils/dateformat.py:47 -msgid "PM" -msgstr "Matin" - -#: utils/dateformat.py:48 -msgid "AM" -msgstr "Après-midi" - -#: utils/dateformat.py:97 -msgid "midnight" -msgstr "minuit" - -#: utils/dateformat.py:99 -msgid "noon" -msgstr "midi" - -#: utils/translation/trans_real.py:391 +#: utils/translation/trans_real.py:403 msgid "DATE_FORMAT" msgstr "j F Y" -#: utils/translation/trans_real.py:392 +#: utils/translation/trans_real.py:404 msgid "DATETIME_FORMAT" msgstr "j F Y, G:i" -#: utils/translation/trans_real.py:393 +#: utils/translation/trans_real.py:405 msgid "TIME_FORMAT" msgstr "G:i:s" -#: utils/translation/trans_real.py:409 +#: utils/translation/trans_real.py:421 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:410 +#: utils/translation/trans_real.py:422 msgid "MONTH_DAY_FORMAT" msgstr "j F" -#: template/defaultfilters.py:485 -msgid "yes,no,maybe" -msgstr "oui, non, peut-être" - -#: template/defaultfilters.py:514 +#: views/generic/create_update.py:43 #, python-format -msgid "%(size)d byte" -msgid_plural "%(size)d bytes" -msgstr[0] "%(size)d octet" -msgstr[1] "%(size)d octets" +msgid "The %(verbose_name)s was created successfully." +msgstr "L'objet %(verbose_name)s a été créé avec succès." -#: template/defaultfilters.py:516 +#: views/generic/create_update.py:117 #, python-format -msgid "%.1f KB" -msgstr "%.1f Ko" +msgid "The %(verbose_name)s was updated successfully." +msgstr "L'objet %(verbose_name)s a été mis à jour avec succès." -#: template/defaultfilters.py:518 +#: views/generic/create_update.py:184 #, python-format -msgid "%.1f MB" -msgstr "%.1f Mo" +msgid "The %(verbose_name)s was deleted." +msgstr "L'objet %(verbose_name)s a été supprimé." -#: template/defaultfilters.py:519 -#, python-format -msgid "%.1f GB" -msgstr "%.1f Go" +#~ msgid "" +#~ "Enter a postcode. A space is required between the two postcode parts." +#~ msgstr "" +#~ "Entrez un code postal Anglais. Un espace est requis entre les deux " +#~ "parties." + +#~ msgid "%d milliseconds" +#~ msgstr "%d millisecondes" #~ msgid "AnonymousUser" #~ msgstr "Anonyme" @@ -3035,24 +4363,6 @@ msgstr "%.1f Go" #~ msgid "One or more %(fieldname)s in %(name)s :" #~ msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :" -#~ msgid "Separate multiple IDs with commas." -#~ msgstr "Séparez les ID par des virgules." - -#~ msgid "Added %s." -#~ msgstr "Ajouté %s." - -#~ msgid "Changed %s." -#~ msgstr "Modifié %s." - -#~ msgid "Deleted %s." -#~ msgstr "Supprimé %s." - -#~ msgid "Ordering" -#~ msgstr "Tri" - -#~ msgid "Order:" -#~ msgstr "Ordre :" - #~ msgid "%dth" #~ msgstr "%de" diff --git a/django/conf/locale/fr/LC_MESSAGES/djangojs.mo b/django/conf/locale/fr/LC_MESSAGES/djangojs.mo index 44f04e3b7e5f0a4e198a194e714c554ee9eb23b3..33e508761f3a5f412af1c32388740390b257c2ca 100644 GIT binary patch delta 198 zcmZqS`OQ7yOuZK)1A`4S0|N^K14BEIUFZGbQy>k}{|QKk1L>, 2005. # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 16:39+0100\n" "PO-Revision-Date: 2005-12-24 16:39+0100\n" diff --git a/django/conf/locale/ga/LC_MESSAGES/django.mo b/django/conf/locale/ga/LC_MESSAGES/django.mo index 5699e583f1780aa2316f9dfbd797c44b27396bce..de4efd3abedbe0910bfa6c1de43054cc92c9c8b7 100644 GIT binary patch delta 14 VcmX@5bV_N18V{q(W_2EARsbe}1P%ZI delta 14 VcmX@5bV_N18V_U2W_2EARsbhK1TFvo diff --git a/django/conf/locale/ga/LC_MESSAGES/django.po b/django/conf/locale/ga/LC_MESSAGES/django.po index d74fa9e1d3..6c9b556a7e 100644 --- a/django/conf/locale/ga/LC_MESSAGES/django.po +++ b/django/conf/locale/ga/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-01-23 11:04+0000\n" "PO-Revision-Date: 2008-01-23 11:42+0100\n" diff --git a/django/conf/locale/ga/LC_MESSAGES/djangojs.mo b/django/conf/locale/ga/LC_MESSAGES/djangojs.mo index 304bba542fe5c497fee6fc366ad61e530c314420..ba93d354d12280f5f17ae831ca9c43206d3418d3 100644 GIT binary patch delta 214 zcmXZWtqKBB5XJFxcir`4ufb@rT1;Y43}Wy_Op0NB1e@6^7)3A{7PF=ehJ66BSvLzd z{}(SD_%UZ-n1{{n?zI^iX&Xwhq+3O*VvY$GSi`6Hjh4B@7JjjbN%ZgANTn{iJ3U|lX)EOCqvKG|V}+@QV#>hW|cBDs|A^>ERkj z#XdozOQ8)lQ$%s4aEI;~V}>=%af}}%8uF!kXo7B@+mq+{(Q>ocu6FG~w{Mf+?Ee4@ CP#UEG diff --git a/django/conf/locale/ga/LC_MESSAGES/djangojs.po b/django/conf/locale/ga/LC_MESSAGES/djangojs.po index b679c8deea..0b935f1eac 100644 --- a/django/conf/locale/ga/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/ga/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-09-14 12:33+0100\n" "PO-Revision-Date: 2008-01-23 11:04+0100\n" diff --git a/django/conf/locale/gl/LC_MESSAGES/django.mo b/django/conf/locale/gl/LC_MESSAGES/django.mo index ae0783f43de10508dd209c001d3f4fc41ca37b34..491d161b5f3f146fe1752b228911983a6cf2cec1 100644 GIT binary patch delta 16 XcmbQ(hXh!HrED@ delta 16 XcmbQ, 2005. # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2005-07-02 13:25+0200\n" diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo index 9f4e1245276daccae2f7855771f81bfebb1cfe7a..9aca2b263b30108e3530ca6009620cd17244bbe9 100644 GIT binary patch delta 6318 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 G5q|?b31Wi) delta 6324 zcmXZgdwkDjAII^_VeDu#vkg13%rKgn*<=oja#%OF(?oVV)v$-Vx+gi5@9hw#?t3y) zsZnT=PQ)hMbSEu2m9vnM?A9C;?&$D(yRN^U*XR0vzt{D-KG*gA{`T1Fs#xq>+_8PmuZ^YFionTVtC3EYp-m{w$rFAl;6I0Ad()0lx}*c`86Q;b+> zOb5(xK8d<-HP*%N7aH$g;qAk47eq^{A3u#X!7`+6tc~)>za;8K?mUV*>sIwKcDy zo-4x$+=-g_Br4IXs0#jpN-XjfyFf3VMkpPvFdj3p4UTgCMHoi>wzJH+$64vTiAp$N zsZFps>a1j;ChUuiaR{o?Potk<|DSgk=AmwU8?{I8qYlv)ROY9!A>Kqy6!@wgC;_$d z6nq}LA_JRk*a5#pP52vzqu*<`LUEYL{3e}-1{{T&cska{LezuH&<9K1_4nQNEf`1t zUeuOcMy)X5b^Ck*>iKlk*7iUxFdMay9L3CUCeqLfrr=(D0rPR-GRlVA@l6bP!Usx^#%|aSbJ5d{3u$PNOHmJO#dQ1@Q!t>!R-g;E zB<_KF?(f(OU%*FkA9ljT<;D!hF*pXd;{zDK!k8}jH!Q@G71Uo7B)(-o9K&%a@l0%l zC-6SJf!(mt+s53F!!Q{aU{~CN58@phh+S9Ogo<$x@g-D3S*wicjwLt-&#dx{X-%WY zYTikF3VY%{)aw=Yj;+K4s4ba85bTTFqFGiJi8!GWD*bT$pwf%!piO<6p zSnknCqHzZGK+qaHPzp999*%K119g2lYT})kiZ$2T>m5-!FqTDIcuJ&^`U)z8X>Q!NkbjN{pgG5Q4?Nv@g39vwLh{GH9%dD!4PbX zO|dijV=n3}jYmB<8+HF8^wayloQ5V`gPL$V>cI-Eg9lMx$P=g)Ttcm^#>aNTaMXY; zP|u~hxGU=ZY}7a-F$D9RQ?MTMn?g14RUC<>7=*s-?SSFfn7AowqRy!6yF4unm zwYR5G3Ex7E6Sm13?@V!a$8fIqcX8e(>aPhW)1gB%54Dmt7=xc+7#_q1SmmzY#Q@^E zWp<(lm`L0VW3ewP(R|c+&!EQnr;C?h1n~-whW4f$qj7M#-J1eTCN4r%UW}_0Fjrw4Hg1Y~x^E5UjK95S|j?;I`z41KLkcI|~Lmis?u@k1-8%zNzp&6*H zDn<>o%3c2$wKZF@HXcBog~OK{a%-hQaW@=z<9g!Qoy)xQii(Yx3Sx8f-D`OGGo_ZjtnoQ^4U z6yRx`i39#?OMM7i5?{lwvB~EgEWCiFxP7Pndm!%%`)jxqhtaAM=%cE)#XV7b@Xg)Hw4| z6MSm`gM6Ea<<8T3L58p!#upJxWJ{MPEEb%SW^AUUO zZ%H$3Oq`6cVR9j?d3D9-~ShF!<L_Z3S5VL0M!gkgzfG(@YJsshN$-Cb8X9;5w#FT(0jn_xe@6`*c)+gcKGaIP zqMqx6A((?t;W&Ha|-4r!$7mQ$jlTD)yj>QmMgi2r~YNCzK9axX} zYt-R6f!c~|=z{?VZ9?@?&&QxDk&LQj25O!H%)__PdzOaZA^QQEiDQY&F%_c^+x`Kl z2@6pbT7f!@doT$vVmd|~v43{=$L_>yQR7r&A~rp06X}B!iRT=p{w-)+r$YlaKE_`+ zn2z`3GdLSpqcU%K-2TYqU=Hy#Y=_@sH>`bvR}_0q5fA=HEYPy>!c9in{Hjn6w5U^4Mi)M2bZO>h(=@I31N->@P2 zpR?n|Ia^~B`qMC6@BaWAp>&ML415l2;U0rxKT-5|2D@ zzkuISb{{mE^iS2-HML zsQWsiD)tEK`6o~bO~fFain@Ou>i$Kp|6Lbv!gTugcr#9*A_;`!)D{4%QK%TVw8M%1|9pbqf`WL(cw)6hUaqgHy?UNC-FZAn8=nMOHN zQ3Ge=z0x};q6VIXnrJF2(IV&TsPR{$?pu%d{{L4-L!~_9yzIQ|^uK1WM>-Rnsm?6a zME#w^UH=mpO#dX*#B)%Iy^Q)*EJa_v|0ijv)aOwv`ajk~bKU+EDj4;ir(q~QhWAR3 zx_=5P0nha>aB(r}ER;AmqYv>RRAML4(}NdjB;zlrIN@h&JJdv-Q4{ra{n^eO)ZUK9 zSe${{suI)$n@|hcg&}wtRe>Mf^}9c_o=`dhZ`cWAu|{!aazydfAL}qy>TeH&FT? zkOrv}V18jlgB@7IQ=otdP~aVqb_LSR tKv|FiPaxq0qyvC7$l%FP@i{;mNXEHJ}vAJX==B4LvUdGJF3;=4l86N-u delta 220 zcmZ3-yM=ecoq8=s28K3f1_mAm28N9+3=CXAdLNMH2ht~jG%t|82^D`1qy>TePf(hL z6{1cINQ1=HfHVh?wt&)(K)M;o_k!}z0cnsu*MT$}kbc6-U=`bJ-GI%Cbd=ZcaIdtXbnT(7~JSka;dFlCC#R`Uc2AdZ!^DzSeva%Xn diff --git a/django/conf/locale/he/LC_MESSAGES/djangojs.po b/django/conf/locale/he/LC_MESSAGES/djangojs.po index 0f94f2ef09..cc68885195 100644 --- a/django/conf/locale/he/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/he/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ # msgid "" msgstr "" -"Project-Id-Version: djangojs 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-05-06 13:08+0300\n" "PO-Revision-Date: 2007-05-06 13:08+0300\n" diff --git a/django/conf/locale/hr/LC_MESSAGES/django.mo b/django/conf/locale/hr/LC_MESSAGES/django.mo index 1a32d1636e4cbdb2a9f21840518c31dff7d5822f..adbbfa1d7d78bb836cbed22b2b3c61cbd4d85049 100644 GIT binary patch delta 16 YcmX@|gYn1@#tnXcj4qq~{l4k~07dQxegFUf delta 16 YcmX@|gYn1@#tnXcj47M_{l4k~07k9{o&W#< diff --git a/django/conf/locale/hr/LC_MESSAGES/django.po b/django/conf/locale/hr/LC_MESSAGES/django.po index a42a689c1f..84128bad68 100644 --- a/django/conf/locale/hr/LC_MESSAGES/django.po +++ b/django/conf/locale/hr/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-01-06 16:24+0100\n" "PO-Revision-Date: 2008-01-05 00:42+0100\n" diff --git a/django/conf/locale/hr/LC_MESSAGES/djangojs.mo b/django/conf/locale/hr/LC_MESSAGES/djangojs.mo index 62fe73b6051ed71b35768068433ee768a4d47532..c4b71f0fa2868deee1acf54d05371d8c3ea3c25d 100644 GIT binary patch delta 214 zcmX@kbChSoo%&El28K3f1_llW28KH<3=FJ5`YDj+2GXyAG)VkAlmFbK!L+RS{g`S v0@5Ih-vMbWApIRk0}+D}&=e4D0i;0&+HIc6$jHRzl9ia3p1*k!^HL@Nj4&7P delta 216 zcmX@gbDU?wo%(P_28K3f1_llW28Meq3=FJ5`Zlx6}-3Ih4uKpG@3 z3#B!ov?-7V8pYrUq=AUR6-XoiX>TCS2Bg$;imWk&=~|m!6+hymV!Z diff --git a/django/conf/locale/hu/LC_MESSAGES/django.po b/django/conf/locale/hu/LC_MESSAGES/django.po index a00ed9c6cf..2f1d10a0a1 100644 --- a/django/conf/locale/hu/LC_MESSAGES/django.po +++ b/django/conf/locale/hu/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-08-21 02:23+0200\n" "PO-Revision-Date: 2007-08-21 02:28+0200\n" diff --git a/django/conf/locale/hu/LC_MESSAGES/djangojs.mo b/django/conf/locale/hu/LC_MESSAGES/djangojs.mo index c481ba2e19418789de04f03662a61a27bf2d6a20..e5389840ccf8ae258309734b6606263821297f37 100644 GIT binary patch delta 198 zcmaFC^NeT0nfe|^1_m2u1_oXR28NR?3=G^r`Z|yX@gDT3D4+urcnhSh nfV31F0|OI~4h7Oc#1H|c<2P3_UT0);$x6&i&)*!uEWiu^CVv;C delta 200 zcmaFH^MYr>nfg9P1_m2u1_oXR28Pot3=G^r`X-PD@t*=|b|C#3O8*AZqCh?~D+7Zd zkd_3}{6Jb8%C`p6KqU;mKspmh2LWl2{yk9fBT)Jzkmdu5pJQdv0~>S~D4+urcn_ql pfV2!70|OI~4hPae#1I9g6E{~fUT5S;$x6&i&(A8}9L6lb3;=A^7|j3x diff --git a/django/conf/locale/hu/LC_MESSAGES/djangojs.po b/django/conf/locale/hu/LC_MESSAGES/djangojs.po index 186902ecdc..26f0232f2e 100644 --- a/django/conf/locale/hu/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/hu/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2007-09-13 13:30+0200\n" diff --git a/django/conf/locale/is/LC_MESSAGES/django.mo b/django/conf/locale/is/LC_MESSAGES/django.mo index f54ca63c69925b64f97185831f0128aff9c5e105..1a95aad2fb159dfa39cf5aee9401afcf54b0b1e3 100644 GIT binary patch delta 4330 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 S`sL}qQAzQM$C8#-XZ`^gsgzOx diff --git a/django/conf/locale/is/LC_MESSAGES/django.po b/django/conf/locale/is/LC_MESSAGES/django.po index 92a05846b0..82cfa6741e 100644 --- a/django/conf/locale/is/LC_MESSAGES/django.po +++ b/django/conf/locale/is/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-01-18 15:00+0000\n" "PO-Revision-Date: 2008-01-18 17:16+0100\n" diff --git a/django/conf/locale/is/LC_MESSAGES/djangojs.mo b/django/conf/locale/is/LC_MESSAGES/djangojs.mo index 55a333b5a5f525b09d422db9e7ff2ee09f7a4eb9..1a11690ab65f068eb6f0eca63cf57efadfcf3e45 100644 GIT binary patch delta 191 zcmXZUAr8V&5QO1*lmdkpBo2u|kW|ApaBz@ks@SQ!|2fHXgl2ALxRq+@}!GLQzTYXs6Db9#U@5HU=FiqB$Y&|}~O3M>T*r~>IN qKsppi-vZJggA9NKCy+J=(jWsIH&-&=Wn{}LR&Wjr-WIJ{AWw delta 16 XcmZpj!`wQDdBfKl#+1$9YWM>IKGp|R diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po index 86356ddabf..0020b0d3f7 100644 --- a/django/conf/locale/it/LC_MESSAGES/django.po +++ b/django/conf/locale/it/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # This file is distributed under the same license as the Django package. msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-02 18:31+0100\n" "PO-Revision-Date: 2008-03-02 11:40+0100\n" diff --git a/django/conf/locale/it/LC_MESSAGES/djangojs.mo b/django/conf/locale/it/LC_MESSAGES/djangojs.mo index 49620a7942f646510e60c65bcfb71cb666dd2ce3..21a0b5f7ec1ce8b362f64f08584ea6800929707c 100644 GIT binary patch delta 214 zcmaFL^O$GCo%%3F28K3f1_oXR28O#V3=AAV`ZbW|1JYlBG#8L&W@TVt2hw~%S^!9k z0cjo}tq!C)fwT#b2C26L(jfi5P&y1q#{&8BKpJGuULeg4q)z~8HXwb4mB9{d@NJ*~ z$N`Umv^0?Z2vxufRAmd~ivVe$TNr|XG)QAOlpnWwCL<#gn@d(=UV8rKMa+kp0AGX` AJOBUy delta 216 zcmaFN^OR@8o%#qy28K3f1_oXR28R1A3=AAV`Yn*=1Jd7sG#8L&Wo2Ms2hsvSS^!8( z0BIf|tqG(#fwUQr2B~)d(jfi*P&xug#{&6@KpJGuejv>aq)!29HXwbCmB9{d@Liw) z$N^7*v^0?Z3{}7nRAmd~ivek%TNpxsG)QA4l%KG9CL<#gM@m*=UV463@#Y20hnWDT CG8kz9 diff --git a/django/conf/locale/it/LC_MESSAGES/djangojs.po b/django/conf/locale/it/LC_MESSAGES/djangojs.po index 7c8d438855..6c32d849d0 100644 --- a/django/conf/locale/it/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/it/LC_MESSAGES/djangojs.po @@ -3,11 +3,9 @@ # Copyright (C) 2006 the Lawrence Journal-World # This file is distributed under the same license as the Django package. # -# Carlo C8E Miron , 2006. -# Nicola 'tekNico' Larosa , 2007. msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-02-26 20:46+0100\n" "PO-Revision-Date: 2007-02-26 20:55+0100\n" diff --git a/django/conf/locale/ja/LC_MESSAGES/django.mo b/django/conf/locale/ja/LC_MESSAGES/django.mo index 47779f17bf11494a4c20438abab2d4e83af2a61b..db9ad3df17abde67942121fdc0af184b72fec1b0 100644 GIT binary patch delta 7846 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 diff --git a/django/conf/locale/ja/LC_MESSAGES/django.po b/django/conf/locale/ja/LC_MESSAGES/django.po index 5e78809bdf..839c452816 100644 --- a/django/conf/locale/ja/LC_MESSAGES/django.po +++ b/django/conf/locale/ja/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-31 21:26+0900\n" "PO-Revision-Date: 2006-05-18 00:28+0900\n" diff --git a/django/conf/locale/ja/LC_MESSAGES/djangojs.mo b/django/conf/locale/ja/LC_MESSAGES/djangojs.mo index 45a4ff9f67b56a15720d178ff2b181720754aff9..6abe6ead2ec4657223b592cbe42ef2a64c667266 100644 GIT binary patch delta 207 zcmX@evzKSWoqBgh28K3f1_mAm28MGi3=C{Q`Zkc}2hxwA^d~6I#0n7?0@5J$NqBX?%`+LG?3m8q$Pm# oZK#4TK-vJv{|)8q02PDO8$)TU%`+Lh($ diff --git a/django/conf/locale/ja/LC_MESSAGES/djangojs.po b/django/conf/locale/ja/LC_MESSAGES/djangojs.po index d35b88aa73..fb84fa53e2 100644 --- a/django/conf/locale/ja/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/ja/LC_MESSAGES/djangojs.po @@ -4,7 +4,7 @@ # makoto tsuyuki , 2005. msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-26 23:41+0900\n" "PO-Revision-Date: 2006-05-08 13:39+0900\n" diff --git a/django/conf/locale/ka/LC_MESSAGES/django.mo b/django/conf/locale/ka/LC_MESSAGES/django.mo index 3ef5b610f404a7c964980f34222cd175b33b17d8..0b611080d0070a8cdb6a8877af28b8451789a424 100644 GIT binary patch delta 4257 zcmXZed0bXi8o=@ARlwz=VHk;Nh$4zhvZ(01#-c!ig(hYesj-;20l7p>%3MnkEFHyR zTtION$F&9}HLSF>BpR7glQcCo!vz;G88va7`8}Nb*Y`Z<-1nU4Z1=tkmbyGx;!?V> zo#k|h{Pu>(Mi-GTsUm$uGpCMLL#c?Vo&`^tE81trxFXrM6+<{YY^-Pgo=$Iwa3HzWI4#)18 zh~Aikp;&@`_$#_&%h@8`&6`G8}#F=l248m<# zgcq?jW@nn`^YA(1Vmq!uO{fty;iujf>5Cz#{iRqG^nsPA5A3nyW2lML+i~+OvL)_j zI}!bf3sE~djP3C*>Q=S>vq%dP?~Mt>!S9H4#-*swZ%5rK>l}q?6x`>UMBYJta1Ck# zd$AQ(qAQ-TPnr*PFRafz!JA?vxfoLnT8n5 zCi6FN3Gt=BFetvsR%KBiHD6>P@fYu!Lw5&t@1K3o9JVAJO1v34PI3ixg~u&m*)bEn z@FSee_;Q3o3Kh>R6yX9$K5B-4peEp%BeEDbVIKBfBytt^*cRuKFmW!8REaAOr;z9p z98Fx$RmsO;ABY6tj~Ih4bRNg}5=ViXCPf&CEjXH*&|nP5wa6~XS$q-4{nfN@#dzX2 z%S6WF>!>r_gCp?|$Oqm!&GuBd!Qp#XcY5ZR3f@q3*0H?wEMXw(&n zLsna+;sCsk{^;{}b5>$)$KyCwAOp3%Vx`%VdeoT*uOeaE=dNP?buW&sHixVhb)W{@ zc5BQb>x)`H4Bc@e>hIF+_FUU_wq>}U_Da+QrWTrhR-m4Rt+o|~tp8mqE>jVK=ZZv< z$jp1K8EF1GW=H*U48>g-fOV)HbtyK9grT19ap;N3c6}Cl5a;7oEWt*MBRj2+wKkX^ zjJKU-n}<5XVtgIRbU zGePTjyU=X2c@KEt1Rlsn-K#UG_rLo;%z*u{AMtSX#Z1)pLX5-`d=9T-1qN*48N7$7 zn9ec;V>No~{cp8Rq%9Txs51&dUCL3Yd!B$z17RX@Ax^k@F{i`kI#%p2uh``o^4@i|9>UhkETEJ7TVBchm_aqrRx}QMdRA z4#qlU7sS89G6SFDsD@I}{#%prXw;6=u(N}AITjLcs}wm&9QB=<`BO*DE$NRs^Lglw zi%=6$pPwJ79LQHKfmb`>8UJdQu%(SMr(O1|gE#5Yk7XEFN_gS8ll z{g0VzHwk+Z@4#3*fh+Lo~)=#ys8mf>9Lf5EAk zP|a7375EyHh@U)Vp36eIkP6i2icXsqbN!i5IL~ju*Qj53*8GLLfFXMSTXQGgqG2e` z!+oeT9Po=dEc4Ni_=-wLZO`)zasLZu53geZanVIH!@yt7*KQq-q5c8BiX$(X7tmJJ zMB4qPUrqLZ28CoQ4k42lzZ(A0;sf+xz-yPy;dyw)?6Kcfb4CJC_xyQmjbpJ5CSnk# z+3oAG6Y)0m#BXpop3!>77vF2YVCu$;b7>6&R&S;bEP8>wM7ya-S>e4@P&#Z7DYJc&l{ZGHg`s;uNR5HIe%`2%B+-wO=P{{Z!QcW}^q@qMnsPi-JD5 z1$BUG?1K++0s22M5AH-wupA?>0o`$6quIJ>^df!@yWkx3#sch$Wp?{X)C6y#CT8_` zXbOS0PSlx2p(d7w+TmK%0Y67g@F;4+_fb3Y{;$y=b--Zs#FwxmPD7pXLe!PW#~{7` zn<;2UKiLiLkIWMJqW&Pnjw4YAdKrB%5j)|#w(C$2Svl%+7f^p+i+X16p)UO++sFT> zD`s(}D3FPSVk~B$c3f_I()PA(TX8hC_p*()O|s3#XZZaZ)cz_k5+8Rsq(6>DjThr9 z7KJJbx_3RAIhvL{9CZfis7s!OnqVI4((gxI+RJwPL)$jZO?_w7-vwg?4ns|30k*{| z)PBxj)BSJZ;%Hi`1k{dG?Ks=^ebj_jp}vSVVkjO#or#O9iDOW=auMoB=m2)X%eHQA lj;6EF1A9>);pT8_%5+-UH6QnAx2S1J>8TlIEhf*~@PE*$|Cj&( delta 4266 zcmXZedtBGm8Nl)9r=Zg^6kjBUqDCf&ig-m7f&BzUf&?cyZ=vK}(^SB`>?>0#^9Hm` zG4le7#c+6QX{HP-U9&KjZZnfKbz)8}2=G?>Je>2_`#k4+e&;;r_Wl0uuk%>B-lKF? zYsc*pxjI#3r-w-3bdg{Y`FyrWG1lP@+%-p}6T0V${07tT4V;6iSdSxc?8_pdxD(^> zpXkPp^GrM$+YuLAPtFskvEmylCi0*LhhoxvkpRrWTX+a(;LcY>g0STR5kKsQzBme> z!I|if8!!S(uq*z6Uf5=#$kW&b*W<8-j>))^ifAf47KwOcEc)Q@(Tf$Dhkb~hbdiC0 z0Jq{zY>C+!rhP8P5*OL{Hflm1nI_=?>_Hrf+TR?9f;QN08yvUs1=K|D+4%9rB7=#8 ztUD4!8-m{Xx{Na;{UDMZtHeNn|Bz!(FHe zoWK@XiJo}T##c~R=oaeAHCZMSj>B*uI;j2p6*aN1QCI2)`e6++0Y|)+n>`G}4m?Q0 z2^#MicKtj+5L)UE$P~A_LGt zU;F^4F}_q#NTXuFDiJP#p{_^@ zvf8o$`(Z5xV$fUWtR!2f;tQ<6V$|nnH<>NDhdT4YZ<8?3SG~>p>t0;gYz|os>OhaI z?YEdi)*rP#9=&in>hCh`^Bn6Q>oMHU^GehN7UY|LwxXVe{noSjtbZL9cc_TM>sv)8 zlUcWS%s^|liFBrZ3r65k48aD}jso8`i3~?Q-KpqgqH?$uRnfj#$_0S96);!zlY4(js)bYls|;*WR=!-_;QP^YiA zD--)*75eM__kNG7Kt(9(j3QB&axCher(xqjm`YrLGtlFG5pI&q#VEXolQ6uPWN{0& z$5W{NUdH}-A9W>r|5KpA5YR7H%8M|BE z7)t#F?1dYUiy|N6x0w7FRtI~Rigb6_v#0l)rAs(qwjdX;QU4ID@X8^+R#^T4UpRg^ z>O+yucof&-=p($>u?k~omvK~N5gz-9elhf8lVJLB^QPQ@n%F^f7EriCL1#YZggGob zP#c`U6ugaHFs6*VjMH%_hW*WSoQdAVIoJXVY+Qo6g=LtC7jYT}a{?nVublPQ29;EV z<89oCK_|_t_6TzRs&cF^X-sQ+ELJs_0j>8pSaFX#G{1=}4(hN{iA;Ni)I@H5i#6FC`8tjcj zzB1QtE_Ne6gmHKg^YGb9{%qh8oUJjRR5v<#6gV$(9*<$}*XDWv^M={uUg$?0X5-&sOX5lRIL^dS z%&^b*qP9PPKKLaL$E#Y;_|l`=T(1$>kpX9667{d&H23-fK12M<55`RxM*I=3##(#{ zm)tS~S78ACwD})jKI;238~rc17h4dQ-Z2RsMJJhx^At3*pt~$DMxrOCU=&WkX1EOl zun={{PU9F1{?UANvhZEvudo#7|HN#uOAQAO@8U>oS1a-%PN`-6BPsa(Y(5g>u@`YA z2BNFZT$}FbP3%TZBn1<2BI=Bat%p(ne4ao(GxexT-?84T@F4Uh9*^4pqI%X}2i!(Q zIG#aGsCk2V#}7vxU_5GvQ?VbeMeU#r+hH|oI~R9%AU=lLuN$>~0k*|us1wOSJu3wc z1#MW0IzSZ$qvw5*l^BZJ@GxqE7@5z`^K)6R|xmM4iZb)RoA` zP`&^AC}>9C*$2MAm?i3g`h!RtKZly}i`W@wq949t-Gh3_%2C@@qyD}I^~}hxrr+k) zr_fjLe@_ZzBC!~Ui%~l+w_dW|w>~MZ#^-&kiPl-xZ0yPJccJ!o7Tx%i%O!nr5^9`> zV;u_TDd^sXG;uX9`3Te*WTGy47HWdIs7rqmb!qR|=blYXJ0H~gt~MTwQN;16iLAp` zcpkN%tJrw|TYI<~mnsdlgZVbjw!Vp)&<@lW(fb&I6{s_5NKy%^GL8@L+XkuNbdU(eC)@;W3?4Vv{MTGI$q|UJax#18IWB D%yk$l delta 219 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 HJ|+ME`yDS0 delta 4728 zcmXZgd34TK9>?+fXe=ozCnm+vXhdryO>k5!Nomp(RN z+9(y%g+^O@EF-iNQc_Dui;`Mui^fpX)Y6*w=ehR}=XJmLx7_>v-h1<`CtyEZfeGkUxJL9Wdt*9kfOl{r86Lnu z;`aX_#&}eQ+ffrL#xD31CgL-*ZN_6!_w7YpKZcPQG{^XtJPx_;nQ=69gNI?b54Bbo zuq#$!JM28yPGlk~<5}1Z^H9&-#J>1MrY-$2)Wr9pt{0=msX&!Ja-Q_qp)^|3k%)RA z4WGnm*xzT&QXENqZ9Zkg-U}!*UcuH_ltopr3Oi%Rx9l2Eb!MTKb|q>v9>x9`xR9k~ zd^41WGJXqHvNbpiH={BNdE1tHG-}t*!-jYgo8!+o8iNE+!2;)z<<$RmI?Cx#346V3A6SAa*&0-d%djohr2fh{7Ii9K!$8c! zhAh=GY)`x~$FB7ytU(;U(wH_FfvK2+OSymdO6sp&-19wqTt;C%;sqFnIj9E8;avF9d-RY>bbiZiZyfXeb1s2it%XdqcH}xrV*>{3tz&z#3OJb zzJbd88kS()5A2K2qFz*qNo3S)jU6C;t=(+1QHkt!@j2848+>Swsh3GZHHWMJDc<92y$nu=BjT z;kJu|*t%PNtRd=!-+yGxvl#WU9k?H+5l_PmypBpFr=+MFL@BP>BBb``@g^nhLB7f}`OCMc zE3moF|Kmq(Nm`*w6^Fer6}5{$LoLy9cl|2XBMv-f|DZHNU4IT6V*={ARCj$Ywjo}D z3-J)%!@lguOvX38PEbBPfj{DeQjQiTpETw^7UMGf`V>1G`Y~0c2}HF zydFnjkyxIUO^@Ji!gtCD02sk&&)H3qu*-yiY>|?LuWzj@l&GQ4hvG zvi8G%#IIv7Jm3s6K7U10o#Rmn%|caZIo8EZ7>9dM6TOFC28}46&!5R!3?|NZ7GflE zsq+!)1(DT!{)vr3Wjfor8dZ@3XA$asrKpKq!5U~D^ZAc$&BuJ6ztNWt&2SBBZSzr? z?{${pQ^dEhBi0S@`9E4OV{PKasDa-@mH1=S^Tp1KsP{g=aI9V3=l_q0R@FV*=;=B} zJLfy|oQ2MF&ikm$8q}}@ML1tV^{1dpoQ5MX&-Dk^wAY(p0{yK#8k$)K#^4;(CM!U# zb*);qe=sVe<<5Lm#zm-aKq+cz0{GQZALCI=^D0JQx{GtM9q~@o9vNCmLlX#i+|KMz z&K9UrcS22UB5Ht*s8ezcm1$6IpMTSaqxMP^HpPM16Q^xi)%?q@)mpdN(r4`Swf_g~ C5h?Wm diff --git a/django/conf/locale/km/LC_MESSAGES/django.po b/django/conf/locale/km/LC_MESSAGES/django.po index 5592c4a2a1..faf3a915b5 100644 --- a/django/conf/locale/km/LC_MESSAGES/django.po +++ b/django/conf/locale/km/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: 01\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: sengtha@e-khmer.com\n" "POT-Creation-Date: 2007-01-15 15:43+0200\n" "PO-Revision-Date: 2007-08-10 00:21+0900\n" diff --git a/django/conf/locale/km/LC_MESSAGES/djangojs.mo b/django/conf/locale/km/LC_MESSAGES/djangojs.mo index 61d8cdc8fcd259c9be3dc95ccdcc4e1ad173f142..613f548b065c67ed2afdf845cf76cd07d0ba5131 100644 GIT binary patch delta 198 zcmeCU=Editpfiy^87mxs|Ediu+fiy^88;}OcuLjZ}dk(TO=rQmD8CQS; oAOju&X$v6D#ST&E45X!j{74`TGN^QOCF6BQCIiFGVazrx08dgCVgLXD diff --git a/django/conf/locale/km/LC_MESSAGES/djangojs.po b/django/conf/locale/km/LC_MESSAGES/djangojs.po index 031b302dd6..6084219772 100644 --- a/django/conf/locale/km/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/km/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: 01\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: sengtha@e-khmer.com\n" "POT-Creation-Date: 2007-01-15 15:43+0200\n" "PO-Revision-Date: 2007-01-21 01:25+0900\n" diff --git a/django/conf/locale/kn/LC_MESSAGES/django.mo b/django/conf/locale/kn/LC_MESSAGES/django.mo index 9dcde15267a493b54140cbf4f38a2aa51a85af41..8c9fe235162c0dd6a92b7e9eec095f899638509e 100644 GIT binary patch delta 3603 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 diff --git a/django/conf/locale/kn/LC_MESSAGES/django.po b/django/conf/locale/kn/LC_MESSAGES/django.po index b89ef6f706..37c632c5fb 100644 --- a/django/conf/locale/kn/LC_MESSAGES/django.po +++ b/django/conf/locale/kn/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django-kn 0.1\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-09-25 15:43+0200\n" "PO-Revision-Date: 2007-01-08 20:22+0530\n" diff --git a/django/conf/locale/kn/LC_MESSAGES/djangojs.mo b/django/conf/locale/kn/LC_MESSAGES/djangojs.mo index cbb9fb5ffcda977b7b04aec48115e7248b6a2539..60272ca6c137aec8e82012655b4769f609f9f5d7 100644 GIT binary patch delta 191 zcmXZUu?m846vg55$JB{b z`U%2?@16tq-o2Zby_3C>LQ7gmx^|=yK5>YzHh*zW{$YRvTiW0b*O<2Xfz5q|A9Nha r#}X%4Bcrh^&2Z{!r6o&9al!~QEU=HquGGUbHjgiPY)X?KtgZbAxB* zx3iqPgl*?kf-0Uxjj#pP@xQ1gj9kdO%I9DtmY`->hD&fgUXAW9=c1qo z_QL)ci(~KxEJnQ_R8vrgHK>N`Fd7?BXW?zs9-cHWUGa7Nz~F`Mzt4vug}Nh0Qz?s6x856vj+2s592@#U+i2w4#x4Ai)wHS>J-0-gYYNR zE$Ce7TpCWsbPS>P{0OSO)0l!0_pvSX?}k$tjWbbuQ;$h_4E4g_n25dE;QpA8YOoU3 z@it7ycQ6@SPyXqN@C!gK!|2L|gh!y^J#b69$x zhqS{=KcgE_XJUd`g&N=i^I6OxehEk5U#NbDGGVnl60gEw0tG!NMa{SZ$KfU%jEy(| z!&dn(+d$N{%SPS%Ddrt!i8&Xwq7^tCS78Rej>GUDyju4^Wwq}h549EdVk9oLc$Ha= zeaLS{tPF4nq2Lg=Qn(LwsAv|7w1S1;jsNGLBeB+gOgr=->6M_DgdPHNu34 z{Sv35_9`34V*zSLJ5XEJfO>ued*LzE`@i6HY(dp8c*M6iAN71G>irM~TJjnS18_UC zC+X7st>-(AQ*a8tfckKSZSaRM(M&;|m0@@d=Ahc0gKBT_2G(DR zbtK|(E2`m_QTH@@qchNERN<%DURLD z`l~`e5<@Z3EWtA3M{ycnLVdFfYyABVq2ea9U9JD|xfzF$&o=|}AkHTL17_mbNB#Gr zI-qbJiT6>5?L02PtjGK}`USj!_!OpL+b#YykHV*j=VK~HZuRYq#8Jd^uq*DxTzn0` zz_4xn6ysOeAA_jv{zH(A8bA(~Vm+qe6^z2P$DLbM2Di!c(4EuM{?h!>#htuRBF zKwN{Z@ipv%Z(w))1lQ>PpQWHJD0`B9!&+2B-=Pl4FJ=p-6Sv;!KfNO`mbeT#uWlt~ zV^qCg@_bY~b*KUEL$&t`cEESBukQb66g0wS)W}+}4@R@WLof+-21@WI+<<(W+=r;W zov_QV$X3(KqvMD{@3nT5@94#_WFuxs0w3I4HcWSPy;GA zt55?Dp*pBBcVj$p18QKOnT_T*sOxzqutKxhW}iO`ai|8bHIq>dWtd}89p|D3ScIB+ zu{qnUu;-QLa@0guTO6#Rprv1ry63eRgHNJP_j9O`zK5#Uglgavs^c@LEjVX!vv~+zpsDY$lIA)?c9B1ZZ58~Sn)%BW@ LedyAx71{p*$ahmz delta 4085 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 delta 3975 zcmXZedvJ|M7{~DyiAW+6kqE+(2st9OE(ui$f&@`PW86aBlepBi5tnj=pwumhmQgk8 zQjF-xbSiBrqdHMVnbs&ui)#O%Ep3fURlh&Ge|`4Z^X|LPKJV_%xv<~w%6`9(#)tWO zR5NB$t})TZnDP_fe;41;hRM&O57 z3qKoad?u1c6&4m?v0ut4{P8wEWz1WAD>`7j2vZ5 z1}352KLfR(*`s`RjdlOL4wMG`=GpRHZ=y(M+a2Cd4DJqc)OvF#I9p1t=7(Kymw%*PKsBwp| z8-9l|7?o#C2W*RjumH75kKhRAH}`31W&QK*zz^_6;#)WwBMWQ-i%^?tA1cuk*cyL! z{b3W0=|tQDJvbI)vDn2sFoF0u>a_iaG0e~Tvzx6ErV^%N3eH8X;2>(?X-vZV=tU3N zsUn&9{CR9bd=NY0IqZUgQ=V7fWFlQ=Kl)?z>(oD(Mk5+&=tXUk30MPXq8^-!`eqAJ z39ZIr+>3#jG}Z3%_83Ck1p_b(_4@$lP}F-zV@=GTO8wQC?jD%yEXE-ESD;?F0f*!J zsNMeBI8*fAH_HtBdkD*S}B~$`;Q49G8_1?#*dHttTe?1U7oh&g52Vx$o|FH8I zYG9S~0=6c;ieVT$!=C?!sEW36cELARl1I&uA>T7nlq>h zT*OekhB`)fP`f|=4STNBQJ*Lu_1r9HF>0l2QQv$!*1=JRLVs$EHT1 zJvPlz31nhj%tmEC7Ih4#ph~|K+hG~@#46;DGNH4%hH*L$!3u1MAw~8|Pry>0|2{PK z@WYko9mXt~W4~3@T*^v+SJbzjgPU+SGKWcl-Ig29>Zq>W8kV0a?z0*n)T{YOfTd7k6PVJmcc1MfRplLnSsI zlW-n-a5pC6NoW(C-UxC|TM$C!fWP%95uY(GH`Dv?5LhMRFC9z|6q zXNlbllW{n43BG{Wu>;mF;a?VJ_-HhwQERCk;B|JxH2Q~O7kmdB<3-ec@HeJo+%g-F zLzR9V=HV9XgVmN(HSCKTw-c4{dGw<10ga|KJa5^RrlWRy5vqR|>cJ}PiGSiSOj%*f zI9!W0@GsP-dyD}Xu+sL2U?6dXiyNXU8;3P@{yWpqfS#xfv#>fA*$2#g3?eQ;?jExS zTcF?DcETjo#nJ(Fyn162=3+7~M_ojpV?LfiRW@anD#iDoMI)Gw%UBD4L9OV%>wkor zz<;&fz4cHDcElL$jM_6puq75@9PU6Jzb{c0i&?|sun7$!2mIZI;@K198+-&*@W zU?OVb-Kb-E7*)zD=eOubdHbv$b?DF@sE^9n zgW;HrnjiyP;ZW4`OHnu9D);+#)c6YbdnIb6$54r#M(v@?$fh&5oOes9zb1M>hcXLX zZ%Y;8497b3M>)Ny-P;NEq8yCC5zc9-_bhfULruIA_54QEeDArq+()Ax9iN~sj9(8{0yy(2){2jF!AEPFCidtCUMym(42U1Xbt2=si{&Q()B}-5%UxQlVc2wp& zQ3Lm*N_QAlkyEG@oky+ovhyeBZH%D*4yv-xTpV3y6K#nBy24u1Py+4IAG^4?2kHgc zSQp1&Bo?9)U5OgE6_w~7)br)23LHn3_;kfy&-bZe1JZl+P4ATvJ2>OjoId@tD@t;+ GU;ZB#yeiiK diff --git a/django/conf/locale/lv/LC_MESSAGES/django.po b/django/conf/locale/lv/LC_MESSAGES/django.po index bf73a61615..c6541d2c5d 100644 --- a/django/conf/locale/lv/LC_MESSAGES/django.po +++ b/django/conf/locale/lv/LC_MESSAGES/django.po @@ -1,12 +1,11 @@ # Django Latvian translation. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# ARVIS BICKOVSKIS , 2006. # # , fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-05-07 23:28+0300\n" "PO-Revision-Date: 2007-05-08 00:35+0300\n" diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.mo b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo index 1835996a67fb7b95e5cdcb54a2518e0a0a376cbf..6f9a8a8e42150a1b421c1676c715295e15f0ae80 100644 GIT binary patch delta 206 zcmXZUEe^s!5QgDzDO>&)2pH-xoB@HxZ~`<6f+z}u0F5D}LG}Qob`@B39i9Zu4KTc$ zkWA*8OlCgs3U_`UCPtb^QbST!m0Fl%6R#Mf$3EV%hb20EVFy1L{=XRRt(8{ju#Q{o w;vOlTXf?c8jn!tzStM9s2zuZQ%m3kkRI)WhRvP)Ed7F5;UZl&7-$l2|4~Fy@m;e9( delta 215 zcmXZWJqp4=5QgC|Ch<2WC@37Gjh$>I*x6c24q)X4 z?0rRHnP+F1ncb6Tyxn6RThiQ?Dv}P4RKpCbc*Y`Lv57ZqV2&QX(8o7^=N, 2006, 2007. msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-04-07 19:51+0200\n" "PO-Revision-Date: 2007-04-07 20:29+0200\n" diff --git a/django/conf/locale/mk/LC_MESSAGES/djangojs.mo b/django/conf/locale/mk/LC_MESSAGES/djangojs.mo index 64971dc55ebb068818963c184807f582b0b236f3..200ddceae3ee4cc1e229385b7098cc5eabea782c 100644 GIT binary patch delta 214 zcmXZW!3qIk6vgo~hL1E2qLeJWf)|+8JcEU7l$wkpHCsu_QnnUKJb`BGQIxHvo#ps{ z#_HES-P66BTIL@f>!~B{T*;U8E=nF|*hH@+)v<>*?_(PS?BD@mbE+J{~^!OwplmGj~Z?SUjcI!?ia@pv9B(u@0azuM3l AYXATM delta 216 zcmXZWF$)247{~G7-*GPK5T#`D7VI*35e6xBr8{A`y7e+J-)c}&Ucv2NiLx7QCcb}X z`t, 2006, 2007. msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-02-15 10:53+1100\n" "PO-Revision-Date: 2007-02-24 13:49+0100\n" diff --git a/django/conf/locale/nl/LC_MESSAGES/django.mo b/django/conf/locale/nl/LC_MESSAGES/django.mo index 09889e7c818904f3b9c26fd2b28f05ca0b8d6428..3797766bc954a401858860419c67a19b81b084f4 100644 GIT binary patch delta 4266 zcmXZe2~d_r9LMqX<&8rD2{1rQyk1K|6j0H;LQD)T6Ae$sj0OWt32#K7#53?F%gpq8Dj!P#^hly%*8eMFkZt@^c5SEjZH8GhhrP8#7A+bvmQGT|K{Sv z5<4y%VY#DffrnS#d#CM>Hif~S)<9u zJc0?>1T#?2XQ2`t;^I8db&SX6{7{4s;X+h}Z=;T6FRGH0sD;j<62FA4aM%?4dl{jq55@!>h1%LO4B#qMBKuJb z9Y>9?M_tMWY>oe-?nENnri8OGo%PK#G`i7Ii5hSKbMZ0`#q??RaxTE`#P8!vcne$N zbJL9(h|@3{52F(O4E6gB)TIuYVN4pfMIA{Vc4B=qg@(?4BX-3Dn20|(BWBu(Iyr}+ z7AQd_ya@ID9@NCAPz!y7$rwA!j?cs{#AC4+E<>*ejZ-vKK_m9R3W(LEV8}7>DoU9IQv(wWsE=|9WsJy&*UPbxX%N3sD10 zQR8Ny7Mz0`Ux`Yv3U%f+_%v=o-H9LF?|(Xd6?S|R%;opk3ie-_PNbt6%TW^r&$Zuy z7>p+lU<~#}C6bFubfk+Xpb{!XB{euT2WJARdI;ffrGUm7)@T6;;4e)Gc3)y7jwJJ8=LB4UbDA81C{vzR3*bP3`?*8r@Q_yF_ieW^Dhh{4yv;KAs9j&h1%+P z)DEVg?n(~oEt^oq`Rj+tbYx-`K8|OxH-_*|_Qe6%1{a_%&n^tZcTtJ#M_s-Tu?aSy z3cK#&yQsqa%j|m}gG#J$8T+pXD(KKeOP#CnMdJ0Ch5w;mv#jOz{r(Eu6JJ499=5{v zM>u0q{Vh-lC%XQCi<42G;xv!OqcjSz5UWuO-@$e`awXMc1?qw0sI$L=+RFB;>^Hs- zYKMw3376xuco4f|V=hK2W}@buiapU=M`Ij~^X`YvYwTqlfm-Ml?1DRyf94|pwZftr z`(>=ceB$lc4I8~~k1PW}C!T@2+ymFzEiXVNJ{vh=&#a=Mv#&>eh?>4(-`_s?Jn{Bo1VK^F58xbfmsz|LUzq z-GwWtGrWnqY(JqN|3sbXJ=87tueTqVaP$$kM)kKtjZ4P1n1-4!55sW`hU)#FNMjh5 zqVB>8)Lr-Hiu-oK;f^KG$l z7;49wZSm}fq75DQD?~k*gIZt&s)A9d2THIp&O%MR0JVcFF&1A(joXcSem|;!L#V_~ zpvIp;jXUSjh@f!^b+$KATl+U^VEe7MKM5Zs?uEKkPopLtj#_A}i^roDnutoU6g7VZ zCSVn6{0?W$td`-P2G-J{jEpMYt--Gx%d~<1oxc2Z8ni$)VN60Q8Y(wc?V|~ zR00{!VW`APws8kk>1;ZDI1g3feAEO>Pz$a=9nBi&2InrkUjS;{5$7@V5r2d#dbeRppWNgqY|w^?dW3ndkrelt*E=U z2RmV%M?;z2b_4#vAmX4Mb_YUGTN;T<@DWr6NvP-2(T_b{+!yuy08~PQPzw)6Ej$wa z_%bR%uZ)HUdYFur=*PXN1>Qp~cnEbQC(w_lQI&p%G57^)fm^7{>f31(k3}6pThx3h dF79fLHvMSmEOJn{ckI4|)_tDbH>NPM-~U*WZAJh9 delta 4279 zcmXZe2~d_r9LMqP6#=Mvwn*Nd^8QZvcoel@!eV>oqfix3!Jar5wYB9q2sfh= zIfh#3Bx-yM>Qc7i0KALs(w!KHN_Zj;XMK}HBZZD?H{dwt5VzqJOe?dOa}A~vzl%@f zb?l3eK1a2<45RP^RHC1we*YPDsYA<+Nya$Tk>p}L>zgGsboTpj1RlqJc*EIcshwz; zb1G_qQdC9jP|v@Gn)obgq3`fMj9F&KXJQg@9;V}Z^hVM+OG6cOWd9fAB-B}cfI7=h zP~*;F4-8ykx4I8%EB&bPNtll*sGVp)-GM_GjqhRwwxI6X3^Z$mz&VKM3m8&T`EqQ-e`G~#Jo#YF5; zWxw^~&__HURoMd6ge9mi9(&+_sstk4Zl`dX~-H122{?}27HMRFs z^=TUY=xBBRi#qGRFWA>68Dohjp?2VDRAObQL|;S|P>Z_dTTr+DFlr}`<0BaMqCJXy z%p=~8F|2QH(@-T*FL84*5jjqC5f|e0YMbB*=eMXWHEV2wBe04v8#my2)B^cy?N)z? z+L>ll;w_kkm(kN%`q$Z8pN`6WJgSme*a=H6KP?zTrcETg5M2?{@-^Un= zt*F9&bnzWjVZpWby^lsER#?ma>wzjdG*PW{3qDD_8^>aYSL|z+g@MH1;9$Ihsyw{T z_IGi{p!)lv5+3OK{Vq;IeTq{(8gVoVZ~@k%7QTh|;GBA69>yxv11C{ue+#vhL)Y7H zdmmE{5Ub7_9fdh{iN5 zL*0c_sJrkBYT+3>?d{FO&cr1+1S>HW527Y)#R~ihM_|D&{>s5!sD-bh3i}!Ldfr5@ zy&@V~$oHxp7>3%SNK{2B*d0frAG2{NE<;teAID-d7Gdaa`}!`$DB`22=bAAGZ(uAw zyodcypfPWcJ@b0!4%BPbh|2U$R3b+)2H!?ibisKMBZ$91Rro!spzEmD`!CddfqQKn zj@q%Fdp-N17)(cdg{TL!Q47pQRWKLzKq-dcO4P(_P&>E@bqBVg#vMjIe+*T?`>4cD zp~jy_jl1a42&Zuwb+*@VDE@~UICP)wPsA?7V^EiB8fxNMsD<)eJRh}C5h}ql)cjT0 z6YEgpUw3+My2cUI14mJroj_H74ps5D?)RTu{0C|x-)q)DR6-%Bd7@B9(igS$@y-#b zMAEIEnL$GtmZB9Rq0Ep30_7mxDj)VLGQPtZsFDXNgqQ1f2G zAie)z(TJp@4WscUDxvWG)>x(Rr)!0#jj8cTt{8nz($*R4C)BtQ1c}> j@&#ANNcY27)KO%kZgE~y&jF(|1Nsk3NNSq7AY#n__oQ*F diff --git a/django/conf/locale/nl/LC_MESSAGES/django.po b/django/conf/locale/nl/LC_MESSAGES/django.po index 7dc61e6a61..13143c5b8b 100644 --- a/django/conf/locale/nl/LC_MESSAGES/django.po +++ b/django/conf/locale/nl/LC_MESSAGES/django.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-27 08:53+0100\n" "PO-Revision-Date: 2008-02-27 11:22+0100\n" diff --git a/django/conf/locale/nl/LC_MESSAGES/djangojs.mo b/django/conf/locale/nl/LC_MESSAGES/djangojs.mo index 96e43fac68be279b4d8b67af7f4c3702e8847eab..22015ed3b97f7dd0f0097f776fe4104e78105753 100644 GIT binary patch delta 207 zcmXZWAr8Vo5QX8lTS{A4PzV$$rWgbo!8JGzjvy;)2nh;>YO)oexd8?NNKU{7_?I-< z%$IqanM~tqSH3oLBW)uomgGB9hF2Wo4O6_g`4b29pVlw-=ncaobV#HrhCKzYae;l@ sVHYd3c!;(7e;f(I;xkV0f;>GaOMGL3W2VD`oDvS3`MpW3KSibe0XVi5ZvX%Q delta 212 zcmXZWF$%&!5QX8FP1Zz>Vqq!4LYoK@!OFsGcpN(`iKK&oSjZM, 2006. # msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-27 10:34+0100\n" "PO-Revision-Date: 2008-02-27 11:22+0100\n" diff --git a/django/conf/locale/no/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo index bd82c8952e0f05850917191577aa4b8437f84da9..1009491ba606d0ba4ff942090caae2b86dbc85fb 100644 GIT binary patch delta 16 YcmX@JkLk=lrVY!J8C^E7NM2$M07a<>wEzGB delta 16 YcmX@JkLk=lrVY!J8B;c|NM2$M07hvC)c^nh diff --git a/django/conf/locale/no/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po index 5894d3b6e8..75f3d45188 100644 --- a/django/conf/locale/no/LC_MESSAGES/django.po +++ b/django/conf/locale/no/LC_MESSAGES/django.po @@ -1,11 +1,10 @@ # translation of django.po to norwegian # Copyright (C) 2005 and beyond # This file is distributed under the same license as the Django package. -# Espen Grindhaug , Nov 2005. # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" "PO-Revision-Date: 2007-08-29 18:22+0200\n" diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.mo b/django/conf/locale/no/LC_MESSAGES/djangojs.mo index 4321934ca6975531bc824c523ef54ffca90839be..1388ec9b7ebd4d3a7a2455f74ac4c83334b96b72 100644 GIT binary patch delta 214 zcmXZWAqoOf5XSNEy>(aRVG=xoCor2lfnYFhT2N3t!8WsXgGFJ3b(_`Z8AOv{GAUy7 zKe8~)kNFthyia(C%_Z+SX&p(iq-{g;xW_J**uoMm=8$lMzasy(GESU!a1LeX6YhZR=a58f3qPP AEdT%j delta 216 zcmey${hfQloq7pI28K3f1_o9J28Q`83=B*_dMS_=2GT2lGzXC01Ekr2^iinz86eFG z_Rx)I=GT4Cya)AQ8 zK!IW)tp=nUp$b+2X%irS4Uh&RhKE1`, 2006. # msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2007-08-29 18:22+0200\n" diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo index 59f5b0d9774da21502eecd4c4b27ee2f64d15339..6677af06741df46bc70fc0bd6e4916ba1ec7369e 100644 GIT binary patch delta 16 Xcmdnk%CfPQWrOEZMwiWAOVeWkI)Mhh delta 16 Xcmdnk%CfPQWrOEZ#+1!oOVeWkJ3$8C diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po index 144682a39b..c33afac470 100644 --- a/django/conf/locale/pl/LC_MESSAGES/django.po +++ b/django/conf/locale/pl/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the django package. msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-25 12:45+0100\n" "PO-Revision-Date: 2008-02-25 15:53+0100\n" diff --git a/django/conf/locale/pl/LC_MESSAGES/djangojs.mo b/django/conf/locale/pl/LC_MESSAGES/djangojs.mo index eb162ab3a172d307410d2ab8f4ae48cc0dc43f7d..22dc82879692ab4879c37c10fec77100fb5966d9 100644 GIT binary patch delta 198 zcmaFM^MPl=nfmRF3=B5R3=C`x3=Cgb7#LWA^lu=|1Ed*&98Mt32c$vr5oqf5dJ6}(wk(O3!NqPrTh#z$L!!AaIejlUHC)mds_Hcm%TqC6&?SL6}@Phu% o4Jkbut5AuC1U11FzqrB?zqN6T{z2Z%`{HQs#-_=<*x0fC18}VsSpWb4 diff --git a/django/conf/locale/pl/LC_MESSAGES/djangojs.po b/django/conf/locale/pl/LC_MESSAGES/djangojs.po index 17af50f2ae..829fe8f359 100644 --- a/django/conf/locale/pl/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/pl/LC_MESSAGES/djangojs.po @@ -1,11 +1,9 @@ # translation of djangojs.po to Polish -# Copyright (C) 2007 Michal Chruszcz # This file is distributed under the same license as the django package. # -# Michal Chruszcz , 2007. msgid "" msgstr "" -"Project-Id-Version: 0.1\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2007-03-12 11:42+0100\n" diff --git a/django/conf/locale/pt/LC_MESSAGES/django.mo b/django/conf/locale/pt/LC_MESSAGES/django.mo index 179119b8a1cb4a23b734bb6bf198f312b35bb1f2..66632e8879d53b3cfeda3b3b2c110357bc0bf66b 100644 GIT binary patch delta 3603 zcmXZddra0<9LMp4B3A(s5pTeQph#j`3FQSf%!=?rDtH6&ii%(=no-CjC^r?ErOpeD z`A3S*OO2&e&Zw2Sv8m1FoMzP2QFW#?)jRa}`hJ7}L`jvwNm7v+y|blL;h2K=A-EqscpTO50{Y=4 ztiWriarwD+ofViyT#@TF#+SzDJkWrzFcRBQiT#91;8*nEV;qPvdBz0c1XRB)RN}MI zgG(?LYcUF&QT^LcFWQdP_=A^*O0syaonRAc;C566K0+;c#{GT=^@e|;7B=}d@gP(j zj!L92>O}@&7>;pHM)jMEn#a48hAOZEwYMeM4a-n_RPW-QIF1Q{3{&PA(;J&G z4nIMa`YI;iFW3*m=G(K8j7lIIBUs<$)6koiU_91h93H`BJcml;Z(M?%7ubp|MMV6Du>GQNIdL2YV?9RW9xP{lbCQNipUUg0!&uY;ndpz%*a`En z3(iA7EWoi?j2eFwHSPq?z&7;9UfezX?m?Z6Bvijt^iHQSj)qS8PTYnEQ3F$#+2>=h zFL4&?4T~@UH=r-pq55xg&v&5`ZNe$|0Zzo<-Sc$HnMC|*A@$drtmc6ZT`6k9&CUjV zk9Y?T!$H)sGtR;^%tP(@KGZyyQR6#M{coW5KC;Lj(sb1KA{TWH3yY|~PV0IeXy8`V zY2A)lcno!oo?r?_7TbZD7(_f5HEtQIA}d_H4posd)c8#}0Qce$Y(vd=*Gof(Az_6* z_35aI7NOp#7=v*Q>O-;tLvT0h+8w|cY{LZXKy8)p8}3t#p~M*&hBHy~Ek)fr?;0A~ z(>l}}zmL=KE{@0amBze{)z}|>R@ss!;1S~2aWnpl!?13(y+xm5BJo4qkNrwGS9luV z#DX>dZ@Jf8qoG517nS+=wf2odUszT-Nc_VU;%pr`&2xe2Io<|+JF{skN|2;Ic=gpXjUt=$ZSe%ZUXbtwnD%93AViX?6 zT>KJyVC-A=`Eb;H6D8}LY#N*|GZ!PujC%7Os8hXggWbDI>`S~4N8m|J z!+SUghgR4x+DzoUnFXjb^&QT@rz-8ZN*qjl3S;qBB@5|Z25dCuMSL1x!39h3ePfrLllUBdX+2P?-&@vLBc% z=N#0%EkJF>Y8;Er?)fdGs^+14UQ%uUX|=pE2ri+VE zr*`?3>4;`cFcgwN)5~%~r2zrJ;<@qDp-p zeeg0Wfh(v4e{(*-?!W9n&>d_qccnYT;2h6f;rlyn_*}Z|Z4u z!TqR897KOShCz4&HQ^T+jOSc@1^W>Hj7p@_R+o@72vxyQRO0cdL`Gm&%s{UmU;4qD$(=ki&s$dbf7A7-FeUX1hsBRJ@r?|=z7~R z4mHtG)SHe(CH69E&$3-y>@0I`aqe{?TD5`*`Xu< E1FKo=+yDRo delta 3612 zcmXZde^k#`9LMonN~si~q@{>{93kdcqx@QpFj_xEvgAj8BuO=d?;@!v<;NU5LbT&J zXCn+}#~HRc)^;|t;~aL5Gsm%6+rgQ$VQ1Lcp09mw|2*!!-}~cz-}l~6Cl9%wKjhx_ zu&ZmFn=#umjk%3ivWy8b#vINzW)7Z5elp#u^u+@7#%i2~J24h-V}JCVYfKErpz3L; z`ATsqZb!}Y1ii3Fj&YeT6hd>13B-ZuhhwlOCS!M;i=J4B{#b(1SczTnI7Z-kRKFjv zGv2{UypI}JFwa@1922S6&T|>#LE%dpG~gTTg*Q-v{e}wQPmDm%Tw|gz3Vm<}s$VuL z@O+HGRTz$q7>sSG{_UuZ-oR@7#YI6WSvlXCUP&rqrU2?yXG_zDIuaPGzkQ~7+%A1Xcjt`G7*)z0@OSW)(f`%R}5o)6R^mb;dB^`37Cfy@O_+tw{bbfE_O1t z2epI!I2DhgZuui*N5*4`b0ob{{lakt#-cCo#V~BaO{{M&QBdlW*q%DPff|^OUYLvS zxEMWgDR#yp9FJwF@n=!vF5+x#M=y-v?dkUz)ZG|{>X(GB3<^^y=$1EQ1D-?;Oj_o& zr(h`cY}5`*(Hm>f1DjC&-?QxpQGp)AnfMV-$A4^lD(Q@+K5IGo*G|^cpi5VYnsAqO zAMU1p0OK*9Ja)nbn23u}XMPkl&t25`4pje#sIw0%bS`Ns>U*&W^$bf2$-i#vRvI*L z59+q=$60s|^^Ck$8Z#2ZPy^G^2bZA6twv>}+}2&Fj8vh<@4$h01P5a~YQAUcsLK#n ziRDP@Mrx^XIr(po*q2?<_y*k$h z3Ods!)Q&&EbbN-BF}0ZE!3OM)T~<3Ojl&PA&%rwET;im>3H6FT$7pxx_EzK`nNt{vq0FXCjYnO&6jbV`+x86X zO+5!Se<^muM)cSFZ=s+wZ^LQ$EyiKUJI>jrppIl3YT^tG$9brUHee9eqmHH(gYh)Z z!>_R?Mz3|+$D!uSkgRWVDR9rs5}b-R@EV4#b2>gmMg9~OKzGhVI}JfM47c@u)@U3{ z`(TX5Wyr_TG~psM^Z1aHsfIGH&938w$YeL z7>;~ZO+H58Ra5{SxD5j~IsNxxF7>mU$iD{mAPvcwh1&T6)U96eu5)&E7)t#pCg3GZ z#J@2HM^`#uv^?a#ndPWE^&`&4;hUXtbvTIn6%5D6n^{QjvfCD8CgLbe#kJNiP-o>| zv24`+4jdsR?SP>UQzA*)4G6KD2n`RzE@GNB?%RXE17~Kn~4#aZtJC} zTe}vO;(Aod&S50p#4LP{TmzF<<9y?Ys_aYwIuo+Z@+G97f?rg+5UbNHP0>k`vaH#;W38sgWFCg z#o?$-M4!IH#ct^w! QNf=dJviM9(rvGdI0Xtmp?EnA( diff --git a/django/conf/locale/pt/LC_MESSAGES/django.po b/django/conf/locale/pt/LC_MESSAGES/django.po index ba306541e8..203eec4a52 100644 --- a/django/conf/locale/pt/LC_MESSAGES/django.po +++ b/django/conf/locale/pt/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django 0.96pre\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-15 15:43+0200\n" "PO-Revision-Date: 2007-03-16 10:00+0000\n" diff --git a/django/conf/locale/pt/LC_MESSAGES/djangojs.mo b/django/conf/locale/pt/LC_MESSAGES/djangojs.mo index 669dd9d1191866cab33a2ed5aba6e4acd15b36fd..26ad584b7eac0afb28536cbac33a8ceacf638955 100644 GIT binary patch delta 191 zcmaFG{fK+QnR*jO1_m2u1_m|;28Kcw1_n+bT>+%|fOHd(<_6Lefiwq@o(mOU2Bo(G zX&#{X5g-jxcM(W~)ZGQrkwE$xkmdr?4y+JyZy*gs3?V>*9Y{y9GUzez0vSm_0c{{% j0Hlq8^c)}!)XQ)ls_+Vs1|o(#n=2XbGH#Az?qLD|CGQqA delta 200 zcmaFF{fc|SnR**W1_m2u1_m|;28K!&1_n+b-2kNdfOHp-<_6L;fiwq@UJ4ao2c`D{ zX&#{X86XW(cN0j1)I9~#kwE$#kmdr?9;^`YU?2@d3^7209Y`m!GUzez0vTCA0c{{% s0i=z9^b#Nq)XQ)ks_+hw1|o(hn=2XbGIA&w=vkT-6s2wsWA0%B06KOV7ytkO diff --git a/django/conf/locale/pt/LC_MESSAGES/djangojs.po b/django/conf/locale/pt/LC_MESSAGES/djangojs.po index 90f4b9de86..130a75f9cf 100644 --- a/django/conf/locale/pt/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/pt/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django 0.96pre\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-15 11:51+0100\n" "PO-Revision-Date: 2007-03-16 10:01+0000\n" diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo index 6e3af1681c13e36c6bd7418f33cf4ccef67f6558..0af7f3d056238c25517ea18f903fade3b44de2e6 100644 GIT binary patch delta 16 XcmZqvz}WnOaYL5}qs!)Qj|zPNKZ^$4 delta 16 XcmZqvz}WnOaYL5}W6I`kj|zPNKuZSw diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/django/conf/locale/pt_BR/LC_MESSAGES/django.po index 540d1b51bb..229b9d0314 100644 --- a/django/conf/locale/pt_BR/LC_MESSAGES/django.po +++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-28 12:02-0300\n" "PO-Revision-Date: 2007-04-02 17:20+0200\n" diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo b/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo index 31a2b1b3c0a38ee9d45020aae6ce083dfd73bbc3..8ca54a4ff95231dd603f60e6727147f2f5a27bb4 100644 GIT binary patch delta 14 VcmZqVY2?`uz|82fIgoh+696CG1RMYW delta 14 VcmZqVY2?`uz|5GkIgoh+696Ec1Uvu$ diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po b/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po index 299fc6526a..6dc395cf52 100644 --- a/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po @@ -1,11 +1,10 @@ # Português do Brasil translation of django. # Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Carlos Eduardo de Paula , 2006. # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2006-11-01 17:45-0300\n" diff --git a/django/conf/locale/ro/LC_MESSAGES/django.mo b/django/conf/locale/ro/LC_MESSAGES/django.mo index 9b46b6c6d6fee4d5d53d28912cca4a4056225326..7742ece5b135a3186e979be11f6818461ae0622b 100644 GIT binary patch delta 2234 zcmXZcZA_JA9LMoLD01ZC=mC_4lE#DRQKC4AD9V$B97@n6SnD+B1C@rexfsb>_aH+j zOk4WG)k^0JH>WK($YOJi7K3uxvQn0Ay{IJTbZS|&S*!2Q`+D`cp0EFP{jdA};bh$R zC*#fx2E0g|*&h+JnPyh7)T{-|@M%1VFW}FZiP2KC0B*uW+>V;J3zP6oOvVE^1>eOK z{J`~}Ld`piZTMNKc^0IQx6EuRMsOOI;cTo#E!cwEc(bd&j2YBBF%A211|CIi_z{Ni z9A@J;n1DBNI{uES_|G!WpO{qUpCAhrNIq&{7!^9pDBs#qOa}RkYHq1FKN|-dPGd;V>$PW2nf!L*?o!7U3_hp1#T-KgXGaT4)hA zVg!|n9^8lTpw^$msnni>8efbA>e)&P+OQgxqXy?XXN&8Pp%!SvQ`mvJnMW!)4b~w| zwimVGDC!YjK;6hi)cnh+R7_wz``bMV*)&X|u5?zFpTkaku#jhjI2_ZNoP-!iJrvTy9THIf?wh${L|H2>p3O$J@^=YjT-ka>R{n0_pht0jB@SRhmYe0)PVmm z4>KD46fMUd>dmM>vOJ-8ITPbes&Tet*Y zY%<$|hcSSEV-Vxk>2o1XsK=R(dbGKyjViDJx1c`5KJ3KvsGF?eg)YEW)LVH23-$dU zp`d^GD5m0%sK@dfYQtL?!aJxy;<nes0Nj*Ce*~|P&cyC^|zr;z6&+)b=0_S*Zvl2{y|hA@1fqtap#Aw|5NmIWg`@H z^2=_(ub4^wHtIx)&3<4rP~+yJ+QX=gi=CyYjaQ()iaOMRV))?uM+LIe^>;P%B=nfx cra=>rVLF~hMLz7>#|EOIk(_~G$>{w50S%D;`~Uy| delta 2236 zcmXZddu+~E9LMqR1(cZ~(4CjoW|&@oS94@6nHYF$#Zj z-;bciox(;uKfyeUp^#B%_5lVk42y6umY^nFh+25LtFOjH>YFeg+i(zepcXuaad-|> z@jCX$XBdGmF&h6X^g;t8Cx&(~3>8Qws$&i+paRsy#drpTSb_c`vjo*K85>ajKF4%y zarJ|!1y8v43#bkCdKAV|c!Au44V`2*6=z` zz$4TKo+3l+73!+;iU|%&QQy5&6tu%m)E#!CBD;mUtGoCiK5+HKDWU!;&NS3S**FUW zsH@nDJ8&mz{uFkl_B2%gd?ZlMrcls=WvDx z2Wr8~s3g3GI+2^G@wZV|(Tn|9-(FEjrJ)aXq=QRBcUXZ+zPYFg7Na6xj+%IltFK2* z+>9Fk9jf11)It|g$$AsjuNSr68;oOpODg5waSZCn%TOJwQCIRQCSfD$4x6zCTX8=2 z;2a!ZX0`&q!V&lcvoWHaz8Jvm*ootC#&ph~vTdaBBc8?8SWjwep)OS9f1-}`DfY*I zP=WQKuFhX+HUy(kfo5V17UOWNL5*998n+I$(dJ6dKZU|p8nj>s>fQh1?8Zjw_fSV# zQ5AX>vr+X;$R}&TT>K4};%is0pFv(w--da371i&5)W&jxoWG8;B*>G%R{RLBp*mP~ zD9MsgS2PJ*a6al6vIn)}9467kr5M1q$Zw1tz-+vOQ5g1#*=9_@mDuJ{P-K0m_dj+f zzjoMwk$4jQ*ojKQE)2upoj2U~9vn#fUDOHmVmbzSlWJd!nr}0HjN7mPz0(vF(R0kj z6|>23+>PP*FUDZMT0Ivs7L}Zds1r#?Ei?_s;Ag03*ot4^71T+VlcAYdkIEGf$Lam= zp`hRJ%NUJ+p_1h>YQg6ihkv62@pJA9EFP5u!%*WgQ2p{z{VFgP>u>-zVic}%Zh0^F z{|$wBKI}qGbPzS*q^qAp4ZMPB*n_%?x2S%;d7*$KQ1wBmD@u0l!%aJ>00~euAWQqIUgxdKA)VMEE{aRf6cGUQGR3Q6MIdH)Fv-^GqJsnvW z1?~K{>+lfuZ}tMUqwu;=V6muvsi^iG)WZ4BLe#>OQLmy3wV?)l|Nc>dtaIO+>qrSD g(+@Og;C@WNqo~L`U3>TOVBE#gzLCeH1D8g=11TZ@FaQ7m diff --git a/django/conf/locale/ro/LC_MESSAGES/django.po b/django/conf/locale/ro/LC_MESSAGES/django.po index 09494d7b4e..e92f4f448f 100644 --- a/django/conf/locale/ro/LC_MESSAGES/django.po +++ b/django/conf/locale/ro/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Django \n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" "PO-Revision-Date: 2005-11-08 19:06+GMT+2\n" diff --git a/django/conf/locale/ro/LC_MESSAGES/djangojs.mo b/django/conf/locale/ro/LC_MESSAGES/djangojs.mo index 1db40df91002f439139614f3e547bb0e3a43fecf..fae1fdc90ecbfb026c72e4a868c2e7b98f635067 100644 GIT binary patch delta 22 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 delta 207 zcmX@fdx>|#nR-)31_m2u1_mAm28JRQ1_l8jT@R#1f%F6*Ed->O0cnu@P9QA}q>n-6 zA3^CKKw2Cq&d18YzyYMyfb?V_tq-L6fb?M~eF;c|%y|gqzhh<4V-Nuf`~?aq18E^P z28I$KZ3d)48dn2pkcM4AnhQuD-(1OfosmDl(b?P4-BlsXH7MBA-*0mmb1^dj2#6bB diff --git a/django/conf/locale/ru/LC_MESSAGES/djangojs.po b/django/conf/locale/ru/LC_MESSAGES/djangojs.po index 189c000422..66be20e547 100644 --- a/django/conf/locale/ru/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/ru/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-03-01 17:11+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" diff --git a/django/conf/locale/sk/LC_MESSAGES/django.mo b/django/conf/locale/sk/LC_MESSAGES/django.mo index 169f270969172303f6112e5be9a74abcc16ddcbb..b52cb26c8f98ee1e7db83bd782e26e49edaa69e8 100644 GIT binary patch delta 16 YcmeCW&D3?9X~WHQMwiXE(l@vQ07MoC?EnA( delta 16 YcmeCW&D3?9X~WHQ#+1#s(l@vQ07TXZ4FCWD diff --git a/django/conf/locale/sk/LC_MESSAGES/django.po b/django/conf/locale/sk/LC_MESSAGES/django.po index 89dd4897bb..1e5bf89d24 100644 --- a/django/conf/locale/sk/LC_MESSAGES/django.po +++ b/django/conf/locale/sk/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-07-24 09:56-0400\n" "PO-Revision-Date: 2007-06-22 20:54-0400\n" diff --git a/django/conf/locale/sk/LC_MESSAGES/djangojs.mo b/django/conf/locale/sk/LC_MESSAGES/djangojs.mo index 1a168078c6c1c28454ba3d6c56d568c1f276f0f2..0682827f6bca7cdc365b477fbc9785f53ff00c85 100644 GIT binary patch delta 207 zcmXZVF$%&!07TK*jWN*#ZR|XUt>*|>2)16pPDBvPEw$D%sRFq`j*wRH0yct$V4;6a zs>e(*vroT?yKRk;4uKR&I`&!}4#_7R;00qWFvSYTSYv_>PVkO>e06>>Bipd;7wC6Z n=y%qk=Ko?tF{0Sv6dn5G9A{V|TY8{Bcy_+avx#hZ4VLx?vuYS7 delta 212 zcmXZVtqsCp0EFS|&({KNz~C@UKtN!b16PM-0TKkE3W2C;Qh~!l>bd|UU~nveAwiIo z_oG!$?!;Xk?c(EOYaA){q)^hqZ_KbqF0hMd?BEq+tZ;xgjPQ;_d}4r~)*6@Oz%+e= uc4vilXKl3j7aNK`#U4kPp*_Cf94ll?FSG~m)^C|Rq3e%llWBSK688sEco{VS diff --git a/django/conf/locale/sk/LC_MESSAGES/djangojs.po b/django/conf/locale/sk/LC_MESSAGES/djangojs.po index f442a15ff1..d65ac78751 100644 --- a/django/conf/locale/sk/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sk/LC_MESSAGES/djangojs.po @@ -1,7 +1,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Django 1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-04-01 19:21+0200\n" "PO-Revision-Date: 2007-04-03 21:48+0200\n" diff --git a/django/conf/locale/sl/LC_MESSAGES/django.mo b/django/conf/locale/sl/LC_MESSAGES/django.mo index 58e5bd836ac6e615ac6c34bad54f2e91899eedfa..e7865e4c55180d0666cc03662b1e9312cb7b3cea 100644 GIT binary patch delta 16 XcmaFa$o#UAd4o|YqswOF(rw-VJ*5WI delta 16 XcmaFa$o#UAd4o|YW6EaZ(rw-VK4k{; diff --git a/django/conf/locale/sl/LC_MESSAGES/django.po b/django/conf/locale/sl/LC_MESSAGES/django.po index 80dfeb2cfe..2796ddb3a8 100644 --- a/django/conf/locale/sl/LC_MESSAGES/django.po +++ b/django/conf/locale/sl/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-07-02 13:55+0200\n" "PO-Revision-Date: 2007-07-02 14:47+0100\n" diff --git a/django/conf/locale/sl/LC_MESSAGES/djangojs.mo b/django/conf/locale/sl/LC_MESSAGES/djangojs.mo index 51fadfa406ded2dc0d95c916f09dc6edac334f71..14d7ffe4e828a8bec101dd20af8bee53e4bcec28 100644 GIT binary patch delta 213 zcmX@ZbCPGmo%&)%28K3f1_o9J28LfO5E{hc1oGK{G&_(Mfbu1PG%t{^1f;ouv;mOj z2GZ6*ng>X`18Ja93?V=oh!`S(L@1Ds1JWRKwm|7UKpKb`j<7P=F>nAGr+_>@AblA~ uiva0IKpG_e9Y~u1X$Cfk22&_)4WvN^I&PlH$i&2&m6(^Fzj-n9N+tjiQ58l2 delta 216 zcmXZUp$Y;)6ouilGp_FHYSCsknlzXe1VNafLBwG4C9F2H)n+wsFd9YBYO?wgg5W>w zz-7KU7w)-dkL>W?Z6j%KrC8FhQfdh)ImH^bL+)ae+`~E!uz@*d=#VO{kkOiFi5v7i wm*5o{-D2fR_&iB1d|?Ma==Wb7qOFz(qhOA{a8ev2V-h!>P3L{LC{Ffl{%LC!xBvhE diff --git a/django/conf/locale/sl/LC_MESSAGES/djangojs.po b/django/conf/locale/sl/LC_MESSAGES/djangojs.po index b6a7b05605..8ad259a37d 100644 --- a/django/conf/locale/sl/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sl/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: DJANGO-JS\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-07-02 13:55+0200\n" "PO-Revision-Date: 2007-07-02 13:56+0100\n" diff --git a/django/conf/locale/sr/LC_MESSAGES/django.mo b/django/conf/locale/sr/LC_MESSAGES/django.mo index c942838b09e08632bc49d255b97615e576a3c3f5..08ed5b16e582074c44091aaf2dde2ea4b3e58592 100644 GIT binary patch delta 3242 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 diff --git a/django/conf/locale/sr/LC_MESSAGES/django.po b/django/conf/locale/sr/LC_MESSAGES/django.po index 3d7cef4f2b..4053068d9b 100644 --- a/django/conf/locale/sr/LC_MESSAGES/django.po +++ b/django/conf/locale/sr/LC_MESSAGES/django.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Django Serbian (latin) translation v1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:11+0200\n" "PO-Revision-Date: 2007-02-20 18:50+0100\n" diff --git a/django/conf/locale/sr/LC_MESSAGES/djangojs.mo b/django/conf/locale/sr/LC_MESSAGES/djangojs.mo index d4036a893e5322369fd426e1bb5c0658d2aa5f88..57131857428c3c1e325de94be01cd2f1a2340f54 100644 GIT binary patch delta 14 VcmZqWZROn%z|82fIgr_e82}$<1FHZ4 delta 14 VcmZqWZROn%z|5GkIgr_e82}(A1Iqva diff --git a/django/conf/locale/sr/LC_MESSAGES/djangojs.po b/django/conf/locale/sr/LC_MESSAGES/djangojs.po index a70d878ea4..65a17757f7 100644 --- a/django/conf/locale/sr/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sr/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2007-02-20 18:51+0100\n" diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo index 7e554be63c990041627e6da656ca65a2e13fa429..8a6dcb7f8b5c8d73e0d4a84762508e022065ccfc 100644 GIT binary patch delta 21075 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 delta 16837 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\n" +"POT-Creation-Date: 2008-03-16 16:53+0100\n" +"PO-Revision-Date: 2008-03-02 00:49+0100\n" +"Last-Translator: Ludvig Ericson \n" "Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -66,134 +66,142 @@ msgid "Argentinean Spanish" msgstr "Argentisk Spanska" #: conf/global_settings.py:51 +msgid "Basque" +msgstr "Baskiska" + +#: conf/global_settings.py:52 msgid "Persian" msgstr "Persiska" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Finnish" msgstr "Finska" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "French" msgstr "Franska" -#: conf/global_settings.py:54 -msgid "Gaeilge" -msgstr "Gaeliska" - #: conf/global_settings.py:55 +msgid "Irish" +msgstr "Irländska" + +#: conf/global_settings.py:56 msgid "Galician" msgstr "Galisiska" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Hungarian" msgstr "Ungerska" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 msgid "Hebrew" msgstr "Hebreiska" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Croatian" msgstr "Kroatiska" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Icelandic" msgstr "Isländska" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Italian" msgstr "Italienska" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Japanese" msgstr "Japanska" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 +msgid "Georgian" +msgstr "Georgiska" + +#: conf/global_settings.py:64 msgid "Korean" msgstr "Koreanska" -#: conf/global_settings.py:63 +#: conf/global_settings.py:65 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Latvian" msgstr "Lettiska" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Macedonian" msgstr "Makedonska" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Dutch" msgstr "Holländska" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Norwegian" msgstr "Norska" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Polish" msgstr "Polska" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Portugese" msgstr "Portugisiska" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 msgid "Brazilian" msgstr "Brasilianska" -#: conf/global_settings.py:72 +#: conf/global_settings.py:74 msgid "Romanian" msgstr "Rumänska" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Russian" msgstr "Ryska" -#: conf/global_settings.py:74 +#: conf/global_settings.py:76 msgid "Slovak" msgstr "Slovakiska" -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 msgid "Slovenian" msgstr "Slovenska" -#: conf/global_settings.py:76 +#: conf/global_settings.py:78 msgid "Serbian" msgstr "Serbiska" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Swedish" msgstr "Svenska" -#: conf/global_settings.py:78 +#: conf/global_settings.py:80 msgid "Tamil" msgstr "Tamilska" -#: conf/global_settings.py:79 +#: conf/global_settings.py:81 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Turkish" msgstr "Turkiska" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Ukrainian" msgstr "Ukrainska" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Simplified Chinese" msgstr "Förenklad Kinesiska" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Traditional Chinese" msgstr "Traditionell Kinesiska" @@ -225,11 +233,11 @@ msgstr "Senaste 7 dagarna" #: contrib/admin/filterspecs.py:119 msgid "This month" -msgstr "Den här månaden" +msgstr "Denna månad" #: contrib/admin/filterspecs.py:121 msgid "This year" -msgstr "Det här året" +msgstr "Detta år" #: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 #: oldforms/__init__.py:592 @@ -395,7 +403,7 @@ msgid "" "following types of objects:" msgstr "" "Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att " -"relaterade objekt togs bort men ditt konto har inte rättigheter att ta bort " +"relaterade objekt togs bort, men ditt konto har inte rättigheter att ta bort " "följande objekttyper:" #: contrib/admin/templates/admin/delete_confirmation.html:20 @@ -471,7 +479,7 @@ msgid "Password:" msgstr "Lösenord:" #: contrib/admin/templates/admin/login.html:25 -#: contrib/admin/views/decorators.py:25 +#: contrib/admin/views/decorators.py:31 msgid "Log in" msgstr "Logga in" @@ -496,7 +504,7 @@ msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"Det här objektet har ingen ändringshistorik. Det lades antagligen inte till " +"Detta objekt har ingen ändringshistorik. Det lades antagligen inte till " "via denna administrationssida." #: contrib/admin/templates/admin/pagination.html:10 @@ -596,7 +604,7 @@ msgstr "" #: contrib/admin/templates/admin_doc/bookmarklets.html:18 msgid "Documentation for this page" -msgstr "Dokumentation för den här sidan" +msgstr "Dokumentation för denna sida" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "" @@ -620,7 +628,7 @@ msgstr "" #: contrib/admin/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" -msgstr "Redigera det här objektet (aktuellt fönster)" +msgstr "Redigera detta objekt (aktuellt fönster)" #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." @@ -630,7 +638,7 @@ msgstr "" #: contrib/admin/templates/admin_doc/bookmarklets.html:27 msgid "Edit this object (new window)" -msgstr "Redigera det här objektet (nytt fönster)" +msgstr "Redigera detta objekt (nytt fönster)" #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "As above, but opens the admin page in a new window." @@ -707,7 +715,7 @@ msgstr "" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "" -"Du får det här e-postbrevet eftersom du bad om att få lösenordet nollställt" +"Du får detta e-postbrev eftersom du bad om att få lösenordet nollställt" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -722,7 +730,7 @@ msgstr "Ditt nya lösenord är: %(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 "" -"Du är välkommen att ändra det här lösenordet genom att gå till den här sidan:" +"Du är välkommen att ändra detta lösenord genom att gå till denna sida:" #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" @@ -796,7 +804,7 @@ msgstr "Lösenordet ändrades." msgid "Change password: %s" msgstr "Ändra lösenord: %s" -#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60 +#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -804,7 +812,7 @@ msgstr "" "Var god ange ett korrekt användarnamn och lösenord. Tänk på att skilja " "mellan gemener och versaler." -#: contrib/admin/views/decorators.py:63 +#: contrib/admin/views/decorators.py:69 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." @@ -812,19 +820,19 @@ msgstr "" "Du måste logga in igen eftersom din session har förfallit. Oroa dig inte: " "Din data har sparats." -#: contrib/admin/views/decorators.py:70 +#: contrib/admin/views/decorators.py:76 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." msgstr "" "Det verkar som att din webläsare inte är konfigurerad att acceptera cookies. " -"Aktivera cookies, ladda om den här sidan och försök igen." +"Aktivera cookies, ladda om denna sida och försök igen." -#: contrib/admin/views/decorators.py:84 +#: contrib/admin/views/decorators.py:90 msgid "Usernames cannot contain the '@' character." msgstr "Användarnamn får inte innehålla '@'-tecknet." -#: contrib/admin/views/decorators.py:86 +#: contrib/admin/views/decorators.py:92 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället." @@ -852,7 +860,7 @@ msgstr "Applikation %r hittades inte" #: contrib/admin/views/doc.py:173 #, python-format msgid "Model %(name)r not found in app %(label)r" -msgstr "Modellen %(name)r hittades inte i applikation %(label)r" +msgstr "Modell %(name)r hittades inte i applikation %(label)r" #: contrib/admin/views/doc.py:185 #, python-format @@ -1170,7 +1178,7 @@ msgstr "personalstatus" #: contrib/auth/models.py:136 msgid "Designates whether the user can log into this admin site." -msgstr "Avgör om användaren kan logga in på den här adminsidan." +msgstr "Avgör om användaren kan logga in på denna adminsida." #: contrib/auth/models.py:137 msgid "active" @@ -1193,7 +1201,7 @@ msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" -"Anger att den här användaren har alla rättigheter utan att uttryckligen " +"Anger att denna användare har alla rättigheter utan att uttryckligen " "tilldela dem." #: contrib/auth/models.py:139 @@ -1314,8 +1322,8 @@ msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Bocka för den här rutan om kommentaren är olämplig. Ett \"Den här " -"kommentaren har tagits bort\"-meddelande kommer visas istället." +"Bocka för denna ruta om kommentaren är olämplig. Ett \"Denna " +"kommentar har tagits bort\"-meddelande kommer visas istället." #: contrib/comments/models.py:96 msgid "comments" @@ -1388,7 +1396,7 @@ msgid "" "\n" "%(text)s" msgstr "" -"Den här kommentaren flaggades av %(user)s:\n" +"Denna kommentar flaggades av %(user)s:\n" "\n" "%(text)s" @@ -1465,7 +1473,7 @@ msgstr "Ditt namn:" #: contrib/comments/views/comments.py:28 msgid "" "This rating is required because you've entered at least one other rating." -msgstr "Det här betyget krävs eftersom du har fyllt i minst ett annat betyg." +msgstr "Detta betyg krävs eftersom du har fyllt i minst ett annat betyg." #: contrib/comments/views/comments.py:112 #, python-format @@ -1480,12 +1488,12 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" -"Den här kommentaren postades av en användare som har postat färre än %(count)" +"Denna kommentar postades av en användare som har postat färre än %(count)" "s kommentar:\n" "\n" "%(text)s" msgstr[1] "" -"Den här kommentaren postades av en användare som har postat färre än %(count)" +"Denna kommentar postades av en användare som har postat färre än %(count)" "s kommentarer:\n" "\n" "%(text)s" @@ -1497,7 +1505,7 @@ msgid "" "\n" "%(text)s" msgstr "" -"Den här kommentaren postades av en oseriös användare:\n" +"Denna kommentar postades av en oseriös användare:\n" "\n" "%(text)s" @@ -1582,7 +1590,7 @@ msgid "" "Example: 'flatpages/contact_page.html'. If this isn't provided, the system " "will use 'flatpages/default.html'." msgstr "" -"Exempel: 'sidor/kontaktsida.html'. Om det här inte fylls i kommer systemet " +"Exempel: 'sidor/kontaktsida.html'. Om detta inte fylls i kommer systemet " "att använda 'flatpages/default.html'." #: contrib/flatpages/models.py:14 @@ -1592,7 +1600,7 @@ msgstr "registrering krävs" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -"Om det här bockas för kommer endast inloggade användare kunna se sidan." +"Om detta bockas för kommer endast inloggade användare kunna se sidan." #: contrib/flatpages/models.py:18 msgid "flat page" @@ -1602,110 +1610,110 @@ msgstr "statisk sida" msgid "flat pages" msgstr "statiska sidor" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "th" msgstr "" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "st" msgstr "" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "nd" msgstr "" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "rd" msgstr "" -#: contrib/humanize/templatetags/humanize.py:52 +#: contrib/humanize/templatetags/humanize.py:51 #, python-format msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f miljon" msgstr[1] "%(value).1f miljoner" -#: contrib/humanize/templatetags/humanize.py:55 +#: contrib/humanize/templatetags/humanize.py:54 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value)1.f miljard" msgstr[1] "%(value)1.f miljarder" -#: contrib/humanize/templatetags/humanize.py:58 +#: contrib/humanize/templatetags/humanize.py:57 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value)1.f biljon" msgstr[1] "%(value)1.f biljoner" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "one" msgstr "ett" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "two" msgstr "två" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "three" msgstr "tre" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "four" msgstr "fyra" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "five" msgstr "fem" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "six" msgstr "sex" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "seven" msgstr "sju" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "eight" msgstr "åtta" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "nine" msgstr "nio" -#: contrib/humanize/templatetags/humanize.py:94 +#: contrib/humanize/templatetags/humanize.py:93 msgid "today" msgstr "idag" -#: contrib/humanize/templatetags/humanize.py:96 +#: contrib/humanize/templatetags/humanize.py:95 msgid "tomorrow" msgstr "imorgon" -#: contrib/humanize/templatetags/humanize.py:98 +#: contrib/humanize/templatetags/humanize.py:97 msgid "yesterday" msgstr "igår" -#: contrib/localflavor/ar/forms.py:28 +#: contrib/localflavor/ar/forms.py:27 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Fyll i ett postnummer med formatet NNNN eller ANNNNAAA." -#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/ar/forms.py:49 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 "Detta fält kräver enbart siffror." -#: contrib/localflavor/ar/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 msgid "This field requires 7 or 8 digits." msgstr "Detta fält kräver 7 eller 8 sifrror." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:79 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Fyll i ett giltigt CUIT med formatet XX-XXXXXXXX-X eller XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:81 +#: contrib/localflavor/ar/forms.py:80 msgid "Invalid CUIT." msgstr "Felaktigt CUIT." @@ -1750,11 +1758,10 @@ msgid "Enter a postal code in the format XXX XXX." msgstr "Fyll i ett postnummer med formatet XXX XXX." #: contrib/localflavor/ca/forms.py:88 -#, fuzzy msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" -"Fyll i ett giltigt Kannadensiskt \"social insurance number\" med formatet " -"XXX-XXX-XXX." +"Fyll i ett giltigt Kanadensiskt \"social insurance number\" med formatet XXX-" +"XXX-XXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1873,19 +1880,16 @@ msgstr "" "X1234567<0 eller 1234567890." #: contrib/localflavor/cl/forms.py:29 -#, fuzzy msgid "Enter a valid Chilean RUT." msgstr "Fyll i ett giltigt chilenskt RUT" #: contrib/localflavor/cl/forms.py:30 -#, fuzzy msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Fyll i ett giltigt chilenskt RUT. Formatet är XX.XXX.XXX-X." #: contrib/localflavor/cl/forms.py:31 -#, fuzzy msgid "The Chilean RUT is not valid." -msgstr "Det här fältet är ogiltigt." +msgstr "Det chilenska RUT:et var inte giltigt." #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" @@ -1977,14 +1981,12 @@ msgid "Alacant" msgstr "" #: contrib/localflavor/es/es_provinces.py:8 -#, fuzzy msgid "Almeria" -msgstr "Aomori" +msgstr "Almería" #: contrib/localflavor/es/es_provinces.py:9 -#, fuzzy msgid "Avila" -msgstr "Akita" +msgstr "Ávila" #: contrib/localflavor/es/es_provinces.py:10 msgid "Badajoz" @@ -1995,262 +1997,243 @@ msgid "Illes Balears" msgstr "" #: contrib/localflavor/es/es_provinces.py:12 -#, fuzzy msgid "Barcelona" -msgstr "Makedonska" +msgstr "Barcelona" #: contrib/localflavor/es/es_provinces.py:13 msgid "Burgos" -msgstr "" +msgstr "Burgos" #: contrib/localflavor/es/es_provinces.py:14 msgid "Caceres" -msgstr "" +msgstr "Cáceres" #: contrib/localflavor/es/es_provinces.py:15 msgid "Cadiz" -msgstr "" +msgstr "Cádiz" #: contrib/localflavor/es/es_provinces.py:16 msgid "Castello" -msgstr "" +msgstr "Castellón" #: contrib/localflavor/es/es_provinces.py:17 msgid "Ciudad Real" -msgstr "" +msgstr "Ciudad Real" #: contrib/localflavor/es/es_provinces.py:18 msgid "Cordoba" -msgstr "" +msgstr "Córdoba" #: contrib/localflavor/es/es_provinces.py:19 msgid "A Coruna" -msgstr "" +msgstr "A Coruña" #: contrib/localflavor/es/es_provinces.py:20 msgid "Cuenca" -msgstr "" +msgstr "Cuenca" #: contrib/localflavor/es/es_provinces.py:21 msgid "Girona" -msgstr "" +msgstr "Girona" #: contrib/localflavor/es/es_provinces.py:22 -#, fuzzy msgid "Granada" -msgstr "Kannada" +msgstr "Granada" #: contrib/localflavor/es/es_provinces.py:23 msgid "Guadalajara" -msgstr "" +msgstr "Guadalajara" #: contrib/localflavor/es/es_provinces.py:24 msgid "Guipuzkoa" -msgstr "" +msgstr "Guipuzkoa" #: contrib/localflavor/es/es_provinces.py:25 msgid "Huelva" -msgstr "" +msgstr "Huelva" #: contrib/localflavor/es/es_provinces.py:26 -#, fuzzy msgid "Huesca" -msgstr "Tisdag" +msgstr "Huesca" #: contrib/localflavor/es/es_provinces.py:27 -#, fuzzy msgid "Jaen" -msgstr "Januari" +msgstr "Jaén" #: contrib/localflavor/es/es_provinces.py:28 -#, fuzzy msgid "Leon" -msgstr "Logga in" +msgstr "León" #: contrib/localflavor/es/es_provinces.py:29 msgid "Lleida" -msgstr "" +msgstr "Lleida" #: contrib/localflavor/es/es_provinces.py:30 #: contrib/localflavor/es/es_regions.py:17 msgid "La Rioja" -msgstr "" +msgstr "La Rioja" #: contrib/localflavor/es/es_provinces.py:31 msgid "Lugo" -msgstr "" +msgstr "Lugo" #: contrib/localflavor/es/es_provinces.py:32 #: contrib/localflavor/es/es_regions.py:18 msgid "Madrid" -msgstr "" +msgstr "Madrid" #: contrib/localflavor/es/es_provinces.py:33 -#, fuzzy msgid "Malaga" -msgstr "Saga" +msgstr "Málaga" #: contrib/localflavor/es/es_provinces.py:34 -#, fuzzy msgid "Murcia" -msgstr "Jura" +msgstr "Murcia" #: contrib/localflavor/es/es_provinces.py:35 msgid "Navarre" -msgstr "" +msgstr "Navarra" #: contrib/localflavor/es/es_provinces.py:36 msgid "Ourense" -msgstr "" +msgstr "Ourense" #: contrib/localflavor/es/es_provinces.py:37 msgid "Asturias" -msgstr "" +msgstr "Asturien" #: contrib/localflavor/es/es_provinces.py:38 -#, fuzzy msgid "Palencia" -msgstr "Galisiska" +msgstr "Palencia" #: contrib/localflavor/es/es_provinces.py:39 msgid "Las Palmas" -msgstr "" +msgstr "Las Palmas" #: contrib/localflavor/es/es_provinces.py:40 msgid "Pontevedra" -msgstr "" +msgstr "Pontevedra" #: contrib/localflavor/es/es_provinces.py:41 -#, fuzzy msgid "Salamanca" -msgstr "Saitama" +msgstr "Salamanca" #: contrib/localflavor/es/es_provinces.py:42 msgid "Santa Cruz de Tenerife" -msgstr "" +msgstr "Santa Cruz de Tenerife" #: contrib/localflavor/es/es_provinces.py:43 #: contrib/localflavor/es/es_regions.py:11 -#, fuzzy msgid "Cantabria" -msgstr "Katalanska" +msgstr "Kantabrien" #: contrib/localflavor/es/es_provinces.py:44 -#, fuzzy msgid "Segovia" -msgstr "Slovenska" +msgstr "Segovia" #: contrib/localflavor/es/es_provinces.py:45 msgid "Seville" -msgstr "" +msgstr "Sevilla" #: contrib/localflavor/es/es_provinces.py:46 -#, fuzzy msgid "Soria" -msgstr "Serbiska" +msgstr "Soria" #: contrib/localflavor/es/es_provinces.py:47 msgid "Tarragona" -msgstr "" +msgstr "Tarragona" #: contrib/localflavor/es/es_provinces.py:48 -#, fuzzy msgid "Teruel" -msgstr "Tis" +msgstr "Teruel" #: contrib/localflavor/es/es_provinces.py:49 msgid "Toledo" -msgstr "" +msgstr "Toledo" #: contrib/localflavor/es/es_provinces.py:50 -#, fuzzy msgid "Valencia" -msgstr "Galisiska" +msgstr "Valencia" #: contrib/localflavor/es/es_provinces.py:51 -#, fuzzy msgid "Valladolid" -msgstr "Valais" +msgstr "Valladolid" #: contrib/localflavor/es/es_provinces.py:52 msgid "Bizkaia" -msgstr "" +msgstr "Biscaya" #: contrib/localflavor/es/es_provinces.py:53 -#, fuzzy msgid "Zamora" -msgstr "Nara" +msgstr "Zamora" #: contrib/localflavor/es/es_provinces.py:54 msgid "Zaragoza" -msgstr "" +msgstr "Zaragoza" #: contrib/localflavor/es/es_provinces.py:55 msgid "Ceuta" -msgstr "" +msgstr "Ceuta" #: contrib/localflavor/es/es_provinces.py:56 msgid "Melilla" -msgstr "" +msgstr "Melilla" #: contrib/localflavor/es/es_regions.py:5 msgid "Andalusia" -msgstr "" +msgstr "Andalusien" #: contrib/localflavor/es/es_regions.py:6 msgid "Aragon" -msgstr "" +msgstr "Aragonien" #: contrib/localflavor/es/es_regions.py:7 msgid "Principality of Asturias" -msgstr "" +msgstr "Asturien" #: contrib/localflavor/es/es_regions.py:8 msgid "Balearic Islands" -msgstr "" +msgstr "Balearerna" #: contrib/localflavor/es/es_regions.py:9 msgid "Basque Country" -msgstr "" +msgstr "Baskien" #: contrib/localflavor/es/es_regions.py:10 -#, fuzzy msgid "Canary Islands" -msgstr "Saarland" +msgstr "Kanarieöarna" #: contrib/localflavor/es/es_regions.py:12 msgid "Castile-La Mancha" -msgstr "" +msgstr "Kastilien-La Mancha" #: contrib/localflavor/es/es_regions.py:13 msgid "Castile and Leon" -msgstr "" +msgstr "Kastilien och Leon" #: contrib/localflavor/es/es_regions.py:14 -#, fuzzy msgid "Catalonia" -msgstr "Katalanska" +msgstr "Katalonien" #: contrib/localflavor/es/es_regions.py:15 msgid "Extremadura" -msgstr "" +msgstr "Extremadura" #: contrib/localflavor/es/es_regions.py:16 -#, fuzzy msgid "Galicia" -msgstr "Galisiska" +msgstr "Galicien" #: contrib/localflavor/es/es_regions.py:19 msgid "Region of Murcia" -msgstr "" +msgstr "Murciaregionen" #: contrib/localflavor/es/es_regions.py:20 msgid "Foral Community of Navarre" -msgstr "" +msgstr "Navarra" #: contrib/localflavor/es/es_regions.py:21 msgid "Valencian Community" -msgstr "" +msgstr "Valenciaregionen" #: contrib/localflavor/es/forms.py:19 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." @@ -2274,24 +2257,25 @@ msgstr "Var god fyll i giltigt NIF eller NIE." #: contrib/localflavor/es/forms.py:68 msgid "Invalid checksum for NIF." -msgstr "" +msgstr "Ogiltig kontrollsumma för NIF." #: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIE." -msgstr "" +msgstr "Ogiltig kontrollsumma för NIE." #: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for CIF." -msgstr "" +msgstr "Ogiltig kontrollsumma för CIF." #: contrib/localflavor/es/forms.py:142 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" +"Var god fyll i ett giltigt bankkontonummer i XXXX-XXXX-XX-XXXXXXXXXX-format." #: contrib/localflavor/es/forms.py:143 msgid "Invalid checksum for bank account number." -msgstr "" +msgstr "Ogiltig kontrollsumma för bankkontonummer." #: contrib/localflavor/fi/forms.py:28 msgid "Enter a valid Finnish social security number." @@ -2322,7 +2306,7 @@ msgstr "Fyll i ett giltigt personnummer." msgid "Enter a valid VAT number." msgstr "Fyll i ett giltigt VAT-nummer." -#: contrib/localflavor/jp/forms.py:19 +#: contrib/localflavor/jp/forms.py:17 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." msgstr "Fyll i ett postnummer med formatet XXXXXXX eller XXX-XXXX." @@ -2572,7 +2556,7 @@ msgstr "Jalisco" #: contrib/localflavor/mx/mx_states.py:26 msgid "Estado de México" -msgstr "" +msgstr "Mexikanska staten" #: contrib/localflavor/mx/mx_states.py:27 msgid "Michoacán" @@ -2716,11 +2700,11 @@ msgstr "Detta fält kräver 11 sifrror." #: contrib/localflavor/pl/forms.py:39 msgid "National Identification Number consists of 11 digits." -msgstr "" +msgstr "\"National Identification Number\" består av 11 siffror." #: contrib/localflavor/pl/forms.py:40 msgid "Wrong checksum for the National Identification Number." -msgstr "" +msgstr "Fel kontrollsumma för \"National Identification Number\"" #: contrib/localflavor/pl/forms.py:72 msgid "" @@ -2730,15 +2714,16 @@ msgstr "" #: contrib/localflavor/pl/forms.py:73 msgid "Wrong checksum for the Tax Number (NIP)." -msgstr "" +msgstr "Fel kontrollsumma för skattenumret (NIP)." #: contrib/localflavor/pl/forms.py:112 msgid "National Business Register Number (REGON) consists of 7 or 9 digits." msgstr "" +"\"National Business Register Number\" (REGON) består av 7 eller 9 siffror." #: contrib/localflavor/pl/forms.py:113 msgid "Wrong checksum for the National Business Register Number (REGON)." -msgstr "" +msgstr "Fel kontrollsumma för \"National Business Register Number\" (REGON)." #: contrib/localflavor/pl/forms.py:156 msgid "Enter a postal code in the format XX-XXX." @@ -2773,9 +2758,8 @@ msgid "Masovia" msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:15 -#, fuzzy msgid "Opole" -msgstr "Valfri" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:16 msgid "Subcarpatia" @@ -2786,14 +2770,12 @@ msgid "Podlasie" msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:18 -#, fuzzy msgid "Pomerania" -msgstr "Rumänska" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:19 -#, fuzzy msgid "Silesia" -msgstr "Slovenska" +msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:20 msgid "Swietokrzyskie" @@ -2808,14 +2790,12 @@ msgid "Greater Poland" msgstr "" #: contrib/localflavor/pl/pl_voivodeships.py:23 -#, fuzzy msgid "West Pomerania" -msgstr "Mecklenburg-Vorpommern" +msgstr "" #: contrib/localflavor/sk/forms.py:30 -#, fuzzy msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "Fyll i ett postnummer med formatet XXXXXXX eller XXX-XXXX." +msgstr "Fyll i ett postnummer med formatet XXXXX eller XXX XX." #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -2834,9 +2814,8 @@ msgid "Banovce nad Bebravou" msgstr "" #: contrib/localflavor/sk/sk_districts.py:12 -#, fuzzy msgid "Brezno" -msgstr "Bremen" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:13 msgid "Bratislava I" @@ -2879,14 +2858,12 @@ msgid "Dunajska Streda" msgstr "" #: contrib/localflavor/sk/sk_districts.py:23 -#, fuzzy msgid "Galanta" -msgstr "Galisiska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:24 -#, fuzzy msgid "Gelnica" -msgstr "Galisiska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:25 msgid "Hlohovec" @@ -2905,9 +2882,8 @@ msgid "Kezmarok" msgstr "" #: contrib/localflavor/sk/sk_districts.py:29 -#, fuzzy msgid "Komarno" -msgstr "Koreanska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:30 msgid "Kosice I" @@ -2950,19 +2926,16 @@ msgid "Liptovsky Mikulas" msgstr "" #: contrib/localflavor/sk/sk_districts.py:40 -#, fuzzy msgid "Lucenec" -msgstr "Luzern" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:41 -#, fuzzy msgid "Malacky" -msgstr "Maj" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:42 -#, fuzzy msgid "Martin" -msgstr "Lettiska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:43 msgid "Medzilaborce" @@ -2981,9 +2954,8 @@ msgid "Namestovo" msgstr "" #: contrib/localflavor/sk/sk_districts.py:47 -#, fuzzy msgid "Nitra" -msgstr "Niigata" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:48 msgid "Nove Mesto nad Vahom" @@ -3002,9 +2974,8 @@ msgid "Pezinok" msgstr "" #: contrib/localflavor/sk/sk_districts.py:52 -#, fuzzy msgid "Piestany" -msgstr "Persiska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:53 msgid "Poltar" @@ -3047,29 +3018,24 @@ msgid "Ruzomberok" msgstr "" #: contrib/localflavor/sk/sk_districts.py:63 -#, fuzzy msgid "Sabinov" -msgstr "nov" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:64 -#, fuzzy msgid "Senec" -msgstr "Bern" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:65 -#, fuzzy msgid "Senica" -msgstr "Slovenska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:66 -#, fuzzy msgid "Skalica" -msgstr "Galisiska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:67 -#, fuzzy msgid "Snina" -msgstr "nio" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:68 msgid "Sobrance" @@ -3092,9 +3058,8 @@ msgid "Svidnik" msgstr "" #: contrib/localflavor/sk/sk_districts.py:73 -#, fuzzy msgid "Sala" -msgstr "Saga" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:74 msgid "Topolcany" @@ -3105,9 +3070,8 @@ msgid "Trebisov" msgstr "" #: contrib/localflavor/sk/sk_districts.py:76 -#, fuzzy msgid "Trencin" -msgstr "Franska" +msgstr "" #: contrib/localflavor/sk/sk_districts.py:77 msgid "Trnava" @@ -3210,22 +3174,20 @@ msgid "Derbyshire" msgstr "" #: contrib/localflavor/uk/uk_regions.py:18 -#, fuzzy msgid "Devon" -msgstr "sju" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:19 msgid "Dorset" msgstr "" #: contrib/localflavor/uk/uk_regions.py:20 -#, fuzzy msgid "Durham" -msgstr "Jura" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:21 msgid "East Sussex" -msgstr "" +msgstr "Östsussex" #: contrib/localflavor/uk/uk_regions.py:22 msgid "Essex" @@ -3252,14 +3214,12 @@ msgid "Hertfordshire" msgstr "" #: contrib/localflavor/uk/uk_regions.py:28 -#, fuzzy msgid "Kent" -msgstr "Koreanska" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:29 -#, fuzzy msgid "Lancashire" -msgstr "Yamanashi" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:30 msgid "Leicestershire" @@ -3318,9 +3278,8 @@ msgid "Suffolk" msgstr "" #: contrib/localflavor/uk/uk_regions.py:44 -#, fuzzy msgid "Surrey" -msgstr "Aktuell:" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:45 msgid "Tyne and Wear" @@ -3359,10 +3318,13 @@ msgid "County Armagh" msgstr "" #: contrib/localflavor/uk/uk_regions.py:57 -#: contrib/localflavor/uk/uk_regions.py:58 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 "" @@ -3404,9 +3366,8 @@ msgid "West Glamorgan" msgstr "" #: contrib/localflavor/uk/uk_regions.py:75 -#, fuzzy msgid "Borders" -msgstr "Sortera:" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:76 msgid "Central Scotland" @@ -3417,23 +3378,20 @@ msgid "Dumfries and Galloway" msgstr "" #: contrib/localflavor/uk/uk_regions.py:78 -#, fuzzy msgid "Fife" -msgstr "Filter" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:79 -#, fuzzy msgid "Grampian" -msgstr "Tyska" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:80 msgid "Highland" msgstr "" #: contrib/localflavor/uk/uk_regions.py:81 -#, fuzzy msgid "Lothian" -msgstr "Lettiska" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:82 msgid "Orkney Islands" @@ -3456,23 +3414,20 @@ msgid "Western Isles" msgstr "" #: contrib/localflavor/uk/uk_regions.py:90 -#, fuzzy msgid "England" -msgstr "och" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:91 msgid "Northern Ireland" msgstr "" #: contrib/localflavor/uk/uk_regions.py:92 -#, fuzzy msgid "Scotland" -msgstr "Saarland" +msgstr "" #: contrib/localflavor/uk/uk_regions.py:93 -#, fuzzy msgid "Wales" -msgstr "Walesiska" +msgstr "" #: contrib/localflavor/us/forms.py:16 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." @@ -3483,29 +3438,24 @@ msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Fyll i ett giltigt amerikanskt personnummer i formatet XXX-XX-XXXX." #: contrib/localflavor/za/forms.py:20 -#, fuzzy msgid "Enter a valid South African ID number" -msgstr "Fyll i ett giltigt VAT-nummer." +msgstr "Fyll i ett giltigt Sydafrikanskt ID-nummer." #: contrib/localflavor/za/forms.py:54 -#, fuzzy msgid "Enter a valid South African postal code" -msgstr "Fyll i ett giltigt postnummer." +msgstr "Fyll i ett giltigt Afrikanskt postnummer." #: contrib/localflavor/za/za_provinces.py:4 -#, fuzzy msgid "Eastern Cape" -msgstr "Användarnamn" +msgstr "" #: contrib/localflavor/za/za_provinces.py:5 -#, fuzzy msgid "Free State" -msgstr "poängen tillsatt den" +msgstr "" #: contrib/localflavor/za/za_provinces.py:6 -#, fuzzy msgid "Gauteng" -msgstr "aug" +msgstr "" #: contrib/localflavor/za/za_provinces.py:7 msgid "KwaZulu-Natal" @@ -3524,14 +3474,12 @@ msgid "Northern Cape" msgstr "" #: contrib/localflavor/za/za_provinces.py:11 -#, fuzzy msgid "North West" -msgstr "Nordrhein-Westfalen" +msgstr "" #: contrib/localflavor/za/za_provinces.py:12 -#, fuzzy msgid "Western Cape" -msgstr "Användarnamn" +msgstr "" #: contrib/redirects/models.py:7 msgid "redirect from" @@ -3542,7 +3490,7 @@ msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -"Det här bör vara en absolut sökväg utan domännamnet. Exempel: '/handelser/" +"Detta bör vara en absolut sökväg utan domännamnet. Exempel: '/handelser/" "sok/'." #: contrib/redirects/models.py:9 @@ -3565,23 +3513,23 @@ msgstr "omdirigera" msgid "redirects" msgstr "omdirigeringar" -#: contrib/sessions/models.py:46 +#: contrib/sessions/models.py:41 msgid "session key" msgstr "sessionsnyckel" -#: contrib/sessions/models.py:47 +#: contrib/sessions/models.py:42 msgid "session data" msgstr "sessionsdata" -#: contrib/sessions/models.py:48 +#: contrib/sessions/models.py:43 msgid "expire date" msgstr "utgångsdatum" -#: contrib/sessions/models.py:53 +#: contrib/sessions/models.py:48 msgid "session" msgstr "session" -#: contrib/sessions/models.py:54 +#: contrib/sessions/models.py:49 msgid "sessions" msgstr "sessioner" @@ -3604,20 +3552,20 @@ msgstr "webbplatser" #: core/validators.py:72 msgid "This value must contain only letters, numbers and underscores." msgstr "" -"Det här värdet får endast innehålla bokstäver, siffror och understreck." +"Detta värde får endast innehålla bokstäver, siffror och understreck." #: core/validators.py:76 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" -"Det här värdet får endast innehålla bokstäver, siffror, understreck, " +"Detta värde får endast innehålla bokstäver, siffror, understreck, " "bindestreck eller snedstreck." #: core/validators.py:80 msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "" -"Det här värdet får endast innehålla bokstäver, siffror, understreck eller " +"Detta värde får endast innehålla bokstäver, siffror, understreck eller " "bindestreck." #: core/validators.py:84 @@ -3650,7 +3598,7 @@ msgstr "Icke-numeriska tecken är inte tillåtna här." #: core/validators.py:123 msgid "This value can't be comprised solely of digits." -msgstr "Det här värdet kan inte enbart bestå av siffror." +msgstr "Detta värde kan inte enbart bestå av siffror." #: core/validators.py:128 newforms/fields.py:151 msgid "Enter a whole number." @@ -3669,7 +3617,7 @@ msgstr "Årtal måste vara 1900 eller senare." msgid "Invalid date: %s" msgstr "Ogiltigt datum: %s" -#: core/validators.py:156 db/models/fields/__init__.py:509 +#: core/validators.py:156 db/models/fields/__init__.py:522 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Fyll i ett giltigt datum med formatet ÅÅÅÅ-MM-DD." @@ -3677,7 +3625,7 @@ msgstr "Fyll i ett giltigt datum med formatet ÅÅÅÅ-MM-DD." msgid "Enter a valid time in HH:MM format." msgstr "Fyll i ett giltigt klockslag med formatet TT:MM." -#: core/validators.py:165 db/models/fields/__init__.py:583 +#: core/validators.py:165 db/models/fields/__init__.py:599 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Fyll i en giltig tidpunkt med formatet ÅÅÅÅ-MM-DD TT:MM." @@ -3757,7 +3705,7 @@ msgstr[1] "Akta din tunga! Orden %s är inte tillåtna här." #: core/validators.py:288 #, python-format msgid "This field must match the '%s' field." -msgstr "Det här fältet måste matcha fältet '%s'." +msgstr "Detta fält måste matcha fältet '%s'." #: core/validators.py:307 msgid "Please enter something for at least one field." @@ -3770,12 +3718,12 @@ msgstr "Fyll antingen i båda fälten eller lämna båda tomma." #: core/validators.py:335 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Det är fältet måste anges om %(field)s är %(value)s" +msgstr "Detta fält måste anges om %(field)s är %(value)s" #: core/validators.py:348 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Det här fältet måste anges om %(field)s inte är %(value)s" +msgstr "Detta fält måste anges om %(field)s inte är %(value)s" #: core/validators.py:367 msgid "Duplicate values are not allowed." @@ -3784,22 +3732,22 @@ msgstr "Dubbletter är inte tillåtna." #: core/validators.py:382 #, python-format msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Det här värdet måste vara mellan %(lower)s och %(upper)s." +msgstr "Detta värde måste vara mellan %(lower)s och %(upper)s." #: core/validators.py:384 #, python-format msgid "This value must be at least %s." -msgstr "Det här värdet måste vara minst %s." +msgstr "Detta värde måste vara minst %s." #: core/validators.py:386 #, python-format msgid "This value must be no more than %s." -msgstr "Det här värdet får inte vara mer än %s." +msgstr "Detta värde får inte vara mer än %s." #: core/validators.py:427 #, python-format msgid "This value must be a power of %s." -msgstr "Det här värdet måste vara en potens av %s." +msgstr "Detta värde måste vara en potens av %s." #: core/validators.py:437 msgid "Please enter a valid decimal number." @@ -3848,11 +3796,11 @@ msgstr "Se till att filen du laddade upp är som mest %s byte stor." #: core/validators.py:485 msgid "The format for this field is wrong." -msgstr "Formatet för det här fältet är fel." +msgstr "Formatet för detta fält är fel." #: core/validators.py:500 msgid "This field is invalid." -msgstr "Det här fältet är ogiltigt." +msgstr "Detta fält är ogiltigt." #: core/validators.py:536 #, python-format @@ -3929,54 +3877,54 @@ msgstr "%(object)s med typen %(type)s finns redan för %(field)s." #: db/models/fields/__init__.py:52 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s med det här %(fieldname)s finns redan." +msgstr "%(optname)s med detta %(fieldname)s finns redan." -#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318 -#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:322 +#: db/models/fields/__init__.py:754 db/models/fields/__init__.py:765 #: newforms/fields.py:45 oldforms/__init__.py:374 msgid "This field is required." -msgstr "Det här fältet är obligatoriskt." +msgstr "Detta fält måste fyllas i." -#: db/models/fields/__init__.py:418 +#: db/models/fields/__init__.py:422 msgid "This value must be an integer." -msgstr "Det här värdet måste vara ett heltal." +msgstr "Detta värde måste vara ett heltal." -#: db/models/fields/__init__.py:454 +#: db/models/fields/__init__.py:461 msgid "This value must be either True or False." -msgstr "Det här värdet måste vara antingen True eller False." +msgstr "Detta värde måste vara antingen True eller False." -#: db/models/fields/__init__.py:475 +#: db/models/fields/__init__.py:485 msgid "This field cannot be null." -msgstr "Det här fältet får inte vara tomt." +msgstr "Detta fält får inte vara null." -#: db/models/fields/__init__.py:644 +#: db/models/fields/__init__.py:663 msgid "This value must be a decimal number." -msgstr "Det här värdet måste vara ett decimaltal." +msgstr "Detta värde måste vara ett decimaltal." -#: db/models/fields/__init__.py:755 +#: db/models/fields/__init__.py:774 msgid "Enter a valid filename." msgstr "Fyll i ett giltigt filnamn." -#: db/models/fields/__init__.py:908 +#: db/models/fields/__init__.py:945 msgid "This value must be either None, True or False." -msgstr "Det här värdet måste vara antingen None, True eller False." +msgstr "Detta värde måste vara antingen None, True eller False." -#: db/models/fields/related.py:55 +#: db/models/fields/related.py:93 #, python-format msgid "Please enter a valid %s." msgstr "Var god fyll i giltig %s." -#: db/models/fields/related.py:658 +#: db/models/fields/related.py:694 msgid "Separate multiple IDs with commas." msgstr "Separera flera ID-nummer med kommatecken." -#: db/models/fields/related.py:660 +#: db/models/fields/related.py:696 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Håll ner \"Control\" eller \"Command\" på en Mac för att välja fler än en." -#: db/models/fields/related.py:707 +#: db/models/fields/related.py:743 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -4059,7 +4007,7 @@ msgstr "Fyll i en giltig URL." msgid "This URL appears to be a broken link." msgstr "Denna URL verkar vara en trasig länk." -#: newforms/fields.py:559 newforms/models.py:317 +#: newforms/fields.py:559 newforms/models.py:300 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" "Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga " @@ -4072,7 +4020,7 @@ msgstr "" "Välj ett giltigt alternativ. %(value)s finns inte bland tillgängliga " "alternativ." -#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:377 +#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:360 msgid "Enter a list of values." msgstr "Fyll i en lista med värden." @@ -4080,7 +4028,7 @@ msgstr "Fyll i en lista med värden." msgid "Enter a valid IPv4 address." msgstr "Fyll i en giltig IPv4 adress." -#: newforms/models.py:378 +#: newforms/models.py:361 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "" @@ -4114,28 +4062,28 @@ msgstr "Fyll i ett positivt tal." msgid "Enter a whole number between 0 and 32,767." msgstr "Fyll i ett heltal mellan 0 och 32767." -#: template/defaultfilters.py:691 +#: template/defaultfilters.py:695 msgid "yes,no,maybe" msgstr "ja,nej,kanske" -#: template/defaultfilters.py:722 +#: template/defaultfilters.py:726 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d byte" -#: template/defaultfilters.py:724 +#: template/defaultfilters.py:728 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:726 +#: template/defaultfilters.py:730 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:727 +#: template/defaultfilters.py:731 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4398,23 +4346,23 @@ msgstr "%(number)d %(type)s" msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:403 msgid "DATE_FORMAT" msgstr "Y-m-d" -#: utils/translation/trans_real.py:400 +#: utils/translation/trans_real.py:404 msgid "DATETIME_FORMAT" msgstr "Y-m-d H:i" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:405 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:421 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:422 msgid "MONTH_DAY_FORMAT" msgstr "j F" @@ -4432,3 +4380,6 @@ msgstr "%(verbose_name)s uppdaterades." #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s togs bort." + +#~ msgid "Gaeilge" +#~ msgstr "Gaeliska" diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo index 39c60178031d665aacbf815c1f306fcdd42676cc..159f7adcb35feb180557b014eac025696fd5f87a 100644 GIT binary patch delta 214 zcmeC??c|+sr+x(^14A1#0|P4q1A{)0-~!U7Kw1DuI{;}8ARP##*?@EukQM~ei9i~p zt{5s`2c&s`{B|G>Qa1%ivjFMYKsppiF96c)K>8b0{vVKL0`ghe80^3j96(*XKmh?D xEeoXOfHcSe8z5~0q#dFBG9V2ys2WHE&0uKWJd=@;iOnS|F)uxT^CIS#OaMGA6-EF6 delta 216 zcmeC=?dF|ur+yV914A1#0|P4q1A`%u-~!U-Kw1DuI{|49ARP>(*?@EmkQM~e$v_&U zt`sWY0Hk?<{7xVZQa24qvjFM2KsppiF9Oo+K>7z%9;Ao~$Y*C`umekQ0R?!00zyDq y7Dy`qX^;VSK-vUIJ45*uKpJFFEszG9#n8HWCL<#gM@m*=UV463@#Y20FPQ)#{uOip diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.po b/django/conf/locale/sv/LC_MESSAGES/djangojs.po index b27f827176..9576e22cda 100644 --- a/django/conf/locale/sv/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-01 15:31+0100\n" "PO-Revision-Date: 2008-02-01 15:32+0100\n" diff --git a/django/conf/locale/ta/LC_MESSAGES/django.mo b/django/conf/locale/ta/LC_MESSAGES/django.mo index c1d3cf26f5da5667c20036b5fcb7c9abb0e02f67..ea0fab5fa2014bf776f0de3844c3e8318c820a12 100644 GIT binary patch delta 3612 zcmXZdd0fwT9Ki8+V<|~fk6cAWTdrTOxsQ9bJuduYzmn*Vu+MG zXO4Jaj%8X5Q^{hC#_TbBy?ws_{GOlp=llJBj`!#N{r<|XmwR@-TzdJ+_IL-8-h)M= z%ZpqaB2rUCf`*Hn#*ugq>yHqzVJSMH_ehaM^utixi}lcLlt>`9z@|72Yhfzp<0uA=m(Okj2XrtcoEMMJnM0^v9W4 z15>a)9zxAP8GeY)4E6zb#ugZfdL&8ciuQvvD$+QMy5p;;J9&h9G)|LE%4=gQRve6L z>0cNnvI1*PVPg8XqfS^DEz$ z5jw|+P=_)Ib%7a}$b=WMKk=v2MOcgMz+G5#2Ajb1NO?%|Of%sd+(4(zJ?yS91AcTC(RLAgN;5HxrE11Q@4DsSx_>bAkM^QI5W-^V;bs$FQYpa zV=or|8nq^Z=85#vDz?+e=E4=!2Ug5C4{Sq?52Ghu$4Xd&`ZoM+>9Ig$3vmGIMAs|} z@fh(d)aMQ^G)HmLo9 z2Ub9rrRKf%K%Jl->ckyz2lmE4@rBi27*GB+^?${iiP|QZx1k^E0I8^{%Ek>W@D);j zvM$lQ9q%p^xkns;x6qw)(+rfNBWi_qh6)&kJ#heLp=Q*1CHeQG;j_~0s5`n5Pe*-l z5uU&tq<&<{DiP{V-e5n^}X3y)gKsu2l`_m=AtLMY&AQqi^0Sp z*bq0PE6-oF`fqJBJM&L7wGf2P+&36?oG{eqXJSu%|8r<)4Y+PMpVSuEhBy@UXx1WG zlpd6@D;A)p{t;>lEB-1F&bB+ErV|go35Mfk%*6w^o*%w75^|6%U>=erX?}>0 z8{WqDxSQFd@zG)OAHvQ;kC+G2S>_WixMYh=#MhXLk;iy|`&^HUj3ACX!7i}?KgMdT zejY|(0zN=pNc1U_k>{u%xGLoT8vRvs_%}%2njeXXI1E^J+ zhk>lP6ekngE}3FVMxE#u*2fa8gKnHd95%%bxEr;ogUNdY*mwD7~Q#H1G-{524FU7jXXvzrXe@X2P7P$h*zRse}iLi{LlO_!DW0(^GY7|fhTX8 zOf36_zii??$cM=;F1O6e$DtP&iqHqk<(pL1!y3e0(Gx>)7*0i9&?R)lo7f2Npg+3& zYEs_PG8pU9KNdAJOVOt9|1KK7bQEAXN`Z+-qfW3GZMYH};4$>Zhu91qZ<`NQ8*E7& zicS7BZs-Q;#4oJa>kbQLerZo50wb_Bp2t9R_{|K|6}^c2T24d{;w7j>m4teI zALL;ms_EqaI;AYDUsf7kU!?@eb;^P9@e6x6XLzHLbm4(1ft4$SE0-gWcBr E4-I3M1poj5 delta 3616 zcmXZdd0fwT9Ki86`f4{$HxlYe>opw7{aV#k#(lbmX z&ROL80FhcE5DroEkeYOZLuXz!8(|Vd3X+k zadV`I4ND@$As#ed(cz8mLq&Wrz%m3o5sybN+=aT3i|D|Y=!esW8B@@m_^jnkyiZ($ z?_zG0NN21bEph_;M>9$V?HFzz^hUiQ0Bd3#Hp2y|17zR?e1UawOpN@$fu&fRcnh|` zlc@KXVtWi4L3S_}1273Yml4_LpwW+xKSr7xf=4kZaX2={Y-I8B2Uf?h(IT!Gi~g8^ zp11`&;BnLpyu{Y%#$b)`eGJ0Us7JB^-OzE2h6|00s5`!fx|1iUN8>uyq`V%sVZ|Z1 zhW`1nBFoTw923*O6LrGkIFWYfJKh}WCuk?0f?e?tQf~4u+Vm7ZCZBrd!!Z!&Vqd)x zd!yS#5$aGrL0w=5E@r~Z7(zVgGqQoZa3^|C7P*3#kn)g}cr&5X6p>`&fjAFe;w-JA zq^Tm^=y0AU@&)$7rC5N+F)l%56}Ffzl7pvEQ@1kFEGPv}5+A|$qU)B$ zm`VH^^|@nn%#mC`9rpn`>e49tIlE^84X_n)MveE{x$V~Eie;xT4>&eey9VaqNXYf*R#OaNd3vW z#pdm(v_zzkI0$cHbSWzd6`HTtcPQx?5TWkGX{Grv#iM3$KWYZ9qYj*pF8C+vMznyMfhRV_9vFlZ9W-{+*oL7v zV6~ZOJL&`V*O&)FP#;J{&Bz|q)R$mqtW4$V(e%QhI34YnkKyS1rAR$YL>)H;wT2uy zG@8>Wwr=qJ$`nmU+(-W_Ou;>CNi9bZ`n7rOqSx`}(4T>Y*!~;-8@OI)J?}a;OeTx; zZ`i=M1wB*vOk)uyb3I}s$54jzf3rzs2pxyFn4Q)7mI1i2KiV+|J}HVv(Ts^6PWYFlha9D#Z?YmqEU zFG|=A3s6)41T}?Kc9^4SfB6VI6s%ri_NjyP}L|J(SS zI60e#aLomC)^jeJqS}I*^27KRUa;aktWW$9_2_IrnA-72%|H(a4JR50tqVs{t27Vo zthf}%5(nm(VoE`s=ngi($LNdIIENY73fE&gYEg%f_bA4RM>Z|Df8rxWyy=P=$1yF} ze0mq6J2z}ZH{6FUFblOto}m^~_|N78G8|)xSEF8cy2h)8V^NskDwfjBy-qgp>Ic$A8ofy z%G+6nU|sr0p=M?=HrMxmFO7P16yQ*F{>8*Gs1q#2=C~Rg<0-6-k1zmT?wAi%M{Gr$ zh_1L7b>W$)8@h=)@e3>V$!DR=FI{Lv;RtMtm(Y&oel-JiM=#>OmgBG*@gmfs+JJif zAnFctu_r!9&5XUkjMKxiA8Mu|(V>kcR>vXqAuhu9Sgz3Q(2lyJ38(`)P-|r_>WM5^l7HR7BRX^;<$p5+2BM}u2KC1As1q(n-RWkm zhnZLd3sJ{;X<4nv#BW=6vm9(0Z@Ik4VQx&NLl=;RdIXQHxZypKj>Ms;MYRmO;6cFOv1!uvG@dHHr`ccgUKQvL0OH; z|7QA~^YnBMc5ipL)xby%M=D4<#-t3Mv4VFj;|KGYb)^p0F~Bvp@QF<FbW2* zz+yG(Gfcm8US7`L9L(;vnpjfDmMW5t8L5D0Y~UU1_`x!k9I20O9O4>#_{1(&v;V&l zzUT`qV&F=7jIoAWG7uu*5fRF!ZEc+R?`^rUQNwTMx?{N5M3lMe}4}U!5P{ Cx*QJx diff --git a/django/conf/locale/ta/LC_MESSAGES/djangojs.po b/django/conf/locale/ta/LC_MESSAGES/djangojs.po index 03fbece314..f60e945adf 100644 --- a/django/conf/locale/ta/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/ta/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # PONNUSAMY.A , 2007. msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-09 11:51+0100\n" "PO-Revision-Date: 2007-03-14 16:40+0530\n" diff --git a/django/conf/locale/te/LC_MESSAGES/django.mo b/django/conf/locale/te/LC_MESSAGES/django.mo index e86df1c91c6eb4948073c05ec6405782b4ec8ab6..1541b23fb303d14054cdea7b1a568232e5cb8efc 100644 GIT binary patch delta 16 XcmcaPiRtDfrVVa3j4qqqZG?OQI?@H_ delta 16 XcmcaPiRtDfrVVa3j47MlZG?OQJCX(m diff --git a/django/conf/locale/te/LC_MESSAGES/django.po b/django/conf/locale/te/LC_MESSAGES/django.po index e0c600ba3e..f0bb7a652d 100644 --- a/django/conf/locale/te/LC_MESSAGES/django.po +++ b/django/conf/locale/te/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-09-25 15:43+0200\n" "PO-Revision-Date: 2007-05-19 12:44+0530\n" diff --git a/django/conf/locale/te/LC_MESSAGES/djangojs.mo b/django/conf/locale/te/LC_MESSAGES/djangojs.mo index c7c56427cb5b8832fa9b2f0c0e90ac5afdd27d44..b8df70da0e6974e9296a49b4c1fd445840e1b24d 100644 GIT binary patch delta 198 zcmXBMtqQ_m7{&4PvM+-mLxcqp)`nrtq)}{UttQdns;0FigBKu1S)WO~1dB=V5;T}? z{$G}UoO2$YQ+Nyy_k3lfkt2c5uGGd7Q@mk>AMB#*Ndt`0?lX+BzywRQ_YeHy8+-Wj uYk$}wM?sy_fH!@LDa8=Cc*P60Fl$In%+cn3wKGrSkJpRMGOOm!#QOtMW*L6~ delta 200 zcmbOuI8SiGnfh!-1_m2u1_mI-u!4nwK^RD{0@8XwdLNLM0Mc)Pv<#4DV`X441=7ku z8YCYHq!od52awhP(yM?pNd09X{T@ia0n&0n`VJd}{tcu>fqW@;2;YDmXp9z6z#k}J x4Wz4p^e!O14M_6?=|T<$1|A^Y2&6&$zRi`4*BLodvJ&&s^RtRKhcUac0sx!>8mIsO diff --git a/django/conf/locale/te/LC_MESSAGES/djangojs.po b/django/conf/locale/te/LC_MESSAGES/djangojs.po index 7f392fde25..16f5f9f990 100644 --- a/django/conf/locale/te/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/te/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ # pavithran , 2007. msgid "" msgstr "" -"Project-Id-Version: djangojs\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" "PO-Revision-Date: 2007-03-06 16:08+0530\n" diff --git a/django/conf/locale/tr/LC_MESSAGES/django.mo b/django/conf/locale/tr/LC_MESSAGES/django.mo index b6bff7439e86e0a7ea1d99fa13df1df9e2cd8459..2d409001f4825f2877b08cde4ee08e4d90d37564 100644 GIT binary patch delta 16 Ycmdn7lWE6JrVW=87+p4BPIzh!07Y&H6aWAK delta 16 Ycmdn7lWE6JrVW=87*jT1PIzh!07fndGynhq diff --git a/django/conf/locale/tr/LC_MESSAGES/django.po b/django/conf/locale/tr/LC_MESSAGES/django.po index cbd21056e5..dd2c592cfb 100644 --- a/django/conf/locale/tr/LC_MESSAGES/django.po +++ b/django/conf/locale/tr/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-14 01:38+0200\n" "PO-Revision-Date: 2007-12-30 12:15+0200\n" diff --git a/django/conf/locale/tr/LC_MESSAGES/djangojs.mo b/django/conf/locale/tr/LC_MESSAGES/djangojs.mo index 9d5b8e2f51783f27dd7d0e7e9efc91db0a2585b0..1748dfa8d5f4e6a972b22ef3a6cda7353247e6e4 100644 GIT binary patch delta 207 zcmdnPvz=$co%%pV28K3f1_pKp28J6f3=BZT@Bm0~0_mqfnhi+5htl7GG&hj{7fAB} zX--xMUkpg|1Nllo8YsnJ1f+q8!5l~g0BKtw4N~6+q(SD*hSG~z8SKCouLKJ40VOs9 rX+0_j&k8l+JLNPuWI=qQ4Vi<^u8 zEroDCZgP{GOSp#JeY1|FZ7d~{9xaKbC(*$-w(;Be!!EV+Qot0g?qd%}NQ-93(wtb~ y60N^Ld#`LfdM)a~CpJ-@U-APB80@n5CK7=eL<9;S4UqvzUn&aWVdlL0oXV|6ML>ya*dGf;qS!wca5d z#kVmFn=8z^a1SQqj}_+q|KVi@Rx&V$VJyDGw-U8bBc@{vm*A6Fj03JeiXr;bcr*Th zEAWP>St^#I5~{!ytVJc-5cT|ltqf?R7%GEK%)=g3hQp|dN1Y#`zMsN;{03E-YZykm z)9g>k!~>XGX;y;$xEhb5_Brp-;GfO$Uk0wO@)uZ#>*;UDH8_N8an}8wdzaa`zQ=OB zh+8mNZAS9ej+%c6Yw#R0)w1t4TaL|GkKR5SEi{f}ABOHR8^kwIXB1)gg;<4MxE?3) zQ>itgZ^Zf~vrqs8YvK^FG5`oJLhFg)C$aGS9P88d|6l$FLEz@gMvWL$zEu{0?*Q z0_u$CQS*xK^#hHfHeQ1Yq`~!Ls0}-CBX+s*3Cw1HJ4r*4Uc$@x8*amI*ZB*TQAaIM zjk;v_V*q!c0_wy>?7@8OM=rd*gZh3JRmm%;!2WRko9bAX{VhNv50|3uLM4*C?ZsXA zK9*u|1Dj(Nssb;dDmCKzlc-npGjiM(CS3*Egt^#;s!$i|yI%APX~b#l!_#;SH`JSv zy#0lV2`qM>|BlzPJHgu(%)|(fUV(1J2=<{e{?PdqYQyuW%zwc$ypEbzvWfZ^(0F{4 z|Gs-s9}MCHcmh?raHGG#QfE1?V!Q@b@+WXP4&X8z!Rm#(tkLQqL z*&J%#mYseDI#HLc+j$Uk=^sG_`Uw`Yzn!F^g?>dXoYL-pkd8XTVpJ(_#dNH5wmLhU z-OiVt!_K&K3RQ_Ss3Z9oTU3hFU4BWjP=9Kdx&AF!NI!}yWechzJ*dnMV*!q#D)%+! Y;f3*$;I+b}y3R+R+Ov23-AG&HKQIgonE(I) delta 2169 zcmXZceN5F=9LMqRH8L*&UJ*gKT|kr=q3#BPTr;{vcr)Z72n9>wk6ZaiYcX89^>EoB zW)s)I>DrpvgB!7Ml}wHPsIbh;{$bhBHZ7@HPB&|X)m)?Z$KTnwyv{lIJbl0CoO^S^ z*LTAAVSHYq#%Ith#LkSJDn1Lm$JfowPQB0>kiFe~K zxD4+s=YwHXKx@&D>rnx;lqbA~%`|ACI4Xi}%)tRvgu|$T$DI?X{%0_RKcF)64`!gh z!fXa}@kPv7ZB~ebxDt<}*14RZz@N?XZy~O(^d_jo8tR>RKOVvdaN2!e5HTB5e_VlA zu>rH!m=U~fLybRxRd@**YWeq>EyZ?>Vd5nUtrSjTKL*#D?Z9GP^SLIw}M2p;A4L8ut}OaT1lWbfS<;kZ}nMQ_w_FJdCZFg||gn1cNvaf5OFh z1$D-As=aZ=sEt;k7G8(iNQeKsD67ekw;;i!gf55A7Mkx zjNr{4CNdw9% z2EFe+s166Q1y7?=7uw)WQ0T0{<+R68Dc_DuaR`^-G2D&kTzkCUn|Bv#gGZbv>&d@% zevXC|^f!15Wg>xF5hi0XK7p%{?AjpeIZa^?1{%GT4iD z8Ft}~1ciPI+aC4a@pb%{dZ^iKFJ_U3RCe+{E~7sFn0MwE@eS%X@Kqe*4fo+)thNx} zMg?>f=i&)eCQoAkCsB7QG3^?XHXVLA0C%*TF=<1ik^ly+~y zPmp(Qr%>akFb%JvHgXe{nK_$pJ;#LQQ>dijY1E~A3tzyWaVK^>?v4nTQ}=TYYp?

      zy|csFeUd? diff --git a/django/conf/locale/uk/LC_MESSAGES/django.po b/django/conf/locale/uk/LC_MESSAGES/django.po index 3974a86c5e..3b24145b94 100644 --- a/django/conf/locale/uk/LC_MESSAGES/django.po +++ b/django/conf/locale/uk/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:13+0200\n" "PO-Revision-Date: 2006-03-20 21:18+0300\n" diff --git a/django/conf/locale/uk/LC_MESSAGES/djangojs.mo b/django/conf/locale/uk/LC_MESSAGES/djangojs.mo index 1db40df91002f439139614f3e547bb0e3a43fecf..fae1fdc90ecbfb026c72e4a868c2e7b98f635067 100644 GIT binary patch delta 22 dcmaFQ^o(hO3Zu?MRShiun8OGrQ>BNX^iEM?0C2XN4Bv2L!!DtH!xUdD;1RA6?n%1B|6xrS)TQp@y z(6CtuQk>!fT4|k;sVD>1h@A=uZLo|WQ<`FDS~@Kyo&N5e`wQ23&hnh~|Aw_En?HB5 z`J1(=iFcZXP*xtoD$Mvv2<<}%d!GnlDjvmYm|77+I{p|_unH&OCd|XHusgP!7eX2i zwxjJM*q8bW?19^`10J0h5@9BV(^M!?&XXZ@#aWn)%j_y_LtKrw;|^?z`(1w+)&B!~ z%6^9GcMdz@Wyg(fZ}C(jt|axTm>>%^AQw55P=K2F04l+|n1`RCCTuo8nu6MS8|;Xg zs66?$7}bB0eFWPPKboM>nZh%u0h>`f++z=78u1ZSf)lQrjd6F%z%3z170luOq5o54-~hxPF8!cKZa>LT1|q z*ot^HYQ8PeMA+qu1E`g~WsjmJI)*FoG!DTDmC-8H+c}2nm+^EwsT@?Edr=!HcKsyO zj>}LBSk~0e{ja5<1Y0o!Yf)G70V+{F>QP>Hob*fx{fS%HVc3iKF}u$7hp`Lwm+(Gp z#562i#5LeVe1Q4G3l#LI&f-+O?b#5%i={XQx1v6ui>QRji(~&x)WS+|1kT6a_$F#W zXHlQqfAKENSQ7h>LFIW26N4$NqL7QfL7l`k)Py&22xcw~AseS*7Op|Hzkyo#In2S7 zWpSrNa4zv8)Cpd+S5W;LP$$uOIp4qTC}(-RlYBc8r&B)`^=J;F?(SV&g>|UJ6FENJ zTv6)|zp!th7WgYvzvHg2v!A>Ek2s3ldTOt#G{F@r%fB zRM;EiL}nT?uoj4iP$*Z;}&e?d)f3va{ZwJ}j^)cE!`6SIkPQIBl~PQjh1H}X%Mgl(%h z|85lKR)x?LSEF`#5QpO>yc;u~k4HQi3y2q?en{RywSR>#U^@Sl;sLxJQ>x>_(oh@g zhQ&D0^^2=H|70rGx?(+Q=Q~gd-onZF9x6fF&*G8yMvWVc>Q~^n$UfxyNsecsu4pbQ z|8mq9D|R#{+Fo4zqY4PCvqO=U<3BU@f+A3E=J}14{Bq{8{D z#SrenEbOax9E2Ni9P@_{Dd;ZSZHohPQ4@^9e4LFVa3|*A1=IoC}Ag5!rqQ^u{&`ACgDui&qj@_Ks~-n)D@h^Dfn-< zkKYmVO+n?KjXkjfb=8}9aQPTQ44IdCz_60SU=Q8@=yy&|eaY^}4vasH zn&=d2;ySmVi*X`crl6Hwcf$?Tfab5n1ti-$QT@6*?(29Es{e4;7upByG}MXy2-U9| zwXqFNCitufat3vBU!v;2vH!A-$S+*@*3YADQ4^=5 z=If`J`9qEy@==M3?O6M;onhyo7Eq2#xX`XZC0>upv)S>>j(4HP)uP6|jtTATJqq$e zH`JjLTtFqfY_(QD0HBy>WtewyVvu18spV+ROK^6^(brbo)cp3M=dq*H<~- zjQWY)gIefEuK&dGdDPYX8C&7s?f+cga$nq7`aaHI3A$4u`?{e&Y5@aLJ1ayjbfW8L zpce2rCgBFu_$`iW9PdWu*>4ZqW2k(eWKqz-v#zMeB;u>~uc!rlbEIF-iN(ny%V$@V M%{#KDe8sT;1L+rz`v3p{ delta 4552 zcmXZed2HA99mnwxZBiknb|91++X9xewg_|}P>Th_3L4~SfsMmjV60HJlS|=Ct3ys@ zT%~{(3W+NsI&h*+HWSILlHshlOhDL*BZ6eC!zCNb#-6W!U;psQiP3hu%j{07spTSW*R zag?2G=V2E0m6(BhF%3^vged%o!dWVmXy_9m^u|(5!fLw#Q;D}?JKT@$@v!Spp!$Dg z&)6?e{Vrfvyy`gN$+&;&lTo~qG*=8k4H$+TN+>{0d<2!?eayixP!lFS6`O+Ec_-|G zS*Seub`q-pOgj%d5ig7=bf@qvYCsKYhllJ@>`43$D#2;jH@W_Ty@48^P#Ho8Ohx6% z!0+K8?F6(KrLi} zU4bdY8&UJ^j*UXSD~_O6_O?BVn&=c(;aMDkGoFs!f_girQ2jEO#V0ism1jI^Ba>V| z6Sd=V)B>to+qwVE6qKMAdtn3WNwun_Zzi?N9L!%GzOsLo>vwqF^-eOQJQu@?3DTt+2KUKRJxLM^NW$KZ18hrdEC z=sfCk3(s)>kcsO5Fe=XyjD}O#K;d5eE$Sq0peDSHBQWdP5C-EM?2nsJ?QfwLegTJI z%IbKh_hT9HYSal{w%1VoTCgMDy@u~!cQkZOd?)#KBF>_ID(cZ3Mcv)|_&heD5*KrP zy30AJc#*BJ%TOCy?Rbmbfr-@bjVLHVohusL;dT2KYJtB-^=ou}ll{{5f5!2&UvquV z+IU(EE^8={%DX4KJj>~Mh zt+cCb73R}_Jx;)=(G989al$mz%6i!>)C9S1A8W_kNvI>9iaoH@^$}{^I>*}`??Ha6 z!mDu{h3?PAuQCg@vk9ny#h8na+g+#~H`-6_AMIE6YrL0!-=e;T9z2-4umH8O>8Sj3 zF^TsV%3BNkb+W76p~~@#n8<*g*cEG0S9T2bD6eA%Cj2Z;+!uQi=b|Qj*p}GGP#Y0`k9VPQCGAW zmH#=^S5q5NP=W^3NgQ|lIqKDZg*w6(d=PWD#6FGPiQh#nAhmD8f6j1SjG`*Z&fg_&4?p>O?MLDYoDMoc>Y>{5ppSmG6J3jU{i5 zH#*1;$7H&NdJc?!38w#?cY!N$0`7Bs*(Pm^cRT>oX&-Cn z+O=4y@BaV=ea}}g8`HPPi66n?#82Tk`~~Ve{}%O%Q+C9Ub^vODlaZf-P>%hu1$Eb5 zb}~5*!7R1oFx-KUFn{=%g6^{0u6V#O)C51kQMdrd-~k+hmry5^Qp1l6c0#?8Qk;wj zu`jluPAF}6yzr5zyt6S6mt&+Kk~b)5z&X?}*KN$fp0%-)aXj%F)WoMyS9Tipc>m=3 zX2(|@-?X=En?3RPwl;MS=dXlmR48FDRKkIdhhaK#0Vd*Ou3vx}SBZLjt58>P5sUG^ zZlAt4&i6x9{sq_vD^XWnvzPPlNa1(x_$6xRmr-}sXSFsvLV?7q(CC7tai9f?dcn|d}P;a6R zd*km>3%`z9V5hp+4AjE1Q5zYKI?*Vfg1+kq-C?Sog-S5rE_MAgw%TrR`&Rq1J&b9L zKY^O)3~J&gw_k|kC|sqWmECm1E!2QJ_QwlIwp~&E`Z*r#cqFR-1FkQ$Q|uhniT(uD zZ!2nJJ6etStSG4As6E!&z;8cl!Vj@6e&YCZ)K1Q!PVQ?|zwhjSY{G%oU%1fDc1BH{ zftoK{G4qF^ZpcR^nq;TiS$4i%gjzraD&b1I4wZO2Do>5$R~*-)#xPjf9)mPcp)XKC07z#7X;&a!1yyhWN*{;P Q=QdX|-euez&0Nm}0L7sc`~Uy| delta 197 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 Cmxo3G diff --git a/django/conf/locale/zh_TW/LC_MESSAGES/django.po b/django/conf/locale/zh_TW/LC_MESSAGES/django.po index 650ac5b912..1109545891 100644 --- a/django/conf/locale/zh_TW/LC_MESSAGES/django.po +++ b/django/conf/locale/zh_TW/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: django v1.0\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:13+0200\n" "PO-Revision-Date: 2007-04-05 01:32+1000\n" diff --git a/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.mo b/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.mo index 1db40df91002f439139614f3e547bb0e3a43fecf..fae1fdc90ecbfb026c72e4a868c2e7b98f635067 100644 GIT binary patch delta 22 dcmaFQ^o(hO3Zu?MRShHome › Documentation{% endblock %} -{% block userlinks %}{% trans 'Change password' %} / {% trans 'Log out' %}{% endblock %} -{% block title %}Documentation{% endblock %} - -{% block content %} - -

      Documentation

      - -
      -

      Tags

      -

      List of all the template tags and their functions.

      - -

      Filters

      -

      Filters are actions which can be applied to variables in a template to alter the output.

      - -

      Models

      -

      Models are descriptions of all the objects in the system and their associated fields. Each model has a list of fields which can be accessed as template variables.

      - -

      Views

      -

      Each page on the public site is generated by a view. The view defines which template is used to generate the page and which objects are available to that template.

      - -

      Bookmarklets

      -

      Tools for your browser to quickly access admin functionality.

      -
      - -{% endblock %} +{% extends "admin/base_site.html" %} +{% load i18n %} +{% block breadcrumbs %}{% endblock %} +{% block title %}Documentation{% endblock %} + +{% block content %} + +

      Documentation

      + +
      +

      Tags

      +

      List of all the template tags and their functions.

      + +

      Filters

      +

      Filters are actions which can be applied to variables in a template to alter the output.

      + +

      Models

      +

      Models are descriptions of all the objects in the system and their associated fields. Each model has a list of fields which can be accessed as template variables.

      + +

      Views

      +

      Each page on the public site is generated by a view. The view defines which template is used to generate the page and which objects are available to that template.

      + +

      Bookmarklets

      +

      Tools for your browser to quickly access admin functionality.

      +
      + +{% endblock %} + diff --git a/django/contrib/admin/templates/admin_doc/view_index.html b/django/contrib/admin/templates/admin_doc/view_index.html index 22c6dca379..4099005828 100644 --- a/django/contrib/admin/templates/admin_doc/view_index.html +++ b/django/contrib/admin/templates/admin_doc/view_index.html @@ -1,43 +1,43 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block coltype %}colSM{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block userlinks %}{% trans 'Change password' %} / {% trans 'Log out' %}{% endblock %} -{% block title %}Views{% endblock %} - -{% block content %} - -

      View documentation

      - -{% regroup views|dictsort:"site_id" by site as views_by_site %} - - - -
      - -{% for site_views in views_by_site %} -
      -

      Views by URL on {{ site_views.grouper.name }}

      - -{% for view in site_views.list|dictsort:"url" %} -{% ifchanged %} -

      {{ view.url|escape }}

      -

      View function: {{ view.module }}.{{ view.name }}

      -

      {{ view.title }}

      -
      -{% endifchanged %} -{% endfor %} -
      -{% endfor %} -
      -{% endblock %} - +{% extends "admin/base_site.html" %} +{% load i18n %} +{% block coltype %}colSM{% endblock %} +{% block breadcrumbs %}{% endblock %} +{% block title %}Views{% endblock %} + +{% block content %} + +

      View documentation

      + +{% regroup views|dictsort:"site_id" by site as views_by_site %} + + + +
      + +{% for site_views in views_by_site %} +
      +

      Views by URL on {{ site_views.grouper.name }}

      + +{% for view in site_views.list|dictsort:"url" %} +{% ifchanged %} +

      {{ view.url|escape }}

      +

      View function: {{ view.module }}.{{ view.name }}

      +

      {{ view.title }}

      +
      +{% endifchanged %} +{% endfor %} +
      +{% endfor %} +
      +{% endblock %} + + diff --git a/django/contrib/formtools/preview.py b/django/contrib/formtools/preview.py index 66583dde95..db5d58e971 100644 --- a/django/contrib/formtools/preview.py +++ b/django/contrib/formtools/preview.py @@ -105,7 +105,7 @@ class FormPreview(object): Subclasses may want to take into account request-specific information such as the IP address. """ - data = [(bf.name, bf.data) for bf in form] + [settings.SECRET_KEY] + data = [(bf.name, bf.data or '') for bf in form] + [settings.SECRET_KEY] # Use HIGHEST_PROTOCOL because it's the most efficient. It requires # Python 2.3, but Django requires 2.3 anyway, so that's OK. pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL) diff --git a/django/contrib/formtools/wizard.py b/django/contrib/formtools/wizard.py new file mode 100644 index 0000000000..a197c3e659 --- /dev/null +++ b/django/contrib/formtools/wizard.py @@ -0,0 +1,246 @@ +""" +FormWizard class -- implements a multi-page form, validating between each +step and storing the form's state as HTML hidden fields so that no state is +stored on the server side. +""" + +from django import newforms as forms +from django.conf import settings +from django.http import Http404 +from django.shortcuts import render_to_response +from django.template.context import RequestContext +import cPickle as pickle +import md5 + +class FormWizard(object): + # Dictionary of extra template context variables. + extra_context = {} + + # The HTML (and POST data) field name for the "step" variable. + step_field_name="wizard_step" + + # METHODS SUBCLASSES SHOULDN'T OVERRIDE ################################### + + def __init__(self, form_list, initial=None): + "form_list should be a list of Form classes (not instances)." + self.form_list = form_list[:] + self.initial = initial or {} + self.step = 0 # A zero-based counter keeping track of which step we're in. + + def __repr__(self): + return "step: %d\nform_list: %s\ninitial_data: %s" % (self.step, self.form_list, self.initial) + + def get_form(self, step, data=None): + "Helper method that returns the Form instance for the given step." + return self.form_list[step](data, prefix=self.prefix_for_step(step), initial=self.initial.get(step, None)) + + def num_steps(self): + "Helper method that returns the number of steps." + # You might think we should just set "self.form_list = len(form_list)" + # in __init__(), but this calculation needs to be dynamic, because some + # hook methods might alter self.form_list. + return len(self.form_list) + + def __call__(self, request, *args, **kwargs): + """ + Main method that does all the hard work, conforming to the Django view + interface. + """ + if 'extra_context' in kwargs: + self.extra_context.update(kwargs['extra_context']) + current_step = self.determine_step(request, *args, **kwargs) + self.parse_params(request, *args, **kwargs) + + # Sanity check. + if current_step >= self.num_steps(): + raise Http404('Step %s does not exist' % current_step) + + # For each previous step, verify the hash and process. + # TODO: Move "hash_%d" to a method to make it configurable. + for i in range(current_step): + form = self.get_form(i, request.POST) + if request.POST.get("hash_%d" % i, '') != self.security_hash(request, form): + return self.render_hash_failure(request, i) + self.process_step(request, form, i) + + # Process the current step. If it's valid, go to the next step or call + # done(), depending on whether any steps remain. + if request.method == 'POST': + form = self.get_form(current_step, request.POST) + else: + form = self.get_form(current_step) + if form.is_valid(): + self.process_step(request, form, current_step) + next_step = current_step + 1 + + # If this was the last step, validate all of the forms one more + # time, as a sanity check, and call done(). + num = self.num_steps() + if next_step == num: + final_form_list = [self.get_form(i, request.POST) for i in range(num)] + + # Validate all the forms. If any of them fail validation, that + # must mean the validator relied on some other input, such as + # an external Web site. + for i, f in enumerate(final_form_list): + if not f.is_valid(): + return self.render_revalidation_failure(request, i, f) + return self.done(request, final_form_list) + + # Otherwise, move along to the next step. + else: + form = self.get_form(next_step) + current_step = next_step + + return self.render(form, request, current_step) + + def render(self, form, request, step, context=None): + "Renders the given Form object, returning an HttpResponse." + old_data = request.POST + prev_fields = [] + if old_data: + hidden = forms.HiddenInput() + # Collect all data from previous steps and render it as HTML hidden fields. + for i in range(step): + old_form = self.get_form(i, old_data) + hash_name = 'hash_%s' % i + prev_fields.extend([bf.as_hidden() for bf in old_form]) + prev_fields.append(hidden.render(hash_name, old_data.get(hash_name, self.security_hash(request, old_form)))) + return self.render_template(request, form, ''.join(prev_fields), step, context) + + # METHODS SUBCLASSES MIGHT OVERRIDE IF APPROPRIATE ######################## + + def prefix_for_step(self, step): + "Given the step, returns a Form prefix to use." + return str(step) + + def render_hash_failure(self, request, step): + """ + Hook for rendering a template if a hash check failed. + + step is the step that failed. Any previous step is guaranteed to be + valid. + + This default implementation simply renders the form for the given step, + but subclasses may want to display an error message, etc. + """ + return self.render(self.get_form(step), request, step, context={'wizard_error': 'We apologize, but your form has expired. Please continue filling out the form from this page.'}) + + def render_revalidation_failure(self, request, step, form): + """ + Hook for rendering a template if final revalidation failed. + + It is highly unlikely that this point would ever be reached, but See + the comment in __call__() for an explanation. + """ + return self.render(form, request, step) + + def security_hash(self, request, form): + """ + Calculates the security hash for the given HttpRequest and Form instances. + + This creates a list of the form field names/values in a deterministic + order, pickles the result with the SECRET_KEY setting and takes an md5 + hash of that. + + Subclasses may want to take into account request-specific information, + such as the IP address. + """ + data = [(bf.name, bf.data or '') for bf in form] + [settings.SECRET_KEY] + # Use HIGHEST_PROTOCOL because it's the most efficient. It requires + # Python 2.3, but Django requires 2.3 anyway, so that's OK. + pickled = pickle.dumps(data, protocol=pickle.HIGHEST_PROTOCOL) + return md5.new(pickled).hexdigest() + + def determine_step(self, request, *args, **kwargs): + """ + Given the request object and whatever *args and **kwargs were passed to + __call__(), returns the current step (which is zero-based). + + Note that the result should not be trusted. It may even be a completely + invalid number. It's not the job of this method to validate it. + """ + if not request.POST: + return 0 + try: + step = int(request.POST.get(self.step_field_name, 0)) + except ValueError: + return 0 + return step + + def parse_params(self, request, *args, **kwargs): + """ + Hook for setting some state, given the request object and whatever + *args and **kwargs were passed to __call__(), sets some state. + + This is called at the beginning of __call__(). + """ + pass + + def get_template(self, step): + """ + Hook for specifying the name of the template to use for a given step. + + Note that this can return a tuple of template names if you'd like to + use the template system's select_template() hook. + """ + return 'forms/wizard.html' + + def render_template(self, request, form, previous_fields, step, context=None): + """ + Renders the template for the given step, returning an HttpResponse object. + + Override this method if you want to add a custom context, return a + different MIME type, etc. If you only need to override the template + name, use get_template() instead. + + The template will be rendered with the following context: + step_field -- The name of the hidden field containing the step. + step0 -- The current step (zero-based). + step -- The current step (one-based). + step_count -- The total number of steps. + form -- The Form instance for the current step (either empty + or with errors). + previous_fields -- A string representing every previous data field, + plus hashes for completed forms, all in the form of + hidden fields. Note that you'll need to run this + through the "safe" template filter, to prevent + auto-escaping, because it's raw HTML. + """ + context = context or {} + context.update(self.extra_context) + return render_to_response(self.get_template(self.step), dict(context, + step_field=self.step_field_name, + step0=step, + step=step + 1, + step_count=self.num_steps(), + form=form, + previous_fields=previous_fields + ), context_instance=RequestContext(request)) + + def process_step(self, request, form, step): + """ + Hook for modifying the FormWizard's internal state, given a fully + validated Form object. The Form is guaranteed to have clean, valid + data. + + This method should *not* modify any of that data. Rather, it might want + to set self.extra_context or dynamically alter self.form_list, based on + previously submitted forms. + + Note that this method is called every time a page is rendered for *all* + submitted steps. + """ + pass + + # METHODS SUBCLASSES MUST OVERRIDE ######################################## + + def done(self, request, form_list): + """ + Hook for doing something with the validated data. This is responsible + for the final processing. + + form_list is a list of Form instances, each containing clean, valid + data. + """ + raise NotImplementedError("Your %s class has not defined a done() method, which is required." % self.__class__.__name__) diff --git a/django/contrib/sessions/backends/file.py b/django/contrib/sessions/backends/file.py index cd3e3d9c75..d65c81c101 100644 --- a/django/contrib/sessions/backends/file.py +++ b/django/contrib/sessions/backends/file.py @@ -9,7 +9,9 @@ class SessionStore(SessionBase): Implements a file based session store. """ def __init__(self, session_key=None): - self.storage_path = getattr(settings, "SESSION_FILE_PATH", tempfile.gettempdir()) + self.storage_path = getattr(settings, "SESSION_FILE_PATH", None) + if not self.storage_path: + self.storage_path = tempfile.gettempdir() # Make sure the storage path is valid. if not os.path.isdir(self.storage_path): diff --git a/django/contrib/syndication/feeds.py b/django/contrib/syndication/feeds.py index 45b97d970a..85af79cc27 100644 --- a/django/contrib/syndication/feeds.py +++ b/django/contrib/syndication/feeds.py @@ -3,7 +3,8 @@ from django.template import Context, loader, Template, TemplateDoesNotExist from django.contrib.sites.models import Site, RequestSite from django.utils import feedgenerator from django.utils.encoding import smart_unicode, iri_to_uri -from django.conf import settings +from django.conf import settings +from django.template import RequestContext def add_domain(domain, url): if not (url.startswith('http://') or url.startswith('https://')): @@ -55,18 +56,23 @@ class Feed(object): return attr() return attr + def get_object(self, bits): + return None + def get_feed(self, url=None): """ Returns a feedgenerator.DefaultFeed object, fully populated, for this feed. Raises FeedDoesNotExist for invalid parameters. """ if url: - try: - obj = self.get_object(url.split('/')) - except (AttributeError, ObjectDoesNotExist): - raise FeedDoesNotExist + bits = url.split('/') else: - obj = None + bits = [] + + try: + obj = self.get_object(bits) + except ObjectDoesNotExist: + raise FeedDoesNotExist if Site._meta.installed: current_site = Site.objects.get_current() @@ -119,9 +125,9 @@ class Feed(object): else: author_email = author_link = None feed.add_item( - title = title_tmp.render(Context({'obj': item, 'site': current_site})), + title = title_tmp.render(RequestContext(self.request, {'obj': item, 'site': current_site})), link = link, - description = description_tmp.render(Context({'obj': item, 'site': current_site})), + description = description_tmp.render(RequestContext(self.request, {'obj': item, 'site': current_site})), unique_id = self.__get_dynamic_attr('item_guid', item, link), enclosure = enc, pubdate = self.__get_dynamic_attr('item_pubdate', item), diff --git a/django/core/mail.py b/django/core/mail.py index 72343cb4df..bf48dcb882 100644 --- a/django/core/mail.py +++ b/django/core/mail.py @@ -2,20 +2,21 @@ Tools for sending email. """ -from django.conf import settings -from django.utils.encoding import smart_str, force_unicode -from email import Charset, Encoders -from email.MIMEText import MIMEText -from email.MIMEMultipart import MIMEMultipart -from email.MIMEBase import MIMEBase -from email.Header import Header -from email.Utils import formatdate, parseaddr, formataddr import mimetypes import os import smtplib import socket import time import random +from email import Charset, Encoders +from email.MIMEText import MIMEText +from email.MIMEMultipart import MIMEMultipart +from email.MIMEBase import MIMEBase +from email.Header import Header +from email.Utils import formatdate, parseaddr, formataddr + +from django.conf import settings +from django.utils.encoding import smart_str, force_unicode # Don't BASE64-encode UTF-8 messages so that we avoid unwanted attention from # some spam filters. @@ -38,8 +39,9 @@ class CachedDnsName(object): DNS_NAME = CachedDnsName() -# Copied from Python standard library and modified to used the cached hostname -# for performance. +# Copied from Python standard library, with the following modifications: +# * Used cached hostname for performance. +# * Added try/except to support lack of getpid() in Jython (#5496). def make_msgid(idstring=None): """Returns a string suitable for RFC 2822 compliant Message-ID, e.g: @@ -53,7 +55,7 @@ def make_msgid(idstring=None): try: pid = os.getpid() except AttributeError: - # Not getpid() in Jython, for example. + # No getpid() in Jython, for example. pid = 1 randint = random.randrange(100000) if idstring is None: @@ -68,7 +70,7 @@ class BadHeaderError(ValueError): pass def forbid_multi_line_headers(name, val): - "Forbids multi-line headers, to prevent header injection." + """Forbids multi-line headers, to prevent header injection.""" if '\n' in val or '\r' in val: raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name)) try: @@ -101,7 +103,7 @@ class SMTPConnection(object): """ def __init__(self, host=None, port=None, username=None, password=None, - use_tls=None, fail_silently=False): + use_tls=None, fail_silently=False): self.host = host or settings.EMAIL_HOST self.port = port or settings.EMAIL_PORT self.username = username or settings.EMAIL_HOST_USER @@ -112,14 +114,17 @@ class SMTPConnection(object): def open(self): """ - Ensure we have a connection to the email server. Returns whether or not - a new connection was required. + Ensures we have a connection to the email server. Returns whether or + not a new connection was required (True or False). """ if self.connection: # Nothing to do if the connection is already open. return False try: - self.connection = smtplib.SMTP(self.host, self.port) + # If local_hostname is not specified, socket.getfqdn() gets used. + # For performance, we use the cached FQDN for local_hostname. + self.connection = smtplib.SMTP(self.host, self.port, + local_hostname=DNS_NAME.get_fqdn()) if self.use_tls: self.connection.ehlo() self.connection.starttls() @@ -132,7 +137,7 @@ class SMTPConnection(object): raise def close(self): - """Close the connection to the email server.""" + """Closes the connection to the email server.""" try: try: self.connection.quit() @@ -149,7 +154,7 @@ class SMTPConnection(object): def send_messages(self, email_messages): """ - Send one or more EmailMessage objects and return the number of email + Sends one or more EmailMessage objects and returns the number of email messages sent. """ if not email_messages: @@ -192,7 +197,7 @@ class EmailMessage(object): def __init__(self, subject='', body='', from_email=None, to=None, bcc=None, connection=None, attachments=None, headers=None): """ - Initialise a single email message (which can be sent to multiple + Initialize a single email message (which can be sent to multiple recipients). All strings used to create the message can be unicode strings (or UTF-8 @@ -221,7 +226,8 @@ class EmailMessage(object): def message(self): encoding = self.encoding or settings.DEFAULT_CHARSET - msg = SafeMIMEText(smart_str(self.body, settings.DEFAULT_CHARSET), self.content_subtype, encoding) + msg = SafeMIMEText(smart_str(self.body, settings.DEFAULT_CHARSET), + self.content_subtype, encoding) if self.attachments: body_msg = msg msg = SafeMIMEMultipart(_subtype=self.multipart_subtype) @@ -237,8 +243,6 @@ class EmailMessage(object): msg['To'] = ', '.join(self.to) msg['Date'] = formatdate() msg['Message-ID'] = make_msgid() - if self.bcc: - msg['Bcc'] = ', '.join(self.bcc) for name, value in self.extra_headers.items(): msg[name] = value return msg @@ -251,7 +255,7 @@ class EmailMessage(object): return self.to + self.bcc def send(self, fail_silently=False): - """Send the email message.""" + """Sends the email message.""" return self.get_connection(fail_silently).send_messages([self]) def attach(self, filename=None, content=None, mimetype=None): @@ -278,7 +282,7 @@ class EmailMessage(object): def _create_attachment(self, filename, content, mimetype=None): """ - Convert the filename, content, mimetype triple into a MIME attachment + Converts the filename, content, mimetype triple into a MIME attachment object. """ if mimetype is None: @@ -295,7 +299,8 @@ class EmailMessage(object): attachment.set_payload(content) Encoders.encode_base64(attachment) if filename: - attachment.add_header('Content-Disposition', 'attachment', filename=filename) + attachment.add_header('Content-Disposition', 'attachment', + filename=filename) return attachment class EmailMultiAlternatives(EmailMessage): @@ -310,7 +315,8 @@ class EmailMultiAlternatives(EmailMessage): """Attach an alternative content representation.""" self.attach(content=content, mimetype=mimetype) -def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None): +def send_mail(subject, message, from_email, recipient_list, + fail_silently=False, auth_user=None, auth_password=None): """ Easy wrapper for sending a single message to a recipient list. All members of the recipient list will see the other recipients in the 'To' field. @@ -322,10 +328,12 @@ def send_mail(subject, message, from_email, recipient_list, fail_silently=False, functionality should use the EmailMessage class directly. """ connection = SMTPConnection(username=auth_user, password=auth_password, - fail_silently=fail_silently) - return EmailMessage(subject, message, from_email, recipient_list, connection=connection).send() + fail_silently=fail_silently) + return EmailMessage(subject, message, from_email, recipient_list, + connection=connection).send() -def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None): +def send_mass_mail(datatuple, fail_silently=False, auth_user=None, + auth_password=None): """ Given a datatuple of (subject, message, from_email, recipient_list), sends each message to each recipient list. Returns the number of e-mails sent. @@ -339,19 +347,19 @@ def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password functionality should use the EmailMessage class directly. """ connection = SMTPConnection(username=auth_user, password=auth_password, - fail_silently=fail_silently) - messages = [EmailMessage(subject, message, sender, recipient) for subject, message, sender, recipient in datatuple] + fail_silently=fail_silently) + messages = [EmailMessage(subject, message, sender, recipient) + for subject, message, sender, recipient in datatuple] return connection.send_messages(messages) def mail_admins(subject, message, fail_silently=False): - "Sends a message to the admins, as defined by the ADMINS setting." + """Sends a message to the admins, as defined by the ADMINS setting.""" EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message, - settings.SERVER_EMAIL, [a[1] for a in - settings.ADMINS]).send(fail_silently=fail_silently) + settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS] + ).send(fail_silently=fail_silently) def mail_managers(subject, message, fail_silently=False): - "Sends a message to the managers, as defined by the MANAGERS setting." + """Sends a message to the managers, as defined by the MANAGERS setting.""" EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message, - settings.SERVER_EMAIL, [a[1] for a in - settings.MANAGERS]).send(fail_silently=fail_silently) - + settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS] + ).send(fail_silently=fail_silently) diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index d78e2eda0b..819b19a366 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -243,7 +243,7 @@ def setup_environ(settings_mod): # way. For example, if this file (manage.py) lives in a directory # "myproject", this code would add "/path/to/myproject" to sys.path. project_directory, settings_filename = os.path.split(settings_mod.__file__) - if not project_directory: + if project_directory == os.curdir or not project_directory: project_directory = os.getcwd() project_name = os.path.basename(project_directory) settings_name = os.path.splitext(settings_filename)[0] diff --git a/django/core/management/commands/startproject.py b/django/core/management/commands/startproject.py index ab4f409f15..867d4fd3da 100644 --- a/django/core/management/commands/startproject.py +++ b/django/core/management/commands/startproject.py @@ -20,8 +20,13 @@ class Command(LabelCommand): # the parent directory. directory = os.getcwd() - if project_name in INVALID_PROJECT_NAMES: - raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name) + try: + proj_name = __import__(project_name) + if proj_name: + raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name) + except ImportError: + if project_name in INVALID_PROJECT_NAMES: + raise CommandError("%r contains an invalid project name. Please try another name." % project_name) copy_helper(self.style, 'project', project_name, directory) diff --git a/django/core/paginator.py b/django/core/paginator.py index 71a5479fd5..dabd20dfc0 100644 --- a/django/core/paginator.py +++ b/django/core/paginator.py @@ -1,46 +1,149 @@ class InvalidPage(Exception): pass -class ObjectPaginator(object): - """ - This class makes pagination easy. Feed it a QuerySet or list, plus the number - of objects you want on each page. Then read the hits and pages properties to - see how many pages it involves. Call get_page with a page number (starting - at 0) to get back a list of objects for that page. +class Paginator(object): + def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True): + self.object_list = object_list + self.per_page = per_page + self.orphans = orphans + self.allow_empty_first_page = allow_empty_first_page + self._num_pages = self._count = None - Finally, check if a page number has a next/prev page using - has_next_page(page_number) and has_previous_page(page_number). - - Use orphans to avoid small final pages. For example: - 13 records, num_per_page=10, orphans=2 --> pages==2, len(self.get_page(0))==10 - 12 records, num_per_page=10, orphans=2 --> pages==1, len(self.get_page(0))==12 + def validate_number(self, number): + "Validates the given 1-based page number." + try: + number = int(number) + except ValueError: + raise InvalidPage('That page number is not an integer') + if number < 1: + raise InvalidPage('That page number is less than 1') + if number > self.num_pages: + if number == 1 and self.allow_empty_first_page: + pass + else: + raise InvalidPage('That page contains no results') + return number + + def page(self, number): + "Returns a Page object for the given 1-based page number." + number = self.validate_number(number) + bottom = (number - 1) * self.per_page + top = bottom + self.per_page + if top + self.orphans >= self.count: + top = self.count + return Page(self.object_list[bottom:top], number, self) + + def _get_count(self): + "Returns the total number of objects, across all pages." + if self._count is None: + self._count = len(self.object_list) + return self._count + count = property(_get_count) + + def _get_num_pages(self): + "Returns the total number of pages." + if self._num_pages is None: + hits = self.count - 1 - self.orphans + if hits < 1: + hits = 0 + if hits == 0 and not self.allow_empty_first_page: + self._num_pages = 0 + else: + self._num_pages = hits // self.per_page + 1 + return self._num_pages + num_pages = property(_get_num_pages) + + def _get_page_range(self): + """ + Returns a 1-based range of pages for iterating through within + a template for loop. + """ + return range(1, self.num_pages + 1) + page_range = property(_get_page_range) + +class QuerySetPaginator(Paginator): + """ + Like Paginator, but works on QuerySets. + """ + def _get_count(self): + if self._count is None: + self._count = self.object_list.count() + return self._count + count = property(_get_count) + +class Page(object): + def __init__(self, object_list, number, paginator): + self.object_list = object_list + self.number = number + self.paginator = paginator + + def __repr__(self): + return '' % (self.number, self.paginator.num_pages) + + def has_next(self): + return self.number < self.paginator.num_pages + + def has_previous(self): + return self.number > 1 + + def has_other_pages(self): + return self.has_previous() or self.has_next() + + def next_page_number(self): + return self.number + 1 + + def previous_page_number(self): + return self.number - 1 + + def start_index(self): + """ + Returns the 1-based index of the first object on this page, + relative to total objects in the paginator. + """ + return (self.paginator.per_page * (self.number - 1)) + 1 + + def end_index(self): + """ + Returns the 1-based index of the last object on this page, + relative to total objects found (hits). + """ + if self.number == self.paginator.num_pages: + return self.paginator.count + return self.number * self.paginator.per_page + +class ObjectPaginator(Paginator): + """ + Legacy ObjectPaginator class, for backwards compatibility. + + Note that each method on this class that takes page_number expects a + zero-based page number, whereas the new API (Paginator/Page) uses one-based + page numbers. """ def __init__(self, query_set, num_per_page, orphans=0): + Paginator.__init__(self, query_set, num_per_page, orphans) + import warnings + warnings.warn("The ObjectPaginator is deprecated. Use django.core.paginator.Paginator instead.", DeprecationWarning) + + # Keep these attributes around for backwards compatibility. self.query_set = query_set self.num_per_page = num_per_page - self.orphans = orphans self._hits = self._pages = None - self._page_range = None def validate_page_number(self, page_number): try: - page_number = int(page_number) + page_number = int(page_number) + 1 except ValueError: raise InvalidPage - if page_number < 0 or page_number > self.pages - 1: - raise InvalidPage - return page_number + return self.validate_number(page_number) def get_page(self, page_number): - page_number = self.validate_page_number(page_number) - bottom = page_number * self.num_per_page - top = bottom + self.num_per_page - if top + self.orphans >= self.hits: - top = self.hits - return self.query_set[bottom:top] + try: + page_number = int(page_number) + 1 + except ValueError: + raise InvalidPage + return self.page(page_number).object_list def has_next_page(self, page_number): - "Does page $page_number have a 'next' page?" return page_number < self.pages - 1 def has_previous_page(self, page_number): @@ -52,7 +155,7 @@ class ObjectPaginator(object): relative to total objects found (hits). """ page_number = self.validate_page_number(page_number) - return (self.num_per_page * page_number) + 1 + return (self.num_per_page * (page_number - 1)) + 1 def last_on_page(self, page_number): """ @@ -60,40 +163,23 @@ class ObjectPaginator(object): relative to total objects found (hits). """ page_number = self.validate_page_number(page_number) - page_number += 1 # 1-base - if page_number == self.pages: - return self.hits + if page_number == self.num_pages: + return self.count return page_number * self.num_per_page - def _get_hits(self): - if self._hits is None: - # Try .count() or fall back to len(). + def _get_count(self): + # The old API allowed for self.object_list to be either a QuerySet or a + # list. Here, we handle both. + if self._count is None: try: - self._hits = int(self.query_set.count()) - except (AttributeError, TypeError, ValueError): - # AttributeError if query_set has no object count. - # TypeError if query_set.count() required arguments. - # ValueError if int() fails. - self._hits = len(self.query_set) - return self._hits + self._count = self.object_list.count() + except AttributeError: + self._count = len(self.object_list) + return self._count + count = property(_get_count) - def _get_pages(self): - if self._pages is None: - hits = (self.hits - 1 - self.orphans) - if hits < 1: - hits = 0 - self._pages = hits // self.num_per_page + 1 - return self._pages - - def _get_page_range(self): - """ - Returns a 1-based range of pages for iterating through within - a template for loop. - """ - if self._page_range is None: - self._page_range = range(1, self.pages + 1) - return self._page_range + # The old API called it "hits" instead of "count". + hits = count - hits = property(_get_hits) - pages = property(_get_pages) - page_range = property(_get_page_range) + # The old API called it "pages" instead of "num_pages". + pages = Paginator.num_pages diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py index 3c7dcfa02e..2c92e2afad 100644 --- a/django/core/serializers/base.py +++ b/django/core/serializers/base.py @@ -22,10 +22,10 @@ class Serializer(object): Abstract serializer base class. """ - # Indicates if the implemented serializer is only available for + # Indicates if the implemented serializer is only available for # internal Django use. internal_use_only = False - + def serialize(self, queryset, **options): """ Serialize a queryset. @@ -60,8 +60,6 @@ class Serializer(object): """ if isinstance(field, models.DateTimeField): value = getattr(obj, field.name).strftime("%Y-%m-%d %H:%M:%S") - elif isinstance(field, models.FileField): - value = getattr(obj, "get_%s_url" % field.name, lambda: None)() else: value = field.flatten_data(follow=None, obj=obj).get(field.name, "") return smart_unicode(value) @@ -162,9 +160,9 @@ class DeserializedObject(object): return "" % smart_str(self.object) def save(self, save_m2m=True): - # Call save on the Model baseclass directly. This bypasses any + # Call save on the Model baseclass directly. This bypasses any # model-defined save. The save is also forced to be raw. - # This ensures that the data that is deserialized is literally + # This ensures that the data that is deserialized is literally # what came from the file, not post-processed by pre_save/save # methods. models.Model.save(self.object, raw=True) diff --git a/django/core/servers/fastcgi.py b/django/core/servers/fastcgi.py index de04a5af62..d7145e15ec 100644 --- a/django/core/servers/fastcgi.py +++ b/django/core/servers/fastcgi.py @@ -37,7 +37,9 @@ Optional Fcgi settings: (setting=value) maxchildren=NUMBER hard limit number of processes / threads daemonize=BOOL whether to detach from terminal. pidfile=FILE write the spawned process-id to this file. - workdir=DIRECTORY change to this directory when daemonizing + workdir=DIRECTORY change to this directory when daemonizing. + outlog=FILE write stdout to this file. + errlog=FILE write stderr to this file. Examples: Run a "standard" fastcgi process on a file-descriptor @@ -69,6 +71,8 @@ FASTCGI_OPTIONS = { 'minspare': 2, 'maxchildren': 50, 'maxrequests': 0, + 'outlog': None, + 'errlog': None, } def fastcgi_help(message=None): @@ -150,9 +154,15 @@ def runfastcgi(argset=[], **kwargs): else: return fastcgi_help("ERROR: Invalid option for daemonize parameter.") + daemon_kwargs = {} + if options['outlog']: + daemon_kwargs['out_log'] = options['outlog'] + if options['errlog']: + daemon_kwargs['err_log'] = options['errlog'] + if daemonize: from django.utils.daemonize import become_daemon - become_daemon(our_home_dir=options["workdir"]) + become_daemon(our_home_dir=options["workdir"], **daemon_kwargs) if options["pidfile"]: fp = open(options["pidfile"], "w") diff --git a/django/core/validators.py b/django/core/validators.py index 874edaefdd..e728dbc0ed 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -18,7 +18,7 @@ except ImportError: from django.conf import settings from django.utils.translation import ugettext as _, ugettext_lazy, ungettext from django.utils.functional import Promise, lazy -from django.utils.encoding import force_unicode +from django.utils.encoding import force_unicode, smart_str _datere = r'\d{4}-\d{1,2}-\d{1,2}' _timere = r'(?:[01]?[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?' @@ -451,7 +451,7 @@ class IsValidDecimal(object): "Please enter a valid decimal number with at most %s decimal places.", self.decimal_places) % self.decimal_places def isValidFloat(field_data, all_data): - data = str(field_data) + data = smart_str(field_data) try: float(data) except ValueError: diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py index c8b87c2dd1..1dfe34aceb 100644 --- a/django/db/backends/postgresql/base.py +++ b/django/db/backends/postgresql/base.py @@ -56,6 +56,9 @@ class UnicodeCursorWrapper(object): else: return getattr(self.cursor, attr) + def __iter__(self): + return iter(self.cursor) + class DatabaseFeatures(BaseDatabaseFeatures): pass # This backend uses all the defaults. diff --git a/django/db/backends/util.py b/django/db/backends/util.py index ca4e90d6c2..367072879e 100644 --- a/django/db/backends/util.py +++ b/django/db/backends/util.py @@ -41,6 +41,9 @@ class CursorDebugWrapper(object): else: return getattr(self.cursor, attr) + def __iter__(self): + return iter(self.cursor) + ############################################### # Converters from database (string) to Python # ############################################### diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index e96ba8e48f..d44e9e6ddd 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -228,9 +228,14 @@ class Field(object): raise ValueError("The __year lookup type requires an integer argument") if settings.DATABASE_ENGINE == 'sqlite3': first = '%s-01-01' + second = '%s-12-31 23:59:59.999999' + elif settings.DATABASE_ENGINE == 'oracle' and self.get_internal_type() == 'DateField': + first = '%s-01-01' + second = '%s-12-31' else: first = '%s-01-01 00:00:00' - return [first % value, '%s-12-31 23:59:59.999999' % value] + second = '%s-12-31 23:59:59.999999' + return [first % value, second % value] raise TypeError("Field has invalid lookup: %s" % lookup_type) def has_default(self): @@ -835,6 +840,16 @@ class FilePathField(Field): self.path, self.match, self.recursive = path, match, recursive kwargs['max_length'] = kwargs.get('max_length', 100) Field.__init__(self, verbose_name, name, **kwargs) + + def formfield(self, **kwargs): + defaults = { + 'path': self.path, + 'match': self.match, + 'recursive': self.recursive, + 'form_class': forms.FilePathField, + } + defaults.update(kwargs) + return super(FilePathField, self).formfield(**defaults) def get_manipulator_field_objs(self): return [curry(oldforms.FilePathField, path=self.path, match=self.match, recursive=self.recursive)] diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index d02e8b424d..f00b24da93 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -543,6 +543,13 @@ class ForeignKey(RelatedField, Field): params['choices'] = self.get_choices_default() return field_objs, params + def get_default(self): + "Here we check if the default value is an object and return the to_field if so." + field_default = super(ForeignKey, self).get_default() + if isinstance(field_default, self.rel.to): + return getattr(field_default, self.rel.get_related_field().attname) + return field_default + def get_manipulator_field_objs(self): rel_field = self.rel.get_related_field() return [oldforms.IntegerField] diff --git a/django/db/models/query.py b/django/db/models/query.py index 0bc36f425a..a3d00c2ead 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.db import connection, transaction +from django.db import connection, transaction, IntegrityError from django.db.models.fields import DateField, FieldDoesNotExist from django.db.models import signals, loading from django.dispatch import dispatcher @@ -285,11 +285,14 @@ class _QuerySet(object): try: return self.get(**kwargs), False except self.model.DoesNotExist: - params = dict([(k, v) for k, v in kwargs.items() if '__' not in k]) - params.update(defaults) - obj = self.model(**params) - obj.save() - return obj, True + try: + params = dict([(k, v) for k, v in kwargs.items() if '__' not in k]) + params.update(defaults) + obj = self.model(**params) + obj.save() + return obj, True + except IntegrityError, e: + return self.get(**kwargs), False def latest(self, field_name=None): """ diff --git a/django/http/__init__.py b/django/http/__init__.py index 5df734cceb..7faa3c875e 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -1,5 +1,5 @@ import os -from Cookie import SimpleCookie +from Cookie import SimpleCookie, CookieError from pprint import pformat from urllib import urlencode from urlparse import urljoin @@ -82,6 +82,9 @@ class HttpRequest(object): def is_secure(self): return os.environ.get("HTTPS") == "on" + def is_ajax(self): + return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' + def _set_encoding(self, val): """ Sets the encoding used for GET/POST accesses. If the GET or POST @@ -239,8 +242,13 @@ class QueryDict(MultiValueDict): def parse_cookie(cookie): if cookie == '': return {} - c = SimpleCookie() - c.load(cookie) + try: + c = SimpleCookie() + c.load(cookie) + except CookieError: + # Invalid cookie + return {} + cookiedict = {} for key in c.keys(): cookiedict[key] = c.get(key).value diff --git a/django/newforms/extras/widgets.py b/django/newforms/extras/widgets.py index 0097ba3f54..e3ef1d7f69 100644 --- a/django/newforms/extras/widgets.py +++ b/django/newforms/extras/widgets.py @@ -3,6 +3,7 @@ Extra HTML Widget classes """ import datetime +import re from django.newforms.widgets import Widget, Select from django.utils.dates import MONTHS @@ -10,6 +11,8 @@ from django.utils.safestring import mark_safe __all__ = ('SelectDateWidget',) +RE_DATE = re.compile(r'(\d{4})-(\d\d?)-(\d\d?)$') + class SelectDateWidget(Widget): """ A Widget that splits date input into three `` fields, and the data isn't processed server-side +until the final form is submitted. + +You might want to use this if you have a lengthy form that would be too +unwieldy for display on a single page. The first page might ask the user for +core information, the second page might ask for less important information, +etc. + +The term "wizard," in this context, is `explained on Wikipedia`_. + +.. _explained on Wikipedia: http://en.wikipedia.org/wiki/Wizard_%28software%29 +.. _forms: ../newforms/ + +How it works +============ + +Here's the basic workflow for how a user would use a wizard: + + 1. The user visits the first page of the wizard, fills in the form and + submits it. + 2. The server validates the data. If it's invalid, the form is displayed + again, with error messages. If it's valid, the server calculates a + secure hash of the data and presents the user with the next form, + saving the validated data and hash in ```` fields. + 3. Step 1 and 2 repeat, for every subsequent form in the wizard. + 4. Once the user has submitted all the forms and all the data has been + validated, the wizard processes the data -- saving it to the database, + sending an e-mail, or whatever the application needs to do. + +Usage +===== + +This application handles as much machinery for you as possible. Generally, you +just have to do these things: + + 1. Define a number of ``django.newforms`` ``Form`` classes -- one per wizard + page. + 2. Create a ``FormWizard`` class that specifies what to do once all of your + forms have been submitted and validated. This also lets you override some + of the wizard's behavior. + 3. Create some templates that render the forms. You can define a single, + generic template to handle every one of the forms, or you can define a + specific template for each form. + 4. Point your URLconf at your ``FormWizard`` class. + +Defining ``Form`` classes +========================= + +The first step in creating a form wizard is to create the ``Form`` classes. +These should be standard ``django.newforms`` ``Form`` classes, covered in the +`newforms documentation`_. + +These classes can live anywhere in your codebase, but convention is to put them +in a file called ``forms.py`` in your application. + +For example, let's write a "contact form" wizard, where the first page's form +collects the sender's e-mail address and subject, and the second page collects +the message itself. Here's what the ``forms.py`` might look like:: + + from django import newforms as forms + + class ContactForm1(forms.Form): + subject = forms.CharField(max_length=100) + sender = forms.EmailField() + + class ContactForm2(forms.Form): + message = forms.CharField(widget=forms.Textarea) + +**Important limitation:** Because the wizard uses HTML hidden fields to store +data between pages, you may not include a ``FileField`` in any form except the +last one. + +.. _newforms documentation: ../newforms/ + +Creating a ``FormWizard`` class +=============================== + +The next step is to create a ``FormWizard`` class, which should be a subclass +of ``django.contrib.formtools.wizard.FormWizard``. + +As your ``Form`` classes, this ``FormWizard`` class can live anywhere in your +codebase, but convention is to put it in ``forms.py``. + +The only requirement on this subclass is that it implement a ``done()`` method, +which specifies what should happen when the data for *every* form is submitted +and validated. This method is passed two arguments: + + * ``request`` -- an HttpRequest_ object + * ``form_list`` -- a list of ``django.newforms`` ``Form`` classes + +In this simplistic example, rather than perform any database operation, the +method simply renders a template of the validated data:: + + from django.shortcuts import render_to_response + from django.contrib.formtools.wizard import FormWizard + + class ContactWizard(FormWizard): + def done(self, request, form_list): + return render_to_response('done.html', { + 'form_data': [form.cleaned_data for form in form_list], + }) + +Note that this method will be called via ``POST``, so it really ought to be a +good Web citizen and redirect after processing the data. Here's another +example:: + + from django.http import HttpResponseRedirect + from django.contrib.formtools.wizard import FormWizard + + class ContactWizard(FormWizard): + def done(self, request, form_list): + do_something_with_the_form_data(form_list) + return HttpResponseRedirect('/page-to-redirect-to-when-done/') + +See the section "Advanced ``FormWizard`` methods" below to learn about more +``FormWizard`` hooks. + +.. _HttpRequest: request_response/#httprequest-objects + +Creating templates for the forms +================================ + +Next, you'll need to create a template that renders the wizard's forms. By +default, every form uses a template called ``forms/wizard.html``. (You can +change this template name by overriding ``FormWizard.get_template()``, which is +documented below. This hook also allows you to use a different template for +each form.) + +This template expects the following context: + + * ``step_field`` -- The name of the hidden field containing the step. + * ``step0`` -- The current step (zero-based). + * ``step`` -- The current step (one-based). + * ``step_count`` -- The total number of steps. + * ``form`` -- The ``Form`` instance for the current step (either empty or + with errors). + * ``previous_fields`` -- A string representing every previous data field, + plus hashes for completed forms, all in the form of hidden fields. Note + that you'll need to run this through the ``safe`` template filter, to + prevent auto-escaping, because it's raw HTML. + +It will also be passed any objects in ``extra_context``, which is a dictionary +you can specify that contains extra values to add to the context. You can +specify it in two ways: + + * Set the ``extra_context`` attribute on your ``FormWizard`` subclass to a + dictionary. + + * Pass ``extra_context`` as extra parameters in the URLconf. + +Here's a full example template:: + + {% extends "base.html" %} + + {% block content %} +

      Step {{ step }} of {{ step_count }}

      +
      + + {{ form }} +
      + + {{ previous_fields|safe }} + +
      + {% endblock %} + +Note that ``previous_fields``, ``step_field`` and ``step0`` are all required +for the wizard to work properly. + +Hooking the wizard into a URLconf +================================= + +Finally, give your new ``FormWizard`` object a URL in ``urls.py``. The wizard +takes a list of your form objects as arguments:: + + from django.conf.urls.defaults import * + from mysite.testapp.forms import ContactForm1, ContactForm2, ContactWizard + + urlpatterns = patterns('', + (r'^contact/$', ContactWizard([ContactForm1, ContactForm2])), + ) + +Advanced ``FormWizard`` methods +=============================== + +Aside from the ``done()`` method, ``FormWizard`` offers a few advanced method +hooks that let you customize how your wizard works. + +Some of these methods take an argument ``step``, which is a zero-based counter +representing the current step of the wizard. (E.g., the first form is ``0`` and +the second form is ``1``.) + +``prefix_for_step`` +~~~~~~~~~~~~~~~~~~~ + +Given the step, returns a ``Form`` prefix to use. By default, this simply uses +the step itself. For more, see the `form prefix documentation`_. + +Default implementation:: + + def prefix_for_step(self, step): + return str(step) + +.. _form prefix documentation: ../newforms/#prefixes-for-forms + +``render_hash_failure`` +~~~~~~~~~~~~~~~~~~~~~~~ + +Renders a template if the hash check fails. It's rare that you'd need to +override this. + +Default implementation:: + + def render_hash_failure(self, request, step): + return self.render(self.get_form(step), request, step, + context={'wizard_error': 'We apologize, but your form has expired. Please continue filling out the form from this page.'}) + +``security_hash`` +~~~~~~~~~~~~~~~~~ + +Calculates the security hash for the given request object and ``Form`` instance. + +By default, this uses an MD5 hash of the form data and your +`SECRET_KEY setting`_. It's rare that somebody would need to override this. + +Example:: + + def security_hash(self, request, form): + return my_hash_function(request, form) + +.. _SECRET_KEY setting: ../settings/#secret-key + +``parse_params`` +~~~~~~~~~~~~~~~~ + +A hook for saving state from the request object and ``args`` / ``kwargs`` that +were captured from the URL by your URLconf. + +By default, this does nothing. + +Example:: + + def parse_params(self, request, *args, **kwargs): + self.my_state = args[0] + +``get_template`` +~~~~~~~~~~~~~~~~ + +Returns the name of the template that should be used for the given step. + +By default, this returns ``'forms/wizard.html'``, regardless of step. + +Example:: + + def get_template(self, step): + return 'myapp/wizard_%s.html' % step + +If ``get_template`` returns a list of strings, then the wizard will use the +template system's ``select_template()`` function, `explained in the template docs`_. +This means the system will use the first template that exists on the filesystem. +For example:: + + def get_template(self, step): + return ['myapp/wizard_%s.html' % step, 'myapp/wizard.html'] + +.. _explained in the template docs: ../templates_python/#the-python-api + +``render_template`` +~~~~~~~~~~~~~~~~~~~ + +Renders the template for the given step, returning an ``HttpResponse`` object. + +Override this method if you want to add a custom context, return a different +MIME type, etc. If you only need to override the template name, use +``get_template()`` instead. + +The template will be rendered with the context documented in the +"Creating templates for the forms" section above. + +``process_step`` +~~~~~~~~~~~~~~~~ + +Hook for modifying the wizard's internal state, given a fully validated ``Form`` +object. The Form is guaranteed to have clean, valid data. + +This method should *not* modify any of that data. Rather, it might want to set +``self.extra_context`` or dynamically alter ``self.form_list``, based on +previously submitted forms. + +Note that this method is called every time a page is rendered for *all* +submitted steps. + +The function signature:: + + def process_step(self, request, form, step): + # ... diff --git a/docs/generic_views.txt b/docs/generic_views.txt index 17187894c0..b7beb0b4be 100644 --- a/docs/generic_views.txt +++ b/docs/generic_views.txt @@ -751,6 +751,19 @@ In addition to ``extra_context``, the template's context will be: If the results are paginated, the context will contain these extra variables: + * **New in Django development version:** ``paginator``: An instance of + ``django.core.paginator.Paginator``. + + * **New in Django development version:** ``page_obj``: An instance of + ``django.core.paginator.Page``. + +In older versions of Django, before ``paginator`` and ``page_obj`` were added +to this template's context, the template included several other variables +related to pagination. Note that you should *NOT* use these variables anymore; +use ``paginator`` and ``page_obj`` instead, because they let you do everything +these old variables let you do (and more!). But for legacy installations, +here's a list of those old template variables: + * ``results_per_page``: The number of objects per page. (Same as the ``paginate_by`` parameter.) @@ -777,8 +790,8 @@ If the results are paginated, the context will contain these extra variables: * ``hits``: The total number of objects across *all* pages, not just this page. - * **New in Django development version:** ``page_range``: A list of the - page numbers that are available. This is 1-based. + * ``page_range``: A list of the page numbers that are available. This is + 1-based. Notes on pagination ~~~~~~~~~~~~~~~~~~~ diff --git a/docs/i18n.txt b/docs/i18n.txt index bb6cf74ded..8da19cd242 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -547,7 +547,7 @@ following this algorithm: * First, it looks for a ``django_language`` key in the the current user's `session`_. - * Failing that, it looks for a cookie that is named according to your ``LANGUAGE_COOKIE_NAME`` setting (the default name is: ``django_language``). + * Failing that, it looks for a cookie that is named according to your ``LANGUAGE_COOKIE_NAME`` setting. (The default name is ``django_language``, and this setting is new in the Django development version. In Django version 0.96 and before, the cookie's name is hard-coded to ``django_language``.) * Failing that, it looks at the ``Accept-Language`` HTTP header. This header is sent by your browser and tells the server which language(s) you prefer, in order by priority. Django tries each language in the header @@ -719,8 +719,9 @@ Activate this view by adding the following line to your URLconf:: The view expects to be called via the ``POST`` method, with a ``language`` parameter set in request. If session support is enabled, the view saves the language choice in the user's session. Otherwise, it saves the -language choice in a cookie that is by default named ``django_language`` -(the name can be changed through the ``LANGUAGE_COOKIE_NAME`` setting). +language choice in a cookie that is by default named ``django_language``. +(The name can be changed through the ``LANGUAGE_COOKIE_NAME`` setting if you're +using the Django development version.) After setting the language choice, Django redirects the user, following this algorithm: diff --git a/docs/install.txt b/docs/install.txt index 542036e2af..341c4280e8 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -167,6 +167,20 @@ These commands will install Django in your Python installation's Installing the development version ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. admonition:: Tracking Django development + + If you decide to use the latest development version of Django, + you'll want to pay close attention to `the development timeline`_, + and you'll want to keep an eye on `the list of + backwards-incompatible changes`_; this will help you stay on top + of any new features you might want to use, as well as any changes + you'll need to make to your code when updating your copy of Django + (for stable releases, any necessary changes are documented in the + release notes). + +.. _the development timeline: http://code.djangoproject.com/timeline +.. _the list of backwards-incompatible changes: http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges + If you'd like to be able to update your Django code occasionally with the latest bug fixes and improvements, follow these instructions: diff --git a/docs/model-api.txt b/docs/model-api.txt index 66fa63e3c6..f73c5aadf7 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -626,7 +626,8 @@ option is ignored. ``default`` ~~~~~~~~~~~ -The default value for the field. +The default value for the field. This can be a value or a callable object. If +callable it will be called every time a new object is created. ``editable`` ~~~~~~~~~~~~ @@ -788,10 +789,10 @@ 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:: +**New in Django development version:** To refer to models defined in another +application, you must instead explicitly specify the application label. For +example, 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') @@ -1022,6 +1023,8 @@ See the `One-to-one relationship model example`_ for a full example. Custom field types ------------------ +**New in Django development version** + If one of the existing model fields cannot be used to fit your purposes, or if you wish to take advantage of some less common database column types, you can create your own field class. Full coverage of creating your own fields is @@ -1786,14 +1789,15 @@ For example:: This example allows you to request ``Person.men.all()``, ``Person.women.all()``, and ``Person.people.all()``, yielding predictable results. -If you use custom ``Manager`` objects, take note that the first ``Manager`` -Django encounters (in order by which they're defined in the model) has a -special status. Django interprets the first ``Manager`` defined in a class as -the "default" ``Manager``. Certain operations -- such as Django's admin site -- -use the default ``Manager`` to obtain lists of objects, so it's generally a -good idea for the first ``Manager`` to be relatively unfiltered. In the last -example, the ``people`` ``Manager`` is defined first -- so it's the default -``Manager``. +If you use custom ``Manager`` objects, take note that the first +``Manager`` Django encounters (in the order in which they're defined +in the model) has a special status. Django interprets this first +``Manager`` defined in a class as the "default" ``Manager``, and +several parts of Django (though not the admin application) will use +that ``Manager`` exclusively for that model. As a result, it's often a +good idea to be careful in your choice of default manager, in order to +avoid a situation where overriding of ``get_query_set()`` results in +an inability to retrieve objects you'd like to work with. Model methods ============= diff --git a/docs/modelforms.txt b/docs/modelforms.txt index 47eaa9a769..05f9b1b3d4 100644 --- a/docs/modelforms.txt +++ b/docs/modelforms.txt @@ -231,6 +231,16 @@ For example:: # Create and save the new author instance. There's no need to do anything else. >>> new_author = f.save() +Other than the ``save()`` and ``save_m2m()`` methods, a ``ModelForm`` +works exactly the same way as any other ``newforms`` form. For +example, the ``is_valid()`` method is used to check for validity, the +``is_multipart()`` method is used to determine whether a form requires +multipart file upload (and hence whether ``request.FILES`` must be +passed to the form), etc.; see `the standard newforms documentation`_ +for more information. + +.. _the standard newforms documentation: ../newforms/ + Using a subset of fields on the form ------------------------------------ diff --git a/docs/newforms.txt b/docs/newforms.txt index 229f704ca7..4f59400949 100644 --- a/docs/newforms.txt +++ b/docs/newforms.txt @@ -1336,13 +1336,14 @@ given length. An ``UploadedFile`` object has two attributes: - ====================== ===================================================== - Argument Description - ====================== ===================================================== + ====================== ==================================================== + Attribute Description + ====================== ==================================================== ``filename`` The name of the file, provided by the uploading client. + ``content`` The array of bytes comprising the file content. - ====================== ===================================================== + ====================== ==================================================== The string representation of an ``UploadedFile`` is the same as the filename attribute. @@ -1352,6 +1353,38 @@ When you use a ``FileField`` on a form, you must also remember to .. _`bind the file data to the form`: `Binding uploaded files to a form`_ +``FilePathField`` +~~~~~~~~~~~~~~~~~ + +**New in Django development version** + + * Default widget: ``Select`` + * Empty value: ``None`` + * Normalizes to: A unicode object + * Validates that the selected choice exists in the list of choices. + * Error message keys: ``required``, ``invalid_choice`` + +The field allows choosing from files inside a certain directory. It takes three +extra arguments: + + ============== ========== =============================================== + Argument Required? Description + ============== ========== =============================================== + ``path`` Yes The absolute path to the directory whose + contents you want listed. This directory must + exist. + + ``recursive`` No If ``False`` (the default) only the direct + contents of ``path`` will be offered as choices. + If ``True``, the directory will be descended + into recursively and all descendants will be + listed as choices. + + ``match`` No A regular expression pattern; only files with + names matching this expression will be allowed + as choices. + ============== ========== =============================================== + ``ImageField`` ~~~~~~~~~~~~~~ @@ -1502,6 +1535,41 @@ the bottom of this document, for examples of their use. ``SplitDateTimeField`` ~~~~~~~~~~~~~~~~~~~~~~ +Fields which handle relationships +--------------------------------- + +For representing relationships between models, two fields are +provided which can derive their choices from a ``QuerySet``, and which +place one or more model objects into the ``cleaned_data`` dictionary +of forms in which they're used. Both of these fields have an +additional required argument: + +``queryset`` + A ``QuerySet`` of model objects from which the choices for the + field will be derived, and which will be used to validate the + user's selection. + +``ModelChoiceField`` +~~~~~~~~~~~~~~~~~~~~ + +Allows the selection of a single model object, suitable for representing a +foreign key. The method receives an object as an argument and must return a +string to represent it. + +The labels for the choice field call the ``__unicode__`` method of the model to +generate string representations. To provide custom labels, subclass ``ModelChoiceField`` and override ``label_for_model``:: + + class MyModelChoiceField(ModelChoiceField): + def label_from_instance(self, obj): + return "My Object #%i" % obj.id + +``ModelMultipleChoiceField`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Allows the selection of one or more model objects, suitable for representing a +many-to-many relation. As with ``ModelChoiceField``, you can use +``label_from_instance`` to customize the object labels. + Creating custom fields ---------------------- @@ -1572,9 +1640,9 @@ The three types of cleaning methods are: These methods are run in the order given above, one field at a time. That is, for each field in the form (in the order they are declared in the form -definition), the ``Field.clean()`` method (or it's override) is run, then +definition), the ``Field.clean()`` method (or its override) is run, then ``clean_()``. Finally, once those two methods are run for every -field, the ``Form.clean()`` method, or it's override, is executed. +field, the ``Form.clean()`` method, or its override, is executed. As mentioned above, any of these methods can raise a ``ValidationError``. For any field, if the ``Field.clean()`` method raises a ``ValidationError``, any @@ -1696,7 +1764,7 @@ For example, take the following simple form:: comment = forms.CharField() This form will include three default TextInput widgets, with default rendering - -no CSS class, no extra attributes. This means that the inputs boxes provided for +no CSS class, no extra attributes. This means that the input boxes provided for each widget will be rendered exactly the same:: >>> f = CommentForm(auto_id=False) diff --git a/docs/pagination.txt b/docs/pagination.txt new file mode 100644 index 0000000000..486c92264b --- /dev/null +++ b/docs/pagination.txt @@ -0,0 +1,133 @@ +========== +Pagination +========== + +**New in Django development version** + +Django provides a few classes that help you manage paginated data -- that is, +data that's split across several pages, with "Previous/Next" links. These +classes live in the module ``django/core/paginator.py``. + +Example +======= + +Give ``Paginator`` a list of objects, plus the number of items you'd like to +have on each page, and it gives you methods for accessing the items for each +page:: + + >>> from django.core.paginator import Paginator + >>> objects = ['john', 'paul', 'george', 'ringo'] + >>> p = Paginator(objects, 2) + + >>> p.count + 4 + >>> p.num_pages + 2 + >>> p.page_range + [1, 2] + + >>> page1 = p.page(1) + >>> page1 + + >>> page1.object_list + ['john', 'paul'] + + >>> page2 = p.page(2) + >>> page2.object_list + ['george', 'ringo'] + >>> page2.has_next() + False + >>> page2.has_previous() + True + >>> page2.has_other_pages() + True + >>> page2.next_page_number() + 3 + >>> page2.previous_page_number() + 1 + >>> page2.start_index() # The 1-based index of the first item on this page + 3 + >>> page2.end_index() # The 1-based index of the last item on this page + 4 + + >>> p.page(0) + Traceback (most recent call last): + ... + InvalidPage + >>> p.page(3) + Traceback (most recent call last): + ... + InvalidPage + +``Paginator`` objects +===================== + +Methods +------- + +``page(number)`` -- Returns a ``Page`` object with the given 1-based index. +Raises ``InvalidPage`` if the given page number doesn't exist. + +Attributes +---------- + +``count`` -- The total number of objects, across all pages. + +``num_pages`` -- The total number of pages. + +``page_range`` -- A 1-based range of page numbers, e.g., ``[1, 2, 3, 4]``. + +``Page`` objects +================ + +Methods +------- + +``has_next()`` -- Returns ``True`` if there's a next page. + +``has_previous()`` -- Returns ``True`` if there's a previous page. + +``has_other_pages()`` -- Returns ``True`` if there's a next *or* previous page. + +``next_page_number()`` -- Returns the next page number. Note that this is +"dumb" and will return the next page number regardless of whether a subsequent +page exists. + +``previous_page_number()`` -- Returns the previous page number. Note that this +is "dumb" and will return the previous page number regardless of whether a +previous page exists. + +``start_index()`` -- Returns the 1-based index of the first object on the page, +relative to all of the objects in the paginator's list. For example, when +paginating a list of 5 objects with 2 objects per page, the second page's +``start_index()`` would return ``3``. + +``end_index()`` -- Returns the 1-based index of the last object on the page, +relative to all of the objects in the paginator's list. For example, when +paginating a list of 5 objects with 2 objects per page, the second page's +``end_index()`` would return ``4``. + +Attributes +---------- + +``object_list`` -- The list of objects on this page. + +``number`` -- The 1-based page number for this page. + +``paginator`` -- The associated ``Paginator`` object. + +``QuerySetPaginator`` objects +============================= + +Use ``QuerySetPaginator`` instead of ``Paginator`` if you're paginating across +a ``QuerySet`` from Django's database API. This is slightly more efficient, and +there are no API differences between the two classes. + +The legacy ``ObjectPaginator`` class +==================================== + +The ``Paginator`` and ``Page`` classes are new in the Django development +version, as of revision 7306. In previous versions, Django provided an +``ObjectPaginator`` class that offered similar functionality but wasn't as +convenient. This class still exists, for backwards compatibility, but Django +now issues a ``DeprecationWarning`` if you try to use it. diff --git a/docs/request_response.txt b/docs/request_response.txt index e50cfc5ea3..0e0f046a2d 100644 --- a/docs/request_response.txt +++ b/docs/request_response.txt @@ -141,6 +141,16 @@ All attributes except ``session`` should be considered read-only. The raw HTTP POST data. This is only useful for advanced processing. Use ``POST`` instead. +``urlconf`` + Not defined by Django itself, but will be read if other code + (e.g., a custom middleware class) sets it; when present, this will + be used as the root URLConf for the current request, overriding + the ``ROOT_URLCONF`` setting. See `How Django processes a + request`_ for details. + +.. _How Django processes a request: ../url_dispatch/#how-django-processes-a-request + + Methods ------- @@ -189,6 +199,23 @@ Methods Returns ``True`` if the request is secure; that is, if it was made with HTTPS. +``is_ajax()`` + **New in Django development version** + + Returns ``True`` if the request was made via an XMLHttpRequest by checking + the ``HTTP_X_REQUESTED_WITH`` header for the string *'XMLHttpRequest'*. The + following major Javascript libraries all send this header: + + * jQuery + * Dojo + * MochiKit + * MooTools + * Prototype + * YUI + + If you write your own XMLHttpRequest call (on the browser side), you will + have to set this header manually to use this method. + QueryDict objects ----------------- diff --git a/docs/sessions.txt b/docs/sessions.txt index 6355524d2e..d8bac5b8d4 100644 --- a/docs/sessions.txt +++ b/docs/sessions.txt @@ -48,10 +48,10 @@ Using file-based sessions To use file-based sessions, set the ``SESSION_ENGINE`` setting to ``"django.contrib.sessions.backends.file"``. -You might also want to set the ``SESSION_FILE_PATH`` setting (which -defaults to ``/tmp``) to control where Django stores session files. Be -sure to check that your Web server has permissions to read and write to -this location. +You might also want to set the ``SESSION_FILE_PATH`` setting (which defaults +to output from ``tempfile.gettempdir()``, most likely ``/tmp``) to control +where Django stores session files. Be sure to check that your Web server has +permissions to read and write to this location. Using cache-based sessions -------------------------- diff --git a/docs/settings.txt b/docs/settings.txt index ace893f1b5..fb2e04f1ea 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -185,8 +185,11 @@ ADMIN_MEDIA_PREFIX Default: ``'/media/'`` -The URL prefix for admin media -- CSS, JavaScript and images. Make sure to use -a trailing slash. +The URL prefix for admin media -- CSS, JavaScript and images used by +the Django administrative interface. Make sure to use a trailing +slash, and to have this be different from the ``MEDIA_URL`` setting +(since the same URL cannot be mapped onto two different sets of +files). ADMINS ------ @@ -582,13 +585,14 @@ in standard language format. For example, U.S. English is ``"en-us"``. See the LANGUAGE_COOKIE_NAME -------------------- +**New in Django development version** + Default: ``'django_language'`` The name of the cookie to use for the language cookie. This can be whatever -you want (but should be different from SESSION_COOKIE_NAME). See the +you want (but should be different from ``SESSION_COOKIE_NAME``). See the `internationalization docs`_ for details. - LANGUAGES --------- @@ -753,7 +757,9 @@ ROOT_URLCONF Default: Not defined A string representing the full Python import path to your root URLconf. For example: -``"mydjangoapps.urls"``. See `How Django processes a request`_. +``"mydjangoapps.urls"``. Can be overridden on a per-request basis by +setting the attribute ``urlconf`` on the incoming ``HttpRequest`` +object. See `How Django processes a request`_ for details. .. _How Django processes a request: ../url_dispatch/#how-django-processes-a-request diff --git a/docs/syndication_feeds.txt b/docs/syndication_feeds.txt index ebd6af26f8..f86acfe54d 100644 --- a/docs/syndication_feeds.txt +++ b/docs/syndication_feeds.txt @@ -245,6 +245,13 @@ request to the URL ``/rss/beats/0613/``: subclass of ``ObjectDoesNotExist``. Raising ``ObjectDoesNotExist`` in ``get_object()`` tells Django to produce a 404 error for that request. + **New in Django development version:** The ``get_object()`` method also + has a chance to handle the ``/rss/beats/`` url. In this case, ``bits`` + will be an empty list. In our example, ``len(bits) != 1`` and an + ``ObjectDoesNotExist`` exception will be raised, so ``/rss/beats/`` will + generate a 404 page. But you can handle this case however you like. For + example you could generate a combined feed for all beats. + * To generate the feed's ````, ``<link>`` and ``<description>``, Django uses the ``title()``, ``link()`` and ``description()`` methods. In the previous example, they were simple string class attributes, but this diff --git a/docs/templates.txt b/docs/templates.txt index d473a6f06f..ea9f3fb6b2 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -429,8 +429,9 @@ all block tags. For example:: # base.html {% autoescape off %} - <h1>{% block title %}</h1> + <h1>{% block title %}{% endblock %}</h1> {% block content %} + {% endblock %} {% endautoescape %} @@ -438,10 +439,11 @@ all block tags. For example:: {% extends "base.html" %} {% block title %}This & that{% endblock %} - {% block content %}<b>Hello!</b>{% endblock %} + {% block content %}{{ greeting }}{% endblock %} Because auto-escaping is turned off in the base template, it will also be -turned off in the child template, resulting in the following rendered HTML:: +turned off in the child template, resulting in the following rendered +HTML when the ``greeting`` variable contains the string ``<b>Hello!</b>``:: <h1>This & that</h1> <b>Hello!</b> @@ -1222,14 +1224,20 @@ Built-in filter reference add ~~~ -Adds the arg to the value. +Adds the argument to the value. + +For example:: + + {{ value|add:"2" }} + +If ``value`` is ``4``, then the output will be ``6``. addslashes ~~~~~~~~~~ Adds slashes before quotes. Useful for escaping strings in CSV, for example. -**New in Django development version**: for escaping data in JavaScript strings, +**New in Django development version**: For escaping data in JavaScript strings, use the `escapejs`_ filter instead. capfirst @@ -1247,45 +1255,98 @@ cut Removes all values of arg from the given string. +For example:: + + {{ value|cut:" "}} + +If ``value`` is ``"String with spaces"``, the output will be ``"Stringwithspaces"``. + date ~~~~ Formats a date according to the given format (same as the `now`_ tag). +For example:: + + {{ value|date:"D d M Y" }} + +If ``value`` is a ``datetime`` object (e.g., the result of +``datetime.datetime.now()``), the output will be the string +``'Wed 09 Jan 2008'``. + default ~~~~~~~ -If value is unavailable, use given default. +If value evaluates to ``False``, use given default. Otherwise, use the value. + +For example:: + + {{ value|default:"nothing" }} + +If ``value`` is ``""`` (the empty string), the output will be ``nothing``. default_if_none ~~~~~~~~~~~~~~~ -If value is ``None``, use given default. +If (and only if) value is ``None``, use given default. Otherwise, use the +value. + +Note that if an empty string is given, the default value will *not* be used. +Use the ``default`` filter if you want to fallback for empty strings. + +For example:: + + {{ value|default_if_none:"nothing" }} + +If ``value`` is ``None``, the output will be the string ``"nothing"``. dictsort ~~~~~~~~ -Takes a list of dictionaries, returns that list sorted by the key given in +Takes a list of dictionaries and returns that list sorted by the key given in the argument. +For example:: + + {{ value|dictsort:"name" }} + +If ``value`` is:: + + [ + {'name': 'zed', 'age': 19}, + {'name': 'amy', 'age': 22}, + {'name': 'joe', 'age': 31}, + ] + +then the output would be:: + + [ + {'name': 'amy', 'age': 22}, + {'name': 'joe', 'age': 31}, + {'name': 'zed', 'age': 19}, + ] + dictsortreversed ~~~~~~~~~~~~~~~~ -Takes a list of dictionaries, returns that list sorted in reverse order by the -key given in the argument. +Takes a list of dictionaries and returns that list sorted in reverse order by +the key given in the argument. This works exactly the same as the above filter, +but the returned value will be in reverse order. divisibleby ~~~~~~~~~~~ -Returns true if the value is divisible by the argument. +Returns ``True`` if the value is divisible by the argument. + +For example:: + + {{ value|divisibleby:"3" }} + +If ``value`` is ``21``, the output would be ``True``. escape ~~~~~~ -**New in Django development version:** The behaviour of this filter has -changed slightly in the development version (the affects are only applied -once, after all other filters). - Escapes a string's HTML. Specifically, it makes these replacements: * ``<`` is converted to ``<`` @@ -1304,6 +1365,10 @@ applied to the result will only result in one round of escaping being done. So it is safe to use this function even in auto-escaping environments. If you want multiple escaping passes to be applied, use the ``force_escape`` filter. +**New in Django development version:** Due to auto-escaping, the behavior of +this filter has changed slightly. The replacements are only made once, after +all other filters are applied -- including filters before and after it. + escapejs ~~~~~~~~ @@ -1319,16 +1384,38 @@ filesizeformat Format the value like a 'human-readable' file size (i.e. ``'13 KB'``, ``'4.1 MB'``, ``'102 bytes'``, etc). +For example:: + + {{ value|filesizeformat }} + +If ``value`` is 123456789, the output would be ``117.7 MB``. + first ~~~~~ Returns the first item in a list. +For example:: + + {{ value|first }} + +If ``value`` is the list ``['a', 'b', 'c']``, the output will be ``'a'``. + fix_ampersands ~~~~~~~~~~~~~~ Replaces ampersands with ``&`` entities. +For example:: + + {{ value|fix_ampersands }} + +If ``value`` is ``Tom & Jerry``, the output will be ``Tom & Jerry``. + +**New in Django development version**: This filter generally is no longer +useful, because ampersands are automatically escaped in templates. See escape_ +for more on how auto-escaping works. + floatformat ~~~~~~~~~~~ @@ -1383,10 +1470,16 @@ filter. get_digit ~~~~~~~~~ -Given a whole number, returns the requested digit of it, where 1 is the -right-most digit, 2 is the second-right-most digit, etc. Returns the original -value for invalid input (if input or argument is not an integer, or if argument -is less than 1). Otherwise, output is always an integer. +Given a whole number, returns the requested digit, where 1 is the right-most +digit, 2 is the second-right-most digit, etc. Returns the original value for +invalid input (if input or argument is not an integer, or if argument is less +than 1). Otherwise, output is always an integer. + +For example:: + + {{ value|get_digit:"2" }} + +If ``value`` is ``123456789``, the output will be ``8``. iriencode ~~~~~~~~~ @@ -1401,7 +1494,14 @@ It's safe to use this filter on a string that has already gone through the join ~~~~ -Joins a list with a string, like Python's ``str.join(list)``. +Joins a list with a string, like Python's ``str.join(list)`` + +For example:: + + {{ value|join:" // " }} + +If ``value`` is the list ``['a', 'b', 'c']``, the output will be the string +``"a // b // c"``. last ~~~~ @@ -1410,15 +1510,34 @@ last Returns the last item in a list. +For example:: + + {{ value|last }} + +If ``value`` is the list ``['a', 'b', 'c', 'd']``, the output will be the string +``"d"``. + length ~~~~~~ -Returns the length of the value. Useful for lists. +Returns the length of the value. This works for both strings and lists. + +For example:: + + {{ value|length }} + +If ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``4``. length_is ~~~~~~~~~ -Returns a boolean of whether the value's length is the argument. +Returns ``True`` if the value's length is the argument, or ``False`` otherwise. + +For example:: + + {{ value|length_is:"4" }} + +If ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``True``. linebreaks ~~~~~~~~~~ @@ -1427,6 +1546,13 @@ Replaces line breaks in plain text with appropriate HTML; a single newline becomes an HTML line break (``<br />``) and a new line followed by a blank line becomes a paragraph break (``</p>``). +For example:: + + {{ value|linebreaks }} + +If ``value`` is ``Joel\nis a slug``, the output will be ``<p>Joe<br>is a +slug</p>``. + linebreaksbr ~~~~~~~~~~~~ @@ -1450,12 +1576,26 @@ lower Converts a string into all lowercase. +For example:: + + {{ value|lower }} + +If ``value`` is ``Still MAD At Yoko``, the output will be ``still mad at yoko``. + make_list ~~~~~~~~~ Returns the value turned into a list. For an integer, it's a list of digits. For a string, it's a list of characters. +For example:: + + {{ value|make_list }} + +If ``value`` is the string ``"Joe"``, the output would be the list +``[u'J', u'o', u'e']``. If ``value`` is ``123``, the output will be the list +``[1, 2, 3]``. + phone2numeric ~~~~~~~~~~~~~ @@ -1492,17 +1632,32 @@ Example:: pprint ~~~~~~ -A wrapper around pprint.pprint -- for debugging, really. +A wrapper around `pprint.pprint`__ -- for debugging, really. + +__ http://www.python.org/doc/2.5/lib/module-pprint.html random ~~~~~~ -Returns a random item from the list. +Returns a random item from the given list. + +For example:: + + {{ value|random }} + +If ``value`` is the list ``['a', 'b', 'c', 'd']``, the output could be ``"b"``. removetags ~~~~~~~~~~ -Removes a space separated list of [X]HTML tags from the output. +Removes a space-separated list of [X]HTML tags from the output. + +For example:: + + {{ value|removetags:"b span"|safe }} + +If ``value`` is ``"<b>Joel</b> <button>is</button> a <span>slug</span>"`` the +output will be ``"Joel <button>is</button> a slug"``. rjust ~~~~~ @@ -1535,6 +1690,12 @@ Converts to lowercase, removes non-word characters (alphanumerics and underscores) and converts spaces to hyphens. Also strips leading and trailing whitespace. +For example:: + + {{ value|slugify }} + +If ``value`` is ``"Joel is a slug"``, the output will be ``"joel-is-a-slug"``. + stringformat ~~~~~~~~~~~~ @@ -1545,11 +1706,24 @@ the leading "%" is dropped. See http://docs.python.org/lib/typesseq-strings.html for documentation of Python string formatting +For example:: + + {{ value|stringformat:"s" }} + +If ``value`` is ``"Joel is a slug"``, the output will be ``"Joel is a slug"``. + striptags ~~~~~~~~~ Strips all [X]HTML tags. +For example:: + + {{ value|striptags }} + +If ``value`` is ``"<b>Joel</b> <button>is</button> a <span>slug</span>"``, the +output will be ``"Joel is a slug"``. + time ~~~~ @@ -1558,10 +1732,17 @@ The time filter will only accept parameters in the format string that relate to the time of day, not the date (for obvious reasons). If you need to format a date, use the `date`_ filter. +For example:: + + {{ value|time:"H:i" }} + +If ``value`` is equivalent to ``datetime.datetime.now()``, the output will be +the string ``"01:23"``. + timesince ~~~~~~~~~ -Formats a date as the time since that date (i.e. "4 days, 6 hours"). +Formats a date as the time since that date (e.g., "4 days, 6 hours"). Takes an optional argument that is a variable containing the date to use as the comparison point (without the argument, the comparison point is *now*). @@ -1599,6 +1780,12 @@ Truncates a string after a certain number of words. **Argument:** Number of words to truncate after +For example:: + + {{ value|truncatewords:2 }} + +If ``value`` is ``"Joel is a slug"``, the output will be ``"Joel is ..."``. + truncatewords_html ~~~~~~~~~~~~~~~~~~ @@ -1615,10 +1802,8 @@ unordered_list Recursively takes a self-nested list and returns an HTML unordered list -- WITHOUT opening and closing <ul> tags. -**Changed in Django development version** - -The format accepted by ``unordered_list`` has changed to an easier to -understand format. +**New in Django development version:** The format accepted by +``unordered_list`` has changed to be easier to understand. The list is assumed to be in the proper format. For example, if ``var`` contains ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``, then @@ -1644,6 +1829,12 @@ upper Converts a string into all uppercase. +For example:: + + {{ value|upper }} + +If ``value`` is ``"Joel is a slug"``, the output will be ``"JOEL IS A SLUG"``. + urlencode ~~~~~~~~~ @@ -1657,6 +1848,14 @@ Converts URLs in plain text into clickable links. Note that if ``urlize`` is applied to text that already contains HTML markup, things won't work as expected. Apply this filter only to *plain* text. +For example:: + + {{ value|urlize }} + +If ``value`` is ``"Check out www.djangoproject.com"``, the output will be +``"Check out <a +href="http://www.djangoproject.com">www.djangoproject.com</a>"``. + urlizetrunc ~~~~~~~~~~~ @@ -1667,6 +1866,14 @@ As with urlize_, this filter should only be applied to *plain* text. **Argument:** Length to truncate URLs to +For example:: + + {{ value|urlizetrunc:15 }} + +If ``value`` is ``"Check out www.djangoproject.com"``, the output would be +``'Check out <a +href="http://www.djangoproject.com">www.djangopr...</a>'``. + wordcount ~~~~~~~~~ @@ -1679,6 +1886,16 @@ Wraps words at specified line length. **Argument:** number of characters at which to wrap the text +For example:: + + {{ value|wordwrap:5 }} + +If ``value`` is ``Joel is a slug``, the output would be:: + + Joel + is a + slug + yesno ~~~~~ diff --git a/docs/tutorial04.txt b/docs/tutorial04.txt index bd16fa2924..473fba1ef8 100644 --- a/docs/tutorial04.txt +++ b/docs/tutorial04.txt @@ -37,6 +37,12 @@ A quick rundown: form will alter data server-side. Whenever you create a form that alters data server-side, use ``method="post"``. This tip isn't specific to Django; it's just good Web development practice. + + * ``forloop.counter`` indicates how many times the ``for`` tag has + gone through its loop; for more information, see `the + documentation for the "for" tag`_. + +.. _the documentation for the "for" tag: ../templates/#for Now, let's create a Django view that handles the submitted data and does something with it. Remember, in `Tutorial 3`_, we created a URLconf for the diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt index 789399de8d..053ee954a3 100644 --- a/docs/url_dispatch.txt +++ b/docs/url_dispatch.txt @@ -32,9 +32,11 @@ How Django processes a request When a user requests a page from your Django-powered site, this is the algorithm the system follows to determine which Python code to execute: - 1. Django looks at the ``ROOT_URLCONF`` setting in your `settings file`_. - This should be a string representing the full Python import path to your - URLconf. For example: ``"mydjangoapps.urls"``. + 1. Django determines the root URLConf module to use; ordinarily + this is the value of the ``ROOT_URLCONF`` setting in your + `settings file`_, but if the incoming ``HttpRequest`` object + has an attribute called ``urlconf``, its value will be used in + place of the ``ROOT_URLCONF`` setting. 2. Django loads that Python module and looks for the variable ``urlpatterns``. This should be a Python list, in the format returned by the function ``django.conf.urls.defaults.patterns()``. diff --git a/tests/modeltests/custom_pk/models.py b/tests/modeltests/custom_pk/models.py index 381d81b987..e3edf3187e 100644 --- a/tests/modeltests/custom_pk/models.py +++ b/tests/modeltests/custom_pk/models.py @@ -71,8 +71,9 @@ u'ABC123' >>> fran.save() >>> Employee.objects.filter(last_name__exact='Jones') [<Employee: Dan Jones>, <Employee: Fran Jones>] ->>> Employee.objects.in_bulk(['ABC123', 'XYZ456']) -{u'XYZ456': <Employee: Fran Jones>, u'ABC123': <Employee: Dan Jones>} +>>> emps = Employee.objects.in_bulk(['ABC123', 'XYZ456']) +>>> emps['ABC123'] +<Employee: Dan Jones> >>> b = Business(name='Sears') >>> b.save() diff --git a/tests/modeltests/lookup/models.py b/tests/modeltests/lookup/models.py index aa90d1e5ec..f31857e0fe 100644 --- a/tests/modeltests/lookup/models.py +++ b/tests/modeltests/lookup/models.py @@ -76,8 +76,11 @@ Article 4 # in_bulk() takes a list of IDs and returns a dictionary mapping IDs # to objects. ->>> Article.objects.in_bulk([1, 2]) -{1: <Article: Article 1>, 2: <Article: Article 2>} +>>> arts = Article.objects.in_bulk([1, 2]) +>>> arts[1] +<Article: Article 1> +>>> arts[2] +<Article: Article 2> >>> Article.objects.in_bulk([3]) {3: <Article: Article 3>} >>> Article.objects.in_bulk([1000]) diff --git a/tests/modeltests/manipulators/models.py b/tests/modeltests/manipulators/models.py index 2ee81f62b3..3e52e33bbb 100644 --- a/tests/modeltests/manipulators/models.py +++ b/tests/modeltests/manipulators/models.py @@ -1,3 +1,4 @@ +# coding: utf-8 """ 27. Default manipulators @@ -21,7 +22,7 @@ class Album(models.Model): def __unicode__(self): return self.name -__test__ = {'API_TESTS':""" +__test__ = {'API_TESTS':u""" >>> from django.utils.datastructures import MultiValueDict # Create a Musician object via the default AddManipulator. @@ -40,25 +41,33 @@ __test__ = {'API_TESTS':""" True # Attempt to add a Musician without a first_name. ->>> man.get_validation_errors(MultiValueDict({'last_name': ['Blakey']})) -{'first_name': [u'This field is required.']} +>>> man.get_validation_errors(MultiValueDict({'last_name': ['Blakey']}))['first_name'] +[u'This field is required.'] # Attempt to add a Musician without a first_name and last_name. ->>> man.get_validation_errors(MultiValueDict({})) -{'first_name': [u'This field is required.'], 'last_name': [u'This field is required.']} +>>> errors = man.get_validation_errors(MultiValueDict({})) +>>> errors['first_name'] +[u'This field is required.'] +>>> errors['last_name'] +[u'This field is required.'] # Attempt to create an Album without a name or musician. >>> man = Album.AddManipulator() ->>> man.get_validation_errors(MultiValueDict({})) -{'musician': [u'This field is required.'], 'name': [u'This field is required.']} +>>> errors = man.get_validation_errors(MultiValueDict({})) +>>> errors['musician'] +[u'This field is required.'] +>>> errors['name'] +[u'This field is required.'] # Attempt to create an Album with an invalid musician. ->>> man.get_validation_errors(MultiValueDict({'name': ['Sallies Fforth'], 'musician': ['foo']})) -{'musician': [u"Select a valid choice; 'foo' is not in [u'', u'1']."]} +>>> errors = man.get_validation_errors(MultiValueDict({'name': ['Sallies Fforth'], 'musician': ['foo']})) +>>> errors['musician'] +[u"Select a valid choice; 'foo' is not in [u'', u'1']."] # Attempt to create an Album with an invalid release_date. ->>> man.get_validation_errors(MultiValueDict({'name': ['Sallies Fforth'], 'musician': ['1'], 'release_date': 'today'})) -{'release_date': [u'Enter a valid date in YYYY-MM-DD format.']} +>>> errors = man.get_validation_errors(MultiValueDict({'name': ['Sallies Fforth'], 'musician': ['1'], 'release_date': 'today'})) +>>> errors['release_date'] +[u'Enter a valid date in YYYY-MM-DD format.'] # Create an Album without a release_date (because it's optional). >>> data = MultiValueDict({'name': ['Ella and Basie'], 'musician': ['1']}) @@ -88,4 +97,9 @@ True <Album: Ultimate Ella> >>> a2.release_date datetime.date(2005, 2, 13) + +# Test isValidFloat Unicode coercion +>>> from django.core.validators import isValidFloat, ValidationError +>>> try: isValidFloat(u"ä", None) +... except ValidationError: pass """} diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index c480899f84..470312f5ca 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -234,8 +234,12 @@ We can also subclass the Meta inner class to change the fields list. >>> f = CategoryForm({'name': 'Entertainment', 'slug': 'entertainment', 'url': 'entertainment'}) >>> f.is_valid() True ->>> f.cleaned_data -{'url': u'entertainment', 'name': u'Entertainment', 'slug': u'entertainment'} +>>> f.cleaned_data['url'] +u'entertainment' +>>> f.cleaned_data['name'] +u'Entertainment' +>>> f.cleaned_data['slug'] +u'entertainment' >>> obj = f.save() >>> obj <Category: Entertainment> @@ -245,8 +249,12 @@ True >>> f = CategoryForm({'name': "It's a test", 'slug': 'its-test', 'url': 'test'}) >>> f.is_valid() True ->>> f.cleaned_data -{'url': u'test', 'name': u"It's a test", 'slug': u'its-test'} +>>> f.cleaned_data['url'] +u'test' +>>> f.cleaned_data['name'] +u"It's a test" +>>> f.cleaned_data['slug'] +u'its-test' >>> obj = f.save() >>> obj <Category: It's a test> @@ -259,8 +267,12 @@ save() on the resulting model instance. >>> f = CategoryForm({'name': 'Third test', 'slug': 'third-test', 'url': 'third'}) >>> f.is_valid() True ->>> f.cleaned_data -{'url': u'third', 'name': u'Third test', 'slug': u'third-test'} +>>> f.cleaned_data['url'] +u'third' +>>> f.cleaned_data['name'] +u'Third test' +>>> f.cleaned_data['slug'] +u'third-test' >>> obj = f.save(commit=False) >>> obj <Category: Third test> @@ -272,8 +284,10 @@ True If you call save() with invalid data, you'll get a ValueError. >>> f = CategoryForm({'name': '', 'slug': '', 'url': 'foo'}) ->>> f.errors -{'name': [u'This field is required.'], 'slug': [u'This field is required.']} +>>> f.errors['name'] +[u'This field is required.'] +>>> f.errors['slug'] +[u'This field is required.'] >>> f.cleaned_data Traceback (most recent call last): ... @@ -645,6 +659,19 @@ Traceback (most recent call last): ... ValidationError: [u'Select a valid choice. That choice is not one of the available choices.'] +# check that we can safely iterate choices repeatedly +>>> gen_one = list(f.choices) +>>> gen_two = f.choices +>>> gen_one[2] +(2L, u"It's a test") +>>> list(gen_two) +[(u'', u'---------'), (1L, u'Entertainment'), (2L, u"It's a test"), (3L, u'Third')] + +# check that we can override the label_from_instance method to print custom labels (#4620) +>>> f.queryset = Category.objects.all() +>>> f.label_from_instance = lambda obj: "category " + str(obj) +>>> list(f.choices) +[(u'', u'---------'), (1L, 'category Entertainment'), (2L, "category It's a test"), (3L, 'category Third'), (4L, 'category Fourth')] # ModelMultipleChoiceField #################################################### @@ -730,6 +757,10 @@ Traceback (most recent call last): ... ValidationError: [u'Select a valid choice. 4 is not one of the available choices.'] +>>> f.queryset = Category.objects.all() +>>> f.label_from_instance = lambda obj: "multicategory " + str(obj) +>>> list(f.choices) +[(1L, 'multicategory Entertainment'), (2L, "multicategory It's a test"), (3L, 'multicategory Third'), (4L, 'multicategory Fourth')] # PhoneNumberField ############################################################ @@ -739,8 +770,10 @@ ValidationError: [u'Select a valid choice. 4 is not one of the available choices >>> f = PhoneNumberForm({'phone': '(312) 555-1212', 'description': 'Assistance'}) >>> f.is_valid() True ->>> f.cleaned_data -{'phone': u'312-555-1212', 'description': u'Assistance'} +>>> f.cleaned_data['phone'] +u'312-555-1212' +>>> f.cleaned_data['description'] +u'Assistance' # FileField ################################################################### @@ -766,7 +799,7 @@ True <class 'django.newforms.fields.UploadedFile'> >>> instance = f.save() >>> instance.file -u'.../test1.txt' +u'...test1.txt' # Edit an instance that already has the file defined in the model. This will not # save the file again, but leave it exactly as it is. @@ -775,10 +808,10 @@ u'.../test1.txt' >>> f.is_valid() True >>> f.cleaned_data['file'] -u'.../test1.txt' +u'...test1.txt' >>> instance = f.save() >>> instance.file -u'.../test1.txt' +u'...test1.txt' # Delete the current file since this is not done by Django. @@ -791,7 +824,7 @@ u'.../test1.txt' True >>> instance = f.save() >>> instance.file -u'.../test2.txt' +u'...test2.txt' >>> instance.delete() @@ -810,7 +843,7 @@ True True >>> instance = f.save() >>> instance.file -u'.../test3.txt' +u'...test3.txt' >>> instance.delete() # ImageField ################################################################### @@ -832,7 +865,7 @@ True <class 'django.newforms.fields.UploadedFile'> >>> instance = f.save() >>> instance.image -u'.../test.png' +u'...test.png' # Edit an instance that already has the image defined in the model. This will not # save the image again, but leave it exactly as it is. @@ -841,10 +874,10 @@ u'.../test.png' >>> f.is_valid() True >>> f.cleaned_data['image'] -u'.../test.png' +u'...test.png' >>> instance = f.save() >>> instance.image -u'.../test.png' +u'...test.png' # Delete the current image since this is not done by Django. @@ -857,7 +890,7 @@ u'.../test.png' True >>> instance = f.save() >>> instance.image -u'.../test2.png' +u'...test2.png' >>> instance.delete() @@ -876,7 +909,7 @@ True True >>> instance = f.save() >>> instance.image -u'.../test3.png' +u'...test3.png' >>> instance.delete() """} diff --git a/tests/modeltests/pagination/models.py b/tests/modeltests/pagination/models.py index f44c67a139..277c5961e3 100644 --- a/tests/modeltests/pagination/models.py +++ b/tests/modeltests/pagination/models.py @@ -4,6 +4,11 @@ Django provides a framework for paginating a list of objects in a few lines of code. This is often useful for dividing search results or long lists of objects into easily readable pages. + +In Django 0.96 and earlier, a single ObjectPaginator class implemented this +functionality. In the Django development version, the behavior is split across +two classes -- Paginator and Page -- that are more easier to use. The legacy +ObjectPaginator class is deprecated. """ from django.db import models @@ -16,70 +21,210 @@ class Article(models.Model): return self.headline __test__ = {'API_TESTS':""" -# prepare a list of objects for pagination +# Prepare a list of objects for pagination. >>> from datetime import datetime >>> for x in range(1, 10): ... a = Article(headline='Article %s' % x, pub_date=datetime(2005, 7, 29)) ... a.save() -# create a basic paginator, 5 articles per page +#################################### +# New/current API (Paginator/Page) # +#################################### + +>>> from django.core.paginator import Paginator, InvalidPage +>>> paginator = Paginator(Article.objects.all(), 5) +>>> paginator.count +9 +>>> paginator.num_pages +2 +>>> paginator.page_range +[1, 2] + +# Get the first page. +>>> p = paginator.page(1) +>>> p +<Page 1 of 2> +>>> p.object_list +[<Article: Article 1>, <Article: Article 2>, <Article: Article 3>, <Article: Article 4>, <Article: Article 5>] +>>> p.has_next() +True +>>> p.has_previous() +False +>>> p.has_other_pages() +True +>>> p.next_page_number() +2 +>>> p.previous_page_number() +0 +>>> p.start_index() +1 +>>> p.end_index() +5 + +# Get the second page. +>>> p = paginator.page(2) +>>> p +<Page 2 of 2> +>>> p.object_list +[<Article: Article 6>, <Article: Article 7>, <Article: Article 8>, <Article: Article 9>] +>>> p.has_next() +False +>>> p.has_previous() +True +>>> p.has_other_pages() +True +>>> p.next_page_number() +3 +>>> p.previous_page_number() +1 +>>> p.start_index() +6 +>>> p.end_index() +9 + +# Invalid pages raise InvalidPage. +>>> paginator.page(0) +Traceback (most recent call last): +... +InvalidPage: ... +>>> paginator.page(3) +Traceback (most recent call last): +... +InvalidPage: ... + +# Empty paginators with allow_empty_first_page=True. +>>> paginator = Paginator(Article.objects.filter(id=0), 5, allow_empty_first_page=True) +>>> paginator.count +0 +>>> paginator.num_pages +1 +>>> paginator.page_range +[1] + +# Empty paginators with allow_empty_first_page=False. +>>> paginator = Paginator(Article.objects.filter(id=0), 5, allow_empty_first_page=False) +>>> paginator.count +0 +>>> paginator.num_pages +0 +>>> paginator.page_range +[] + +# Paginators work with regular lists/tuples, too -- not just with QuerySets. +>>> paginator = Paginator([1, 2, 3, 4, 5, 6, 7, 8, 9], 5) +>>> paginator.count +9 +>>> paginator.num_pages +2 +>>> paginator.page_range +[1, 2] + +# Get the first page. +>>> p = paginator.page(1) +>>> p +<Page 1 of 2> +>>> p.object_list +[1, 2, 3, 4, 5] +>>> p.has_next() +True +>>> p.has_previous() +False +>>> p.has_other_pages() +True +>>> p.next_page_number() +2 +>>> p.previous_page_number() +0 +>>> p.start_index() +1 +>>> p.end_index() +5 + +################################ +# Legacy API (ObjectPaginator) # +################################ + +# Don't print out the deprecation warnings during testing. +>>> from warnings import filterwarnings +>>> filterwarnings("ignore") + >>> from django.core.paginator import ObjectPaginator, InvalidPage >>> paginator = ObjectPaginator(Article.objects.all(), 5) - -# the paginator knows how many hits and pages it contains >>> paginator.hits 9 - >>> paginator.pages 2 +>>> paginator.page_range +[1, 2] -# get the first page (zero-based) +# Get the first page. >>> paginator.get_page(0) [<Article: Article 1>, <Article: Article 2>, <Article: Article 3>, <Article: Article 4>, <Article: Article 5>] - -# get the second page ->>> paginator.get_page(1) -[<Article: Article 6>, <Article: Article 7>, <Article: Article 8>, <Article: Article 9>] - -# does the first page have a next or previous page? >>> paginator.has_next_page(0) True - >>> paginator.has_previous_page(0) False - -# check the second page ->>> paginator.has_next_page(1) -False - ->>> paginator.has_previous_page(1) -True - >>> paginator.first_on_page(0) 1 ->>> paginator.first_on_page(1) -6 >>> paginator.last_on_page(0) 5 + +# Get the second page. +>>> paginator.get_page(1) +[<Article: Article 6>, <Article: Article 7>, <Article: Article 8>, <Article: Article 9>] +>>> paginator.has_next_page(1) +False +>>> paginator.has_previous_page(1) +True +>>> paginator.first_on_page(1) +6 >>> paginator.last_on_page(1) 9 +# Invalid pages raise InvalidPage. +>>> paginator.get_page(-1) +Traceback (most recent call last): +... +InvalidPage: ... +>>> paginator.get_page(2) +Traceback (most recent call last): +... +InvalidPage: ... + +# Empty paginators with allow_empty_first_page=True. +>>> paginator = ObjectPaginator(Article.objects.filter(id=0), 5) +>>> paginator.count +0 +>>> paginator.num_pages +1 +>>> paginator.page_range +[1] + +################## +# Orphan support # +################## + # Add a few more records to test out the orphans feature. >>> for x in range(10, 13): ... Article(headline="Article %s" % x, pub_date=datetime(2006, 10, 6)).save() -# With orphans set to 3 and 10 items per page, we should get all 12 items on a single page: +# With orphans set to 3 and 10 items per page, we should get all 12 items on a single page. +>>> paginator = Paginator(Article.objects.all(), 10, orphans=3) +>>> paginator.num_pages +1 + +# With orphans only set to 1, we should get two pages. +>>> paginator = ObjectPaginator(Article.objects.all(), 10, orphans=1) +>>> paginator.num_pages +2 + +# LEGACY: With orphans set to 3 and 10 items per page, we should get all 12 items on a single page. >>> paginator = ObjectPaginator(Article.objects.all(), 10, orphans=3) >>> paginator.pages 1 -# With orphans only set to 1, we should get two pages: +# LEGACY: With orphans only set to 1, we should get two pages. >>> paginator = ObjectPaginator(Article.objects.all(), 10, orphans=1) >>> paginator.pages 2 - -# The paginator can provide a list of all available pages. ->>> paginator = ObjectPaginator(Article.objects.all(), 10) ->>> paginator.page_range -[1, 2] """} diff --git a/tests/modeltests/validation/models.py b/tests/modeltests/validation/models.py index aacd041678..63f9f7a361 100644 --- a/tests/modeltests/validation/models.py +++ b/tests/modeltests/validation/models.py @@ -41,8 +41,8 @@ __test__ = {'API_TESTS':""" 23 >>> p = Person(**dict(valid_params, id='foo')) ->>> p.validate() -{'id': [u'This value must be an integer.']} +>>> p.validate()['id'] +[u'This value must be an integer.'] >>> p = Person(**dict(valid_params, id=None)) >>> p.validate() @@ -75,8 +75,8 @@ True False >>> p = Person(**dict(valid_params, is_child='foo')) ->>> p.validate() -{'is_child': [u'This value must be either True or False.']} +>>> p.validate()['is_child'] +[u'This value must be either True or False.'] >>> p = Person(**dict(valid_params, name=u'Jose')) >>> p.validate() @@ -115,8 +115,8 @@ datetime.date(2000, 5, 3) datetime.date(2000, 5, 3) >>> p = Person(**dict(valid_params, birthdate='foo')) ->>> p.validate() -{'birthdate': [u'Enter a valid date in YYYY-MM-DD format.']} +>>> p.validate()['birthdate'] +[u'Enter a valid date in YYYY-MM-DD format.'] >>> p = Person(**dict(valid_params, favorite_moment=datetime.datetime(2002, 4, 3, 13, 23))) >>> p.validate() @@ -143,11 +143,15 @@ datetime.datetime(2002, 4, 3, 0, 0) u'john@example.com' >>> p = Person(**dict(valid_params, email=22)) ->>> p.validate() -{'email': [u'Enter a valid e-mail address.']} +>>> p.validate()['email'] +[u'Enter a valid e-mail address.'] # Make sure that Date and DateTime return validation errors and don't raise Python errors. ->>> Person(name='John Doe', is_child=True, email='abc@def.com').validate() -{'favorite_moment': [u'This field is required.'], 'birthdate': [u'This field is required.']} +>>> p = Person(name='John Doe', is_child=True, email='abc@def.com') +>>> errors = p.validate() +>>> errors['favorite_moment'] +[u'This field is required.'] +>>> errors['birthdate'] +[u'This field is required.'] """} diff --git a/tests/regressiontests/forms/extra.py b/tests/regressiontests/forms/extra.py index 9dff4071f1..a8b369715d 100644 --- a/tests/regressiontests/forms/extra.py +++ b/tests/regressiontests/forms/extra.py @@ -22,7 +22,7 @@ classes that demonstrate some of the library's abilities. >>> from django.newforms.extras import SelectDateWidget >>> w = SelectDateWidget(years=('2007','2008','2009','2010','2011','2012','2013','2014','2015','2016')) >>> print w.render('mydate', '') -<select name="mydate_month"> +<select name="mydate_month" id="id_mydate_month"> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> @@ -36,7 +36,7 @@ classes that demonstrate some of the library's abilities. <option value="11">November</option> <option value="12">December</option> </select> -<select name="mydate_day"> +<select name="mydate_day" id="id_mydate_day"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> @@ -69,7 +69,7 @@ classes that demonstrate some of the library's abilities. <option value="30">30</option> <option value="31">31</option> </select> -<select name="mydate_year"> +<select name="mydate_year" id="id_mydate_year"> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> @@ -84,7 +84,7 @@ classes that demonstrate some of the library's abilities. >>> w.render('mydate', None) == w.render('mydate', '') True >>> print w.render('mydate', '2010-04-15') -<select name="mydate_month"> +<select name="mydate_month" id="id_mydate_month"> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> @@ -98,7 +98,7 @@ True <option value="11">November</option> <option value="12">December</option> </select> -<select name="mydate_day"> +<select name="mydate_day" id="id_mydate_day"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> @@ -131,7 +131,74 @@ True <option value="30">30</option> <option value="31">31</option> </select> -<select name="mydate_year"> +<select name="mydate_year" id="id_mydate_year"> +<option value="2007">2007</option> +<option value="2008">2008</option> +<option value="2009">2009</option> +<option value="2010" selected="selected">2010</option> +<option value="2011">2011</option> +<option value="2012">2012</option> +<option value="2013">2013</option> +<option value="2014">2014</option> +<option value="2015">2015</option> +<option value="2016">2016</option> +</select> + +Accepts a datetime or a string: + +>>> w.render('mydate', datetime.date(2010, 4, 15)) == w.render('mydate', '2010-04-15') +True + +Invalid dates still render the failed date: +>>> print w.render('mydate', '2010-02-31') +<select name="mydate_month" id="id_mydate_month"> +<option value="1">January</option> +<option value="2" selected="selected">February</option> +<option value="3">March</option> +<option value="4">April</option> +<option value="5">May</option> +<option value="6">June</option> +<option value="7">July</option> +<option value="8">August</option> +<option value="9">September</option> +<option value="10">October</option> +<option value="11">November</option> +<option value="12">December</option> +</select> +<select name="mydate_day" id="id_mydate_day"> +<option value="1">1</option> +<option value="2">2</option> +<option value="3">3</option> +<option value="4">4</option> +<option value="5">5</option> +<option value="6">6</option> +<option value="7">7</option> +<option value="8">8</option> +<option value="9">9</option> +<option value="10">10</option> +<option value="11">11</option> +<option value="12">12</option> +<option value="13">13</option> +<option value="14">14</option> +<option value="15">15</option> +<option value="16">16</option> +<option value="17">17</option> +<option value="18">18</option> +<option value="19">19</option> +<option value="20">20</option> +<option value="21">21</option> +<option value="22">22</option> +<option value="23">23</option> +<option value="24">24</option> +<option value="25">25</option> +<option value="26">26</option> +<option value="27">27</option> +<option value="28">28</option> +<option value="29">29</option> +<option value="30">30</option> +<option value="31" selected="selected">31</option> +</select> +<select name="mydate_year" id="id_mydate_year"> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> @@ -252,8 +319,8 @@ ValidationError: [u'This field is required.'] </select> <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" /><input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" /></td></tr> ->>> f.cleaned_data -{'field1': u'some text,JP,2007-04-25 06:24:00'} +>>> f.cleaned_data['field1'] +u'some text,JP,2007-04-25 06:24:00' # IPAddressField ################################################################## diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py index 9216210e09..9421d8c005 100644 --- a/tests/regressiontests/forms/fields.py +++ b/tests/regressiontests/forms/fields.py @@ -1133,6 +1133,33 @@ u'' >>> f.clean(None) u'' +# FilePathField ############################################################### + +>>> import os +>>> from django import newforms as forms +>>> path = forms.__file__ +>>> path = os.path.dirname(path) + '/' +>>> path +'.../django/newforms/' +>>> f = forms.FilePathField(path=path) +>>> f.choices.sort() +>>> f.choices +[('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/__init__.pyc', '__init__.pyc'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/fields.pyc', 'fields.pyc'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/forms.pyc', 'forms.pyc'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/models.pyc', 'models.pyc'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/util.pyc', 'util.pyc'), ('.../django/newforms/widgets.py', 'widgets.py'), ('.../django/newforms/widgets.pyc', 'widgets.pyc')] +>>> f.clean('fields.py') +Traceback (most recent call last): +... +ValidationError: [u'Select a valid choice. That choice is not one of the available choices.'] +>>> f.clean(path + 'fields.py') +u'.../django/newforms/fields.py' +>>> f = forms.FilePathField(path=path, match='^.*?\.py$') +>>> f.choices.sort() +>>> f.choices +[('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/widgets.py', 'widgets.py')] +>>> f = forms.FilePathField(path=path, recursive=True, match='^.*?\.py$') +>>> f.choices.sort() +>>> f.choices +[('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/extras/__init__.py', 'extras/__init__.py'), ('.../django/newforms/extras/widgets.py', 'extras/widgets.py'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/widgets.py', 'widgets.py')] + # SplitDateTimeField ########################################################## >>> f = SplitDateTimeField() diff --git a/tests/regressiontests/forms/forms.py b/tests/regressiontests/forms/forms.py index 59937bc84e..d6f7919ff2 100644 --- a/tests/regressiontests/forms/forms.py +++ b/tests/regressiontests/forms/forms.py @@ -36,8 +36,8 @@ True u'' >>> p.errors.as_text() u'' ->>> p.cleaned_data -{'first_name': u'John', 'last_name': u'Lennon', 'birthday': datetime.date(1940, 10, 9)} +>>> p.cleaned_data["first_name"], p.cleaned_data["last_name"], p.cleaned_data["birthday"] +(u'John', u'Lennon', datetime.date(1940, 10, 9)) >>> print p['first_name'] <input type="text" name="first_name" value="John" id="id_first_name" /> >>> print p['last_name'] @@ -68,8 +68,12 @@ Empty dictionaries are valid, too. >>> p = Person({}) >>> p.is_bound True ->>> p.errors -{'first_name': [u'This field is required.'], 'last_name': [u'This field is required.'], 'birthday': [u'This field is required.']} +>>> p.errors['first_name'] +[u'This field is required.'] +>>> p.errors['last_name'] +[u'This field is required.'] +>>> p.errors['birthday'] +[u'This field is required.'] >>> p.is_valid() False >>> p.cleaned_data @@ -137,8 +141,10 @@ u'<li><label for="id_first_name">First name:</label> <input type="text" name="fi u'<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></p>\n<p><label for="id_last_name">Last name:</label> <input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></p>\n<p><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></p>' >>> p = Person({'last_name': u'Lennon'}) ->>> p.errors -{'first_name': [u'This field is required.'], 'birthday': [u'This field is required.']} +>>> p.errors['first_name'] +[u'This field is required.'] +>>> p.errors['birthday'] +[u'This field is required.'] >>> p.is_valid() False >>> p.errors.as_ul() @@ -175,8 +181,13 @@ but cleaned_data contains only the form's fields. >>> p = Person(data) >>> p.is_valid() True ->>> p.cleaned_data -{'first_name': u'John', 'last_name': u'Lennon', 'birthday': datetime.date(1940, 10, 9)} +>>> p.cleaned_data['first_name'] +u'John' +>>> p.cleaned_data['last_name'] +u'Lennon' +>>> p.cleaned_data['birthday'] +datetime.date(1940, 10, 9) + cleaned_data will include a key and value for *all* fields defined in the Form, even if the Form's data didn't include a value for fields that are not @@ -191,8 +202,12 @@ empty string. >>> f = OptionalPersonForm(data) >>> f.is_valid() True ->>> f.cleaned_data -{'nick_name': u'', 'first_name': u'John', 'last_name': u'Lennon'} +>>> f.cleaned_data['nick_name'] +u'' +>>> f.cleaned_data['first_name'] +u'John' +>>> f.cleaned_data['last_name'] +u'Lennon' For DateFields, it's set to None. >>> class OptionalPersonForm(Form): @@ -203,8 +218,12 @@ For DateFields, it's set to None. >>> f = OptionalPersonForm(data) >>> f.is_valid() True ->>> f.cleaned_data -{'birth_date': None, 'first_name': u'John', 'last_name': u'Lennon'} +>>> print f.cleaned_data['birth_date'] +None +>>> f.cleaned_data['first_name'] +u'John' +>>> f.cleaned_data['last_name'] +u'Lennon' "auto_id" tells the Form to add an "id" attribute to each form element. If it's a string that contains '%s', Django will use that as a format string @@ -549,18 +568,22 @@ The MultipleHiddenInput widget renders multiple values as hidden fields. When using CheckboxSelectMultiple, the framework expects a list of input and returns a list of input. >>> f = SongForm({'name': 'Yesterday'}, auto_id=False) ->>> f.errors -{'composers': [u'This field is required.']} +>>> f.errors['composers'] +[u'This field is required.'] >>> f = SongForm({'name': 'Yesterday', 'composers': ['J']}, auto_id=False) >>> f.errors {} ->>> f.cleaned_data -{'composers': [u'J'], 'name': u'Yesterday'} +>>> f.cleaned_data['composers'] +[u'J'] +>>> f.cleaned_data['name'] +u'Yesterday' >>> f = SongForm({'name': 'Yesterday', 'composers': ['J', 'P']}, auto_id=False) >>> f.errors {} ->>> f.cleaned_data -{'composers': [u'J', u'P'], 'name': u'Yesterday'} +>>> f.cleaned_data['composers'] +[u'J', u'P'] +>>> f.cleaned_data['name'] +u'Yesterday' Validation errors are HTML-escaped when output as HTML. >>> class EscapingForm(Form): @@ -598,16 +621,24 @@ including the current field (e.g., the field XXX if you're in clean_XXX()). >>> f.errors {} >>> f = UserRegistration({}, auto_id=False) ->>> f.errors -{'username': [u'This field is required.'], 'password1': [u'This field is required.'], 'password2': [u'This field is required.']} +>>> f.errors['username'] +[u'This field is required.'] +>>> f.errors['password1'] +[u'This field is required.'] +>>> f.errors['password2'] +[u'This field is required.'] >>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False) ->>> f.errors -{'password2': [u'Please make sure your passwords match.']} +>>> f.errors['password2'] +[u'Please make sure your passwords match.'] >>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False) >>> f.errors {} ->>> f.cleaned_data -{'username': u'adrian', 'password1': u'foo', 'password2': u'foo'} +>>> f.cleaned_data['username'] +u'adrian' +>>> f.cleaned_data['password1'] +u'foo' +>>> f.cleaned_data['password2'] +u'foo' Another way of doing multiple-field validation is by implementing the Form's clean() method. If you do this, any ValidationError raised by that @@ -632,11 +663,15 @@ Form.clean() is required to return a dictionary of all clean data. <tr><th>Username:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="username" maxlength="10" /></td></tr> <tr><th>Password1:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password1" /></td></tr> <tr><th>Password2:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password2" /></td></tr> ->>> f.errors -{'username': [u'This field is required.'], 'password1': [u'This field is required.'], 'password2': [u'This field is required.']} +>>> f.errors['username'] +[u'This field is required.'] +>>> f.errors['password1'] +[u'This field is required.'] +>>> f.errors['password2'] +[u'This field is required.'] >>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False) ->>> f.errors -{'__all__': [u'Please make sure your passwords match.']} +>>> f.errors['__all__'] +[u'Please make sure your passwords match.'] >>> print f.as_table() <tr><td colspan="2"><ul class="errorlist"><li>Please make sure your passwords match.</li></ul></td></tr> <tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" /></td></tr> @@ -650,8 +685,12 @@ Form.clean() is required to return a dictionary of all clean data. >>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False) >>> f.errors {} ->>> f.cleaned_data -{'username': u'adrian', 'password1': u'foo', 'password2': u'foo'} +>>> f.cleaned_data['username'] +u'adrian' +>>> f.cleaned_data['password1'] +u'foo' +>>> f.cleaned_data['password2'] +u'foo' # Dynamic construction ######################################################## @@ -1024,8 +1063,8 @@ An 'initial' value is *not* used as a fallback if data is not provided. In this example, we don't provide a value for 'username', and the form raises a validation error rather than using the initial value for 'username'. >>> p = UserRegistration({'password': 'secret'}) ->>> p.errors -{'username': [u'This field is required.']} +>>> p.errors['username'] +[u'This field is required.'] >>> p.is_valid() False @@ -1069,8 +1108,8 @@ A dynamic 'initial' value is *not* used as a fallback if data is not provided. In this example, we don't provide a value for 'username', and the form raises a validation error rather than using the initial value for 'username'. >>> p = UserRegistration({'password': 'secret'}, initial={'username': 'django'}) ->>> p.errors -{'username': [u'This field is required.']} +>>> p.errors['username'] +[u'This field is required.'] >>> p.is_valid() False @@ -1123,8 +1162,8 @@ A callable 'initial' value is *not* used as a fallback if data is not provided. In this example, we don't provide a value for 'username', and the form raises a validation error rather than using the initial value for 'username'. >>> p = UserRegistration({'password': 'secret'}, initial={'username': initial_django}) ->>> p.errors -{'username': [u'This field is required.']} +>>> p.errors['username'] +[u'This field is required.'] >>> p.is_valid() False @@ -1258,8 +1297,12 @@ actual field name. {} >>> p.is_valid() True ->>> p.cleaned_data -{'first_name': u'John', 'last_name': u'Lennon', 'birthday': datetime.date(1940, 10, 9)} +>>> p.cleaned_data['first_name'] +u'John' +>>> p.cleaned_data['last_name'] +u'Lennon' +>>> p.cleaned_data['birthday'] +datetime.date(1940, 10, 9) Let's try submitting some bad data to make sure form.errors and field.errors work as expected. @@ -1269,8 +1312,12 @@ work as expected. ... 'person1-birthday': u'' ... } >>> p = Person(data, prefix='person1') ->>> p.errors -{'first_name': [u'This field is required.'], 'last_name': [u'This field is required.'], 'birthday': [u'This field is required.']} +>>> p.errors['first_name'] +[u'This field is required.'] +>>> p.errors['last_name'] +[u'This field is required.'] +>>> p.errors['birthday'] +[u'This field is required.'] >>> p['first_name'].errors [u'This field is required.'] >>> p['person1-first_name'].errors @@ -1286,8 +1333,12 @@ the form doesn't "see" the fields. ... 'birthday': u'1940-10-9' ... } >>> p = Person(data, prefix='person1') ->>> p.errors -{'first_name': [u'This field is required.'], 'last_name': [u'This field is required.'], 'birthday': [u'This field is required.']} +>>> p.errors['first_name'] +[u'This field is required.'] +>>> p.errors['last_name'] +[u'This field is required.'] +>>> p.errors['birthday'] +[u'This field is required.'] With prefixes, a single data dictionary can hold data for multiple instances of the same form. @@ -1302,13 +1353,21 @@ of the same form. >>> p1 = Person(data, prefix='person1') >>> p1.is_valid() True ->>> p1.cleaned_data -{'first_name': u'John', 'last_name': u'Lennon', 'birthday': datetime.date(1940, 10, 9)} +>>> p1.cleaned_data['first_name'] +u'John' +>>> p1.cleaned_data['last_name'] +u'Lennon' +>>> p1.cleaned_data['birthday'] +datetime.date(1940, 10, 9) >>> p2 = Person(data, prefix='person2') >>> p2.is_valid() True ->>> p2.cleaned_data -{'first_name': u'Jim', 'last_name': u'Morrison', 'birthday': datetime.date(1943, 12, 8)} +>>> p2.cleaned_data['first_name'] +u'Jim' +>>> p2.cleaned_data['last_name'] +u'Morrison' +>>> p2.cleaned_data['birthday'] +datetime.date(1943, 12, 8) By default, forms append a hyphen between the prefix and the field name, but a form can alter that behavior by implementing the add_prefix() method. This @@ -1333,8 +1392,12 @@ self.prefix. >>> p = Person(data, prefix='foo') >>> p.is_valid() True ->>> p.cleaned_data -{'first_name': u'John', 'last_name': u'Lennon', 'birthday': datetime.date(1940, 10, 9)} +>>> p.cleaned_data['first_name'] +u'John' +>>> p.cleaned_data['last_name'] +u'Lennon' +>>> p.cleaned_data['birthday'] +datetime.date(1940, 10, 9) # Forms with NullBooleanFields ################################################ diff --git a/tests/regressiontests/i18n/misc.py b/tests/regressiontests/i18n/misc.py index 6ed8afaee3..f8f35ad4e4 100644 --- a/tests/regressiontests/i18n/misc.py +++ b/tests/regressiontests/i18n/misc.py @@ -87,11 +87,12 @@ source tree. '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): +# Python 2.3 and 2.4 return 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. (On those platforms, +# passing in a truly bogus locale will get you the default locale back.) +if sys.version_info >= (2, 5): 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 diff --git a/tests/regressiontests/model_fields/models.py b/tests/regressiontests/model_fields/models.py index e69de29bb2..7e07227961 100644 --- a/tests/regressiontests/model_fields/models.py +++ b/tests/regressiontests/model_fields/models.py @@ -0,0 +1,24 @@ + +from django.db import models + +class Foo(models.Model): + a = models.CharField(max_length=10) + +def get_foo(): + return Foo.objects.get(id=1) + +class Bar(models.Model): + b = models.CharField(max_length=10) + a = models.ForeignKey(Foo, default=get_foo) + +__test__ = {'API_TESTS':""" +# Create a couple of Places. +>>> f = Foo.objects.create(a='abc') +>>> f.id +1 +>>> b = Bar(b = "bcd") +>>> b.a +<Foo: Foo object> +>>> b.save() + +"""} diff --git a/tests/regressiontests/requests/tests.py b/tests/regressiontests/requests/tests.py index f32ef14ae9..aaaef1d8b0 100644 --- a/tests/regressiontests/requests/tests.py +++ b/tests/regressiontests/requests/tests.py @@ -31,4 +31,8 @@ GET:{}, POST:{}, COOKIES:{}, META:{}> + +>>> from django.http import parse_cookie +>>> parse_cookie('invalid:key=true') +{} """ diff --git a/tests/regressiontests/syndication/__init__.py b/tests/regressiontests/syndication/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/syndication/models.py b/tests/regressiontests/syndication/models.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/syndication/tests.py b/tests/regressiontests/syndication/tests.py new file mode 100644 index 0000000000..6a9dd643d7 --- /dev/null +++ b/tests/regressiontests/syndication/tests.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +from django.test import TestCase +from django.test.client import Client + +class SyndicationFeedTest(TestCase): + def test_complex_base_url(self): + """ + Tests that that the base url for a complex feed doesn't raise a 500 + exception. + """ + c = Client() + response = c.get('/syndication/feeds/complex/') + self.assertEquals(response.status_code, 404) diff --git a/tests/regressiontests/syndication/urls.py b/tests/regressiontests/syndication/urls.py new file mode 100644 index 0000000000..24644ffd53 --- /dev/null +++ b/tests/regressiontests/syndication/urls.py @@ -0,0 +1,18 @@ +from django.conf.urls.defaults import patterns +from django.core.exceptions import ObjectDoesNotExist +from django.contrib.syndication import feeds + + +class ComplexFeed(feeds.Feed): + def get_object(self, bits): + if len(bits) != 1: + raise ObjectDoesNotExist + return None + + +urlpatterns = patterns('', + (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', { + 'feed_dict': dict( + complex = ComplexFeed, + )}), +) diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py index b5d9ae63b9..305ccc9aa3 100644 --- a/tests/regressiontests/test_client_regress/models.py +++ b/tests/regressiontests/test_client_regress/models.py @@ -3,7 +3,7 @@ Regression tests for the Test Client, especially the customized assertions. """ from django.test import Client, TestCase -from django.core import mail +from django.core.urlresolvers import reverse import os class AssertContainsTests(TestCase): @@ -261,3 +261,31 @@ class LoginTests(TestCase): # Check that assertRedirects uses the original client, not the # default client. self.assertRedirects(response, "http://testserver/test_client_regress/get_view/") + + +class URLEscapingTests(TestCase): + def test_simple_argument_get(self): + "Get a view that has a simple string argument" + response = self.client.get(reverse('arg_view', args=['Slartibartfast'])) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, 'Howdy, Slartibartfast') + + def test_argument_with_space_get(self): + "Get a view that has a string argument that requires escaping" + response = self.client.get(reverse('arg_view', args=['Arthur Dent'])) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, 'Hi, Arthur') + + def test_simple_argument_post(self): + "Post for a view that has a simple string argument" + response = self.client.post(reverse('arg_view', args=['Slartibartfast'])) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, 'Howdy, Slartibartfast') + + def test_argument_with_space_post(self): + "Post for a view that has a string argument that requires escaping" + response = self.client.post(reverse('arg_view', args=['Arthur Dent'])) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, 'Hi, Arthur') + + diff --git a/tests/regressiontests/test_client_regress/urls.py b/tests/regressiontests/test_client_regress/urls.py index e771707f61..d3304caef0 100644 --- a/tests/regressiontests/test_client_regress/urls.py +++ b/tests/regressiontests/test_client_regress/urls.py @@ -5,5 +5,6 @@ urlpatterns = patterns('', (r'^no_template_view/$', views.no_template_view), (r'^file_upload/$', views.file_upload_view), (r'^get_view/$', views.get_view), + url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'), (r'^login_protected_redirect_view/$', views.login_protected_redirect_view) ) diff --git a/tests/regressiontests/test_client_regress/views.py b/tests/regressiontests/test_client_regress/views.py index 75efd212e1..f44757dc10 100644 --- a/tests/regressiontests/test_client_regress/views.py +++ b/tests/regressiontests/test_client_regress/views.py @@ -1,7 +1,5 @@ from django.contrib.auth.decorators import login_required -from django.core.mail import EmailMessage, SMTPConnection from django.http import HttpResponse, HttpResponseRedirect, HttpResponseServerError -from django.shortcuts import render_to_response def no_template_view(request): "A simple view that expects a GET request, and returns a rendered template" @@ -20,10 +18,22 @@ def file_upload_view(request): return HttpResponseServerError() def get_view(request): - "A simple login protected view" + "A simple login protected view" return HttpResponse("Hello world") get_view = login_required(get_view) +def view_with_argument(request, name): + """A view that takes a string argument + + The purpose of this view is to check that if a space is provided in + the argument, the test framework unescapes the %20 before passing + the value to the view. + """ + if name == 'Arthur Dent': + return HttpResponse('Hi, Arthur') + else: + return HttpResponse('Howdy, %s' % name) + def login_protected_redirect_view(request): "A view that redirects all requests to the GET view" return HttpResponseRedirect('/test_client_regress/get_view/') diff --git a/tests/regressiontests/utils/decorators.py b/tests/regressiontests/utils/decorators.py new file mode 100644 index 0000000000..c6ae243c98 --- /dev/null +++ b/tests/regressiontests/utils/decorators.py @@ -0,0 +1,13 @@ +from django.test import TestCase + +class DecoratorFromMiddlewareTests(TestCase): + """ + Tests for view decorators created using + ``django.utils.decorators.decorator_from_middleware``. + """ + + def test_process_view_middleware(self): + """ + Test a middleware that implements process_view. + """ + self.client.get('/utils/xview/') diff --git a/tests/regressiontests/utils/tests.py b/tests/regressiontests/utils/tests.py index abcd7212d8..6fc645505b 100644 --- a/tests/regressiontests/utils/tests.py +++ b/tests/regressiontests/utils/tests.py @@ -8,6 +8,7 @@ from django.utils import html, checksums import timesince import datastructures +from decorators import DecoratorFromMiddlewareTests # Extra tests __test__ = { diff --git a/tests/regressiontests/utils/urls.py b/tests/regressiontests/utils/urls.py new file mode 100644 index 0000000000..7b60d0884c --- /dev/null +++ b/tests/regressiontests/utils/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import * + +import views + +urlpatterns = patterns('', + (r'^xview/$', views.xview), +) diff --git a/tests/regressiontests/utils/views.py b/tests/regressiontests/utils/views.py new file mode 100644 index 0000000000..d22ae26641 --- /dev/null +++ b/tests/regressiontests/utils/views.py @@ -0,0 +1,10 @@ +from django.http import HttpResponse +from django.utils.decorators import decorator_from_middleware +from django.middleware.doc import XViewMiddleware + + +xview_dec = decorator_from_middleware(XViewMiddleware) + +def xview(request): + return HttpResponse() +xview = xview_dec(xview) diff --git a/tests/urls.py b/tests/urls.py index 174e06969b..dbdf9a8064 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -11,10 +11,15 @@ urlpatterns = patterns('', # test urlconf for {% url %} template tag (r'^url_tag/', include('regressiontests.templates.urls')), - + # django built-in views (r'^views/', include('regressiontests.views.urls')), # test urlconf for middleware tests (r'^middleware/', include('regressiontests.middleware.urls')), + + (r'^utils/', include('regressiontests.utils.urls')), + + # test urlconf for syndication tests + (r'^syndication/', include('regressiontests.syndication.urls')), )