From a9b2c0686d98f78ca365a04057699a44f7711914 Mon Sep 17 00:00:00 2001 From: Boulder Sprinters Date: Thu, 5 Apr 2007 16:17:35 +0000 Subject: [PATCH] boulder-oracle-sprint: Merged to [4934]. git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4935 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 2 + MANIFEST.in | 4 + django/__init__.py | 2 +- django/bin/compile-messages.py | 4 +- django/conf/locale/en/LC_MESSAGES/django.mo | Bin 627 -> 627 bytes django/conf/locale/en/LC_MESSAGES/django.po | 3490 ++++++++++------- .../conf/locale/pt_BR/LC_MESSAGES/django.mo | Bin 28462 -> 30723 bytes .../conf/locale/pt_BR/LC_MESSAGES/django.po | 2433 +++++++----- django/contrib/localflavor/br/forms.py | 6 +- django/contrib/localflavor/de/__init__.py | 0 django/contrib/localflavor/de/de_states.py | 21 + django/contrib/localflavor/de/forms.py | 87 + django/contrib/localflavor/fr/forms.py | 2 +- django/contrib/localflavor/it/forms.py | 1 - django/contrib/localflavor/usa/forms.py | 42 +- django/newforms/fields.py | 3 +- django/newforms/forms.py | 7 +- django/newforms/util.py | 31 +- django/newforms/widgets.py | 3 +- django/template/defaulttags.py | 4 +- django/utils/encoding.py | 32 + django/utils/html.py | 1 + django/utils/translation/__init__.py | 5 +- django/utils/translation/trans_null.py | 15 +- docs/faq.txt | 4 +- scripts/rpm-install.sh | 12 +- setup.cfg | 2 +- setup.py | 37 +- tests/regressiontests/defaultfilters/tests.py | 19 +- tests/regressiontests/forms/localflavor.py | 63 +- tests/regressiontests/forms/regressions.py | 16 +- tests/regressiontests/forms/tests.py | 4 +- 32 files changed, 3900 insertions(+), 2452 deletions(-) create mode 100644 django/contrib/localflavor/de/__init__.py create mode 100644 django/contrib/localflavor/de/de_states.py create mode 100644 django/contrib/localflavor/de/forms.py create mode 100644 django/utils/encoding.py diff --git a/AUTHORS b/AUTHORS index a05d2b4e49..673976231a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -42,6 +42,7 @@ people who have submitted patches, reported bugs, added translations, helped answer newbie questions, and generally made Django that much better: adurdin@gmail.com + Daniel Alves Barbosa de Oliveira Vaz Andreas andy@jadedplanet.net Fabrice Aneche @@ -127,6 +128,7 @@ answer newbie questions, and generally made Django that much better: Nicola Larosa Eugene Lazutkin Jeong-Min Lee + Jannis Leidel Christopher Lenz lerouxb@gmail.com Waylan Limberg diff --git a/MANIFEST.in b/MANIFEST.in index 11b60bcc14..a47b6e30f1 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,8 +1,12 @@ +include README include AUTHORS include INSTALL include LICENSE +include MANIFEST.in recursive-include docs * recursive-include scripts * +recursive-include examples * +recursive-include extras * recursive-include django/conf/locale * recursive-include django/contrib/admin/templates * recursive-include django/contrib/admin/media * diff --git a/django/__init__.py b/django/__init__.py index a91a7e13c3..7a24af2b4e 100644 --- a/django/__init__.py +++ b/django/__init__.py @@ -1 +1 @@ -VERSION = (0, 96, None) +VERSION = (0, 97, 'pre') diff --git a/django/bin/compile-messages.py b/django/bin/compile-messages.py index f2193d3122..2e1e908bbf 100755 --- a/django/bin/compile-messages.py +++ b/django/bin/compile-messages.py @@ -31,9 +31,9 @@ def compile_messages(locale=None): os.environ['djangocompilemo'] = pf + '.mo' os.environ['djangocompilepo'] = pf + '.po' if sys.platform == 'win32': # Different shell-variable syntax - cmd = 'msgfmt -o "%djangocompilemo%" "%djangocompilepo%"' + cmd = 'msgfmt --check-format -o "%djangocompilemo%" "%djangocompilepo%"' else: - cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"' + cmd = 'msgfmt --check-format -o "$djangocompilemo" "$djangocompilepo"' os.system(cmd) def main(): diff --git a/django/conf/locale/en/LC_MESSAGES/django.mo b/django/conf/locale/en/LC_MESSAGES/django.mo index 6c4dbe4b4ef18e42500d5eb273abe9a38f71ee2b..038e794a83aaaea40acfedeedbf3d061df69e654 100644 GIT binary patch delta 28 jcmey&@|k5rCZmA4u7QcJfvJLlp_Q?bwxPk~O2%IRdJqUE delta 28 jcmey&@|k5rCZm9vu7Rblk*R{Asg;Sbwt>;)O2%IRdb|iU diff --git a/django/conf/locale/en/LC_MESSAGES/django.po b/django/conf/locale/en/LC_MESSAGES/django.po index feba39f7cd..7e36c6358c 100644 --- a/django/conf/locale/en/LC_MESSAGES/django.po +++ b/django/conf/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-09-25 15:43+0200\n" +"POT-Creation-Date: 2007-04-05 01:32+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,6 +15,1168 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "" + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "" + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "" + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" + +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +msgstr[1] "" + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376 +#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178 +msgid "This field is required." +msgstr "" + +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "" + +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "" + +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "" + +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "" + +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "" + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "" + +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Brazilian" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Romanian" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Russian" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Slovenian" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Swedish" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Turkish" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Ukrainian" +msgstr "" + +#: conf/global_settings.py:76 +msgid "Simplified Chinese" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Traditional Chinese" +msgstr "" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "" + +#: utils/dates.py:14 +msgid "January" +msgstr "" + +#: utils/dates.py:14 +msgid "February" +msgstr "" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "" + +#: utils/dates.py:15 +msgid "August" +msgstr "" + +#: utils/dates.py:15 +msgid "September" +msgstr "" + +#: utils/dates.py:15 +msgid "October" +msgstr "" + +#: utils/dates.py:15 +msgid "November" +msgstr "" + +#: utils/dates.py:16 +msgid "December" +msgstr "" + +#: utils/dates.py:19 +msgid "jan" +msgstr "" + +#: utils/dates.py:19 +msgid "feb" +msgstr "" + +#: utils/dates.py:19 +msgid "mar" +msgstr "" + +#: utils/dates.py:19 +msgid "apr" +msgstr "" + +#: utils/dates.py:19 +msgid "may" +msgstr "" + +#: utils/dates.py:19 +msgid "jun" +msgstr "" + +#: utils/dates.py:20 +msgid "jul" +msgstr "" + +#: utils/dates.py:20 +msgid "aug" +msgstr "" + +#: utils/dates.py:20 +msgid "sep" +msgstr "" + +#: utils/dates.py:20 +msgid "oct" +msgstr "" + +#: utils/dates.py:20 +msgid "nov" +msgstr "" + +#: utils/dates.py:20 +msgid "dec" +msgstr "" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "" + +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "" + +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "" +msgstr[1] "" + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "" + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150 +#: newforms/widgets.py:174 +msgid "Unknown" +msgstr "" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "Yes" +msgstr "" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "No" +msgstr "" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "" + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "" + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "" + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "" + +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "" + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17 +#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "" + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" + +#: contrib/localflavor/de/forms.py:63 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format" +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/usa/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/usa/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "" + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "" + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "" + +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "" + +#: contrib/auth/models.py:258 +msgid "message" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "" + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 +msgid "URL" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "" @@ -187,6 +1349,75 @@ msgstr "" msgid "Moderator deletion by %r" msgstr "" +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Log out" +msgstr "" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "" + #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" msgstr "" @@ -254,72 +1485,20 @@ msgstr "" msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" +#: contrib/sites/models.py:10 +msgid "domain name" msgstr "" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: 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" +#: contrib/sites/models.py:11 +msgid "display name" msgstr "" -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" +#: contrib/sites/models.py:15 +msgid "site" msgstr "" -#: contrib/comments/templates/comments/form.html:8 -msgid "Forgotten your password?" -msgstr "" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "" - -#: contrib/comments/templates/comments/form.html:28 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "" - -#: contrib/comments/templates/comments/form.html:35 -#: contrib/comments/templates/comments/freeform.html:10 -msgid "Preview comment" -msgstr "" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" +#: contrib/sites/models.py:16 +msgid "sites" msgstr "" #: contrib/admin/filterspecs.py:40 @@ -354,18 +1533,6 @@ msgstr "" msgid "This year" msgstr "" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "" - #: contrib/admin/models.py:16 msgid "action time" msgstr "" @@ -394,53 +1561,489 @@ msgstr "" msgid "log entries" msgstr "" -#: contrib/admin/templatetags/admin_list.py:230 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "" -#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: 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/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +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 "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:9 +msgid "Delete" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, 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 "" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." msgstr "" -#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 msgid "Log in" msgstr "" -#: 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 "" - -#: 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 "" - -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "" - -#: contrib/admin/views/decorators.py:85 +#: contrib/admin/templates/admin/index.html:17 #, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." +msgid "Models available in the %(name)s application." +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "" + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "" + +#: 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 "" + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" msgstr "" #: contrib/admin/views/main.py:223 msgid "Site administration" msgstr "" -#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17 +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "" #: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 -#: contrib/admin/views/auth.py:22 +#: contrib/admin/views/auth.py:24 msgid "You may edit it again below." msgstr "" @@ -459,11 +2062,6 @@ msgstr "" msgid "Added %s." msgstr "" -#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 -#: contrib/admin/views/main.py:339 -msgid "and" -msgstr "" - #: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." @@ -494,44 +2092,65 @@ msgstr "" msgid "Change %s" msgstr "" -#: contrib/admin/views/main.py:473 +#: contrib/admin/views/main.py:476 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "" -#: contrib/admin/views/main.py:478 +#: contrib/admin/views/main.py:481 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "" -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:514 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "" -#: contrib/admin/views/main.py:514 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" msgstr "" -#: contrib/admin/views/main.py:536 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" msgstr "" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "" -#: contrib/admin/views/main.py:758 +#: contrib/admin/views/main.py:768 msgid "Database error" msgstr "" +#: 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 "" + +#: 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 "" + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "" + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + #: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 #: contrib/admin/views/doc.py:50 msgid "tag:" @@ -554,12 +2173,12 @@ msgstr "" #: contrib/admin/views/doc.py:171 #, python-format -msgid "Model %r not found in app %r" +msgid "Model %(name)r not found in app %(label)r" msgstr "" #: contrib/admin/views/doc.py:183 #, python-format -msgid "the related `%s.%s` object" +msgid "the related `%(label)s.%(type)s` object" msgstr "" #: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 @@ -569,7 +2188,7 @@ msgstr "" #: contrib/admin/views/doc.py:214 #, python-format -msgid "related `%s.%s` objects" +msgid "related `%(label)s.%(name)s` objects" msgstr "" #: contrib/admin/views/doc.py:219 @@ -647,10 +2266,6 @@ msgstr "" msgid "Time" msgstr "" -#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "" - #: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" msgstr "" @@ -664,1331 +2279,86 @@ msgstr "" msgid "%s does not appear to be a urlpattern object" msgstr "" -#: contrib/admin/views/auth.py:28 +#: contrib/admin/views/auth.py:30 msgid "Add user" msgstr "" -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: 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" +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." msgstr "" -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: 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 "" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: 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_doc/bookmarklets.html:3 -msgid "Home" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 -msgid "History" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "N j, Y, P" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "" - -#: contrib/admin/templates/admin/index.html:17 +#: contrib/admin/views/auth.py:64 #, python-format -msgid "Models available in the %(name)s application." +msgid "Change password: %s" msgstr "" -#: contrib/admin/templates/admin/index.html:18 +#: newforms/fields.py:103 newforms/fields.py:256 #, python-format -msgid "%(name)s" +msgid "Ensure this value has at most %d characters." msgstr "" -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "" - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "" - -#: contrib/admin/templates/admin/change_list.html:11 +#: newforms/fields.py:105 newforms/fields.py:258 #, python-format -msgid "Add %(name)s" +msgid "Ensure this value has at least %d characters." msgstr "" -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "" - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, 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 "" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr "" - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "" -msgstr[1] "" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "" - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "" -msgstr[1] "" - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "" - -#: contrib/admin/templates/admin/invalid_setup.html:8 -msgid "" -"Something's wrong with your database installation. Make sure the appropriate " -"database tables have been created, and make sure the database is readable by " -"the appropriate user." -msgstr "" - -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "" - -#: contrib/admin/templates/admin/auth/user/add_form.html:12 -msgid "Username" -msgstr "" - -#: contrib/admin/templates/admin/auth/user/add_form.html:18 -msgid "Password" -msgstr "" - -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -msgid "Password (again)" -msgstr "" - -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -msgid "Enter the same password as above, for verification." -msgstr "" - -#: 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 "" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "" - -#: 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 "" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "" - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" - -#: contrib/admin/templates/registration/password_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 "" - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -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 "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "" - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" - -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "" - -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "" - -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "" - -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "" - -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "" - -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "" - -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "" - -#: contrib/auth/models.py:60 -msgid "group" -msgstr "" - -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "" - -#: contrib/auth/models.py:90 -msgid "username" -msgstr "" - -#: contrib/auth/models.py:90 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" - -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "" - -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "" - -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "" - -#: contrib/auth/models.py:94 -msgid "password" -msgstr "" - -#: contrib/auth/models.py:94 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "" - -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "" - -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "" - -#: contrib/auth/models.py:96 -msgid "active" -msgstr "" - -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "" - -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "" - -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" - -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "" - -#: contrib/auth/models.py:101 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" - -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "" - -#: contrib/auth/models.py:105 -msgid "user" -msgstr "" - -#: contrib/auth/models.py:106 -msgid "users" -msgstr "" - -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "" - -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "" - -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "" - -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "" - -#: contrib/auth/models.py:256 -msgid "message" -msgstr "" - -#: contrib/auth/forms.py:52 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" - -#: contrib/auth/forms.py:61 -msgid "This account is inactive." -msgstr "" - -#: contrib/contenttypes/models.py:20 -msgid "python model class name" -msgstr "" - -#: contrib/contenttypes/models.py:23 -msgid "content type" -msgstr "" - -#: contrib/contenttypes/models.py:24 -msgid "content types" -msgstr "" - -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "" - -#: contrib/sessions/models.py:52 -msgid "session data" -msgstr "" - -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "" - -#: contrib/sessions/models.py:57 -msgid "session" -msgstr "" - -#: contrib/sessions/models.py:58 -msgid "sessions" -msgstr "" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "" - -#: utils/dates.py:6 -msgid "Monday" -msgstr "" - -#: utils/dates.py:6 -msgid "Tuesday" -msgstr "" - -#: utils/dates.py:6 -msgid "Wednesday" -msgstr "" - -#: utils/dates.py:6 -msgid "Thursday" -msgstr "" - -#: utils/dates.py:6 -msgid "Friday" -msgstr "" - -#: utils/dates.py:7 -msgid "Saturday" -msgstr "" - -#: utils/dates.py:7 -msgid "Sunday" -msgstr "" - -#: utils/dates.py:14 -msgid "January" -msgstr "" - -#: utils/dates.py:14 -msgid "February" -msgstr "" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "March" -msgstr "" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "April" -msgstr "" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "May" -msgstr "" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "June" -msgstr "" - -#: utils/dates.py:15 utils/dates.py:27 -msgid "July" -msgstr "" - -#: utils/dates.py:15 -msgid "August" -msgstr "" - -#: utils/dates.py:15 -msgid "September" -msgstr "" - -#: utils/dates.py:15 -msgid "October" -msgstr "" - -#: utils/dates.py:15 -msgid "November" -msgstr "" - -#: utils/dates.py:16 -msgid "December" -msgstr "" - -#: utils/dates.py:19 -msgid "jan" -msgstr "" - -#: utils/dates.py:19 -msgid "feb" -msgstr "" - -#: utils/dates.py:19 -msgid "mar" -msgstr "" - -#: utils/dates.py:19 -msgid "apr" -msgstr "" - -#: utils/dates.py:19 -msgid "may" -msgstr "" - -#: utils/dates.py:19 -msgid "jun" -msgstr "" - -#: utils/dates.py:20 -msgid "jul" -msgstr "" - -#: utils/dates.py:20 -msgid "aug" -msgstr "" - -#: utils/dates.py:20 -msgid "sep" -msgstr "" - -#: utils/dates.py:20 -msgid "oct" -msgstr "" - -#: utils/dates.py:20 -msgid "nov" -msgstr "" - -#: utils/dates.py:20 -msgid "dec" -msgstr "" - -#: utils/dates.py:27 -msgid "Jan." -msgstr "" - -#: utils/dates.py:27 -msgid "Feb." -msgstr "" - -#: utils/dates.py:28 -msgid "Aug." -msgstr "" - -#: utils/dates.py:28 -msgid "Sept." -msgstr "" - -#: utils/dates.py:28 -msgid "Oct." -msgstr "" - -#: utils/dates.py:28 -msgid "Nov." -msgstr "" - -#: utils/dates.py:28 -msgid "Dec." -msgstr "" - -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "" -msgstr[1] "" - -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "" -msgstr[1] "" - -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" - -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "" -msgstr[1] "" - -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "" -msgstr[1] "" - -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "" -msgstr[1] "" - -#: utils/translation/trans_real.py:362 -msgid "DATE_FORMAT" -msgstr "N j, Y" - -#: utils/translation/trans_real.py:363 -msgid "DATETIME_FORMAT" -msgstr "N j, Y, P" - -#: utils/translation/trans_real.py:364 -msgid "TIME_FORMAT" -msgstr "P" - -#: utils/translation/trans_real.py:380 -msgid "YEAR_MONTH_FORMAT" -msgstr "F Y" - -#: utils/translation/trans_real.py:381 -msgid "MONTH_DAY_FORMAT" -msgstr "F j" - -#: conf/global_settings.py:39 -msgid "Arabic" -msgstr "" - -#: conf/global_settings.py:40 -msgid "Bengali" -msgstr "" - -#: conf/global_settings.py:41 -msgid "Czech" -msgstr "" - -#: conf/global_settings.py:42 -msgid "Welsh" -msgstr "" - -#: conf/global_settings.py:43 -msgid "Danish" -msgstr "" - -#: conf/global_settings.py:44 -msgid "German" -msgstr "" - -#: conf/global_settings.py:45 -msgid "Greek" -msgstr "" - -#: conf/global_settings.py:46 -msgid "English" -msgstr "" - -#: conf/global_settings.py:47 -msgid "Spanish" -msgstr "" - -#: conf/global_settings.py:48 -msgid "Argentinean Spanish" -msgstr "" - -#: conf/global_settings.py:49 -msgid "Finnish" -msgstr "" - -#: conf/global_settings.py:50 -msgid "French" -msgstr "" - -#: conf/global_settings.py:51 -msgid "Galician" -msgstr "" - -#: conf/global_settings.py:52 -msgid "Hungarian" -msgstr "" - -#: conf/global_settings.py:53 -msgid "Hebrew" -msgstr "" - -#: conf/global_settings.py:54 -msgid "Icelandic" -msgstr "" - -#: conf/global_settings.py:55 -msgid "Italian" -msgstr "" - -#: conf/global_settings.py:56 -msgid "Japanese" -msgstr "" - -#: conf/global_settings.py:57 -msgid "Dutch" -msgstr "" - -#: conf/global_settings.py:58 -msgid "Norwegian" -msgstr "" - -#: conf/global_settings.py:59 -msgid "Brazilian" -msgstr "" - -#: conf/global_settings.py:60 -msgid "Romanian" -msgstr "" - -#: conf/global_settings.py:61 -msgid "Russian" -msgstr "" - -#: conf/global_settings.py:62 -msgid "Slovak" -msgstr "" - -#: conf/global_settings.py:63 -msgid "Slovenian" -msgstr "" - -#: conf/global_settings.py:64 -msgid "Serbian" -msgstr "" - -#: conf/global_settings.py:65 -msgid "Swedish" -msgstr "" - -#: conf/global_settings.py:66 -msgid "Tamil" -msgstr "" - -#: conf/global_settings.py:67 -msgid "Turkish" -msgstr "" - -#: conf/global_settings.py:68 -msgid "Ukrainian" -msgstr "" - -#: conf/global_settings.py:69 -msgid "Simplified Chinese" -msgstr "" - -#: conf/global_settings.py:70 -msgid "Traditional Chinese" -msgstr "" - -#: core/validators.py:63 -msgid "This value must contain only letters, numbers and underscores." -msgstr "" - -#: core/validators.py:67 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" - -#: core/validators.py:71 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "" - -#: core/validators.py:75 -msgid "Uppercase letters are not allowed here." -msgstr "" - -#: core/validators.py:79 -msgid "Lowercase letters are not allowed here." -msgstr "" - -#: core/validators.py:86 -msgid "Enter only digits separated by commas." -msgstr "" - -#: core/validators.py:98 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "" - -#: core/validators.py:102 -msgid "Please enter a valid IP address." -msgstr "" - -#: core/validators.py:106 -msgid "Empty values are not allowed here." -msgstr "" - -#: core/validators.py:110 -msgid "Non-numeric characters aren't allowed here." -msgstr "" - -#: core/validators.py:114 -msgid "This value can't be comprised solely of digits." -msgstr "" - -#: core/validators.py:119 +#: newforms/fields.py:128 core/validators.py:120 msgid "Enter a whole number." msgstr "" -#: core/validators.py:123 -msgid "Only alphabetical characters are allowed here." -msgstr "" - -#: core/validators.py:138 -msgid "Year must be 1900 or later." -msgstr "" - -#: core/validators.py:142 +#: newforms/fields.py:130 #, python-format -msgid "Invalid date: %s." +msgid "Ensure this value is less than or equal to %s." msgstr "" -#: core/validators.py:146 db/models/fields/__init__.py:415 -msgid "Enter a valid date in YYYY-MM-DD format." +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." msgstr "" -#: core/validators.py:151 -msgid "Enter a valid time in HH:MM format." +#: newforms/fields.py:165 +msgid "Enter a valid date." msgstr "" -#: core/validators.py:155 db/models/fields/__init__.py:477 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +#: newforms/fields.py:192 +msgid "Enter a valid time." msgstr "" -#: core/validators.py:160 +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "" + +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "" + +#: newforms/fields.py:271 core/validators.py:162 msgid "Enter a valid e-mail address." msgstr "" -#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661 -msgid "No file was submitted. Check the encoding type on the form." +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." msgstr "" -#: core/validators.py:176 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." msgstr "" -#: core/validators.py:183 +#: newforms/fields.py:362 newforms/models.py:165 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 +msgid "Enter a list of values." +msgstr "" + +#: newforms/fields.py:389 newforms/models.py:188 #, python-format -msgid "The URL %s does not point to a valid image." +msgid "Select a valid choice. %s is not one of the available choices." msgstr "" -#: core/validators.py:187 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" - -#: core/validators.py:195 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "" - -#: core/validators.py:199 -msgid "A valid URL is required." -msgstr "" - -#: core/validators.py:213 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" - -#: core/validators.py:220 -#, python-format -msgid "Badly formed XML: %s" -msgstr "" - -#: core/validators.py:230 -#, python-format -msgid "Invalid URL: %s" -msgstr "" - -#: core/validators.py:234 core/validators.py:236 -#, python-format -msgid "The URL %s is a broken link." -msgstr "" - -#: core/validators.py:242 -msgid "Enter a valid U.S. state abbreviation." -msgstr "" - -#: core/validators.py:256 -#, 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] "" -msgstr[1] "" - -#: core/validators.py:263 -#, python-format -msgid "This field must match the '%s' field." -msgstr "" - -#: core/validators.py:282 -msgid "Please enter something for at least one field." -msgstr "" - -#: core/validators.py:291 core/validators.py:302 -msgid "Please enter both fields or leave them both empty." -msgstr "" - -#: core/validators.py:309 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "" - -#: core/validators.py:321 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "" - -#: core/validators.py:340 -msgid "Duplicate values are not allowed." -msgstr "" - -#: core/validators.py:363 -#, python-format -msgid "This value must be a power of %s." -msgstr "" - -#: core/validators.py:374 -msgid "Please enter a valid decimal number." -msgstr "" - -#: core/validators.py:378 -#, 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] "" -msgstr[1] "" - -#: core/validators.py:381 -#, 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] "" -msgstr[1] "" - -#: core/validators.py:384 -#, 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] "" -msgstr[1] "" - -#: core/validators.py:394 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" - -#: core/validators.py:395 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" - -#: core/validators.py:412 -msgid "The format for this field is wrong." -msgstr "" - -#: core/validators.py:427 -msgid "This field is invalid." -msgstr "" - -#: core/validators.py:463 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "" - -#: core/validators.py:466 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" - -#: core/validators.py:499 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" - -#: core/validators.py:503 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" - -#: core/validators.py:508 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:513 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:517 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" - -#: core/validators.py:522 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" msgstr "" #: views/generic/create_update.py:43 @@ -2006,92 +2376,270 @@ msgstr "" msgid "The %(verbose_name)s was deleted." msgstr "" -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." msgstr "" -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "" - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "" - -#: db/models/fields/__init__.py:340 -msgid "This value must be an integer." -msgstr "" - -#: db/models/fields/__init__.py:372 -msgid "This value must be either True or False." -msgstr "" - -#: db/models/fields/__init__.py:388 -msgid "This field cannot be null." -msgstr "" - -#: db/models/fields/__init__.py:571 -msgid "Enter a valid filename." -msgstr "" - -#: db/models/fields/related.py:51 -#, python-format -msgid "Please enter a valid %s." -msgstr "" - -#: db/models/fields/related.py:618 -msgid "Separate multiple IDs with commas." -msgstr "" - -#: db/models/fields/related.py:620 +#: core/validators.py:68 msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." msgstr "" -#: db/models/fields/related.py:664 +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "" + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "" + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "" + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "" + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "" + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "" + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "" + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "" + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "" + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "" + +#: core/validators.py:143 #, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid "Invalid date: %s" +msgstr "" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "" + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "" + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "" + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "" + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "" + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "" + +#: core/validators.py:266 +#, 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] "" +msgstr[1] "" + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "" + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "" + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "" + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "" + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "" + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "" + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "" + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "" + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "" + +#: core/validators.py:422 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." +"Please enter a valid decimal number with at most %s total digits." msgstr[0] "" msgstr[1] "" -#: forms/__init__.py:381 +#: core/validators.py:425 #, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." +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] "" msgstr[1] "" -#: forms/__init__.py:386 -msgid "Line breaks are not allowed here." -msgstr "" - -#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 +#: core/validators.py:428 #, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +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] "" +msgstr[1] "" + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -#: forms/__init__.py:663 -msgid "The submitted file is empty." +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -#: forms/__init__.py:719 -msgid "Enter a whole number between -32,768 and 32,767." +#: core/validators.py:456 +msgid "The format for this field is wrong." msgstr "" -#: forms/__init__.py:729 -msgid "Enter a positive number." +#: core/validators.py:471 +msgid "This field is invalid." msgstr "" -#: forms/__init__.py:739 -msgid "Enter a whole number between 0 and 32,767." +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." msgstr "" -#: template/defaultfilters.py:401 -msgid "yes,no,maybe" +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" + +#: core/validators.py:547 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:552 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" + +#: core/validators.py:557 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" + +#: core/validators.py:561 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:566 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" msgstr "" diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo index 7f506f972fe9319df52210ad8c476f8e0e3aabce..6e3af1681c13e36c6bd7418f33cf4ccef67f6558 100644 GIT binary patch delta 11583 zcmai(34B!5y~ppcFUl?;vRomMfXO6;AczqN5HPZ@Dxh#PbCV3r%ndV>Ac~G6D!y7R zT(s40F0G;#6-Qg^E7}^h`m9!qw(hU4)mnF-Vyp7Lzk3gmr+)hG$A7;6^FQ1F{LlZK zGqkt89J%m=NdD!1ovyU_S|XM;6h7F~vOY#n4wBWfCXcYJos>_2%P2o#Th>B2>R8J< z24-O`yaG;u&p?gSeWYa-!!d>n;8@D7Q1#csqbw_L?M11_un!J~$B(kCE^s022v@)( z;7Vg}gxx8pVMlnDDQ|{y=wjFnUJpCNTcO6=1CNCF!2a-IIDz@C=TSOg=v5Rp><*D@R*a zUzmlx;6;!+YbWdse+}jF{jd+*XUeZbIj|pgf*r<$EAI+5P9G@8MnFwG1}=h?@C0}v z%(Dm9UKBa74=O}&z#;HssF3zzBiUAK9PA9|K~1m(YGsb8-vEbE_944z?SWn4)36M_ z2*<-7C6+ZER+kWe?fJPFn9I5f@}ISrKT4)Ip#~g6<|rR0Lw3tr1S?<;j)OmkTF8@7 zum@~_t#AYE0^c%xA8LS4 zP5A)qK)Fk47@_V^?Ry&zgo?y4CHQ_ftQ%_sZb8CG4>`{LpcSP!rP5K-!U5QZ8s>7$H61uc&LG=!YrH(i{ZUc z4!;VIhws9Pu&6v-`AXQ4@><9oRvc=JcR-DQD^&kG;gP}lM^We=gIduO@I?3u90-T8 z(L~p(g1z8csL**(E8YaP((_FD5-7(ngG^xUgk#|K5MQlFp>ktC9H{eON`|OnCe%O~ zC{NEZW7r>!I}vJu3!no} zh55cHzcv+*L51#VQ+^RD#Baa>@b6G7Jpi@Bqe%d*cr@$}%b`xwOsIQev#H+#gDru& zPj*5%ddKm^zaPq84D#$rD370m3*cK&^^+!r6PyCIHD|(L<*=Iaqwsdvh1oUHFQFcp z`=HvtVC=6#E$Hu1Tk!s5;;+4oav!dSb#M*55h~POri2&AL`c3^7Z~0N2U32`)c+F_ z6l*q_t7P2_<-jgTmGux@2<2^XfkD;h@+j)C9deCZd*Q|KHKdKzy-ogG1m4umtw34NpOp;dH2En+H3>rBJ8qR8vkE zrl6911MJ59*7+z3(WQplp^nGZP@dlid&0Y*LjGH*37$6f&qB3-6RO?EP!k-0onf!p z;l(uos=f%Se+A4dIjT?;%4u*6tb+<^GgSR1sQRs@d^zk*`D&i0mk{|(fH z51aCzpxVC(HU3{`6aP*qZ(|VOGYvk58sIa-$eeJXo=^h}f*Rl$s0bB7wXZa+Hk@s^ z$Z(}$+%P?d_^abt7&^c$Py=5CHSpz7EBFyqyIt@ocqde7AAyR{6Htyl2fM8jr$c;zpf{T3qCTBB11o@0R}^L918ouu~3dofpYL7Fdt#B0F347@L--DutZBQOQ4sG~6 z)Ik4&a;W#B(DPw%Gv!h^0^STY!J|;^Ux3B%eb@yKS{&xUaHx64!QQY+Wu5<7C|bb+ zsFf}?4OT-9kc4s|3zxzRAkTyK4AdLZZ%KG{m%?6@7eKA>3~0j(ptkaQ*cCno<>)?` z*Sr2Vlw;u+(1ydAMJt#F)u9n8M?9#<0>WFR;~fg=L)tYvCMtAylLug9_!7a0YxH_JhNC z(o(Pj>e&4RD(i27ifm_I9NBw8^&fH?@z)BAFz9%dLLIMisL)S@>R1hRylSD^FEaMi zpti<=8qkAsbQA0ge+Re0eNg>Y^90Hshl*Tl9z_%EfLhrPp&DLm?7N^G+5dIp$7OI4uqZ8gew>d=TfeKB(}8~u7giO8&zSly89A)3=~P`YzOfpTZIFE2sg6$HT~!Lya>VYLAyfPNdZc z2f+KFwqPIBc<;a__(`1jpMr9R%QXsj!C(&?LQhvgO}r866yyyrf@3Lv2Py~dh92Ap z*TR{NVNU!Eaz|OunsO<#R#ILI<&fV*{1>C#is5+pB`kwgiE!Y0IE(W6kSJRZ!BMb; z4Id8Y!Etas90RX{-+_Cfwx*7KB2TRtoC<#jr$Z|lZb?nvC@WzN_N?LEu$b~^usa-) z;@^L8EabtnehxWN)+ewOE>4H1(oX2UIB0k!A5 z;BoM`u$RvNKLUk!9(JLkN6xY$urE~h_J?w$#IO|hp`IqVD9zErLhlaF%H2av6n(^;S{LjIS0zI zMq~G&9NcWm+o0}~D`8%q+<_wA1vTJ3Py;>;d&7OO7kmw>-A7Pc_9>Kuk=8H=xoEZ1PtPjN2;{e@k07@q9ERW~8vw6Eu0|rXIr!~7s2FNh zLlHeNHOM5|_C?m9xBvb|p&Rxkp)qfDp`ee8%o>LNXIPMd?`C8h(#y1wZL!gRjs7rl zvME1-z6qH@IfKkb*FC@v2Ujr&ep3#m?gZp=%9~aDEXolW^euru3{`6_`tOat5M6nq zZyxeHq!L+-XkYcEX!9PlRp9GLc`$M^x*u4=Q=_+k6mlw(mUsPVr0>HJ)>p6&+wrEX z1k+u=2$_jpXIIHH8ab8ne?t#hiM|TaC3HV>Hlj}_Lf?%@HTC)`Lh$<^!!JyMoU=YR zdXu3?eL4Eu$h*j2jQz)kx51Z@gcQ&{12m_XgHbrrN~*78{rB>A9ol3rx)=*4Z|Sh zrobHjaEO{lW3l}NNt*Hj^rO))fN^*?ybrkoIR%-Dtpd^4-LNeAu`64&t!h< zOQZq$1UZF@E^rF+OQaal*V%M99X%FU!apZs?}s`Oz65_{>bg>X2;D)RM#dp=WC3=4 z%aJP)%^$qWVlO0$jHXc~vK&bx-LOrEe}X0Oe_%7BZv#?;P5)!V>4<~q$L3FwIq0uL zebvankV(i^nQ6RM|qL4sl3eSW8rrx zk3ka1ag^^Bk*SEj=R#N?8D0dZW+P2Vf8@<}m9r_Ir1QTJ<3EsRkV}y&D&B$mwjdLctB{`|e?^8P zIog~D2O%pFedDo}z^b4W{<+NPBdNOu-91>>qq^CSC7oYGPx$> zW?PcEH8HOxog16Ab6(C#`rAkRAV0dK)k(IvW2566?D|A9nefuq|7S~mOS^BgH^TU~C9(L&!b-;b24b(WgLV`#VkW`%p~$>Rkp+5)RLH zYB;5G`d;WA76RN=nXB2j5<%KXcu@z zwZYx!W}EYgwW zDEwhUc_iOq=l`58Oz)MHQmNS$Lf*G~vJL`#km?VU!xjExC zXAgjlB3>G}lWI3WdAnYu4$b00!0R^!F=;=#!XEWMuexd_ zsqU7goJ7)g;&B$0wd0r_;OONer*ihvjqQ?N zIa6KkOpO-ola7xZ?PTm!3#XK{9e+Yag+^o72wP$4)UAm}aqJb&*>-h2Xw~YRUHI3`d2Ii^o3K!K?M*Ig(nI5U}JI@{GPnmm(|M=X=e$RPD z`P#E$$(FX=@$ee1ODlC8dqWF5P4bg$WiOS=_QY zH{HbJ;Mu9R-RVRMXL)eUd*kwa{NL_}yyvAN*R$?AhohN5e+FES0`L9t2~i4 zr@dB(wwkD!q3w3={@bU=zhLE2{!bT_^(J6!5tmNZu8l5_7G7U)b)vX z-lcYHkPuvMZPyW@W|E!edZcs-I9xPdGxKQUaP{CYQEPV6X|$V((C7>aL;(FK7k{^K z)sm`?J?67j@wU6t3D1wLDDvN3{@$Dg%!xNnhG(diH!$6rVC7MJMew{T{A^jGnOL~C zo-{qV!Rj=r7SobcRu!II(b^%BDl9y`q{A?_J@h?@5gQfUJ-IN8{3})^yXpOFX}cxs z?_YJr@`d%8M5B{yE0CPwGk7Q+w9Dk4m*rk>cGINf;Z))0PlJ^%=Yj%_E_SGM{W=pt*%p4z>vD5~*S#<~absk0jk$0f z{;kmHkWGp3m!DGAJnQCY@v_sm!D;m}hp(E0_m!d_UgQ2t>#phIkX?zmzh(WNPF^DC z`IX6e{*RKk4d$ZK{i$bNH(ROA~R;k6%_>)6jTS}Rgr}yI11b14y=!RG1;!AM)nD6CQhR&K8xz`B~(Z1)5;&Q1rEg*QA_d-sza$gn14-KdlKz13pK@K zkx8)@V?DeD)xdhxh<}Z`{|K@ztOLkkt<$KPNXzg>-U9h&_2x%UoP}DN>rwALk-_}8 zA#sobI&J+Gb1^lOWx#w?j~(Qebv@?c4xEDTVkz3xo`P#oGqM4P;3m|}y^d*k1efDU ztdH}un13a%&GKG!Q2A<1!YJ0mm8SexSU`TQ$-jaP$R9*?;0UJTaa4n+O#W+}K>mBw z3>GrF8*yfggerIob>ltMCOd7)FQ6(;>g_$(02`8TiYjl5h1d~i<04ZYM=j9{r~w^E zowAQn?VZ6e#?F(-B(b!QWevhjI1mq@Mt%vCv0k=i@y|--hj#T~RK-P@hV!s7mY`;? z1~rf{w#IcxQ`SSMy>tLmb^hNcp^s{rI8H0Z+H*)Yw9D(%AnuqD=H&&rKvI-mFZ8#D) z<9vJv=V3NGSTnR1ZQO?4aXiQ3LxCHK5i^n+DhwV=YPaA)(_^fLilas0U)GiZ`IX z3mZ`#+>I@852}L)aXNlz%6kv+K4c?NOE3#H!1*{F_o3>&Fo5~jFN-90oF43qx{-kz zK@Mt)`=dTkAzXxap{DRFoPr(Lxy-7y#JCl;CtgF{{}_4H${y@(!ctVb_Y7wK^GWQY zUmeF8P|!>FZb#=L3m+o5Kr8)~U~8gsBE`2naIoQV1)7om=C z*p#op`Q&4mDUXrpOu{$9tGElQ!3^w;xu_8@M6Lau$Rt@?u^bPho*zPQ)xpumDX4~v zQK#lARDI>x5jSB6+P9u0F@}PJcnvlmWmyc`3StI6hVAfe?1^7tI<_wG?26huIj9B) zqE5$9lb>Rof!eIIQ5`M820H)OB@#>#YJ}ILdb}Rh(0!<>-GOT0In@0cI0RUyFMFAZiaC#+V9@ng@;>PoZ8sgSvkK)uD^1kvACaHPFh~*_dVQZyaHq zV4P`OfU3_K&HSsvY6{fg4d#LM*oyon)GptNn!3kP9eNS9%lDy{;4i56-$qq@0yV{)cM~^BAtRiqk4GIp12WanJUzj4?~S$946s3)RY&Yrgkp!i_p3T_5OXBh7Y6Od(@Oajg86g zMb&!%)!}!rIkun8{I4gGJ==TnIn<4pP*ZmZ)xejik$sD5;DRYn;_Rto>8OgEBXwKz zP5CbDP5x=rdnZu!e}>KQyJF`5UJ|MNa_@@|pnki(W=xvvjW{3GfkM=hj7J;8s1a_) zCb$DN#ZRH0--m7SW$c0p7od8+7}d}c?1{@!6+Mgt z@DS?w*5j{>{@4vw&pgzUEk<>$0^491RbT85675KAMfK?+nAHnWA|3^t|q2LFsz>N#M2ERwGY3f36 zt!837@+GLvbR%Agx1l<^9kmyBqGs%IQ~n&bCBF}~r;ei5{v0O$`#+h#I&`BMj>SHx zrC5fV!sVz6W2i6LZKw(!LCwSqsF`>RSyt;)yaMw%lbY%osCp`J3DzLLPOM`p*ZJ?b z$m>7`s-e-SkxVugVHWwh*b#5S#kdW%)|YTL_NP$!+pr(*#a4I*IqFu5-}|F$95%xJn1XMhX6mrXzlU0i4^hvZ zMK$~rCSyj0SKbRXV}mPV-nqYng3c7|MK$yRs;8$=$LkDghPo~BPJthlufpr_F;s(X z0^V`%j(Wc@s^Ov70!Ls^EHbW&k;tTA2adtlkV&wbaE8WV1iRrL)Mh$?z41KigVUAP zWggbY0`%bo)FzyS>cF+e64d4`M|C*1fFWKZL6AQ`B>( zQ4M{Mdag;Ow*;M0r=!2gPsT(?P#>NWY()E3jVZVh^`W@~wG<&D3Dj^W!mv_N~dLUQ;&KaDyidr=+#lezy2YA?Nqu_h$GCZUQhqF$^Y^hVwkHFcd(o9b7@eMD1b%vD?` zWoJoe5fg~lh))S!-xKqQ#yqnMZy;VFPH6pg9CW=+yhL8KV0Yr1k_5IeBP5dE|^7c?4^L_^$Oq6r)E8FT{4@YoZbN z7hv7>I}$db-^FNP=-ZA;>us6|y&@Y&gL=Eu}QOI+g#KiRgKWmB6L>J0`#Q!8- zCG-)iCZy*PSG8smowu{YUfQN>ez+_&4Jd_$6@_&(vLgO*#YnP}mCR6U|A# zL3~H#kh<>K=WNFgF%yS>& z2ve4Z8_D0HRa{5nWugi37}1lPb1{QhLR>@sX4KWq!z#czlwVCeOu8BBI_O~?!uFJ{ z!FuMNZp|c}r-Zpq(SG7;$BoIv2PQv|bUl+kV0;p{65Y6$gjW*!pN|#z458~$;u4WV z`9Q3XGjTX^fpCeB30>(#Y&}12BT{(qU2IS2`kct7>?rObW|7v_z&O(QC(7>E4X#uV zE7jam!qdcA91K~}iyD7&z-(him<9xM-5Rt8rDsw?b}Q|XU5Wp*IqRE6yo0iG#wOr2%< zR-tK(R+F4j@nhZU`+WKC``tfDjfO%_b)<4tzWYLtDJj&E@A@+O$LNcy{l9vX`EzeF z?G?djWf`r9qm>amQ0=w&%MN)X3HPx}q7e-|Wcy1?gHgs@7IebZnGt)5f4O7VIH9UQ zI2;I8C+4EZ&y(@<7$d7{oUn#&>dcSdlCjVikM-Q_b0_p#Su$>=zpAFv$+t7hnT#5L zg%j>u8mx}^nMvg`bL>f)w?NnqBwDTs1(yfPoU%TNafVlgnLKaqqG9KkwUjyKeg>H7 z?(0?TR`h;yl)9`{9PYQ5gq-pbUHjJf!{HUdP}w5p!in_lIG1KauHCkAEt+~{Z@D1?|BYGsK z1gcn-T?O6T_X-ZhPZkdH#ruu9*%$wIY&)OZYW%>KjMmlwEsZ;o3cC}>-=CuGXZvWiew5k4ZB)d4|uMX2jFqChP@rNpdVS8Lz)E_F-_O*+cBfmYoG;zZz ztBDVt6iaGa6b$|1Bv|hBijHnar=k1Nl)Kz@Q}1yfnwDG72}f$TyKhYUJ~lU4TKlN2 zbtrX05ofjEUKVu}AvRf6a5)AqI}iW!u#B>cgJtxKe_^L08mMN(Iu+I7#2G1Nhxv6s z?1XB67xXF(P>^q_=_Z%8Ju3dq^nSjiP`=xtXj1Z=D!*G^)GN(zS5X_&UFF_Wv_8Es z67^S7qLb5l=1`81Ki{1;Gb2{WlF*dhBb;LuCK{@JL`^bNmmQ(H<5YLrYl1xCohX0E zuJ&L4s`h?_{_DWk4W^G>}N ztx45v;VM5f#gs?G(c0~y0F|hB{!%9#_PcAV?0Ab=*ZADt#RYAvgH`(A*wHGR<Y8yY9nNRaoX_$=<^MjPvmLMVw9MBe(SBL5PhzpQ+tEm%GO$`T zCl0t*!G9mk19L0fZS%Gb@pjPvb124UgG!8NQZ*cm!v&wId zkEtl~B^L*(-20cj;LZ#Tbngm`bl(nab@wfu=+?h(OzK#NFNjvly;RlOU2~n&sw`L< z)iw&|r={_m!&w>03R~{7qE>FJ%5&*#S36L_PP6@P^QuoTdw-{ItQ)VMog8B0B?mLz z+~7y<(3%o^9N#mxg_fR`a6%#d4A(fNwY$p$rNOZKY|TgUrGhL zP~lF9JmvlrnbM(ldqsc^SX1e*_FFYxF6?E)?)d1FDSF9mvV6aLX!#Qj>%K7V#ufPu QBDK3C(aNBEd_~rO0mO6H(*OVf diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/django/conf/locale/pt_BR/LC_MESSAGES/django.po index bc955f29c4..540d1b51bb 100644 --- a/django/conf/locale/pt_BR/LC_MESSAGES/django.po +++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.po @@ -1,21 +1,1022 @@ # 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. -# João Marcus Christ , 2006. -# Carlos Eduardo de Paula , 2006. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:11+0200\n" -"PO-Revision-Date: 2006-11-01 17:45-0300\n" -"Last-Translator: Carlos Eduardo de Paula \n" +"POT-Creation-Date: 2007-03-28 12:02-0300\n" +"PO-Revision-Date: 2007-04-02 17:20+0200\n" +"Last-Translator: Daniel Alves Barbosa de Oliveira Vaz \n" "Language-Team: Português do Brasil \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: oldforms/__init__.py:357 db/models/fields/__init__.py:117 +#: db/models/fields/__init__.py:274 db/models/fields/__init__.py:610 +#: db/models/fields/__init__.py:621 newforms/models.py:177 +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 +msgid "This field is required." +msgstr "Este campo é requerido." + +#: oldforms/__init__.py:392 +#, fuzzy, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Certifique-se de que seu texto tenha menos que %s caractere." +msgstr[1] "Certifique-se de que seu texto tenha menos que %s caracteres." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Não são permitidas quebras de linha aqui." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Selecione uma escolha válida; '%(data)s' não está em %(choices)s." + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Desconhecido" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Sim" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Não" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Nenhum arquivo enviado. Verifique o tipo de codificação do formulário." + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "O arquivo enviado está vazio." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Informe um número inteiro entre -32.768 e 32.767" + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Informe um número positivo" + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Informe um número inteiro entre 0 e 32.767." + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s com este %(type)s já existe para o %(field)s dado." + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "e" + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s com este %(fieldname)s já existe." + +#: db/models/fields/__init__.py:367 +#, fuzzy +msgid "This value must be an integer." +msgstr "Este valor deve ser um inteiro." + +#: db/models/fields/__init__.py:402 +#, fuzzy +msgid "This value must be either True or False." +msgstr "Este valor deve ser Verdadeiro ou Falso." + +#: db/models/fields/__init__.py:423 +#, fuzzy +msgid "This field cannot be null." +msgstr "Este campo não pode ser nulo." + +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Informe uma data válida no formato AAAA-MM-DD." + +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM." + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "Informe um nome de arquivo válido." + +#: db/models/fields/__init__.py:751 +#, fuzzy +msgid "This value must be either None, True or False." +msgstr "Este valor deve ser Verdadeiro ou Falso." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Por favor informe um %s válido." + +#: db/models/fields/related.py:642 +#, fuzzy +msgid "Separate multiple IDs with commas." +msgstr "Separe IDs múltiplos com vírgulas." + +#: db/models/fields/related.py:644 +#, fuzzy +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +" Mantenha pressionado \"Control\", ou \"Command\" no Mac para selecionar " +"mais de uma opção." + +#: db/models/fields/related.py:691 +#, fuzzy, 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] "" +"Por favor, entre IDs válidos para %(self)s. O valor %(value)r é inválido." +msgstr[1] "" +"Por favor, entre IDs válidos para %(self)s. Os valores %(value)r são " +"inválidos." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arábico" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengalês" + +#: conf/global_settings.py:41 +#, fuzzy +msgid "Catalan" +msgstr "Catalão" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "Tcheco" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:44 +#, fuzzy +msgid "Danish" +msgstr "Dinamarquês" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "Alemão" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "Grego" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "Inglês" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "Espanhol" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "Espanhol Argentino" + +#: conf/global_settings.py:50 +#, fuzzy +msgid "Finnish" +msgstr "Dinamarquês" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "Francês" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "Galiciano" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Húngaro" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "Hebraico" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "Islandês" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "Italiano" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "Japonês" + +#: conf/global_settings.py:58 +#, fuzzy +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "Macedônio" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "Alemão" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "Norueguês" + +#: conf/global_settings.py:63 +#, fuzzy +msgid "Polish" +msgstr "Polônia" + +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "Português" + +#: conf/global_settings.py:65 +msgid "Brazilian" +msgstr "Brasileiro" + +#: conf/global_settings.py:66 +msgid "Romanian" +msgstr "Romeno" + +#: conf/global_settings.py:67 +msgid "Russian" +msgstr "Russo" + +#: conf/global_settings.py:68 +msgid "Slovak" +msgstr "Eslovaco" + +#: conf/global_settings.py:69 +#, fuzzy +msgid "Slovenian" +msgstr "Esloveno" + +#: conf/global_settings.py:70 +msgid "Serbian" +msgstr "Sérvio" + +#: conf/global_settings.py:71 +msgid "Swedish" +msgstr "Sueco" + +#: conf/global_settings.py:72 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Turkish" +msgstr "Turco" + +#: conf/global_settings.py:75 +#, fuzzy +msgid "Ukrainian" +msgstr "Ucraniano" + +#: conf/global_settings.py:76 +msgid "Simplified Chinese" +msgstr "Chinês Simplificado" + +#: conf/global_settings.py:77 +msgid "Traditional Chinese" +msgstr "Chinês Tradicional" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Este valor deve conter apenas letras, números e sublinhados (_)." + +#: core/validators.py:68 +#, fuzzy +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Este valor deve conter apenas letras, números, sublinhados (_), " +"pontos e barras (/)." + +#: core/validators.py:72 +#, fuzzy +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Este valor deve conter apenas letras, números, sublinhados (_) e " +"hífens (-)." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Letras em maiúsculo não são permitidas aqui." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Letras em minúsculo não são permitidas aqui." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Informe apenas dígitos separados por vírgulas." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Informe endereços de email válidos separados por vírgulas." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Informe um endereço IP válido." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Valores em branco não são permitidos." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Caracteres não numéricos não são permitidos." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Este valor não pode conter apenas dígitos." + +#: core/validators.py:120 newforms/fields.py:126 +msgid "Enter a whole number." +msgstr "Informe um número completo." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Apenas caracteres do alfabeto são permitidos aqui." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "O ano deve ser superior a 1900" + +#: core/validators.py:143 +#, fuzzy, python-format +msgid "Invalid date: %s" +msgstr "Data inválida: %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Informe uma hora válida no formato HH:MM." + +#: core/validators.py:162 newforms/fields.py:269 +msgid "Enter a valid e-mail address." +msgstr "Informe um endereço de email válido." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está " +"corrompido." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "A URL %s não aponta para uma imagem válida." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Números de telefone devem estar no formato XXX-XXX-XXXX.\"%s\" é inválido." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "A URL %s não aponta para um vídeo QuickTime válido." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Uma URL válida é exigida." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"HTML válido é exigido. Os erros específicos são:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML mal formado: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL inválida: %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "A URL %s é um link quebrado." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Informe uma abreviação válida de estado dos E.U.A." + +#: core/validators.py:266 +#, fuzzy, 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] "Olha sua boca! A palavra %s não é permitida aqui." +msgstr[1] "Olha sua boca! As palavras %s não são permitidas aqui." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Este campo deve casar com o campo '%s'." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Informe algo em pelo menos um campo." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "Informe ambos os campos ou deixe ambos vazios." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s." + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s." + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Valores duplicados não são permitidos." + +#: core/validators.py:367 +#, fuzzy, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Este valor deve estar entre %(lower)s e %(upper)s." + +#: core/validators.py:369 +#, fuzzy, python-format +msgid "This value must be at least %s." +msgstr "Este valor deve ser no mínimo %s." + +#: core/validators.py:371 +#, fuzzy, python-format +msgid "This value must be no more than %s." +msgstr "Este valor não deve ser maior que %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Este valor deve ser uma potência de %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Informe um número decimal válido." + +#: core/validators.py:422 +#, fuzzy, 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] "Por favor entre com um número decimal com no máximo %s dígito." +msgstr[1] "Por favor entre com um número decimal com no máximo %s dígitos." + +#: core/validators.py:425 +#, fuzzy, 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] "" +"Por favor informe um número decimal com a parte inteira de no máximo %s " +"digito." +msgstr[1] "" +"Por favor informe um número decimal com a parte inteira de no máximo %s " +"digitos." + +#: core/validators.py:428 +#, fuzzy, 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] "Por favor informe um número decimal com no máximo %s casa decimal." +msgstr[1] "Por favor informe um número decimal com no máximo %s casas " +"decimais." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Verifique se o arquivo enviado tem no máximo %s bytes." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "O formato deste campo está errado." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Este campo é inválido." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Não foi possível receber dados de %s." + +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type " +"inválido." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%" +"(start)s\".)" + +#: core/validators.py:547 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha " +"começa com \"%(start)s\".)" + +#: core/validators.py:552 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com " +"\"%(start)s\".)" + +#: core/validators.py:557 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%" +"(start)s\".)" + +#: core/validators.py:561 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Uma tag na linha %(line)s não apresenta um ou mais atributos exigidos." +"(Linha começa com \"%(start)s\".)" + +#: core/validators.py:566 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (Linha " +"começa com \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, fuzzy, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "O(A) %(verbose_name)s foi criado com sucesso." + +#: views/generic/create_update.py:117 +#, fuzzy, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "O(A) %(verbose_name)s foi modificado com sucesso." + +#: views/generic/create_update.py:184 +#, fuzzy, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "O(A) %(verbose_name)s foi excluído." + +#: newforms/models.py:164 newforms/fields.py:360 +#, fuzzy +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Selecione uma escolha válida. Tal escolha não é uma das escolhas " +"disponíveis." + +#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454 +#, fuzzy +msgid "Enter a list of values." +msgstr "Informe uma lista ou tupla de valores." + +#: newforms/models.py:187 newforms/fields.py:387 +#, fuzzy, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Selecione uma escolha válida. %s não é uma das escolhas disponíveis." + +#: newforms/fields.py:101 newforms/fields.py:254 +#, fuzzy, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Certifique-se de que seu texto tenha menos que %d caracteres." + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Certifique-se de que seu texto tenha no mínimo %d caracteres." + +#: newforms/fields.py:128 +#, fuzzy, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Certifique-se que este valor seja menor ou igual a %s." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Certifique-se que este valor seja maior ou igual a %s." + +#: newforms/fields.py:163 +#, fuzzy +msgid "Enter a valid date." +msgstr "Informe uma data válida." + +#: newforms/fields.py:190 +#, fuzzy +msgid "Enter a valid time." +msgstr "Informe uma hora válida." + +#: newforms/fields.py:226 +#, fuzzy +msgid "Enter a valid date/time." +msgstr "Informe uma data/hora válida." + +#: newforms/fields.py:240 +#, fuzzy +msgid "Enter a valid value." +msgstr "Informe um valor válido." + +#: newforms/fields.py:287 newforms/fields.py:309 +#, fuzzy +msgid "Enter a valid URL." +msgstr "Informe uma URL válida." + +#: newforms/fields.py:311 +#, fuzzy +msgid "This URL appears to be a broken link." +msgstr "A URL %s parece ser um link quebrado." + +#: contrib/contenttypes/models.py:36 +#, fuzzy +msgid "python model class name" +msgstr "nome da classe model no python" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "tipo de conteúdo" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "tipos de conteúdo" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:17 +#, fuzzy +msgid "st" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:17 +#, fuzzy +msgid "nd" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "milhão" +msgstr[1] "milhões" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f bilhão" +msgstr[1] "%(value).1f bilhões" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f trilhão" +msgstr[1] "%(value).1f trilhões" + +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "one" +msgstr "um" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "dois" + +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "three" +msgstr "três" + +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "four" +msgstr "quatro" + +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "five" +msgstr "cinco" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "seis" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "sete" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "oito" + +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "nine" +msgstr "nove" + +#: contrib/auth/views.py:39 +#, fuzzy +msgid "Logged out" +msgstr "Sessão Encerrada" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "nome" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "apelido" + +#: contrib/auth/models.py:42 +#, fuzzy +msgid "permission" +msgstr "permissão" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +#, fuzzy +msgid "permissions" +msgstr "permissões" + +#: contrib/auth/models.py:60 +#, fuzzy +msgid "group" +msgstr "grupo" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +#, fuzzy +msgid "groups" +msgstr "grupos" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "usuário" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanuméricos" +"(letras, dígitos e sublinhados (_) )" + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "primeiro nome" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "último nome" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "endereço de e-mail" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "senha" + +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Use '[algo]$[salt]$[hexdigest]' ou Altere a senha" +"." +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "status da equipe" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Permite ao usuário o acesso a este site de administração." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "ativar" + +#: contrib/auth/models.py:96 +#, fuzzy +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Permite ao usuário acessar este site de administração. " +"Ao invés de excluir contas de usuário, desmarque isso." + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "status de superusuário" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Informa que este usuário tem todas as permissões sem atribuí-las " +"explicitamente." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "último login" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "data de registro" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Em adição às permissões atribuídas manualmente, este usuário também terá " +"todas as permissões dadas a cada grupo que participar." + +#: contrib/auth/models.py:102 +#, fuzzy +msgid "user permissions" +msgstr "permissões do usuário" + +#: contrib/auth/models.py:105 +#, fuzzy +msgid "user" +msgstr "usuário" + +#: contrib/auth/models.py:106 +#, fuzzy +msgid "users" +msgstr "usuários" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Informações pessoais" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Permissões" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Datas importantes" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Grupos" + +#: contrib/auth/models.py:258 +#, fuzzy +msgid "message" +msgstr "mensagem" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Os dois campos de senha não combinam." + +#: contrib/auth/forms.py:25 +#, fuzzy +msgid "A user with that username already exists." +msgstr "Um usuário com este username já existe." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Seu navegador Web não parece estar com os cookies habilitados. Cookies são " +"requeridos para acessar." + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Por favor entre usuário e senha corretos. Note que ambos os campos " +"diferenciam maiúsculas e minúsculas." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Esta conta está inativa." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "Este endereço de e-mail não está associado com uma conta de usuário." +"Você tem certeza que está registrado?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Os dois campos 'nova senha' não conferem." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "A senha antiga foi digitada incorretamente. Por favor, informe a " +"senha novamente." + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redirecionar de" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Isso deve ser um caminho absoluto, excluindo o nome de domínio. Exemplo: '/" +"eventos/busca/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redirecionar para" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Isto pode ser um caminho absoluto (como acima) ou uma URL completa, " +"começando com 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redirecionar" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redirecionamentos" + #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "id do objeto" @@ -73,7 +1074,7 @@ msgstr "data/hora de envio" msgid "is public" msgstr "é público" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" msgstr "Endereço IP:" @@ -86,8 +1087,8 @@ msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Selecione esta opção se o comentário é inapropriado. Uma mensagem \"Este " -"comentário foi removido\" a mensagem será mostrada no lugar." +"Selecione esta opção se o comentário é inapropriado. A mensagem \"Este " +"comentário foi removido\" será mostrada no lugar." #: contrib/comments/models.py:91 #, fuzzy @@ -165,7 +1166,7 @@ msgid "" "\n" "%(text)s" msgstr "" -"O usuário %(user)s colocou flags neste documento:\n" +"O usuário %(user)s colocou flags neste comentário:\n" "\n" "%(text)s" @@ -219,13 +1220,13 @@ msgstr "ID de comentário inválido" msgid "No voting for yourself" msgstr "Você não pode votar em si mesmo" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/views/comments.py:27 msgid "" "This rating is required because you've entered at least one other rating." msgstr "" "Esta avaliação é requerida porque você entrou com ao menos uma avaliação" -#: contrib/comments/views/comments.py:112 +#: contrib/comments/views/comments.py:111 #, fuzzy, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -246,7 +1247,7 @@ msgstr[1] "" "comentários:\n" "%(text)s" -#: contrib/comments/views/comments.py:117 +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -257,34 +1258,51 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" msgstr "Somente POSTs são permitidos" -#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "Um ou mais dos campos requeridos não foram enviados" -#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Alguém modificou o form de comentários (violação de segurança)" +msgstr "Alguém modificou o formulário de comentários (violação de segurança)" -#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" msgstr "" -"O form de comentários teve um parâmetro 'target' inválido -- o ID do objeto " -"é inválido" +"O formulário de comentários teve um parâmetro 'target' inválido -- o ID do " +"objeto é inválido" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "O form de comentários não forneceu nem 'preview' nem 'post'" +msgstr "O formulário de comentários não forneceu nem 'preview' nem 'post'" + +#: contrib/comments/templates/comments/freeform.html:4 +#, fuzzy +msgid "Your name:" +msgstr "Seu nome:" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +#, fuzzy +msgid "Comment:" +msgstr "Comentário" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +#, fuzzy +msgid "Preview comment" +msgstr "Pré visualizar comentário" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 @@ -293,21 +1311,12 @@ msgid "Username:" msgstr "Usuário:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Senha:" - -#: contrib/comments/templates/comments/form.html:6 -#, fuzzy -msgid "Forgotten your password?" -msgstr "Esqueceu sua senha?" - -#: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: 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 @@ -323,6 +1332,16 @@ msgstr "Esqueceu sua senha?" msgid "Log out" msgstr "Encerrar sessão" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Senha:" + +#: contrib/comments/templates/comments/form.html:8 +#, fuzzy +msgid "Forgotten your password?" +msgstr "Esqueceu sua senha?" + #: contrib/comments/templates/comments/form.html:12 #, fuzzy msgid "Ratings" @@ -342,22 +1361,91 @@ msgstr "Opcional" msgid "Post a photo" msgstr "Postar uma foto" -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -#, fuzzy -msgid "Comment:" -msgstr "Comentário" +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 +msgid "URL" +msgstr "URL" -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -#, fuzzy -msgid "Preview comment" -msgstr "Pré visualizar comentário" +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final." -#: contrib/comments/templates/comments/freeform.html:4 +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "título" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "conteúdo" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "habilitar comentários" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nome do modelo" + +#: contrib/flatpages/models.py:13 #, fuzzy -msgid "Your name:" -msgstr "Seu nome:" +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Exemplo: 'flatpages/contact_page.html'. Se não for informado, será utilizado " +"'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "registro obrigatório" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Se estiver marcado, apenas usuários conectados poderão ver a página." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "chave da sessão" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "dados da sessão" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "data de expiração" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sessão" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sessões" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nome do domínio" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "nome para exibição" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "site" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "sites" #: contrib/admin/filterspecs.py:40 #, python-format @@ -369,7 +1457,7 @@ msgstr "" "
    \n" #: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 msgid "All" msgstr "Todos" @@ -393,18 +1481,6 @@ msgstr "Este mês" msgid "This year" msgstr "Este ano" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Sim" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Não" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Desconhecido" - #: contrib/admin/models.py:16 msgid "action time" msgstr "hora da ação" @@ -433,25 +1509,16 @@ msgstr "entrada de log" msgid "log entries" msgstr "entradas de log" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Todas as datas" -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Por favor entre usuário e senha corretos. Note que ambos os " -"campos diferenciam maiúsculas e minúsculas." - -#: contrib/admin/views/decorators.py:23 +#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" msgstr "Acessar" -#: contrib/admin/views/decorators.py:61 +#: contrib/admin/views/decorators.py:62 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." @@ -459,7 +1526,7 @@ msgstr "" "Por favor acesse novamente, pois sua sessão expirou. Não se preocupe: Os " "dados enviados foram salvos." -#: contrib/admin/views/decorators.py:68 +#: 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." @@ -467,68 +1534,79 @@ msgstr "" "Parece que seu navegador não está configurado para aceitar cookies. Por " "favor habilite os cookies, recarregue esta página, e tente novamente." -#: contrib/admin/views/decorators.py:82 +#: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "Nomes de usuário não podem conter o caractere '@'." -#: contrib/admin/views/decorators.py:84 +#: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Seu endereço de e-mail não é seu nome de usuário. Tente usar '%s'" -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "Administração do Site" - -#: contrib/admin/views/main.py:260 +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado com sucesso." -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 +#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261 +#: contrib/admin/views/main.py:347 msgid "You may edit it again below." msgstr "Você pode editá-lo(a) de novo abaixo." -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: contrib/admin/views/auth.py:30 +#, fuzzy +msgid "Add user" +msgstr "Adicionar usuário" + +#: contrib/admin/views/auth.py:57 +#, fuzzy +msgid "Password changed successfully." +msgstr "Senha alterada com sucesso" + +#: contrib/admin/views/auth.py:64 +#, fuzzy, python-format +msgid "Change password: %s" +msgstr "Alterar senha: %s" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Administração do Site" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." msgstr "Você pode adicionar outro(a) %s abaixo." -#: contrib/admin/views/main.py:290 +#: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" msgstr "Adicionar %s" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:335 #, python-format msgid "Added %s." msgstr "Adicionado %s." -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 -msgid "and" -msgstr "e" - -#: contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." msgstr "Modificado %s." -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:339 #, python-format msgid "Deleted %s." -msgstr "Apagado %s." +msgstr "Excluído %s." -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:342 msgid "No fields changed." msgstr "Nenhum campo modificado." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "O(A) %(name)s \"%(obj)s\" foi modificado com sucesso." -#: contrib/admin/views/main.py:354 +#: contrib/admin/views/main.py:353 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -634,10 +1712,6 @@ msgstr "Texto" msgid "Time" msgstr "Hora" -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - #: contrib/admin/views/doc.py:301 msgid "U.S. state (two uppercase letters)" msgstr "Estado dos EUA (duas letras maiúsculas)" @@ -659,9 +1733,12 @@ msgstr "Documentação" #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: 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 @@ -678,11 +1755,13 @@ msgid "Change password" msgstr "Alterar senha" #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: 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 @@ -693,7 +1772,7 @@ msgid "Home" msgstr "Início" #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 msgid "History" msgstr "Histórico" @@ -721,13 +1800,15 @@ msgstr "" "Este objeto não tem um histórico de alterações. Ele provavelmente não foi " "adicionado por este site de administração." -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Site de administração do Django" +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Adicionar %(name)s" -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Administração do Django" +#: contrib/admin/templates/admin/filter.html:2 +#, fuzzy, python-format +msgid " By %(filter_title)s " +msgstr "Por %(title)s " #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -746,8 +1827,50 @@ 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 "" -"Houve um erro. Este foi reportado aos administradores do site através d e-" -"mail e deve ser corrigido em breve. Obrigado pela compreensão." +"Houve um erro. Este foi reportado aos administradores do site através do " +"e-mail e deve ser corrigido em breve. Obrigado pela compreensão." + +#: 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 "Alguma coisa errada com a instalação do banco de dados. Certifique-se " +"que as tabelas necessárias foram criadas e que o banco de dados pode ser " +"acessado pelo usuário." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Ir" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 resultado" +msgstr[1] "%(counter)s resultados" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s total" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Mostrar tudo" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Site de administração do Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administração do Django" + +#: contrib/admin/templates/admin/filters.html:4 +#, fuzzy +msgid "Filter" +msgstr "Filtro" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -763,6 +1886,11 @@ msgstr "Desculpe, mas a página requisitada não pode ser encontrada." msgid "Models available in the %(name)s application." msgstr "Modelos disponíveis na aplicação %(name)s" +#: contrib/admin/templates/admin/index.html:18 +#, fuzzy, python-format +msgid "%(name)s" +msgstr "%(name)s" + #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" @@ -788,16 +1916,27 @@ msgstr "Minhas Ações" msgid "None available" msgstr "Nenhuma disponível" -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Adicionar %(name)s" +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Ver no site" -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Você esqueceu sua senha?" +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#, fuzzy +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija o erro abaixo." +msgstr[1] "Por favor, corrija os erros abaixo." -#: contrib/admin/templates/admin/base.html:23 +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Ordenação" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Ordem:" + +#: contrib/admin/templates/admin/base.html:25 msgid "Welcome," msgstr "Bem vindo," @@ -807,57 +1946,29 @@ msgid "Delete" msgstr "Apagar" #: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format +#, fuzzy, python-format msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" +"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 "" -"A remoção de '%(object)s' %(object_name)s pode resultar na remoção de " -"objetos relacionados, mas sua conta não tem a permissão para remoção dos " +"A remoção de '%(object_name)s' %(escaped_object)s pode resultar na remoção " +"de objetos relacionados, mas sua conta não tem a permissão para remoção dos " "seguintes tipos de objetos:" #: contrib/admin/templates/admin/delete_confirmation.html:21 -#, python-format +#, fuzzy, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" msgstr "" -"Você tem certeza que quer remover o \"%(object)s\" %(object_name)s? Todos os " -"seguintes itens relacionados serão removidos:" +"Você tem certeza que quer remover o %(object_name)s \"%(escaped_object)s\"? " +"Todos os seguintes itens relacionados serão removidos:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Sim, tenho certeza" -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(title)s " -msgstr "Por %(title)s " - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Ir" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Ver no site" - -#: contrib/admin/templates/admin/change_form.html:30 -#, fuzzy -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Por favor, corrija o erro abaixo." -msgstr[1] "Por favor, corrija os erros abaixo." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Ordenação" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Ordem:" - #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Salvar como novo" @@ -874,6 +1985,40 @@ msgstr "Salvar e continuar editando" msgid "Save" msgstr "Salvar" +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Informe uma nova senha para o usuário %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#, fuzzy +msgid "Password" +msgstr "Senha:" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#, fuzzy +msgid "Password (again)" +msgstr "Senha (novamente)" + +#: 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 "Informe a mesma senha digitada acima, para verificação." + +#: 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 "Primeiro, informe um nome de usuário e senha. Então, você será capaz " +"de editar mais opções do usuário." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +#, fuzzy +msgid "Username" +msgstr "Usuário:" + #: 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 @@ -940,7 +2085,7 @@ msgid "" "password twice so we can verify you typed it in correctly." msgstr "" "Por favor, informe sua senha antiga, por segurança, e então informe sua nova " -"senha duas vezes para que possamos verificar que se ela está correta." +"senha duas vezes para que possamos verificar se você digitou corretamente." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -987,7 +2132,7 @@ msgstr "Obrigado por usar nosso site!" #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" -msgstr "Time do %(site_name)s" +msgstr "Equipe do %(site_name)s" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -1045,9 +2190,7 @@ msgstr "Editar este objeto (janela atual)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Vai para a página de administração que representam um objeto " -"único." +msgstr "Vai para a página de administração que representam um objeto único." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" @@ -1057,286 +2200,213 @@ msgstr "Editar este objeto (nova janela)" msgid "As above, but opens the admin page in a new window." msgstr "Como acima, mas abre a página de administração em uma nova janela." -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Data:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Hora:" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Atualmente:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modificar:" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "redirecionar de" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Deve conter um caminho absoluto, excluindo o nome de domínio. Exemplo: '/" -"eventos/busca/'." - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "redirecionar para" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Deve conter um caminho absoluto (como acima) ou uma URL completa, começando " -"com 'http://'." - -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "redirecionar" - -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "redirecionamentos" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "título" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "conteúdo" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "habilitar comentários" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nome do modelo" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." -msgstr "" -"Exemplo: 'flatfiles/contact_page'. Se não for informado, será utilizado " -"'flatfiles/default'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "registro obrigatório" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Se estiver marcado, apenas usuários conectados poderão ver a página." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "página plana" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "páginas planas" - -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "nome" - -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "nome código" - -#: contrib/auth/models.py:17 -#, fuzzy -msgid "permission" -msgstr "permissão" - -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -#, fuzzy -msgid "permissions" -msgstr "permissões" - -#: contrib/auth/models.py:29 -#, fuzzy -msgid "group" -msgstr "grupo" - -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -#, fuzzy -msgid "groups" -msgstr "grupos" - -#: contrib/auth/models.py:55 -msgid "username" -msgstr "usuário" - -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "primeiro nome" - -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "último nome" - -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "endereço de e-mail" - -#: contrib/auth/models.py:59 -msgid "password" -msgstr "senha" - -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Use '[algo]$[salt]$[hexdigest]'" - -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "status da equipe" - -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "Informa se o usuário pode acessar este site de administração." - -#: contrib/auth/models.py:61 -msgid "active" -msgstr "ativar" - -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "status de superusuário" - -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "último login" - -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "data de registro" - -#: contrib/auth/models.py:66 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Em adição às permissões atribuídas manualmente, este usuário também terá " -"todas as permissões dadas a cada grupo que participar." - -#: contrib/auth/models.py:67 -#, fuzzy -msgid "user permissions" -msgstr "permissões do usuário" - -#: contrib/auth/models.py:70 -#, fuzzy -msgid "user" -msgstr "usuário" - -#: contrib/auth/models.py:71 -#, fuzzy -msgid "users" -msgstr "usuários" - -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "Informações pessoais" - -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "Permissões" - -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "Datas importantes" - -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "Grupos" - -#: contrib/auth/models.py:219 -#, fuzzy -msgid "message" -msgstr "mensagem" - -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Seu navegador Web não parece estar com os cookies habilitados. Cookies são " -"requeridos para acessar." - -#: contrib/contenttypes/models.py:25 -#, fuzzy -msgid "python model class name" -msgstr "nome do módulo python" - -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "tipo de conteúdo" - -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "tipos de conteúdo" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "chave da sessão" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "dados da sessão" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "data de expiração" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "sessão" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "sessões" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nome do domínio" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "nome para exibição" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "site" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "sites" - -#: utils/translation.py:360 -msgid "DATE_FORMAT" +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" +#: contrib/localflavor/usa/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "" -#: utils/translation.py:362 -msgid "TIME_FORMAT" +#: contrib/localflavor/fr/forms.py:17 +#, fuzzy +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +#, fuzzy +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +#, fuzzy +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +#, fuzzy +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +#, fuzzy +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" msgstr "" #: utils/dates.py:6 @@ -1534,483 +2604,60 @@ msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "Bengalês" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "Tcheco" - -#: conf/global_settings.py:39 -msgid "Welsh" +#: utils/dateformat.py:40 +msgid "p.m." msgstr "" -#: conf/global_settings.py:40 -#, fuzzy -msgid "Danish" -msgstr "Dinamarquês" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "Alemão" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "Grego" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "Inglês" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "Espanhol" - -#: conf/global_settings.py:45 -msgid "French" -msgstr "Francês" - -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "Galiciano" - -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "Húngaro" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "Hebraico" - -#: conf/global_settings.py:49 -msgid "Icelandic" -msgstr "Islandês" - -#: conf/global_settings.py:50 -msgid "Italian" -msgstr "Italiano" - -#: conf/global_settings.py:51 -msgid "Japanese" -msgstr "Japonês" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "Alemão" - -#: conf/global_settings.py:53 -msgid "Norwegian" -msgstr "Norueguês" - -#: conf/global_settings.py:54 -msgid "Brazilian" -msgstr "Brasileiro" - -#: conf/global_settings.py:55 -msgid "Romanian" -msgstr "Romeno" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "Russo" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "Eslovaco" - -#: conf/global_settings.py:58 -#, fuzzy -msgid "Slovenian" -msgstr "Esloveno" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "Sérvio" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "Sueco" - -#: conf/global_settings.py:61 -#, fuzzy -msgid "Ukrainian" -msgstr "Ucraniano" - -#: conf/global_settings.py:62 -msgid "Simplified Chinese" -msgstr "Chinês Simplificado" - -#: conf/global_settings.py:63 -msgid "Traditional Chinese" -msgstr "Chinês Tradicional" - -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Deve conter apenas letras, números e sublinhados (_)." - -#: core/validators.py:64 -#, fuzzy -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "Deve conter apenas letras, números, sublinhados (_) e barras (/)." - -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Letras em maiúsculo não são permitidas aqui." - -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Letras em minúsculo não são permitidas aqui." - -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Informe apenas dígitos separados por vírgulas." - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Informe endereços de email válidos separados por vírgulas." - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Informe um endereço IP válido." - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Valores em branco não são permitidos." - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Caracteres não numéricos não são permitidos." - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "Este valor não pode conter apenas dígitos." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Informe um número completo." - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Apenas caracteres do alfabeto são permitidos aqui." - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Informe uma data válida no formato AAAA-MM-DD." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Informe uma hora válida no formato HH:MM." - -#: core/validators.py:132 db/models/fields/__init__.py:468 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM." - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Informe um endereço de email válido." - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." +#: utils/dateformat.py:41 +msgid "a.m." msgstr "" -"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está " -"corrompido." -#: core/validators.py:155 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "A URL %s não aponta para um imagem válida." - -#: core/validators.py:159 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +#: utils/dateformat.py:46 +msgid "PM" msgstr "" -"Números de telefone deves estar no formato XXX-XXX-XXXX.\"%s\" é inválido." -#: core/validators.py:167 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "A URL %s não aponta para um vídeo QuickTime válido." - -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "Uma URL válida é exigida." - -#: core/validators.py:185 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" +#: utils/dateformat.py:47 +msgid "AM" msgstr "" -"HTML válido é exigido. Estes são os erros específicos:\n" -"%s" -#: core/validators.py:192 -#, python-format -msgid "Badly formed XML: %s" -msgstr "XML mal formado: %s" +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "meia noite" -#: core/validators.py:202 -#, python-format -msgid "Invalid URL: %s" -msgstr "URL inválida: %s" +#: utils/dateformat.py:97 +msgid "noon" +msgstr "meio dia" -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "A URL %s é um link quebrado." - -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Informe uma abreviação válida de nome de um estado dos EUA." - -#: core/validators.py:229 -#, fuzzy, 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] "Lave sua boca! A palavra %s não é permitida aqui." -msgstr[1] "Lave sua boca! As palavras %s não são permitidas aqui." - -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Este campo deve ser igual ao campo '%s'." - -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Informe algo em pelo menos um campo." - -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "Informe ambos os campos ou deixe ambos vazios." - -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s." - -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s." - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Valores duplicados não são permitidos." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "Este valor deve ser uma potência de %s." - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Informe um número decimal válido." - -#: core/validators.py:349 -#, fuzzy, 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] "Por favor entre com um número decimal com no máximo %s digito." -msgstr[1] "Por favor entre com um número decimal com no máximo %s digitos." - -#: core/validators.py:352 -#, fuzzy, 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] "Informe um número decimal com no máximo %s casa decimal." -msgstr[1] "Informe um número decimal com no máximo %s casas decimais." - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Verifique se o arquivo enviado tem no máximo %s bytes." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "O formato deste campo está errado." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "Este campo é inválido." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Não foi possível receber dados de %s." - -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" msgstr "" -"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type " -"inválido." -#: core/validators.py:462 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" msgstr "" -"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%" -"(start)s\".)" -#: core/validators.py:466 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" msgstr "" -"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha " -"começa com \"%(start)s\".)" -#: core/validators.py:471 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" msgstr "" -"\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com " -"\"%(start)s\".)" -#: core/validators.py:476 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" msgstr "" -"\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%" -"(start)s\".)" -#: core/validators.py:480 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Uma tag na linha %(line)s está não apresenta um ou mais atributos exigidos." -"(Linha começa com \"%(start)s\".)" - -#: core/validators.py:485 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (Linha " -"começa com \"%(start)s\".)" - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s com este %(type)s já existe para o %(field)s dado." - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s com este %(fieldname)s já existe." - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "Este campo é requerido." - -#: db/models/fields/__init__.py:337 -#, fuzzy -msgid "This value must be an integer." -msgstr "Este valor deve ser um inteiro." - -#: db/models/fields/__init__.py:369 -#, fuzzy -msgid "This value must be either True or False." -msgstr "Este valor deve ser Verdadeiro ou Falso." - -#: db/models/fields/__init__.py:385 -#, fuzzy -msgid "This field cannot be null." -msgstr "Este campo não pode ser nulo." - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Informe um nome de arquivo válido." - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Por favor informe um %s válido." - -#: db/models/fields/related.py:579 -#, fuzzy -msgid "Separate multiple IDs with commas." -msgstr "Separe IDs múltiplos com vírgulas." - -#: db/models/fields/related.py:581 -#, fuzzy -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -" Mantenha pressionado \"Control\", ou \"Command\" no Mac para selecionar " -"mais de uma opção." - -#: db/models/fields/related.py:625 -#, fuzzy, 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] "" -"Por favor, entre IDs válidos para %(self)s. O valor %(value)r é inválido." -msgstr[1] "" -"Por favor, entre IDs válidos para %(self)s. Os valores %(value)r são inválidos." - -#: forms/__init__.py:380 -#, fuzzy, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Certifique-se de que seu texto tenha menos que %s caractere." -msgstr[1] "Certifique-se de que seu texto tenha menos que %s caracteres." - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "Não são permitidas quebras de linha aqui." - -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Selecione uma escolha válida; '%(data)s' não está em %(choices)s." - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "O arquivo enviado está vazio." - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Informe um número inteiro entre -32.768 e 32.767" - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "Informe um número positivo" - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Informe um número inteiro entre 0 e 32.767." - -#: template/defaultfilters.py:379 +#: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "sim,não,talvez" +#~ msgid "Have you forgotten your password?" +#~ msgstr "Você esqueceu sua senha?" + +#~ msgid "Use '[algo]$[salt]$[hexdigest]'" +#~ msgstr "Use '[algo]$[salt]$[hexdigest]'" + #~ msgid "Comment" #~ msgstr "Comentário" diff --git a/django/contrib/localflavor/br/forms.py b/django/contrib/localflavor/br/forms.py index d3ca28f053..29ad4df53d 100644 --- a/django/contrib/localflavor/br/forms.py +++ b/django/contrib/localflavor/br/forms.py @@ -5,7 +5,7 @@ BR-specific Form helpers from django.newforms import ValidationError from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES -from django.newforms.util import smart_unicode +from django.utils.encoding import smart_unicode from django.utils.translation import gettext import re @@ -15,7 +15,7 @@ class BRZipCodeField(RegexField): def __init__(self, *args, **kwargs): super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$', max_length=None, min_length=None, - error_message=u'Informe um código postal no formato XXXXX-XXX.', + error_message=gettext(u'Enter a zip code in the format XXXXX-XXX.'), *args, **kwargs) class BRPhoneNumberField(Field): @@ -27,7 +27,7 @@ class BRPhoneNumberField(Field): m = phone_digits_re.search(value) if m: return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) - raise ValidationError(u'Números de telefone devem estar no formato XX-XXXX-XXXX.') + raise ValidationError(gettext(u'Phone numbers must be in XX-XXXX-XXXX format.')) class BRStateSelect(Select): """ diff --git a/django/contrib/localflavor/de/__init__.py b/django/contrib/localflavor/de/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/de/de_states.py b/django/contrib/localflavor/de/de_states.py new file mode 100644 index 0000000000..c00fd2e293 --- /dev/null +++ b/django/contrib/localflavor/de/de_states.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -* +from django.utils.translation import gettext_lazy as _ + +STATE_CHOICES = ( + ('BW', _('Baden-Wuerttemberg')), + ('BY', _('Bavaria')), + ('BE', _('Berlin')), + ('BB', _('Brandenburg')), + ('HB', _('Bremen')), + ('HH', _('Hamburg')), + ('HE', _('Hessen')), + ('MV', _('Mecklenburg-Western Pomerania')), + ('NI', _('Lower Saxony')), + ('NW', _('North Rhine-Westphalia')), + ('RP', _('Rhineland-Palatinate')), + ('SL', _('Saarland')), + ('SN', _('Saxony')), + ('ST', _('Saxony-Anhalt')), + ('SH', _('Schleswig-Holstein')), + ('TH', _('Thuringia')), +) diff --git a/django/contrib/localflavor/de/forms.py b/django/contrib/localflavor/de/forms.py new file mode 100644 index 0000000000..c82d2d5b8d --- /dev/null +++ b/django/contrib/localflavor/de/forms.py @@ -0,0 +1,87 @@ +""" +DE-specific Form helpers +""" + +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.utils.translation import gettext +import re + +id_re = re.compile(r"^(?P\d{10})(?P\w{1,3})[-\ ]?(?P\d{7})[-\ ]?(?P\d{7})[-\ ]?(?P\d{1})$") + +class DEZipCodeField(RegexField): + def __init__(self, *args, **kwargs): + super(DEZipCodeField, self).__init__(r'^\d{5}$', + max_length=None, min_length=None, + error_message=gettext(u'Enter a zip code in the format XXXXX.'), + *args, **kwargs) + +class DEStateSelect(Select): + """ + A Select widget that uses a list of DE states as its choices. + """ + def __init__(self, attrs=None): + from de_states import STATE_CHOICES # relative import + super(DEStateSelect, self).__init__(attrs, choices=STATE_CHOICES) + +class DEIdentityCardNumberField(Field): + """ + A German identity card number. + + Checks the following rules to determine whether the number is valid: + + * Conforms to the XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format. + * No group consists entirely of zeroes. + * Included checksums match calculated checksums + + Algorithm is documented at http://de.wikipedia.org/wiki/Personalausweis + """ + def has_valid_checksum(self, number): + given_number, given_checksum = number[:-1], number[-1] + calculated_checksum = 0 + fragment = "" + parameter = 7 + + for i in range(len(given_number)): + fragment = str(int(given_number[i])*parameter) + if fragment.isalnum(): + calculated_checksum += int(fragment[-1]) + + if parameter == 1: + parameter = 7 + elif parameter == 3: + parameter = 1 + elif parameter ==7: + parameter = 3 + + if str(calculated_checksum)[-1] == given_checksum: + return True + return False + + def clean(self, value): + super(DEIdentityCardNumberField, self).clean(value) + error_msg = gettext(u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format') + if value in EMPTY_VALUES: + return u'' + match = re.match(id_re, value) + if not match: + raise ValidationError(error_msg) + + residence, origin, birthday, validity, checksum = \ + match.groupdict()['residence'], match.groupdict()['origin'], \ + match.groupdict()['birthday'], match.groupdict()['validity'], \ + match.groupdict()['checksum'] + + if residence == '0000000000' or \ + birthday == '0000000' or \ + validity == '0000000': + raise ValidationError(error_msg) + + all_digits = "%s%s%s%s" % (residence, birthday, validity, checksum) + if not self.has_valid_checksum(residence) or \ + not self.has_valid_checksum(birthday) or \ + not self.has_valid_checksum(validity) or \ + not self.has_valid_checksum(all_digits): + raise ValidationError(error_msg) + + return u'%s%s-%s-%s-%s' % (residence, origin, birthday, validity, checksum) diff --git a/django/contrib/localflavor/fr/forms.py b/django/contrib/localflavor/fr/forms.py index ee87c5cda2..550596b880 100644 --- a/django/contrib/localflavor/fr/forms.py +++ b/django/contrib/localflavor/fr/forms.py @@ -4,7 +4,7 @@ FR-specific Form helpers from django.newforms import ValidationError from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES -from django.newforms.util import smart_unicode +from django.utils.encoding import smart_unicode from django.utils.translation import gettext import re diff --git a/django/contrib/localflavor/it/forms.py b/django/contrib/localflavor/it/forms.py index 6760d91799..8e9d8bc11d 100644 --- a/django/contrib/localflavor/it/forms.py +++ b/django/contrib/localflavor/it/forms.py @@ -4,7 +4,6 @@ IT-specific Form helpers from django.newforms import ValidationError from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES -from django.newforms.util import smart_unicode from django.utils.translation import gettext import re diff --git a/django/contrib/localflavor/usa/forms.py b/django/contrib/localflavor/usa/forms.py index 9461f4fe80..feda68291b 100644 --- a/django/contrib/localflavor/usa/forms.py +++ b/django/contrib/localflavor/usa/forms.py @@ -4,11 +4,12 @@ USA-specific Form helpers from django.newforms import ValidationError from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES -from django.newforms.util import smart_unicode +from django.utils.encoding import smart_unicode from django.utils.translation import gettext import re phone_digits_re = re.compile(r'^(?:1-?)?(\d{3})[-\.]?(\d{3})[-\.]?(\d{4})$') +ssn_re = re.compile(r"^(?P\d{3})[-\ ]?(?P\d{2})[-\ ]?(?P\d{4})$") class USZipCodeField(RegexField): def __init__(self, *args, **kwargs): @@ -28,6 +29,45 @@ class USPhoneNumberField(Field): return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) raise ValidationError(u'Phone numbers must be in XXX-XXX-XXXX format.') +class USSocialSecurityNumberField(Field): + """ + A United States Social Security number. + + Checks the following rules to determine whether the number is valid: + + * Conforms to the XXX-XX-XXXX format. + * No group consists entirely of zeroes. + * The leading group is not "666" (block "666" will never be allocated). + * The number is not in the promotional block 987-65-4320 through 987-65-4329, + which are permanently invalid. + * The number is not one known to be invalid due to otherwise widespread + promotional use or distribution (e.g., the Woolworth's number or the 1962 + promotional number). + """ + def clean(self, value): + super(USSocialSecurityNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + msg = gettext(u'Enter a valid U.S. Social Security number in XXX-XX-XXXX format.') + match = re.match(ssn_re, value) + if not match: + raise ValidationError(msg) + area, group, serial = match.groupdict()['area'], match.groupdict()['group'], match.groupdict()['serial'] + + # First pass: no blocks of all zeroes. + if area == '000' or \ + group == '00' or \ + serial == '0000': + raise ValidationError(msg) + + # Second pass: promotional and otherwise permanently invalid numbers. + if area == '666' or \ + (area == '987' and group == '65' and 4320 <= int(serial) <= 4329) or \ + value == '078-05-1120' or \ + value == '219-09-9999': + raise ValidationError(msg) + return u'%s-%s-%s' % (area, group, serial) + class USStateField(Field): """ A form field that validates its input is a U.S. state name or abbreviation. diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 72c5047030..c3b74e93f7 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -3,7 +3,8 @@ Field classes """ from django.utils.translation import gettext -from util import ErrorList, ValidationError, smart_unicode +from django.utils.encoding import smart_unicode +from util import ErrorList, ValidationError from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple import datetime import re diff --git a/django/newforms/forms.py b/django/newforms/forms.py index 2b3aa97428..1f37da91ff 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -4,9 +4,10 @@ Form classes from django.utils.datastructures import SortedDict, MultiValueDict from django.utils.html import escape +from django.utils.encoding import StrAndUnicode from fields import Field from widgets import TextInput, Textarea, HiddenInput, MultipleHiddenInput -from util import flatatt, StrAndUnicode, ErrorDict, ErrorList, ValidationError +from util import flatatt, ErrorDict, ErrorList, ValidationError import copy __all__ = ('BaseForm', 'Form') @@ -227,9 +228,9 @@ class BoundField(StrAndUnicode): value = self.as_widget(self.field.widget) if not isinstance(value, basestring): # Some Widget render() methods -- notably RadioSelect -- return a - # "special" object rather than a string. Call the __str__() on that + # "special" object rather than a string. Call __unicode__() on that # object to get its rendered value. - value = value.__str__() + value = unicode(value) return value def _errors(self): diff --git a/django/newforms/util.py b/django/newforms/util.py index f98027c2e3..5fc0223f5b 100644 --- a/django/newforms/util.py +++ b/django/newforms/util.py @@ -1,41 +1,12 @@ from django.conf import settings from django.utils.html import escape from django.utils.functional import Promise, lazy +from django.utils.encoding import smart_unicode # Converts a dictionary to a single string with key="value", XML-style with # a leading space. Assumes keys do not need to be XML-escaped. flatatt = lambda attrs: u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs.items()]) -def smart_unicode(s): - if isinstance(s, Promise): - # The input is something from gettext_lazy or similar. We don't want to - # translate it until render time, so defer the conversion. - return smart_unicode_lazy(s) - else: - return smart_unicode_immediate(s) - -def smart_unicode_immediate(s): - if not isinstance(s, basestring): - if hasattr(s, '__unicode__'): - s = unicode(s) - else: - s = unicode(str(s), settings.DEFAULT_CHARSET) - elif not isinstance(s, unicode): - s = unicode(s, settings.DEFAULT_CHARSET) - return s - -smart_unicode_lazy = lazy(smart_unicode_immediate, unicode) - -class StrAndUnicode(object): - """ - A class whose __str__ returns its __unicode__ as a bytestring - according to settings.DEFAULT_CHARSET. - - Useful as a mix-in. - """ - def __str__(self): - return self.__unicode__().encode(settings.DEFAULT_CHARSET) - class ErrorDict(dict): """ A collection of errors that knows how to display itself in various formats. diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 58d8ab1322..8d292673a5 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -9,10 +9,11 @@ __all__ = ( 'MultiWidget', 'SplitDateTimeWidget', ) -from util import flatatt, StrAndUnicode, smart_unicode +from util import flatatt from django.utils.datastructures import MultiValueDict from django.utils.html import escape from django.utils.translation import gettext +from django.utils.encoding import StrAndUnicode, smart_unicode from itertools import chain try: diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 6a37c163e9..448ad8a50b 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -989,7 +989,9 @@ widthratio = register.tag(widthratio) def do_with(parser, token): """ Add a value to the context (inside of this block) for caching and easy - access. For example:: + access. + + For example:: {% with person.some_sql_method as total %} {{ total }} object{{ total|pluralize }} diff --git a/django/utils/encoding.py b/django/utils/encoding.py new file mode 100644 index 0000000000..4774fb0d26 --- /dev/null +++ b/django/utils/encoding.py @@ -0,0 +1,32 @@ +from django.conf import settings +from django.utils.functional import Promise + +def smart_unicode(s): + if isinstance(s, Promise): + # The input is the result of a gettext_lazy() call, or similar. It will + # already be encoded in DEFAULT_CHARSET on evaluation and we don't want + # to evaluate it until render time. + # FIXME: This isn't totally consistent, because it eventually returns a + # bytestring rather than a unicode object. It works wherever we use + # smart_unicode() at the moment. Fixing this requires work in the + # i18n internals. + return s + if not isinstance(s, basestring,): + if hasattr(s, '__unicode__'): + s = unicode(s) + else: + s = unicode(str(s), settings.DEFAULT_CHARSET) + elif not isinstance(s, unicode): + s = unicode(s, settings.DEFAULT_CHARSET) + return s + +class StrAndUnicode(object): + """ + A class whose __str__ returns its __unicode__ as a bytestring + according to settings.DEFAULT_CHARSET. + + Useful as a mix-in. + """ + def __str__(self): + return self.__unicode__().encode(settings.DEFAULT_CHARSET) + diff --git a/django/utils/html.py b/django/utils/html.py index baa2fb06fc..607362817b 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -1,6 +1,7 @@ "HTML utilities suitable for global use." import re, string +from django.utils.encoding import smart_unicode # Configuration for urlize() function LEADING_PUNCTUATION = ['(', '<', '<'] diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py index 39ebd6f75a..dbb97af76c 100644 --- a/django/utils/translation/__init__.py +++ b/django/utils/translation/__init__.py @@ -7,7 +7,7 @@ __all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext', 'ngettext_lazy', 'string_concat', 'activate', 'deactivate', 'get_language', 'get_language_bidi', 'get_date_formats', 'get_partial_date_formats', 'check_for_language', 'to_locale', - 'get_language_from_request', 'install'] + 'get_language_from_request', 'install', 'templatize'] # Here be dragons, so a short explanation of the logic won't hurt: # We are trying to solve two problems: (1) access settings, in particular @@ -92,3 +92,6 @@ def get_language_from_request(request): def install(): return real_install() +def templatize(src): + return real_templatize(src) + diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py index 75ad573357..10b07529e3 100644 --- a/django/utils/translation/trans_null.py +++ b/django/utils/translation/trans_null.py @@ -9,7 +9,6 @@ def ngettext(singular, plural, number): return plural ngettext_lazy = ngettext -gettext = gettext_noop = gettext_lazy = _ = lambda x: x string_concat = lambda *strings: ''.join([str(el) for el in strings]) activate = lambda x: None deactivate = install = lambda: None @@ -19,6 +18,20 @@ get_date_formats = lambda: (settings.DATE_FORMAT, settings.DATETIME_FORMAT, sett get_partial_date_formats = lambda: (settings.YEAR_MONTH_FORMAT, settings.MONTH_DAY_FORMAT) check_for_language = lambda x: True +TECHNICAL_ID_MAP = { + "DATE_WITH_TIME_FULL": settings.DATETIME_FORMAT, + "DATE_FORMAT": settings.DATE_FORMAT, + "DATETIME_FORMAT": settings.DATETIME_FORMAT, + "TIME_FORMAT": settings.TIME_FORMAT, + "YEAR_MONTH_FORMAT": settings.YEAR_MONTH_FORMAT, + "MONTH_DAY_FORMAT": settings.MONTH_DAY_FORMAT, +} + +def gettext(message): + return TECHNICAL_ID_MAP.get(message, message) + +gettext_noop = gettext_lazy = _ = gettext + def to_locale(language): p = language.find('-') if p >= 0: diff --git a/docs/faq.txt b/docs/faq.txt index b5150a0967..202b73c6be 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -382,9 +382,9 @@ Why do I get an error about importing DJANGO_SETTINGS_MODULE? Make sure that: * The environment variable DJANGO_SETTINGS_MODULE is set to a fully-qualified - Python module (i.e. "mysite.settings.main"). + Python module (i.e. "mysite.settings"). - * Said module is on ``sys.path`` (``import mysite.settings.main`` should work). + * Said module is on ``sys.path`` (``import mysite.settings`` should work). * The module doesn't contain syntax errors (of course). diff --git a/scripts/rpm-install.sh b/scripts/rpm-install.sh index 07a087c447..d3d95bcdb1 100644 --- a/scripts/rpm-install.sh +++ b/scripts/rpm-install.sh @@ -1,12 +1,14 @@ #! /bin/sh # -# this file is *inserted* into the install section of the generated -# spec file +# This file becomes the install section of the generated spec file. # -# this is, what dist.py normally does +# This is what dist.py normally does. python setup.py install --root=${RPM_BUILD_ROOT} --record="INSTALLED_FILES" +# Sort the filelist so that directories appear before files. This avoids +# duplicate filename problems on some systems. +touch DIRS for i in `cat INSTALLED_FILES`; do if [ -f ${RPM_BUILD_ROOT}/$i ]; then echo $i >>FILES @@ -16,4 +18,6 @@ for i in `cat INSTALLED_FILES`; do fi done -cat DIRS FILES >INSTALLED_FILES +# Make sure we match foo.pyo and foo.pyc along with foo.py (but only once each) +sed -e "/\.py[co]$/d" -e "s/\.py$/.py*/" DIRS FILES >INSTALLED_FILES + diff --git a/setup.cfg b/setup.cfg index ce9779aa00..99bc60c9a3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,4 @@ [bdist_rpm] -doc_files = docs/*.txt +doc_files = docs examples extras AUTHORS INSTALL LICENSE README install-script = scripts/rpm-install.sh diff --git a/setup.py b/setup.py index 6fd6fab816..61e0fd55e9 100644 --- a/setup.py +++ b/setup.py @@ -3,6 +3,20 @@ from distutils.command.install import INSTALL_SCHEMES import os import sys +def fullsplit(path, result=None): + """ + Split a pathname into components (the opposite of os.path.join) in a + platform-neutral way. + """ + if result is None: + result = [] + head, tail = os.path.split(path) + if head == '': + return [tail] + result + if head == path: + return result + return fullsplit(head, [tail] + result) + # Tell distutils to put the data_files in platform-specific installation # locations. See here for an explanation: # http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb @@ -13,27 +27,28 @@ for scheme in INSTALL_SCHEMES.values(): # an easy way to do this. packages, data_files = [], [] root_dir = os.path.dirname(__file__) -len_root_dir = len(root_dir) django_dir = os.path.join(root_dir, 'django') +pieces = fullsplit(root_dir) +if pieces[-1] == '': + len_root_dir = len(pieces) - 1 +else: + len_root_dir = len(pieces) for dirpath, dirnames, filenames in os.walk(django_dir): # Ignore dirnames that start with '.' for i, dirname in enumerate(dirnames): if dirname.startswith('.'): del dirnames[i] if '__init__.py' in filenames: - package = dirpath[len_root_dir:].lstrip('/').replace('/', '.') - packages.append(package) - else: + packages.append('.'.join(fullsplit(dirpath)[len_root_dir:])) + elif filenames: data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]]) -# Small hack for working with bdist_wininst. -# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html -if len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst': - for file_info in data_files: - file_info[0] = '/PURELIB/%s' % file_info[0] - # Dynamically calculate the version based on django.VERSION. -version = "%d.%d-%s" % (__import__('django').VERSION) +version_tuple = __import__('django').VERSION +if version_tuple[2] is not None: + version = "%d.%d_%s" % version_tuple +else: + version = "%d.%d" % version_tuple[:2] setup( name = "Django", diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py index db3f7fab2a..4a2e9432b0 100644 --- a/tests/regressiontests/defaultfilters/tests.py +++ b/tests/regressiontests/defaultfilters/tests.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + r""" >>> floatformat(7.7) '7.7' @@ -87,19 +89,19 @@ u'\xeb' >>> truncatewords('A sentence with a few words in it', 'not a number') 'A sentence with a few words in it' ->>> truncatewords_html('

    one two - three
    four
    five

    ', 0) +>>> truncatewords_html('

    one two - three
    four
    five

    ', 0) '' - ->>> truncatewords_html('

    one two - three
    four
    five

    ', 2) + +>>> truncatewords_html('

    one two - three
    four
    five

    ', 2) '

    one two ...

    ' - ->>> truncatewords_html('

    one two - three
    four
    five

    ', 4) + +>>> truncatewords_html('

    one two - three
    four
    five

    ', 4) '

    one two - three
    four ...

    ' ->>> truncatewords_html('

    one two - three
    four
    five

    ', 5) +>>> truncatewords_html('

    one two - three
    four
    five

    ', 5) '

    one two - three
    four
    five

    ' ->>> truncatewords_html('

    one two - three
    four
    five

    ', 100) +>>> truncatewords_html('

    one two - three
    four
    five

    ', 100) '

    one two - three
    four
    five

    ' >>> upper('Mixed case input') @@ -166,6 +168,9 @@ u'\xcb' >>> escape(' here') '<some html & special characters > here' +>>> escape(u' here ĐÅ€£') +u'<some html & special characters > here \xc4\x90\xc3\x85\xe2\x82\xac\xc2\xa3' + >>> linebreaks('line 1') '

    line 1

    ' diff --git a/tests/regressiontests/forms/localflavor.py b/tests/regressiontests/forms/localflavor.py index f166a24ef0..e9c027b5c8 100644 --- a/tests/regressiontests/forms/localflavor.py +++ b/tests/regressiontests/forms/localflavor.py @@ -246,6 +246,18 @@ as its choices. +# USSocialSecurityNumberField ################################################# +>>> from django.contrib.localflavor.usa.forms import USSocialSecurityNumberField +>>> f = USSocialSecurityNumberField() +>>> f.clean('987-65-4330') +u'987-65-4330' +>>> f.clean('987654330') +u'987-65-4330' +>>> f.clean('078-05-1120') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid U.S. Social Security number in XXX-XX-XXXX format.'] + # UKPostcodeField ############################################################# UKPostcodeField validates that the data is a valid UK postcode. @@ -734,23 +746,23 @@ u'12345-123' >>> f.clean('12345_123') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('1234-123') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('abcde-abc') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('12345-') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('-123') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('') Traceback (most recent call last): ... @@ -768,23 +780,23 @@ u'' >>> f.clean('-123') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('12345-') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('abcde-abc') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('1234-123') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('12345_123') Traceback (most recent call last): ... -ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.'] +ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('12345-123') u'12345-123' @@ -839,4 +851,35 @@ u'41-3562-3464' >>> w = BRStateSelect() >>> w.render('states', 'PR') u'' + +# DEZipCodeField ############################################################## + +>>> from django.contrib.localflavor.de.forms import DEZipCodeField +>>> f = DEZipCodeField() +>>> f.clean('99423') +u'99423' +>>> f.clean(' 99423') +Traceback (most recent call last): +... +ValidationError: [u'Enter a zip code in the format XXXXX.'] + +# DEStateSelect ############################################################# + +>>> from django.contrib.localflavor.de.forms import DEStateSelect +>>> w = DEStateSelect() +>>> w.render('states', 'TH') +u'' + +# DEIdentityCardNumberField ################################################# + +>>> from django.contrib.localflavor.de.forms import DEIdentityCardNumberField +>>> f = DEIdentityCardNumberField() +>>> f.clean('7549313035D-6004103-0903042-0') +u'7549313035D-6004103-0903042-0' +>>> f.clean('9786324830D 6104243 0910271 2') +u'9786324830D-6104243-0910271-2' +>>> f.clean('0434657485D-6407276-0508137-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format'] """ diff --git a/tests/regressiontests/forms/regressions.py b/tests/regressiontests/forms/regressions.py index 02b38ec58d..5daabc03af 100644 --- a/tests/regressiontests/forms/regressions.py +++ b/tests/regressiontests/forms/regressions.py @@ -11,11 +11,11 @@ It should be possible to re-use attribute dictionaries (#3810) >>> TestForm(auto_id=False).as_p() u'

    F1:

    \n

    F2:

    ' -####################### -# Tests for form i18n # -####################### +####################### +# Tests for form i18n # +####################### There were some problems with form translations in #3600 - + >>> from django.utils.translation import gettext_lazy, activate, deactivate >>> class SomeForm(Form): ... username = CharField(max_length=10, label=gettext_lazy('Username')) @@ -26,4 +26,12 @@ There were some problems with form translations in #3600 >>> print f.as_p()

    >>> deactivate() + +Unicode decoding problems... +>>> GENDERS = (('0', u'En tied\xe4'), ('1', u'Mies'), ('2', u'Nainen')) +>>> class SomeForm(Form): +... somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect()) +>>> f = SomeForm() +>>> f.as_p() +u'

      \n
    • \n
    • \n
    • \n

    ' """ diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index 8ecc9f0205..e78a4d0ec3 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -1455,7 +1455,7 @@ u'' >>> f.clean('http://www.google.com') # This will fail if there's no Internet connection u'http://www.google.com' -EmailField also access min_length and max_length parameters, for convenience. +URLField also access min_length and max_length parameters, for convenience. >>> f = URLField(min_length=15, max_length=20) >>> f.clean('http://f.com') Traceback (most recent call last): @@ -3276,7 +3276,7 @@ True ################################# # smart_unicode tests ->>> from django.newforms.util import smart_unicode +>>> from django.utils.encoding import smart_unicode >>> class Test: ... def __str__(self): ... return 'ŠĐĆŽćžšđ'