diff --git a/AUTHORS b/AUTHORS index 7985b4936e..5fc0b94480 100644 --- a/AUTHORS +++ b/AUTHORS @@ -100,11 +100,14 @@ answer newbie questions, and generally made Django that much better: Marc Fargas favo@exoweb.net Bill Fenner + Stefane Fermgier + Afonso Fernández Nogueira Matthew Flanagan Eric Floehr Jorge Gajon gandalf@owca.info Baishampayan Ghose + glin@seznam.cz martin.glueck@gmail.com GomoX Simon Greenhill @@ -172,6 +175,7 @@ answer newbie questions, and generally made Django that much better: mikko@sorl.net mitakummaa@gmail.com mmarshall + Reza Mohammadi Eric Moritz mrmachine Robin Munn @@ -185,6 +189,7 @@ answer newbie questions, and generally made Django that much better: Jay Parlar pavithran s Barry Pederson + petr.marhoun@gmail.com pgross@thoughtworks.com phaedo phil@produxion.net @@ -223,6 +228,7 @@ answer newbie questions, and generally made Django that much better: Aaron Swartz Ville Säävuori Tyson Tate + Frank Tegtmeyer thebjorn Zach Thompson Tom Tobin @@ -234,6 +240,7 @@ answer newbie questions, and generally made Django that much better: Amit Upadhyay Geert Vanderkelen viestards.lists@gmail.com + Vlado Milton Waddams wam-djangobug@wamber.net wangchun @@ -246,6 +253,7 @@ answer newbie questions, and generally made Django that much better: wojtek ye7cakf02@sneakemail.com ymasuda@ethercube.com + Jarek Zgoda Cheng Zhang A big THANK YOU goes to: diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 516f9fca31..75ba271c1e 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -48,6 +48,7 @@ LANGUAGES = ( ('en', gettext_noop('English')), ('es', gettext_noop('Spanish')), ('es_AR', gettext_noop('Argentinean Spanish')), + ('fa', gettext_noop('Persian')), ('fi', gettext_noop('Finnish')), ('fr', gettext_noop('French')), ('gl', gettext_noop('Galician')), diff --git a/django/conf/locale/cs/LC_MESSAGES/django.mo b/django/conf/locale/cs/LC_MESSAGES/django.mo index c2f04edb81..aacfcb6f61 100644 Binary files a/django/conf/locale/cs/LC_MESSAGES/django.mo and b/django/conf/locale/cs/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/cs/LC_MESSAGES/django.po b/django/conf/locale/cs/LC_MESSAGES/django.po index 0dcc31394c..008acdad7c 100644 --- a/django/conf/locale/cs/LC_MESSAGES/django.po +++ b/django/conf/locale/cs/LC_MESSAGES/django.po @@ -7,18 +7,854 @@ msgid "" msgstr "" "Project-Id-Version: Django Czech translation\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:11+0200\n" -"PO-Revision-Date: 2006-10-07 13:10+0100\n" -"Last-Translator: \n" +"POT-Creation-Date: 2007-06-18 11:26+0200\n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Poedit-Country: CZECH REPUBLIC\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>1 && n<5 ? 1 : 2;\n" -#: contrib/comments/models.py:67 -#: contrib/comments/models.py:166 +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "přesměrovat z" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Toto by měla být absolutní cesta, bez domény. Příklad: \"/udalosti/hledat/\"." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "přesměrovat na" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na " +"\"http://\"." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "přesměrování" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "přesměrování" + +#: contrib/localflavor/is_/forms.py:16 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18 +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/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/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "" + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +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/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +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/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/ch/forms.py:90 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +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] "" +msgstr[2] "" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: 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 "jméno modelu v Pythonu" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "typ obsahu" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "typy obsahu" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Hesla se neshodují." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Uživatel s tímto jménem již existuje." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Váš prohlížeč pravděpodobně nemá zapnuté cookies. Cookies jsou potřeba pro " +"zalogování." + +#: 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 "" +"Prosíme, vložte správné uživatelské jméno a heslo. Poznámka - u obou položek " +"se rozlišuje velikost písmen." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Tento účet není aktivní." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"K této e-mailové adrese není přiřazen žádný uživatelský účet. Jste si jist" +"(a), že jste se zaregistroval(a)?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Hesla se neshodují." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Vaše staré heslo nebylo vloženo správně. Prosíme, zkuste to znovu." + +#: contrib/auth/models.py:44 contrib/auth/models.py:64 +msgid "name" +msgstr "jméno" + +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "codename" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "oprávnění" + +#: contrib/auth/models.py:50 contrib/auth/models.py:65 +msgid "permissions" +msgstr "oprávnění" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "skupina" + +#: contrib/auth/models.py:69 contrib/auth/models.py:109 +msgid "groups" +msgstr "skupiny" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "uživatelské jméno" + +#: contrib/auth/models.py:99 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Požadováno. 30 znaků nebo méně. Pouze alfanumerické znaky (znaky, čísla a " +"podtržítka)." + +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "křestní jméno" + +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "příjmení" + +#: contrib/auth/models.py:102 +msgid "e-mail address" +msgstr "e-mailová adresa" + +#: contrib/auth/models.py:103 +msgid "password" +msgstr "heslo" + +#: contrib/auth/models.py:103 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Použijte formát \"[algo]$[salt]$[hexdigest]\" nebo formulář pro změnu hesla." + +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "administrativní přístup " + +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "Rozhodne, zda se uživatel může přihlásit do správy webu." + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "aktivní" + +#: contrib/auth/models.py:105 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Rozhodne, zda se uživatel může přihlásit. Nastavte toto místo mazání účtů." + +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "stav superuživatel" + +#: contrib/auth/models.py:106 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Stanoví, že uživatel má veškerá oprávnění bez jejich explicitního přiřazení." + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "poslední přihlášení" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "datum registrace" + +#: contrib/auth/models.py:110 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro " +"každou skupinu, ve které je." + +#: contrib/auth/models.py:111 +msgid "user permissions" +msgstr "uživatelská oprávnění" + +#: contrib/auth/models.py:115 +msgid "user" +msgstr "uživatel" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "uživatelé" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "Osobní informace" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "Oprávnění" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "Důležitá data" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "Skupiny" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "zpráva" + +#: contrib/auth/models.py:282 +#, fuzzy +msgid "AnonymousUser" +msgstr "Anonymní uživatelé nemohou hlasovat" + +#: contrib/auth/views.py:40 +msgid "Logged out" +msgstr "Odhlášeno" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:316 +msgid "URL" +msgstr "URL" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Příklad: \"/o/kontakt/\". Ujistěte se, že máte počáteční a konečná lomítka." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "titulek" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "obsah" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "povolit komentáře" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "jméno šablony" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Příklad: \"flatpages/kontaktni_stranka.html\". Pokud toto není zadáno, " +"systém použije \"flatpages/default.html\"." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "nutná registrace" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto " +"stránku." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "statická stránka" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "statické stránky" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "jméno domény" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "zobrazené jméno" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "web" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "weby" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "ID objektu" @@ -26,8 +862,7 @@ msgstr "ID objektu" msgid "headline" msgstr "titulek" -#: contrib/comments/models.py:69 -#: contrib/comments/models.py:90 +#: contrib/comments/models.py:69 contrib/comments/models.py:90 #: contrib/comments/models.py:167 msgid "comment" msgstr "komentář" @@ -68,18 +903,15 @@ msgstr "hodnocení #8" msgid "is valid rating" msgstr "je platné hodnocení" -#: contrib/comments/models.py:83 -#: contrib/comments/models.py:169 +#: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" msgstr "datum/čas byl zaslán" -#: contrib/comments/models.py:84 -#: contrib/comments/models.py:170 +#: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" msgstr "je veřejné" -#: contrib/comments/models.py:85 -#: contrib/admin/views/doc.py:304 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:305 msgid "IP address" msgstr "IP adresa" @@ -88,15 +920,18 @@ msgid "is removed" msgstr "je odstraněno" #: contrib/comments/models.py:86 -msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." -msgstr "Zaškrtněte tento box, pokud komentář není vhodný. Místo něj bude zobrazena zpráva \"Tento komentář byl smazán\"." +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Zaškrtněte tento box, pokud komentář není vhodný. Místo něj bude zobrazena " +"zpráva \"Tento komentář byl smazán\"." #: contrib/comments/models.py:91 msgid "comments" msgstr "komentáře" -#: contrib/comments/models.py:131 -#: contrib/comments/models.py:207 +#: contrib/comments/models.py:131 contrib/comments/models.py:207 msgid "Content object" msgstr "objekt obsahu" @@ -137,7 +972,7 @@ msgstr "volné komentáře" #: contrib/comments/models.py:233 msgid "score" -msgstr "body" +msgstr "hodnocení" #: contrib/comments/models.py:234 msgid "score date" @@ -201,6 +1036,75 @@ msgstr "vymazané moderátorem" msgid "Moderator deletion by %r" msgstr "Vymazáno moderátorem od %r" +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Vaše jméno:" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "Komentář:" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +msgstr "Náhled komentáře" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "Uživatelské jméno:" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: 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/model_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +msgid "Log out" +msgstr "Odhlásit se" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Heslo:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Zapomenuté heslo?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Hodnocení" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Povinné" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Volitelné" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Zařadit fotografii" + #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" msgstr "Anonymní uživatelé nemohou hlasovat" @@ -214,29 +1118,37 @@ msgid "No voting for yourself" msgstr "Nelze hlasovat pro sebe" #: contrib/comments/views/comments.py:27 -msgid "This rating is required because you've entered at least one other rating." -msgstr "Toto hodnocení je povinné, protože jste zadal(a) alespoň jedno jiné hodnocení." +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"Toto hodnocení je povinné, protože jste zadal(a) alespoň jedno jiné " +"hodnocení." #: contrib/comments/views/comments.py:111 #, python-format msgid "" -"This comment was posted by a user who has posted fewer than %(count)s comment:\n" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" "\n" "%(text)s" msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s comments:\n" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" "\n" "%(text)s" msgstr[0] "" -"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %(count)s komentář:\n" +"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %" +"(count)s komentář:\n" "\n" "%(text)s" msgstr[1] "" -"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %(count)s komentáře:\n" +"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %" +"(count)s komentáře:\n" "\n" "%(text)s" msgstr[2] "" -"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %(count)s komentářů:\n" +"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %" +"(count)s komentářů:\n" "\n" "%(text)s" @@ -268,129 +1180,17 @@ msgstr "Někdo falšoval formulář komentáře (bezpečnostní narušení)" #: 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 "Formulář komentáře měl neplatný parametr 'target' -- ID objektu nebylo platné" +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"Formulář komentáře měl neplatný parametr \"target\" -- ID objektu nebylo " +"platné" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Formulář komentáře neobsahoval buď 'preview' nebo 'post'" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Uživatelské jméno:" - -#: 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" -msgstr "Odhlásit se" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Heslo:" - -#: contrib/comments/templates/comments/form.html:8 -msgid "Forgotten your password?" -msgstr "Zapomenuté heslo?" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Hodnocení" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Povinné" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Volitelné" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Zařadit fotografii" - -#: contrib/comments/templates/comments/form.html:28 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Komentář:" - -#: contrib/comments/templates/comments/form.html:35 -#: contrib/comments/templates/comments/freeform.html:10 -msgid "Preview comment" -msgstr "Náhled komentáře" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Vaše jméno:" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"

By %s:

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

    %s:

    \n" -"
      \n" - -#: contrib/admin/filterspecs.py:70 -#: contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 -#: contrib/admin/filterspecs.py:169 -msgid "All" -msgstr "Vše" - -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "Libovolné datum" - -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "Dnes" - -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "Posledních 7 dní" - -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "Tento měsíc" - -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "Tento rok" - -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Ano" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Ne" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Neznámé" +msgstr "Formulář komentáře neobsahoval buď \"preview\" nebo \"post\"" #: contrib/admin/models.py:16 msgid "action time" @@ -420,294 +1220,138 @@ msgstr "log záznam" msgid "log entries" msgstr "log záznamy" -#: contrib/admin/templatetags/admin_list.py:230 -msgid "All dates" -msgstr "Všechna data" +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

      By %s:

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

        %s:

        \n" +"
          \n" -#: 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." -msgstr "Prosíme, vložte správné uživatelské jméno a heslo. Poznámka - u obou položek se rozlišuje velikost písmen." +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "Vše" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "Libovolné datum" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "Dnes" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "Posledních 7 dní" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "Tento měsíc" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "Tento rok" + +#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:581 +#: newforms/widgets.py:182 +msgid "Yes" +msgstr "Ano" + +#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:581 +#: newforms/widgets.py:182 +msgid "No" +msgstr "Ne" + +#: contrib/admin/filterspecs.py:150 oldforms/__init__.py:581 +#: newforms/widgets.py:182 +msgid "Unknown" +msgstr "Neznámé" -#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 msgid "Log in" msgstr "Přihlášení" -#: 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 "Prosíme, znovu se přihlašte, Vaše sezení vypršelo. Nemusíte se obávat, Vaše podání je uloženo." +#: 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/base.html:30 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Domů" -#: 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 "Vypadá to, že Váš prohlížeč není nastaven, aby akceptoval cookies. Prosíme, zapněte cookies, obnovte tuto stránku a zkuste znovu." +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Chyba serveru" -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Uživatelská jména nemohou obsahovat znak '@'." +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Chyba serveru (500)" -#: contrib/admin/views/decorators.py:85 +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Chyba serveru (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Nastala chyba. Byla oznámena administrátorovi serveru pomocí e-mailu a měla " +"by být brzy odstraněna. Děkujeme za trpělivost." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Zobrazit všechny" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Provést" + +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Vaše e-mailová adresa není Vaše uživatelské jméno. Zkuste místo toho '%s'." +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 výsledek" +msgstr[1] "%(counter)s výsledky" +msgstr[2] "%(counter)s výsledků" -#: contrib/admin/views/main.py:223 -msgid "Site administration" -msgstr "Django správa" - -#: contrib/admin/views/main.py:257 -#: contrib/admin/views/auth.py:17 +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "Záznam %(name)s \"%(obj)s\" byl úspěšně přidán." +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s celkem" -#: contrib/admin/views/main.py:261 -#: contrib/admin/views/main.py:347 -#: contrib/admin/views/auth.py:22 -msgid "You may edit it again below." -msgstr "Můžete to opět upravit níže." +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtr" -#: contrib/admin/views/main.py:271 -#: contrib/admin/views/main.py:356 -#, python-format -msgid "You may add another %s below." -msgstr "Můžete přidat další %s níže." - -#: contrib/admin/views/main.py:289 -#, python-format -msgid "Add %s" -msgstr "%s: přidat" - -#: contrib/admin/views/main.py:335 -#, python-format -msgid "Added %s." -msgstr "Záznam %s byl přidán." - -#: contrib/admin/views/main.py:335 -#: contrib/admin/views/main.py:337 -#: contrib/admin/views/main.py:339 -msgid "and" -msgstr "a" - -#: contrib/admin/views/main.py:337 -#, python-format -msgid "Changed %s." -msgstr "%s: změněno" - -#: contrib/admin/views/main.py:339 -#, python-format -msgid "Deleted %s." -msgstr "Záznam %s byl smazán." - -#: contrib/admin/views/main.py:342 -msgid "No fields changed." -msgstr "Nebyly změněny žádné pole." - -#: contrib/admin/views/main.py:345 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" byl úspěšně změněn." - -#: contrib/admin/views/main.py:353 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "The %(name)s \"%(obj)s\" byl úspěšně přidán. Můžete to opět upravit níže." - -#: contrib/admin/views/main.py:391 -#, python-format -msgid "Change %s" -msgstr "%s: změnit" - -#: contrib/admin/views/main.py:473 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Jedno nebo více %(fieldname)s z %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:478 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Jedno nebo více %(fieldname)s z %(name)s:" - -#: contrib/admin/views/main.py:511 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "Záznam %(name)s \"%(obj)s\" byl úspěšně smazán." - -#: contrib/admin/views/main.py:514 -msgid "Are you sure?" -msgstr "Jste si jist(á)?" - -#: contrib/admin/views/main.py:536 -#, python-format -msgid "Change history: %s" -msgstr "Historie změn: %s" - -#: contrib/admin/views/main.py:570 -#, python-format -msgid "Select %s" -msgstr "Vybrat %s" - -#: contrib/admin/views/main.py:570 -#, python-format -msgid "Select %s to change" -msgstr "Vyberte %s pro změnu" - -#: contrib/admin/views/main.py:758 -msgid "Database error" -msgstr "Databázová chyba" - -#: contrib/admin/views/doc.py:46 -#: contrib/admin/views/doc.py:48 -#: contrib/admin/views/doc.py:50 -msgid "tag:" -msgstr "tag:" - -#: contrib/admin/views/doc.py:77 -#: contrib/admin/views/doc.py:79 -#: contrib/admin/views/doc.py:81 -msgid "filter:" -msgstr "filtr:" - -#: contrib/admin/views/doc.py:135 -#: contrib/admin/views/doc.py:137 -#: contrib/admin/views/doc.py:139 -msgid "view:" -msgstr "pohled (view):" - -#: contrib/admin/views/doc.py:164 -#, python-format -msgid "App %r not found" -msgstr "Aplikace %r nenalezena" - -#: contrib/admin/views/doc.py:171 -#, python-format -msgid "Model %r not found in app %r" -msgstr "Model %r v aplikaci %r nenalezen" - -#: contrib/admin/views/doc.py:183 -#, python-format -msgid "the related `%s.%s` object" -msgstr "související objekt `%s.%s`" - -#: contrib/admin/views/doc.py:183 -#: contrib/admin/views/doc.py:205 -#: contrib/admin/views/doc.py:219 -#: contrib/admin/views/doc.py:224 -msgid "model:" -msgstr "model:" - -#: contrib/admin/views/doc.py:214 -#, python-format -msgid "related `%s.%s` objects" -msgstr "související objekty `%s.%s`" - -#: contrib/admin/views/doc.py:219 -#, python-format -msgid "all %s" -msgstr "%s: vše" - -#: contrib/admin/views/doc.py:224 -#, python-format -msgid "number of %s" -msgstr "%s: počet" - -#: contrib/admin/views/doc.py:229 -#, python-format -msgid "Fields on %s objects" -msgstr "Pole na objektech %s" - -#: contrib/admin/views/doc.py:291 -#: contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:303 -#: contrib/admin/views/doc.py:309 -#: contrib/admin/views/doc.py:310 -#: contrib/admin/views/doc.py:312 -msgid "Integer" -msgstr "Celé číslo" - -#: contrib/admin/views/doc.py:292 -msgid "Boolean (Either True or False)" -msgstr "Boolean (buď Ano (True), nebo Ne (False))" - -#: contrib/admin/views/doc.py:293 -#: contrib/admin/views/doc.py:311 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Text (maximálně %(maxlength)s znaků)" - -#: contrib/admin/views/doc.py:294 -msgid "Comma-separated integers" -msgstr "Celá čísla oddělená čárkou" - -#: contrib/admin/views/doc.py:295 -msgid "Date (without time)" -msgstr "Datum (bez času)" - -#: contrib/admin/views/doc.py:296 -msgid "Date (with time)" -msgstr "Datum (s časem)" - -#: contrib/admin/views/doc.py:297 -msgid "E-mail address" -msgstr "E-mailová adresa" - -#: contrib/admin/views/doc.py:298 -#: contrib/admin/views/doc.py:299 -#: contrib/admin/views/doc.py:302 -msgid "File path" -msgstr "Cesta k souboru" - -#: contrib/admin/views/doc.py:300 -msgid "Decimal number" -msgstr "Desetiné číslo" - -#: contrib/admin/views/doc.py:306 -msgid "Boolean (Either True, False or None)" -msgstr "Boolean (buď Ano (True), Ne (False), nebo Nic (None))" - -#: contrib/admin/views/doc.py:307 -msgid "Relation to parent model" -msgstr "V relaci k rodičovskému modelu" - -#: contrib/admin/views/doc.py:308 -msgid "Phone number" -msgstr "Telefonní číslo" - -#: contrib/admin/views/doc.py:313 -msgid "Text" -msgstr "Text" - -#: contrib/admin/views/doc.py:314 -msgid "Time" -msgstr "Čas" - -#: contrib/admin/views/doc.py:315 -#: contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admin/views/doc.py:316 -msgid "U.S. state (two uppercase letters)" -msgstr "Stát US (2 velké znaky)" - -#: contrib/admin/views/doc.py:317 -msgid "XML text" -msgstr "text XML" - -#: contrib/admin/views/doc.py:343 -#, python-format -msgid "%s does not appear to be a urlpattern object" -msgstr "%s pravděpodobně není objekt urlpattern" - -#: contrib/admin/views/auth.py:28 -msgid "Add user" -msgstr "Přidat uživatele" +#: 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 "" +"Něco není v pořádku s Vaší instalací databáze. Ujistěte se, že byly " +"vytvořeny odpovídající tabulky databáze a že databáze je přístupná pro čtení " +"daným databázovým uživatelem." #: 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/change_list.html:5 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 @@ -715,43 +1359,30 @@ msgid "Documentation" msgstr "Dokumentace" #: 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/change_list.html:5 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 msgid "Change password" msgstr "Změnit heslo" #: 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 "Domů" - -#: 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 "Historie" @@ -772,32 +1403,21 @@ msgid "DATE_WITH_TIME_FULL" msgstr "j. N Y, H:i" #: 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 "Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes administrátorské rozhraní." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes " +"administrátorské rozhraní." -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django správa webu" +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Vítejte, uživateli" -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Django správa" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Chyba serveru" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Chyba serveru (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Chyba serveru (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." -msgstr "Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a měla by být brzy odstraněna. Děkujeme za trpělivost." +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "%(name)s: přidat" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -808,6 +1428,32 @@ msgstr "Stránka nenalezena" msgid "We're sorry, but the requested page could not be found." msgstr "Je nám líto, ale vyžádaná stránka nebyla nalezena." +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Dle: %(filter_title)s " + +#: contrib/admin/templates/admin/submit_line.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:9 +msgid "Delete" +msgstr "Smazat" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Uložit jako nový záznam" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Uložit a přidat další záznam" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Uložit a pokračovat v úpravách" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Uložit" + #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." @@ -843,127 +1489,126 @@ msgstr "Mé akce" msgid "None available" msgstr "Nic" -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "%(name)s: přidat" - -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Zapomněl(a) jste své heslo?" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Vítejte," - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Smazat" - #: 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 "Mazání %(object_name)s '%(escaped_object)s' by vyústilo ve vymazání souvisejících objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:" +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 "" +"Smazání záznamu \"%(escaped_object)s\" typu \"%(object_name)s\" by vyústilo " +"ve vymazání souvisejících objektů, ale Váš účet nemá oprávnění pro mazání " +"následujících typů objektů:" #: 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 "Jste si jist(á), že chcete smazat %(object_name)s \"%(escaped_object)s\"? Všechny následující související položky budou smazány:" +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 "" +"Jste si jist(á), že chcete smazat záznam \"%(escaped_object)s\" typu \"%" +"(object_name)s\"? Všechny následující související položky budou smazány:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" -msgstr "Ano, jsem si jist" +msgstr "Ano, jsem si jist(á)" -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Dle %(filter_title)s " +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django správa webu" -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Provést" +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django správa" -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 výsledek" -msgstr[1] "%(counter)s výsledky" -msgstr[2] "%(counter)s výsledků" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "celkem %(full_result_count)s" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Zobrazit všechny" - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filtr" - -#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" msgstr "Pohled na stránku" -#: contrib/admin/templates/admin/change_form.html:30 +#: 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] "Prosíme, odstraňte chybu uvedenou níže." msgstr[1] "Prosíme, odstraňte chyby uvedené níže." msgstr[2] "Prosíme, odstraňte chyby uvedené níže." -#: contrib/admin/templates/admin/change_form.html:48 +#: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" -msgstr "Objednávání" +msgstr "Seřazeno" -#: contrib/admin/templates/admin/change_form.html:51 +#: contrib/admin/templates/admin/change_form.html:53 msgid "Order:" -msgstr "Objednávka:" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Uložit jako nové" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Uložit a přidat další" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Uložit a pokračovat v úpravách" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Uložit" - -#: 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 "Něco není v pořádku s Vaší instalací databáze. Ujistěte se, že byly vytvořeny odpovídající tabulky databáze a že databáze je přístupná pro čtení daným databázovým uživatelem." +msgstr "Pořadí:" #: 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 "Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více uživatelských možností." +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více " +"uživatelských možností." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" msgstr "Uživatelské jméno" #: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 msgid "Password" msgstr "Heslo" #: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 msgid "Password (again)" -msgstr "Heslo (znova)" +msgstr "Heslo (znovu)" #: 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 "Pro ověření vložte stejné heslo znovu." +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Vložte nové heslo pro uživatele %(username)s." + +#: 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 "Obnovení hesla" + +#: 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 "" +"Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo " +"obnovíme a zašleme Vám e-mailem nové." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-mailová adresa:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Obnovit heslo" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Obnovení hesla bylo úspěšné" + +#: 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 "" +"Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) " +"byste ji dostat během okamžiku." + #: 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 @@ -980,45 +1625,13 @@ msgstr "Změna hesla byla úspěšná" msgid "Your password was changed." msgstr "Vaše heslo bylo změněno." -#: 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 "Obnovení hesla" - -#: 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 "Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo obnovíme a zašleme Vám e-mailem nové." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "E-mailová adresa:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Obnovit mé heslo" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Děkujeme Vám za Váš strávený čas na našich webových stránkách." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Přihlašte se znova" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Obnovení hesla bylo úspěšné" - -#: 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 "Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) byste ji dostat během okamžiku." - #: 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 "Vložte svoje staré heslo a poté vložte dvakrát nové heslo. Tak můžeme ověřit, že jste ho napsal(a) správně." +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 "" +"Vložte svoje staré heslo a poté vložte dvakrát nové heslo. Tak můžeme " +"ověřit, že jste ho napsal(a) správně." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -1034,7 +1647,7 @@ msgstr "Potvrdit heslo:" #: contrib/admin/templates/registration/password_change_form.html:23 msgid "Change my password" -msgstr "Změnit mé heslo" +msgstr "Změnit heslo" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -1067,6 +1680,30 @@ msgstr "Děkujeme za používání našeho webu!" msgid "The %(site_name)s team" msgstr "Tým %(site_name)s" +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Děkujeme Vám za Váš strávený čas na našich webových stránkách." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Přihlašte se znovu" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Momentálně:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Změna:" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Datum:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Čas:" + #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" msgstr "Bookmarklety" @@ -1086,11 +1723,15 @@ msgid "" "your computer is \"internal\").

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

          Pro nainstalování bookmarkletů, přetáhněte odkaz na Vaše záložky (oblíbené),\n" -"nebo klikněte pravým tlačítkem na odkaz a přidejte ho k Vašim záložkám (oblíbeným). Nyní můžete\n" +"

          Pro nainstalování bookmarkletů, přetáhněte odkaz na Vaše " +"záložky (oblíbené),\n" +"nebo klikněte pravým tlačítkem na odkaz a přidejte ho k Vašim záložkám " +"(oblíbeným). Nyní můžete\n" "zvolit bookmarklet z libovolné stránky. Poznámka: Některé tyto\n" -"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je nastaven jako\n" -"\"interní\" (promluvte si s Vaším administrátorem, jestli si nejste jisti,\n" +"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je " +"nastaven jako\n" +"\"\"interní\" (promluvte si s Vaším administrátorem, jestli si nejste " +"jisti,\n" "zda je Váš počítač \"interní\").

          \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 @@ -1098,16 +1739,24 @@ msgid "Documentation for this page" msgstr "Dokumentace pro tuto stránku" #: 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 "Z libovolné stránky otevře dokumentaci pro pohled, který vygeneroval tuto stránku." +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Z libovolné stránky otevře dokumentaci pro pohled, který vygeneroval tuto " +"stránku." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" msgstr "Ukázat id objektu" #: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Ukáže content-type a unikátní ID pro stránky, které reprezentují jeden objekt." +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Ukáže content-type a unikátní ID pro stránky, které reprezentují jeden " +"objekt." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" @@ -1125,349 +1774,1168 @@ msgstr "Upravit tento objekt (ve novém okně)" msgid "As above, but opens the admin page in a new window." msgstr "Jako výše, ale otevře admin stránky v novém okně." -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Datum:" +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "tag:" -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Čas:" +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "filtr:" -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Momentálně:" +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "pohled (view):" -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Změna:" +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "Aplikace %r nenalezena" -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "přesměrovat z" +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Model %(name)r v aplikaci %(label)r nenalezen" -#: contrib/redirects/models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'." +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "související objekt `%(label)s.%(type)s`" -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "přesměrovat na" +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "model:" -#: contrib/redirects/models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na 'http://'." +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "související objekty `%(label)s.%(name)s`" -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "přesměrovat" +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "Vše: %s" -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "přesměrování" +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "Počet: %s" -#: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka." +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Pole na objektech %s" -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "titulek" +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 +#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 +msgid "Integer" +msgstr "Celé číslo" -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "obsah" +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Boolean (buď Ano (True), nebo Ne (False))" -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "povolit komentáře" +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "Text (maximálně %(maxlength)s znaků)" -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "jméno šablony" +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Celá čísla oddělená čárkou" -#: contrib/flatpages/models.py:13 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "Například: 'flatpages/kontaktni_stranka.html'. Pokud toto není zadáno, systém použije 'flatpages/default.html'." +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Datum (bez času)" -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "nutná registrace" +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Datum (s časem)" -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto stránku." +#: contrib/admin/views/doc.py:297 +msgid "Decimal number" +msgstr "Desetinné číslo" -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "statická stránka" +#: contrib/admin/views/doc.py:298 +msgid "E-mail address" +msgstr "E-mailová adresa" -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "statické stránky" +#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:303 +msgid "File path" +msgstr "Cesta k souboru" -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "Odhlášeno" +#: contrib/admin/views/doc.py:301 +msgid "Floating point number" +msgstr "Celé číslo" -#: contrib/auth/models.py:38 -#: contrib/auth/models.py:57 -msgid "name" -msgstr "jméno" +#: contrib/admin/views/doc.py:307 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (buď Ano (True), Ne (False), nebo Nic (None))" -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "codename" +#: contrib/admin/views/doc.py:308 +msgid "Relation to parent model" +msgstr "V relaci k rodičovskému modelu" -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "oprávnění" +#: contrib/admin/views/doc.py:309 +msgid "Phone number" +msgstr "Telefonní číslo" -#: contrib/auth/models.py:43 -#: contrib/auth/models.py:58 -msgid "permissions" -msgstr "oprávnění" +#: contrib/admin/views/doc.py:314 +msgid "Text" +msgstr "Text" -#: contrib/auth/models.py:60 -msgid "group" -msgstr "skupina" +#: contrib/admin/views/doc.py:315 +msgid "Time" +msgstr "Čas" -#: contrib/auth/models.py:61 -#: contrib/auth/models.py:100 -msgid "groups" -msgstr "skupiny" +#: contrib/admin/views/doc.py:317 +msgid "U.S. state (two uppercase letters)" +msgstr "Stát US (2 velké znaky)" -#: contrib/auth/models.py:90 -msgid "username" -msgstr "uživatelské jméno" +#: contrib/admin/views/doc.py:318 +msgid "XML text" +msgstr "XML text" -#: contrib/auth/models.py:90 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "Požadováno. 30 znaků nebo méně. Pouze alfanumerické znaky (znaky, čísla a podtržítka)." +#: contrib/admin/views/doc.py:344 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s pravděpodobně není objekt urlpattern" -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "křestní jméno" +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně přidán." -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "příjmení" +#: 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 "V úpravách můžete pokračovat níže." -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "e-mailová adresa" +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Uživatel: přidat" -#: contrib/auth/models.py:94 -msgid "password" -msgstr "heslo" +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Změna hesla byla úspěšná" -#: contrib/auth/models.py:94 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Použijte '[algo]$[salt]$[hexdigest]'" +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Heslo pro uživatele %s: změnit" -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "administrativní přístup " +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Django správa" -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Rozhodne, zda se může uživatel přihlásit do správy webu." +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "Další záznam typu \"%s\" můžete přidat níže." -#: contrib/auth/models.py:96 -msgid "active" -msgstr "aktivní" +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "%s: přidat" -#: contrib/auth/models.py:96 -msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." -msgstr "Rozhodne, zda se může uživatel přihlásit do správy webu. Nastavte toto místo mazání účtů." +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "Záznam %s přidán." -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "stav superuživatel" +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 db/models/manipulators.py:308 +msgid "and" +msgstr "a" -#: contrib/auth/models.py:97 -msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "Stanoví, že tento uživatel má veškerá oprávnění bez jejich explicitního přiřazení." +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "Záznam %s změněn." -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "poslední přihlášení" +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "Záznam %s smazán." -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "datum zaregistrování" +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "Nebyly změněny žádná pole." -#: 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 "Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro každou skupinu, ve které je." +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně změněn." -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "uživatelskí oprávnění" +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně přidán. Níže můžete v " +"úpravách pokračovat." -#: contrib/auth/models.py:105 -msgid "user" -msgstr "uživatel" +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "%s: změnit" -#: contrib/auth/models.py:106 -msgid "users" -msgstr "uživatelé" +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "" +"Položka \"%(fieldname)s\" pro tento záznam typu \"%(name)s\": \"%(obj)s\"" -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Osobní informace" +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Položka \"%(fieldname)s\" pro tento záznam typu \"%(name)s\":" -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Oprávnění" +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně smazán." -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Důležitá data" +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "Jste si jist(á)?" -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Skupiny" +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "Historie změn: %s" -#: contrib/auth/models.py:256 -msgid "message" -msgstr "zpráva" +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "%s: vybrat" -#: contrib/auth/forms.py:52 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." -msgstr "Váš prohlížeč pravděpodobně nemá zapnuté cookies. Cookies jsou potřeba pro zalogování." +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "%s: vybrat pro změnu" -#: contrib/auth/forms.py:61 -msgid "This account is inactive." -msgstr "Tento účet není aktivní." +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Databázová chyba" -#: contrib/contenttypes/models.py:20 -msgid "python model class name" -msgstr "jméno modelu Pythonu" +#: 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 "" +"Prosíme, znovu se přihlašte, Vaše sezení vypršelo. Nemusíte se obávat, Vaše " +"podání je uloženo." -#: contrib/contenttypes/models.py:23 -msgid "content type" -msgstr "typ obsahu" +#: 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 "" +"Vypadá to, že Váš prohlížeč není nastaven, aby akceptoval cookies. Prosíme, " +"zapněte cookies, obnovte tuto stránku a zkuste znovu." -#: contrib/contenttypes/models.py:24 -msgid "content types" -msgstr "typy obsahu" +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Uživatelská jména nemohou obsahovat znak \"@\"." -#: contrib/sessions/models.py:51 +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Vaše e-mailová adresa není Vaše uživatelské jméno. Zkuste místo toho \"%s\"." + +#: contrib/admin/templatetags/admin_list.py:249 +msgid "All dates" +msgstr "Všechna data" + +#: contrib/sessions/models.py:68 msgid "session key" msgstr "klíč sezení" -#: contrib/sessions/models.py:52 +#: contrib/sessions/models.py:69 msgid "session data" msgstr "data sezení" -#: contrib/sessions/models.py:53 +#: contrib/sessions/models.py:70 msgid "expire date" msgstr "datum expirace" -#: contrib/sessions/models.py:57 +#: contrib/sessions/models.py:74 msgid "session" msgstr "sezení" -#: contrib/sessions/models.py:58 +#: contrib/sessions/models.py:75 msgid "sessions" msgstr "sezení" -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "jméno domény" +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "arabsky" -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "zobrazené jméno" +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "bengálsky" -#: contrib/sites/models.py:15 -msgid "site" -msgstr "web" +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "bulharsky" -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "weby" +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "katalánsky" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "česky" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "welšsky" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "dánsky" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "německy" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "řecky" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "anglicky" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "španělsky" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "argentinskou španělštinou" + +#: conf/global_settings.py:51 +msgid "Finnish" +msgstr "finsky" + +#: conf/global_settings.py:52 +msgid "French" +msgstr "francouzsky" + +#: conf/global_settings.py:53 +msgid "Galician" +msgstr "galicijsky" + +#: conf/global_settings.py:54 +msgid "Hungarian" +msgstr "maďarsky" + +#: conf/global_settings.py:55 +msgid "Hebrew" +msgstr "hebrejsky" + +#: conf/global_settings.py:56 +msgid "Icelandic" +msgstr "islandsky" + +#: conf/global_settings.py:57 +msgid "Italian" +msgstr "italsky" + +#: conf/global_settings.py:58 +msgid "Japanese" +msgstr "japonsky" + +#: conf/global_settings.py:59 +msgid "Korean" +msgstr "korejsky" + +#: conf/global_settings.py:60 +msgid "Kannada" +msgstr "kannadsky" + +#: conf/global_settings.py:61 +msgid "Latvian" +msgstr "litevsky" + +#: conf/global_settings.py:62 +msgid "Macedonian" +msgstr "makedonsky" + +#: conf/global_settings.py:63 +msgid "Dutch" +msgstr "holandsky" + +#: conf/global_settings.py:64 +msgid "Norwegian" +msgstr "norsky" + +#: conf/global_settings.py:65 +msgid "Polish" +msgstr "polsky" + +#: conf/global_settings.py:66 +msgid "Portugese" +msgstr "portugalsky" + +#: conf/global_settings.py:67 +msgid "Brazilian" +msgstr "brazilsky" + +#: conf/global_settings.py:68 +msgid "Romanian" +msgstr "rumunsky" + +#: conf/global_settings.py:69 +msgid "Russian" +msgstr "rusky" + +#: conf/global_settings.py:70 +msgid "Slovak" +msgstr "slovensky" + +#: conf/global_settings.py:71 +msgid "Slovenian" +msgstr "slovinsky" + +#: conf/global_settings.py:72 +msgid "Serbian" +msgstr "srbsky" + +#: conf/global_settings.py:73 +msgid "Swedish" +msgstr "švédsky" + +#: conf/global_settings.py:74 +msgid "Tamil" +msgstr "tamilsky" + +#: conf/global_settings.py:75 +msgid "Telugu" +msgstr "telužsky" + +#: conf/global_settings.py:76 +msgid "Turkish" +msgstr "turecky" + +#: conf/global_settings.py:77 +msgid "Ukrainian" +msgstr "ukrajinsky" + +#: conf/global_settings.py:78 +msgid "Simplified Chinese" +msgstr "jednoduchou čínštinou" + +#: conf/global_settings.py:79 +msgid "Traditional Chinese" +msgstr "tradiční čínštinou" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "Záznam typu \"%(verbose_name)s\" byl úspěšně vytvořen." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "Záznam typu \"%(verbose_name)s\" byl úspěšně změnen." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "Záznam typu \"%(verbose_name)s\" byl smazán." + +#: oldforms/__init__.py:361 db/models/fields/__init__.py:121 +#: db/models/fields/__init__.py:278 db/models/fields/__init__.py:675 +#: db/models/fields/__init__.py:686 newforms/models.py:185 +#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:520 +#: newforms/fields.py:531 +msgid "This field is required." +msgstr "Toto pole je povinné." + +#: oldforms/__init__.py:396 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Ujistěte se, že Váš text má méně než %s znak." +msgstr[1] "Ujistěte se, že Váš text má méně než %s znaky." +msgstr[2] "Ujistěte se, že Váš text má méně než %s znaků." + +#: oldforms/__init__.py:401 +msgid "Line breaks are not allowed here." +msgstr "Zalomení řádky zde není povoleno." + +#: oldforms/__init__.py:502 oldforms/__init__.py:575 oldforms/__init__.py:614 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Vyberte platnou volbu. \"%(data)s\" není mezi %(choices)s." + +#: oldforms/__init__.py:676 core/validators.py:175 core/validators.py:453 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Soubor nebyl odeslán. Zkontrolujte \"encoding type\" formuláře." + +#: oldforms/__init__.py:678 +msgid "The submitted file is empty." +msgstr "Poslaný soubor je prázdný." + +#: oldforms/__init__.py:734 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Vložte celé číslo mezi -32768 a 32767." + +#: oldforms/__init__.py:744 +msgid "Enter a positive number." +msgstr "Vložte celé kladné číslo." + +#: oldforms/__init__.py:754 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Vložte celé číslo mezi 0 a 32767." + +#: core/validators.py:65 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka." + +#: core/validators.py:69 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka, pomlčky nebo " +"lomítka." + +#: core/validators.py:73 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo čárky." + +#: core/validators.py:77 +msgid "Uppercase letters are not allowed here." +msgstr "Velká písmena zde nejsou povolená." + +#: core/validators.py:81 +msgid "Lowercase letters are not allowed here." +msgstr "Malá písmena zde nejsou povolená." + +#: core/validators.py:88 +msgid "Enter only digits separated by commas." +msgstr "Vložte pouze cifry oddělené čárkami." + +#: core/validators.py:100 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Vložte platné e-mailové adresy oddělené čárkami." + +#: core/validators.py:104 +msgid "Please enter a valid IP address." +msgstr "Prosíme, zadejte platnou IP adresu." + +#: core/validators.py:108 +msgid "Empty values are not allowed here." +msgstr "Zde nejsou povolené prázdné hodnoty." + +#: core/validators.py:112 +msgid "Non-numeric characters aren't allowed here." +msgstr "Znaky, které nejsou čísla, zde nejsou povoleny." + +#: core/validators.py:116 +msgid "This value can't be comprised solely of digits." +msgstr "Tato hodnota nemůže být složená pouze z cifer." + +#: core/validators.py:121 newforms/fields.py:135 +msgid "Enter a whole number." +msgstr "Vložte celé číslo." + +#: core/validators.py:125 +msgid "Only alphabetical characters are allowed here." +msgstr "Zde jsou povoleny pouze alfanumerické znaky." + +#: core/validators.py:140 +msgid "Year must be 1900 or later." +msgstr "Rok musí být 1900 a vyšší." + +#: core/validators.py:144 +#, python-format +msgid "Invalid date: %s" +msgstr "Neplatné datum: %s" + +#: core/validators.py:149 db/models/fields/__init__.py:463 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Vložte platné datum ve formátu RRRR-MM-DD." + +#: core/validators.py:154 +msgid "Enter a valid time in HH:MM format." +msgstr "Vložte platný čas ve formátu HH:MM." + +#: core/validators.py:158 db/models/fields/__init__.py:532 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM." + +#: core/validators.py:163 newforms/fields.py:339 +msgid "Enter a valid e-mail address." +msgstr "Vložte platnou e-mailovou adresu." + +#: core/validators.py:179 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Nahrajte na server platný obrázek. Poslaný soubor nebyl obrázkem nebo byl " +"poškozen." + +#: core/validators.py:186 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s neodkazuje na platný obrázek." + +#: core/validators.py:190 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Telefonní čísla musí být ve formátu XXX-XXX-XXXX. \"%s\" není platné." + +#: core/validators.py:198 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s neodkazuje na platné video ve formátu QuickTime." + +#: core/validators.py:202 +msgid "A valid URL is required." +msgstr "Je vyžadováno platné URL." + +#: core/validators.py:216 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Je vyžadováno platné HTML. Konkrétní chyby jsou:\n" +"%s" + +#: core/validators.py:223 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Špatně formované XML: %s" + +#: core/validators.py:240 +#, python-format +msgid "Invalid URL: %s" +msgstr "Neplatné URL: %s" + +#: core/validators.py:245 core/validators.py:247 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Odkaz na URL %s nefunguje." + +#: core/validators.py:253 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Vložte platnou zkratku U.S. státu." + +#: core/validators.py:267 +#, 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] "Mluvte slušně! Slovo %s zde není přípustné." +msgstr[1] "Mluvte slušně! Slova %s zde nejsou přípustná." +msgstr[2] "Mluvte slušně! Slova %s zde nejsou přípustná." + +#: core/validators.py:274 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Toto pole se musí shodovat s polem \"%s\"." + +#: core/validators.py:293 +msgid "Please enter something for at least one field." +msgstr "Prosíme, vložte něco alespoň pro jedno pole." + +#: core/validators.py:302 core/validators.py:313 +msgid "Please enter both fields or leave them both empty." +msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná." + +#: core/validators.py:321 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Toto pole musí být vyplněno, když %(field)s má %(value)s" + +#: core/validators.py:334 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Toto pole musí být vyplněno, když %(field)s nemá %(value)s" + +#: core/validators.py:353 +msgid "Duplicate values are not allowed." +msgstr "Duplikátní hodnoty nejsou povolené." + +#: core/validators.py:368 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Tato hodnota musí být mezi %(lower)s and %(upper)s." + +#: core/validators.py:370 +#, python-format +msgid "This value must be at least %s." +msgstr "Tato hodnota musí alespoň %s." + +#: core/validators.py:372 +#, python-format +msgid "This value must be no more than %s." +msgstr "Tato hodnota nesmí být více než %s." + +#: core/validators.py:408 +#, python-format +msgid "This value must be a power of %s." +msgstr "Tato hodnota musí být mocninou %s." + +#: core/validators.py:417 +msgid "Please enter a valid decimal number." +msgstr "Prosíme, vložte platné číslo." + +#: core/validators.py:423 +#, 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] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem." +msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." +msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." + +#: core/validators.py:426 +#, 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] "Prosíme, vložte platné číslo s nejvíce %s cifrou." +msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi." +msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi." + +#: core/validators.py:429 +#, 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] "" +"Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem." +msgstr[1] "" +"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou " +"celkem." +msgstr[2] "" +"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou " +"celkem." + +#: core/validators.py:437 +msgid "Please enter a valid floating point number." +msgstr "Prosíme, vložte platné reálné číslo." + +#: core/validators.py:446 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Ujistěte se, že poslaný soubor má nejméně %s bytů." + +#: core/validators.py:447 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Ujistěte se, že soubor má nejvíce %s bytů." + +#: core/validators.py:464 +msgid "The format for this field is wrong." +msgstr "Formát pro toto pole je špatný." + +#: core/validators.py:479 +msgid "This field is invalid." +msgstr "Toto pole není platné." + +#: core/validators.py:515 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Nelze získat nic z %s." + +#: core/validators.py:518 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"URL %(url)s vrátilo neplatnou hlavičku Content-Type \"%(contenttype)s\"." + +#: core/validators.py:551 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s " +"\"%(start)s\".)" + +#: core/validators.py:555 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. " +"(Řádka začíná s \"%(start)s\".)" + +#: core/validators.py:560 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%" +"(start)s\".)" + +#: core/validators.py:565 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%" +"(start)s\".)" + +#: core/validators.py:569 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. " +"(Řádka začíná s \"%(start)s\".)" + +#: core/validators.py:574 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s " +"\"%(start)s\".)" + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" +"%(object)s s takto vyplněným polem \"%(type)s\" již existuje pro dané pole " +"\"%(field)s\"." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Prosíme, zadejte %s správně." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Oddělte více identifikátorů čárkami." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Podržte \"Control\" (nebo \"Command\" na Macu) pro vybrání více jak jedné " +"položky." + +#: 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] "Prosíme, vložte platná %(self)s ID. Hodnota %(value)r není platná." +msgstr[1] "" +"Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné." +msgstr[2] "" +"Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné." + +#: db/models/fields/__init__.py:46 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s s takto vyplněným polem \"%(fieldname)s\" již existuje." + +#: db/models/fields/__init__.py:373 +msgid "This value must be an integer." +msgstr "Tato hodnota musí být celé číslo." + +#: db/models/fields/__init__.py:408 +msgid "This value must be either True or False." +msgstr "Tato hodnota musí být buď Ano (True), nebo Ne (False)." + +#: db/models/fields/__init__.py:429 +msgid "This field cannot be null." +msgstr "Toto pole nemůže být prázdné (null)." + +#: db/models/fields/__init__.py:592 +msgid "This value must be a decimal number." +msgstr "Tato hodnota musí být celé číslo." + +#: db/models/fields/__init__.py:695 +msgid "Enter a valid filename." +msgstr "Vložte platný název souboru." + +#: db/models/fields/__init__.py:818 +msgid "This value must be either None, True or False." +msgstr "Tato hodnota musí být buď Nic (None), Ano (True) nebo Ne (False)." + +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "ano, ne, možná" + +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: newforms/models.py:172 newforms/fields.py:432 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Vyberte platnou možnost. Tato není dostupná." + +#: newforms/models.py:189 newforms/fields.py:448 newforms/fields.py:524 +msgid "Enter a list of values." +msgstr "Vložte seznam hodnot." + +#: newforms/models.py:195 newforms/fields.py:457 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Vyberte platnou možnost. Volba %s není dostupná." + +#: newforms/fields.py:110 newforms/fields.py:324 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Tato hodnota musí mít nejvíce %d znaků." + +#: newforms/fields.py:112 newforms/fields.py:326 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Tato hodnota musí mít nejméně %d znaků." + +#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Tato hodnota musí být menší nebo rovná %s." + +#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Tato hodnota musí být větší nebo rovná %s." + +#: newforms/fields.py:158 newforms/fields.py:186 +msgid "Enter a number." +msgstr "Vložte číslo." + +#: newforms/fields.py:196 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Tato hodnota nesmí mít celkem více než %s cifer." + +#: newforms/fields.py:198 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Tato hodnota nesmí mít za desetinou čárkou více než %s cifer." + +#: newforms/fields.py:200 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Tato hodnota nesmí mít před desetinnou čárkou více než %s cifer." + +#: newforms/fields.py:233 +msgid "Enter a valid date." +msgstr "Vložte platné datum." + +#: newforms/fields.py:260 +msgid "Enter a valid time." +msgstr "Vložte platný čas." + +#: newforms/fields.py:296 +msgid "Enter a valid date/time." +msgstr "Vložte platný datum a čas." + +#: newforms/fields.py:310 +msgid "Enter a valid value." +msgstr "Vložte platnou hodnotu." + +#: newforms/fields.py:357 newforms/fields.py:379 +msgid "Enter a valid URL." +msgstr "Vložte platnou URL." + +#: newforms/fields.py:381 +msgid "This URL appears to be a broken link." +msgstr "Tento odkaz nefunguje." + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "rok" +msgstr[1] "roky" +msgstr[2] "let" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "měsíc" +msgstr[1] "měsíce" +msgstr[2] "měsíců" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "týden" +msgstr[1] "týdny" +msgstr[2] "týdnů" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "den" +msgstr[1] "dny" +msgstr[2] "dnů" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hodina" +msgstr[1] "hodiny" +msgstr[2] "hodin" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuta" +msgstr[1] "minuty" +msgstr[2] "minut" + +#: utils/timesince.py:40 +#, python-format +msgid "%d milliseconds" +msgstr "" + +#: utils/timesince.py:41 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:47 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "odp." + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "dop." + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "odp." + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "dop." + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "půlnoc" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "poledne" #: utils/dates.py:6 msgid "Monday" -msgstr "Pondělí" +msgstr "pondělí" #: utils/dates.py:6 msgid "Tuesday" -msgstr "Úterý" +msgstr "úterý" #: utils/dates.py:6 msgid "Wednesday" -msgstr "Středa" +msgstr "středa" #: utils/dates.py:6 msgid "Thursday" -msgstr "Čtvrtek" +msgstr "čtvrtek" #: utils/dates.py:6 msgid "Friday" -msgstr "Pátek" +msgstr "pátek" #: utils/dates.py:7 msgid "Saturday" -msgstr "Sobota" +msgstr "sobota" #: utils/dates.py:7 msgid "Sunday" -msgstr "Neděle" +msgstr "neděle" #: utils/dates.py:14 msgid "January" -msgstr "Leden" +msgstr "leden" #: utils/dates.py:14 msgid "February" -msgstr "Únor" +msgstr "únor" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "March" -msgstr "Březen" +msgstr "březen" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "April" -msgstr "Duben" +msgstr "duben" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "May" -msgstr "Květen" +msgstr "květen" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "June" -msgstr "Červen" +msgstr "červen" -#: utils/dates.py:15 -#: utils/dates.py:27 +#: utils/dates.py:15 utils/dates.py:27 msgid "July" -msgstr "Červenec" +msgstr "červenec" #: utils/dates.py:15 msgid "August" -msgstr "Srpen" +msgstr "srpen" #: utils/dates.py:15 msgid "September" -msgstr "Září" +msgstr "září" #: utils/dates.py:15 msgid "October" -msgstr "Říjen" +msgstr "říjen" #: utils/dates.py:15 msgid "November" -msgstr "Listopad" +msgstr "listopad" #: utils/dates.py:16 msgid "December" -msgstr "Prosinec" +msgstr "prosinec" #: utils/dates.py:19 msgid "jan" @@ -1519,592 +2987,48 @@ msgstr "pro" #: utils/dates.py:27 msgid "Jan." -msgstr "Led." +msgstr "led." #: utils/dates.py:27 msgid "Feb." -msgstr "Ún." +msgstr "ún." #: utils/dates.py:28 msgid "Aug." -msgstr "Srp." +msgstr "srp." #: utils/dates.py:28 msgid "Sept." -msgstr "Zář." +msgstr "zář." #: utils/dates.py:28 msgid "Oct." -msgstr "Říj." +msgstr "říj." #: utils/dates.py:28 msgid "Nov." -msgstr "List." +msgstr "list." #: utils/dates.py:28 msgid "Dec." -msgstr "Pros." +msgstr "pros." -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "rok" -msgstr[1] "roky" -msgstr[2] "let" - -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "měsíc" -msgstr[1] "měsíce" -msgstr[2] "měsíců" - -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "týden" -msgstr[1] "týdny" -msgstr[2] "týdnů" - -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "den" -msgstr[1] "dny" -msgstr[2] "dnů" - -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "hodina" -msgstr[1] "hodiny" -msgstr[2] "hodin" - -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuta" -msgstr[1] "minuty" -msgstr[2] "minut" - -#: utils/translation/trans_real.py:362 +#: utils/translation/trans_real.py:358 msgid "DATE_FORMAT" -msgstr "j.n.Y" +msgstr "j. n. Y" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" -msgstr "j.n.Y, H:i" +msgstr "j. n. Y, H:i" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:380 +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:381 +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" msgstr "j. F" - -#: conf/global_settings.py:39 -msgid "Arabic" -msgstr "Arabic" - -#: conf/global_settings.py:40 -msgid "Bengali" -msgstr "Bengálsky" - -#: conf/global_settings.py:41 -msgid "Czech" -msgstr "Česky" - -#: conf/global_settings.py:42 -msgid "Welsh" -msgstr "Welšsky" - -#: conf/global_settings.py:43 -msgid "Danish" -msgstr "Dánsky" - -#: conf/global_settings.py:44 -msgid "German" -msgstr "Německy" - -#: conf/global_settings.py:45 -msgid "Greek" -msgstr "Řecky" - -#: conf/global_settings.py:46 -msgid "English" -msgstr "Anglicky" - -#: conf/global_settings.py:47 -msgid "Spanish" -msgstr "Španělsky" - -#: conf/global_settings.py:48 -msgid "Argentinean Spanish" -msgstr "Argentinean Spanish" - -#: conf/global_settings.py:49 -msgid "Finnish" -msgstr "Finsky" - -#: conf/global_settings.py:50 -msgid "French" -msgstr "Francouzsky" - -#: conf/global_settings.py:51 -msgid "Galician" -msgstr "Galicijsky" - -#: conf/global_settings.py:52 -msgid "Hungarian" -msgstr "Maďarsky" - -#: conf/global_settings.py:53 -msgid "Hebrew" -msgstr "Hebrejsky" - -#: conf/global_settings.py:54 -msgid "Icelandic" -msgstr "Islandština" - -#: conf/global_settings.py:55 -msgid "Italian" -msgstr "Italsky" - -#: conf/global_settings.py:56 -msgid "Japanese" -msgstr "Japonština" - -#: conf/global_settings.py:57 -msgid "Dutch" -msgstr "Holandština" - -#: conf/global_settings.py:58 -msgid "Norwegian" -msgstr "Norsky" - -#: conf/global_settings.py:59 -msgid "Brazilian" -msgstr "Brazilsky" - -#: conf/global_settings.py:60 -msgid "Romanian" -msgstr "Rumunsky" - -#: conf/global_settings.py:61 -msgid "Russian" -msgstr "Rusky" - -#: conf/global_settings.py:62 -msgid "Slovak" -msgstr "Slovensky" - -#: conf/global_settings.py:63 -msgid "Slovenian" -msgstr "Slovinsky" - -#: conf/global_settings.py:64 -msgid "Serbian" -msgstr "Srbsky" - -#: conf/global_settings.py:65 -msgid "Swedish" -msgstr "Švédsky" - -#: conf/global_settings.py:66 -msgid "Tamil" -msgstr "Tamil" - -#: conf/global_settings.py:67 -msgid "Turkish" -msgstr "Turecky" - -#: conf/global_settings.py:68 -msgid "Ukrainian" -msgstr "Ukrajinsky" - -#: conf/global_settings.py:69 -msgid "Simplified Chinese" -msgstr "Jednoduchá čínština" - -#: conf/global_settings.py:70 -msgid "Traditional Chinese" -msgstr "Tradiční čínština" - -#: core/validators.py:63 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka." - -#: core/validators.py:67 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka, pomlčky nebo lomítka." - -#: core/validators.py:71 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo čárky." - -#: core/validators.py:75 -msgid "Uppercase letters are not allowed here." -msgstr "Velká písmena zde nejsou povolená." - -#: core/validators.py:79 -msgid "Lowercase letters are not allowed here." -msgstr "Malá písmena zde nejsou povolená." - -#: core/validators.py:86 -msgid "Enter only digits separated by commas." -msgstr "Vložte pouze cifry oddělené čárkami." - -#: core/validators.py:98 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Vložte platné e-mailové adresy oddělené čárkami." - -#: core/validators.py:102 -msgid "Please enter a valid IP address." -msgstr "Prosíme, zadejte platnou IP adresu." - -#: core/validators.py:106 -msgid "Empty values are not allowed here." -msgstr "Zde nejsou povolené prázdné hodnoty." - -#: core/validators.py:110 -msgid "Non-numeric characters aren't allowed here." -msgstr "Znaky, které nejsou čísla, nejsou zde povoleny." - -#: core/validators.py:114 -msgid "This value can't be comprised solely of digits." -msgstr "Tato hodnota nemůže být složená pouze z cifer." - -#: core/validators.py:119 -msgid "Enter a whole number." -msgstr "Vložte celé číslo." - -#: core/validators.py:123 -msgid "Only alphabetical characters are allowed here." -msgstr "Zde jsou povoleny pouze alfanumerické znaky." - -#: core/validators.py:138 -msgid "Year must be 1900 or later." -msgstr "Rok musí být 1900 a vyšší." - -#: core/validators.py:142 -#, python-format -msgid "Invalid date: %s." -msgstr "Neplatné datum: %s." - -#: core/validators.py:146 -#: db/models/fields/__init__.py:415 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Vložte platné datum ve formátu RRRR-MM-DD." - -#: core/validators.py:151 -msgid "Enter a valid time in HH:MM format." -msgstr "Vložte platný čas ve formátu HH:MM." - -#: core/validators.py:155 -#: db/models/fields/__init__.py:477 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM." - -#: core/validators.py:160 -msgid "Enter a valid e-mail address." -msgstr "Vložte platnou e-mailovou adresu." - -#: core/validators.py:172 -#: core/validators.py:401 -#: forms/__init__.py:661 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "Soubor nebyl odeslán. Zkontrolujte encoding type formuláře." - -#: core/validators.py:176 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl obrázek, nebo byl porušen." - -#: core/validators.py:183 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "URL %s neukazuje na platný obrázek." - -#: core/validators.py:187 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefonní čísla musí být ve formátu XXX-XXX-XXXX. \"%s\" není platné." - -#: core/validators.py:195 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "URL %s neodkazuje na platné video ve formátu QuickTime." - -#: core/validators.py:199 -msgid "A valid URL is required." -msgstr "Je vyžadováno platné URL." - -#: core/validators.py:213 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Je vyžadováno platné HTML. Konkrétní chyby jsou:\n" -"%s" - -#: core/validators.py:220 -#, python-format -msgid "Badly formed XML: %s" -msgstr "Špatně formované XML: %s" - -#: core/validators.py:230 -#, python-format -msgid "Invalid URL: %s" -msgstr "Neplatné URL: %s" - -#: core/validators.py:234 -#: core/validators.py:236 -#, python-format -msgid "The URL %s is a broken link." -msgstr "Odkaz na URL %s je rozbitý." - -#: core/validators.py:242 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Vložte platnou zkraku U.S. státu." - -#: 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] "Mluvte slušně! Slovo %s zde není přípustné." -msgstr[1] "Mluvte slušně! Slova %s zde nejsou přípustná." -msgstr[2] "Mluvte slušně! Slova %s zde nejsou přípustná." - -#: core/validators.py:263 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Toto pole se musí shodovat s polem '%s'." - -#: core/validators.py:282 -msgid "Please enter something for at least one field." -msgstr "Prosíme, vložte něco alespoň pro jedno pole." - -#: core/validators.py:291 -#: core/validators.py:302 -msgid "Please enter both fields or leave them both empty." -msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná." - -#: core/validators.py:309 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Toto pole musí být vyplněno, když %(field)s má %(value)s" - -#: core/validators.py:321 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Toto pole musí být vyplněno, když %(field)s nemá %(value)s" - -#: core/validators.py:340 -msgid "Duplicate values are not allowed." -msgstr "Duplikátní hodnoty nejsou povolené." - -#: core/validators.py:363 -#, python-format -msgid "This value must be a power of %s." -msgstr "Tato hodnota musí být mocninou %s." - -#: core/validators.py:374 -msgid "Please enter a valid decimal number." -msgstr "Prosíme, vložte platné číslo." - -#: 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] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem." -msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." -msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." - -#: 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] "Prosíme, vložte platné číslo s nejvíce %s cifrou." -msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi." -msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi." - -#: 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] "Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem." -msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem." -msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem." - -#: core/validators.py:394 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Ujistěte se, že posílaný soubor je velký nejméně %s bytů." - -#: core/validators.py:395 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Ujistěte se, že posílaný soubor je velký nejvíce %s bytů." - -#: core/validators.py:412 -msgid "The format for this field is wrong." -msgstr "Formát pro toto pole je špatný." - -#: core/validators.py:427 -msgid "This field is invalid." -msgstr "Toto pole není platné." - -#: core/validators.py:463 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Nemohl jsem získat nic z %s." - -#: core/validators.py:466 -#, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "URL %(url)s vrátilo neplatnou hlavičku Content-Type '%(contenttype)s'." - -#: core/validators.py:499 -#, python-format -msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s \"%(start)s\".)" - -#: 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 "Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. (Řádka začíná s \"%(start)s\".)" - -#: core/validators.py:508 -#, python-format -msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%(start)s\".)" - -#: core/validators.py:513 -#, python-format -msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" -msgstr "\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%(start)s\".)" - -#: 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 "Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. (Řádka začíná s \"%(start)s\".)" - -#: core/validators.py:522 -#, python-format -msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" -msgstr "Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s \"%(start)s\".)" - -#: views/generic/create_update.py:43 -#, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "Záznam %(verbose_name)s byl úspěšně vytvořen." - -#: views/generic/create_update.py:117 -#, python-format -msgid "The %(verbose_name)s was updated successfully." -msgstr "Záznam %(verbose_name)s byl úspěšně změnen." - -#: views/generic/create_update.py:184 -#, python-format -msgid "The %(verbose_name)s was deleted." -msgstr "Záznam %(verbose_name)s byl smazán." - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s s tímto %(type)s již existují pro daná %(field)s." - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s s tímto %(fieldname)s již existuje." - -#: 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 "Toto pole je povinné." - -#: db/models/fields/__init__.py:340 -msgid "This value must be an integer." -msgstr "Tato hodnota musí být celé číslo." - -#: db/models/fields/__init__.py:372 -msgid "This value must be either True or False." -msgstr "Tato hodnota musí být buď Ano (True), nebo Ne (False)." - -#: db/models/fields/__init__.py:388 -msgid "This field cannot be null." -msgstr "Toto pole nemůže být prázdné (null)." - -#: db/models/fields/__init__.py:571 -msgid "Enter a valid filename." -msgstr "Vložte platný název souboru." - -#: db/models/fields/related.py:51 -#, python-format -msgid "Please enter a valid %s." -msgstr "Prosíme, zadejte %s správně." - -#: db/models/fields/related.py:618 -msgid "Separate multiple IDs with commas." -msgstr "Oddělte více identifikátorů čárkami." - -#: db/models/fields/related.py:620 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné položky." - -#: db/models/fields/related.py:664 -#, 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] "Prosíme, vložte platná %(self)s ID. Hodnota %(value)r není platná." -msgstr[1] "Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné." -msgstr[2] "Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné." - -#: forms/__init__.py:381 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Ujistěte se, že Váš text má méně než %s znak." -msgstr[1] "Ujistěte se, že Váš text má méně než %s znaky." -msgstr[2] "Ujistěte se, že Váš text má méně než %s znaků." - -#: forms/__init__.py:386 -msgid "Line breaks are not allowed here." -msgstr "Zalomení řádky zde nenjsou povolená." - -#: forms/__init__.py:487 -#: forms/__init__.py:560 -#: forms/__init__.py:599 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Vyberte platnou volbu. '%(data)s' není mezi %(choices)s." - -#: forms/__init__.py:663 -msgid "The submitted file is empty." -msgstr "Odevzdaný soubor je prázdný." - -#: forms/__init__.py:719 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Vložte celé číslo mezi -32,768 a 32,767." - -#: forms/__init__.py:729 -msgid "Enter a positive number." -msgstr "Vložte celé kladné číslo." - -#: forms/__init__.py:739 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Vložte celé číslo mezi 0 a 32,767." - -#: template/defaultfilters.py:401 -msgid "yes,no,maybe" -msgstr "ano, ne, možná" - diff --git a/django/conf/locale/cs/LC_MESSAGES/djangojs.mo b/django/conf/locale/cs/LC_MESSAGES/djangojs.mo index 097bd199d8..d1e3f81a82 100644 Binary files a/django/conf/locale/cs/LC_MESSAGES/djangojs.mo and b/django/conf/locale/cs/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/cs/LC_MESSAGES/djangojs.po b/django/conf/locale/cs/LC_MESSAGES/djangojs.po index 9143b56fdd..652f00f819 100644 --- a/django/conf/locale/cs/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/cs/LC_MESSAGES/djangojs.po @@ -7,25 +7,34 @@ msgid "" msgstr "" "Project-Id-Version: Django JavaScript Czech translation\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-12-17 22:26+0100\n" -"PO-Revision-Date: 2006-05-03 12:04+0100\n" -"Last-Translator: \n" +"POT-Creation-Date: 2007-06-18 11:26+0200\n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Poedit-Language: Czech\n" -"X-Poedit-Country: CZECH REPUBLIC\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>1 && n<5 ? 1 : 2;\n" + +#: contrib/admin/media/js/dateparse.js:32 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Leden Únor Březen Duben Květen Červen Červenec Srpen Září Říjen Listopad " +"Prosinec" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota" #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format msgid "Available %s" -msgstr "K dispozici %s" +msgstr "Dostupná %s" #: contrib/admin/media/js/SelectFilter2.js:41 msgid "Choose all" -msgstr "Vybrat vše" +msgstr "Vybrat vše" #: contrib/admin/media/js/SelectFilter2.js:46 msgid "Add" @@ -38,75 +47,72 @@ msgstr "Odebrat" #: contrib/admin/media/js/SelectFilter2.js:53 #, perl-format msgid "Chosen %s" -msgstr "Vybraný %s" +msgstr "Vybraná %s" #: contrib/admin/media/js/SelectFilter2.js:54 msgid "Select your choice(s) and click " -msgstr "Vyberte si a klikněte" +msgstr "Vyberte si a klikněte " #: contrib/admin/media/js/SelectFilter2.js:59 msgid "Clear all" -msgstr "Vše vymazat" - -#: contrib/admin/media/js/dateparse.js:26 -#: contrib/admin/media/js/calendar.js:24 -msgid "January February March April May June July August September October November December" -msgstr "Leden Únor Březen Duben Květen Červen Červenec Srpen Září Říjen Listopad Prosinec" - -#: contrib/admin/media/js/dateparse.js:27 -#, fuzzy -msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota" +msgstr "Vymazat vše" #: contrib/admin/media/js/calendar.js:25 -#, fuzzy msgid "S M T W T F S" msgstr "N P U S C P S" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "Ukázat" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "Skrýt" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Now" msgstr "Nyní" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 msgid "Clock" msgstr "Hodiny" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 msgid "Choose a time" msgstr "Vyberte čas" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "Midnight" msgstr "Půlnoc" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "6 a.m." msgstr "6 ráno" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Noon" msgstr "Poledne" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 msgid "Cancel" msgstr "Storno" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 msgid "Today" msgstr "Dnes" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 msgid "Calendar" msgstr "Kalendář" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 msgid "Yesterday" msgstr "Včera" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" msgstr "Zítra" - diff --git a/django/conf/locale/fa/LC_MESSAGES/django.mo b/django/conf/locale/fa/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..c16335d237 Binary files /dev/null and b/django/conf/locale/fa/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/fa/LC_MESSAGES/django.po b/django/conf/locale/fa/LC_MESSAGES/django.po new file mode 100644 index 0000000000..0d4e74ccea --- /dev/null +++ b/django/conf/locale/fa/LC_MESSAGES/django.po @@ -0,0 +1,2854 @@ +# Persian translation of Django. +# Copyright (C) 2007 THE Django'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Django package. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Django 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-06-19 15:49+0330\n" +"PO-Revision-Date: 2007-06-19 16:14+0330\n" +"Last-Translator: Reza Mohammadi \n" +"Language-Team: Persian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "" + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "" + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "" + +#: core/validators.py:65 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" + +#: core/validators.py:69 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" + +#: core/validators.py:73 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" + +#: core/validators.py:77 +msgid "Uppercase letters are not allowed here." +msgstr "" + +#: core/validators.py:81 +msgid "Lowercase letters are not allowed here." +msgstr "" + +#: core/validators.py:88 +msgid "Enter only digits separated by commas." +msgstr "" + +#: core/validators.py:100 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "" + +#: core/validators.py:104 +msgid "Please enter a valid IP address." +msgstr "" + +#: core/validators.py:108 +msgid "Empty values are not allowed here." +msgstr "" + +#: core/validators.py:112 +msgid "Non-numeric characters aren't allowed here." +msgstr "" + +#: core/validators.py:116 +msgid "This value can't be comprised solely of digits." +msgstr "" + +#: core/validators.py:121 newforms/fields.py:135 +msgid "Enter a whole number." +msgstr "" + +#: core/validators.py:125 +msgid "Only alphabetical characters are allowed here." +msgstr "" + +#: core/validators.py:140 +msgid "Year must be 1900 or later." +msgstr "" + +#: core/validators.py:144 +#, python-format +msgid "Invalid date: %s" +msgstr "" + +#: core/validators.py:149 db/models/fields/__init__.py:463 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "" + +#: core/validators.py:154 +msgid "Enter a valid time in HH:MM format." +msgstr "" + +#: core/validators.py:158 db/models/fields/__init__.py:532 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "" + +#: core/validators.py:163 newforms/fields.py:339 +msgid "Enter a valid e-mail address." +msgstr "" + +#: core/validators.py:175 core/validators.py:453 oldforms/__init__.py:676 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: core/validators.py:179 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: core/validators.py:186 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "" + +#: core/validators.py:190 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" + +#: core/validators.py:198 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "" + +#: core/validators.py:202 +msgid "A valid URL is required." +msgstr "" + +#: core/validators.py:216 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" + +#: core/validators.py:223 +#, python-format +msgid "Badly formed XML: %s" +msgstr "" + +#: core/validators.py:240 +#, python-format +msgid "Invalid URL: %s" +msgstr "" + +#: core/validators.py:245 core/validators.py:247 +#, python-format +msgid "The URL %s is a broken link." +msgstr "" + +#: core/validators.py:253 +msgid "Enter a valid U.S. state abbreviation." +msgstr "" + +#: core/validators.py:267 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgstr "" + +#: core/validators.py:274 +#, python-format +msgid "This field must match the '%s' field." +msgstr "" + +#: core/validators.py:293 +msgid "Please enter something for at least one field." +msgstr "" + +#: core/validators.py:302 core/validators.py:313 +msgid "Please enter both fields or leave them both empty." +msgstr "" + +#: core/validators.py:321 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "" + +#: core/validators.py:334 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "" + +#: core/validators.py:353 +msgid "Duplicate values are not allowed." +msgstr "" + +#: core/validators.py:368 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "" + +#: core/validators.py:370 +#, python-format +msgid "This value must be at least %s." +msgstr "" + +#: core/validators.py:372 +#, python-format +msgid "This value must be no more than %s." +msgstr "" + +#: core/validators.py:408 +#, python-format +msgid "This value must be a power of %s." +msgstr "" + +#: core/validators.py:417 +msgid "Please enter a valid decimal number." +msgstr "" + +#: core/validators.py:423 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +"Please enter a valid decimal number with at most %s total digits." +msgstr "" + +#: core/validators.py:426 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr "" + +#: core/validators.py:429 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +"Please enter a valid decimal number with at most %s decimal places." +msgstr "" + +#: core/validators.py:437 +msgid "Please enter a valid floating point number." +msgstr "" + +#: core/validators.py:446 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "" + +#: core/validators.py:447 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "" + +#: core/validators.py:464 +msgid "The format for this field is wrong." +msgstr "" + +#: core/validators.py:479 +msgid "This field is invalid." +msgstr "" + +#: core/validators.py:515 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "" + +#: core/validators.py:518 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" + +#: core/validators.py:551 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" + +#: core/validators.py:555 +#, 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:560 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" + +#: core/validators.py:565 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" + +#: core/validators.py:569 +#, 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:574 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "" + +#: conf/global_settings.py:51 +msgid "Finnish" +msgstr "" + +#: conf/global_settings.py:52 +msgid "French" +msgstr "" + +#: conf/global_settings.py:53 +msgid "Galician" +msgstr "" + +#: conf/global_settings.py:54 +msgid "Hungarian" +msgstr "" + +#: conf/global_settings.py:55 +msgid "Hebrew" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Icelandic" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Italian" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Japanese" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Korean" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:61 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:62 +msgid "Macedonian" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Dutch" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Norwegian" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Polish" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Portugese" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Brazilian" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Romanian" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Russian" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Slovenian" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Swedish" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:76 +msgid "Turkish" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Ukrainian" +msgstr "" + +#: conf/global_settings.py:78 +msgid "Simplified Chinese" +msgstr "" + +#: conf/global_settings.py:79 +msgid "Traditional Chinese" +msgstr "" + +#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:520 +#: newforms/fields.py:531 newforms/models.py:185 oldforms/__init__.py:361 +#: db/models/fields/__init__.py:121 db/models/fields/__init__.py:278 +#: db/models/fields/__init__.py:675 db/models/fields/__init__.py:686 +msgid "This field is required." +msgstr "" + +#: newforms/fields.py:110 newforms/fields.py:324 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "" + +#: newforms/fields.py:112 newforms/fields.py:326 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "" + +#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "" + +#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "" + +#: newforms/fields.py:158 newforms/fields.py:186 +msgid "Enter a number." +msgstr "" + +#: newforms/fields.py:196 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "" + +#: newforms/fields.py:198 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "" + +#: newforms/fields.py:200 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" + +#: newforms/fields.py:233 +msgid "Enter a valid date." +msgstr "" + +#: newforms/fields.py:260 +msgid "Enter a valid time." +msgstr "" + +#: newforms/fields.py:296 +msgid "Enter a valid date/time." +msgstr "" + +#: newforms/fields.py:310 +msgid "Enter a valid value." +msgstr "" + +#: newforms/fields.py:357 newforms/fields.py:379 +msgid "Enter a valid URL." +msgstr "" + +#: newforms/fields.py:381 +msgid "This URL appears to be a broken link." +msgstr "" + +#: newforms/fields.py:432 newforms/models.py:172 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: newforms/fields.py:448 newforms/fields.py:524 newforms/models.py:189 +msgid "Enter a list of values." +msgstr "" + +#: newforms/fields.py:457 newforms/models.py:195 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "" + +#: newforms/widgets.py:182 oldforms/__init__.py:581 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "ناشناخته" + +#: newforms/widgets.py:182 oldforms/__init__.py:581 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "بله" + +#: newforms/widgets.py:182 oldforms/__init__.py:581 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "خیر" + +#: oldforms/__init__.py:396 +#, python-format +msgid "Ensure your text is less than %s character." +msgstr "" + +#: oldforms/__init__.py:401 +msgid "Line breaks are not allowed here." +msgstr "" + +#: oldforms/__init__.py:502 oldforms/__init__.py:575 oldforms/__init__.py:614 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "" + +#: oldforms/__init__.py:678 +msgid "The submitted file is empty." +msgstr "" + +#: oldforms/__init__.py:734 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "" + +#: oldforms/__init__.py:744 +msgid "Enter a positive number." +msgstr "" + +#: oldforms/__init__.py:754 +msgid "Enter a whole number between 0 and 32,767." +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 "" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:316 +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/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fr/forms.py:17 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/is_/forms.py:16 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18 +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/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/ch/forms.py:90 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "" + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +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/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +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/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "زمان اتفاق" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "شناسهٔ شئ" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

          By %s:

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

            بوسیلهٔ %s:

            \n" +"
              \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "همه" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "هر تاریخی" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "امروز" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "۷ روز اخیر" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "این ماه" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "امسال" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +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 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "" + +#: 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:24 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "" + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "" + +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 db/models/manipulators.py:308 +msgid "and" +msgstr "" + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "" + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "" + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "" + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "" + +#: 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:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "" + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 +#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 +msgid "Integer" +msgstr "" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "" + +#: contrib/admin/views/doc.py:297 +msgid "Decimal number" +msgstr "" + +#: contrib/admin/views/doc.py:298 +msgid "E-mail address" +msgstr "" + +#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:303 +msgid "File path" +msgstr "" + +#: contrib/admin/views/doc.py:301 +msgid "Floating point number" +msgstr "" + +#: contrib/admin/views/doc.py:305 contrib/comments/models.py:85 +msgid "IP address" +msgstr "" + +#: contrib/admin/views/doc.py:307 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: contrib/admin/views/doc.py:308 +msgid "Relation to parent model" +msgstr "" + +#: contrib/admin/views/doc.py:309 +msgid "Phone number" +msgstr "" + +#: contrib/admin/views/doc.py:314 +msgid "Text" +msgstr "" + +#: contrib/admin/views/doc.py:315 +msgid "Time" +msgstr "" + +#: contrib/admin/views/doc.py:317 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/admin/views/doc.py:318 +msgid "XML text" +msgstr "" + +#: contrib/admin/views/doc.py:344 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "" + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "" + +#: contrib/admin/templatetags/admin_list.py:249 +msgid "All dates" +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/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_form.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 +msgid "Home" +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/change_form.html:10 +#: 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/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: 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/change_form.html:10 +#: 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/object_history.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/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_filter_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/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:10 +#: 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/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_filter_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/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +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:21 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +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." +msgstr "" + +#: 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/search_form.html:8 +msgid "Go" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +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/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "اضافه‌کردن %(name)s" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "وب‌گاه مدیریت Djago" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "مدیریت Django" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +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/pagination.html:10 +msgid "Show all" +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/base.html:25 +msgid "Welcome," +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/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 "" + +#: 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/filters.html:4 +msgid "Filter" +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 "برای کابر %(username)s یک گذرنامهٔ جدید وارد کنید." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "" + +#: contrib/admin/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/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "درخواستی برای ایجاد گذرواژهٔ جدید با آدرس شما به ما رسیده است و ما این نامه را برای شما فرستادیم" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "برای حساب کاربریتان در %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "گذرواژهٔ جدیدتان: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "با رفتن به صفحهٔ زیر می‌توانید گذرواژه‌تان را عوض کنید:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "نام کاربریتان، اگر یادتان رفته است:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "متشکر از استفادهٔ شما از وبگاه ما" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "گروه %(site_name)s" + +#: contrib/admin/templates/registration/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_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/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/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/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/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "نظر" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "" + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "عمومی است" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "پاک شده است" + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "نظرها" + +#: contrib/comments/models.py:131 contrib/comments/models.py:207 +msgid "Content object" +msgstr "شئ نظر" + +#: contrib/comments/models.py:159 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "نام شخص" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "امتیاز" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "تاریخ امتیاز" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "امتیاز عملکرد" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "امتیازهای عملکرد" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "تاریخ پرچم" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "پرچم کاربر" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "پرچم‌های کاربر" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "" + +#: contrib/comments/views/comments.py:27 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr "" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "" + +#: 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 "" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +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/auth/models.py:44 contrib/auth/models.py:64 +msgid "name" +msgstr "نام" + +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "نام کد" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "اجازه" + +#: contrib/auth/models.py:50 contrib/auth/models.py:65 +msgid "permissions" +msgstr "اجازه‌ها" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "گروه" + +#: contrib/auth/models.py:69 contrib/auth/models.py:109 +msgid "groups" +msgstr "گروه‌ها" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "نام کاربری" + +#: contrib/auth/models.py:99 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" + +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "نام" + +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "نام خانوادگی" + +#: contrib/auth/models.py:102 +msgid "e-mail address" +msgstr "آدرس پست الکترونیکی" + +#: contrib/auth/models.py:103 +msgid "password" +msgstr "گذرواژه" + +#: contrib/auth/models.py:103 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "کارمند" + +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "فعال" + +#: contrib/auth/models.py:105 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "ابرکاربر" + +#: contrib/auth/models.py:106 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "آخرین ورود" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "تاریخ پیوستن" + +#: contrib/auth/models.py:110 +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:111 +msgid "user permissions" +msgstr "اجازه‌های کاربر" + +#: contrib/auth/models.py:115 +msgid "user" +msgstr "کاربر" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "کاربرها" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "اطلاعات شخصی" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "اجازه‌ها" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "تاریخ‌های مهم" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "گروه‌ها" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "پیغام" + +#: contrib/auth/models.py:282 +msgid "AnonymousUser" +msgstr "کاربر ناشناس" + +#: contrib/auth/views.py:40 +msgid "Logged out" +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: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/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/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" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgstr "" + +#: 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 "نُه" + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" + +#: db/models/fields/__init__.py:46 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:373 +msgid "This value must be an integer." +msgstr "" + +#: db/models/fields/__init__.py:408 +msgid "This value must be either True or False." +msgstr "" + +#: db/models/fields/__init__.py:429 +msgid "This field cannot be null." +msgstr "" + +#: db/models/fields/__init__.py:592 +msgid "This value must be a decimal number." +msgstr "" + +#: db/models/fields/__init__.py:695 +msgid "Enter a valid filename." +msgstr "" + +#: db/models/fields/__init__.py:818 +msgid "This value must be either None, True or False." +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." +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr "" + +#: utils/timesince.py:12 +msgid "year" +msgstr "سال" + +#: utils/timesince.py:13 +msgid "month" +msgstr "ماه" + +#: utils/timesince.py:14 +msgid "week" +msgstr "هفته" + +#: utils/timesince.py:15 +msgid "day" +msgstr "روز" + +#: utils/timesince.py:16 +msgid "hour" +msgstr "ساعت" + +#: utils/timesince.py:17 +msgid "minute" +msgstr "دقیقه" + +#: utils/timesince.py:40 +#, python-format +msgid "%d milliseconds" +msgstr "%d میلی‌ثانیه" + +#: utils/timesince.py:41 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:47 +#, python-format +msgid ", %(number)d %(type)s" +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/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/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "" + +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "بله،خیر،شاید" + +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgstr "%(size)d یایت" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "" + diff --git a/django/conf/locale/fa/LC_MESSAGES/djangojs.mo b/django/conf/locale/fa/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..8d3f8e505f Binary files /dev/null and b/django/conf/locale/fa/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/fa/LC_MESSAGES/djangojs.po b/django/conf/locale/fa/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..255cb71870 --- /dev/null +++ b/django/conf/locale/fa/LC_MESSAGES/djangojs.po @@ -0,0 +1,118 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-06-24 22:09+1000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:32 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "" diff --git a/django/conf/locale/gl/LC_MESSAGES/django.mo b/django/conf/locale/gl/LC_MESSAGES/django.mo index 00beabebf8..ae0783f43d 100644 Binary files a/django/conf/locale/gl/LC_MESSAGES/django.mo and b/django/conf/locale/gl/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/gl/LC_MESSAGES/django.po b/django/conf/locale/gl/LC_MESSAGES/django.po index 394f9cd016..ef02b59e87 100644 --- a/django/conf/locale/gl/LC_MESSAGES/django.po +++ b/django/conf/locale/gl/LC_MESSAGES/django.po @@ -1,14 +1,13 @@ # Translation of django.po to Galego # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Afonso Fernández Nogueira , 2005. # 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-07-03 14:06+0200\n" +"POT-Creation-Date: 2007-05-28 12:56+0200\n" +"PO-Revision-Date: 2007-05-28 17:29+0200\n" "Last-Translator: Afonso Fernández Nogueira \n" "Language-Team: Galego\n" "MIME-Version: 1.0\n" @@ -17,6 +16,1256 @@ msgstr "" "X-Poedit-Language: Galician\n" "X-Poedit-SourceCharset: utf-8\n" +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "árabe" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "bengalí" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "búlgaro" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "catalán" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "checo" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "galés" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "dinamarqués" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "alemán" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "grego" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "inglés" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "español" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "español de Arxentina" + +#: conf/global_settings.py:51 +msgid "Finnish" +msgstr "finés" + +#: conf/global_settings.py:52 +msgid "French" +msgstr "francés" + +#: conf/global_settings.py:53 +msgid "Galician" +msgstr "galego" + +#: conf/global_settings.py:54 +msgid "Hungarian" +msgstr "húngaro" + +#: conf/global_settings.py:55 +msgid "Hebrew" +msgstr "hebreo" + +#: conf/global_settings.py:56 +msgid "Icelandic" +msgstr "islandés" + +#: conf/global_settings.py:57 +msgid "Italian" +msgstr "italiano" + +#: conf/global_settings.py:58 +msgid "Japanese" +msgstr "xaponés" + +#: conf/global_settings.py:59 +msgid "Korean" +msgstr "coreano" + +#: conf/global_settings.py:60 +msgid "Kannada" +msgstr "canará" + +#: conf/global_settings.py:61 +msgid "Latvian" +msgstr "letón" + +#: conf/global_settings.py:62 +msgid "Macedonian" +msgstr "macedonio" + +#: conf/global_settings.py:63 +msgid "Dutch" +msgstr "holandés" + +#: conf/global_settings.py:64 +msgid "Norwegian" +msgstr "noruegués" + +#: conf/global_settings.py:65 +msgid "Polish" +msgstr "polaco" + +#: conf/global_settings.py:66 +msgid "Portugese" +msgstr "portugués" + +#: conf/global_settings.py:67 +msgid "Brazilian" +msgstr "brasileiro" + +#: conf/global_settings.py:68 +msgid "Romanian" +msgstr "romanés" + +#: conf/global_settings.py:69 +msgid "Russian" +msgstr "ruso" + +#: conf/global_settings.py:70 +msgid "Slovak" +msgstr "eslovaco" + +#: conf/global_settings.py:71 +msgid "Slovenian" +msgstr "esloveno" + +#: conf/global_settings.py:72 +msgid "Serbian" +msgstr "serbio" + +#: conf/global_settings.py:73 +msgid "Swedish" +msgstr "sueco" + +#: conf/global_settings.py:74 +msgid "Tamil" +msgstr "támil" + +#: conf/global_settings.py:75 +msgid "Telugu" +msgstr "telugu" + +#: conf/global_settings.py:76 +msgid "Turkish" +msgstr "turco" + +#: conf/global_settings.py:77 +msgid "Ukrainian" +msgstr "ucraíno" + +#: conf/global_settings.py:78 +msgid "Simplified Chinese" +msgstr "chinés simplificado" + +#: conf/global_settings.py:79 +msgid "Traditional Chinese" +msgstr "chinés tradicional" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

              By %s:

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

                Por %s:

                \n" +"
                  \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "Todo" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "Calquera data" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "Hoxe" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "Últimos 7 días" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "Este mes" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "Este ano" + +#: contrib/admin/filterspecs.py:143 newforms/widgets.py:182 +#: oldforms/__init__.py:577 +msgid "Yes" +msgstr "Si" + +#: contrib/admin/filterspecs.py:143 newforms/widgets.py:182 +#: oldforms/__init__.py:577 +msgid "No" +msgstr "Non" + +#: contrib/admin/filterspecs.py:150 newforms/widgets.py:182 +#: oldforms/__init__.py:577 +msgid "Unknown" +msgstr "Descoñecido" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "hora da acción" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "id do obxecto" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "repr do obxecto" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "código do tipo de acción" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "cambiar mensaxe" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "entrada de rexistro" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "entradas de rexistro" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Páxina non atopada" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Sentímolo, pero non se atopou a páxina solicitada." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "Inicio" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Erro no servidor" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Erro no servidor (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Erro do servidor (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Houbo un erro. Xa se informou aos administradores do sitio por correo " +"electrónico e debería quedar arranxado pronto. Grazas pola súa paciencia." + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Benvido," + +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +msgid "Documentation" +msgstr "Documentación" + +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.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/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_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/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +msgid "Change password" +msgstr "Cambiar contrasinal" + +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_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/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Rematar sesión" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Administración de sitio Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administración de Django" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Engadir" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Histórico" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Ver na web" + +#: 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] "Por favor, corrixa o erro de embaixo." +msgstr[1] "Por favor, corrixa os erros de embaixo." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Orde" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Orde:" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Engadir %(name)s" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Eliminar" + +#: 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 "" +"Borrar o %(object_name)s '%(escaped_object)s' resultaría na eliminación de elementos " +"relacionados, pero a súa conta non ten permiso para borrar os seguintes " +"tipos de elementos:" + +#: 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 "" +"Seguro que quere borrar o %(object_name)s \"%(escaped_object)s\"? Eliminaranse os " +"seguintes obxectos relacionados:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Si, estou seguro" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Por %(filter_title)s " + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtro" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modelos dispoñíbeis na aplicación %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Modificar" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Non ten permiso para editar nada." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Accións recentes" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "As miñas accións" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ningunha dispoñíbel" + +#: 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 "" +"Hai un problema coa súa instalación de base de datos. Asegúrese " +"de que se creasen as táboas axeitadas na base de datos, e de que o usuario " +"apropiado teña permisos para lela." + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Usuario:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Contrasinal:" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 +msgid "Log in" +msgstr "Iniciar sesión" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Data/hora" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Usuario" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Acción" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "j de N de Y, H:i" + +#: 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 "" +"Este obxecto non ten histórico de cambios. Posibelmente non se creou usando " +"este sitio de administración." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Amosar todo" + +#: 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 en total" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Gardar coma novo" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Gardar e engadir outro" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Gardar e seguir editando" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Gardar" + +#: 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 insira un nome de usuario e un contrasinal. Despois poderá " +"editar máis opcións de usuario." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Usuario" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "Contrasinal" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "Contrasinal (outra vez)" + +#: 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 "Insira o mesmo contrasinal ca enriba para verificalo." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Insira un novo contrasinal para o usuario %(username)s." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Bookmarklets" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Bookmarklets de documentación" + +#: 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 "" +"\n" +"

                  Para instalar bookmarklets, arrastre a ligazón á súa\n" +"barra de favoritos ou marcadores, ou faga clic co botón dereito\n" +"e engádao aos marcadores. Agora pode usar o bookmarklet dende\n" +" calquera páxina do sitio web. Teña en conta que algúns destes\n" +"bookmarklets precisan que estea a visitar o sitio dende un ordenador\n" +"designado coma \"interno\" (fale co administrador do sistema se\n" +"non está seguro de que o seu ordenador é \"interno\" .

                  \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Documentación para esta páxina" + +#: 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 "Salta á documentación para a vista que xera a páxina." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Amosar ID do obxecto" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Amosa o tipo de contido e a ID única para páxinas que representan un obxecto " +"determinado." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Editar este obxecto (nesta fiestra)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Salta á páxina de administración para páxina que representan un obxecto " +"determinado." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Editar este obxecto (nunha nova fiestra)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Como enriba, pero abre a páxina de administración nunha nova fiestra." + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Grazas polo tempo que dedicou ao sitio web." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Entrar de novo" + +#: 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 "Cambiar o contrasinal" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "O seu contrasinal cambiouse correctamente." + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Cambiouse o seu contrasinal." + +#: 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 "" +"Por razóns de seguridade, introduza o contrasinal actual. Despois introduza " +"dúas veces o contrasinal para verificarmos que o escribiu correctamente." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Contrasinal actual:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Contrasinal novo:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Confirmar contrasinal:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Cambiar o contrasinal" + +#: 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 "Recuperar o contrasinal" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "O contrasinal foi recuperado correctamente" + +#: 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 "" +"Acabamos de enviarlle un novo contrasinal ao enderezo de correo indicado. " +"Debería recibilo en breve." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Recibe esta mensaxe porque solicitou recuperar o contrasinal" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "para a súa conta de usuario en %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "O seu novo contrasinal é: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Pode cambiar este contrasinal visitando esta páxina:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "No caso de que o esquecese, o seu nome de usuario é:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Grazas por usar o noso sitio web!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "O equipo de %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Esqueceu o contrasinal? Introduza o seu enderezo de correo electrónico " +"embaixo e enviarémoslle un novo contrasinal." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Enderezo de correo electrónico:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Recuperar o meu contrasinal" + +#: 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 "Agora:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modificar:" + +#: contrib/admin/templatetags/admin_list.py:249 +msgid "All dates" +msgstr "Todas as datas" + +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\"." + +#: 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 "Pode editalo embaixo." + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Engadir usuario" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "O contrasinal cambiouse correctamente." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Cambiar contrasinal: %s" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Insira un nome de usuario e un contrasinal correctos. Teña en conta que nos " +"dous campos se distingue entre maiúsculas e minúsculas." + +#: 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 "" +"Ten que identicarse outra vez porque a súa sesión expirou. Non se preocupe, " +"o que enviou quedou gardado." + +#: 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 "" +"Semella que o seu navegador non está configurado para aceptar 'cookies'. " +"Por favor, habilite as 'cookies', recargue a páxina e ténteo de novo." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Os nomes de usuario non poden conter o carácter '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"O seu enderezo de correo electrónico non é o seu nome de usuario. Probe con " +"'%s'." + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "etiqueta:" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "filtro:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "vista:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "Non se atopou a aplicación %r" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Non se atopou o modelo %(name)r na aplicación %(label)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "o obxecto `%(label)s.%(type)s` relacionado" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "modelo:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "obxectos `%(label)s.%(name)s` relacionados" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "todos os %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "número de %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Campos dos obxectos %s" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 +#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 +msgid "Integer" +msgstr "Número enteiro" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Valor booleano (verdadeiro ou falso)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "Cadea (ata %(maxlength)s caracteres)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Números enteiros separados por comas" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Data (sen a hora)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Data (coa hora)" + +#: contrib/admin/views/doc.py:297 +msgid "Decimal number" +msgstr "Número decimal" + +#: contrib/admin/views/doc.py:298 +msgid "E-mail address" +msgstr "Enderezo de correo electrónico" + +#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:303 +msgid "File path" +msgstr "Ruta do ficheiro" + +#: contrib/admin/views/doc.py:301 +msgid "Floating point number" +msgstr "Número de coma flotante" + +#: contrib/admin/views/doc.py:305 contrib/comments/models.py:85 +msgid "IP address" +msgstr "Enderezo IP" + +#: contrib/admin/views/doc.py:307 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (verdadeiro, falso ou ningún)" + +#: contrib/admin/views/doc.py:308 +msgid "Relation to parent model" +msgstr "Relación cun modelo pai" + +#: contrib/admin/views/doc.py:309 +msgid "Phone number" +msgstr "Número de teléfono" + +#: contrib/admin/views/doc.py:314 +msgid "Text" +msgstr "Texto" + +#: contrib/admin/views/doc.py:315 +msgid "Time" +msgstr "Hora" + +#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:317 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado dos Estados Unidos (dúas letras maiúsculas)" + +#: contrib/admin/views/doc.py:318 +msgid "XML text" +msgstr "Texto XML" + +#: contrib/admin/views/doc.py:344 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s non semella ser un obxecto urlpattern" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Administración do sitio web" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "Pode engadir outro/a %s embaixo." + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "Engadir %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "Engadido/a %s." + +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 db/models/manipulators.py:308 +msgid "and" +msgstr "e" + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "Modificado(s) %s." + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "Eliminado(s) %s." + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "Non se modificou ningún campo." + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Modificouse correctamente o/a %(name)s \"%(obj)s\"." + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\" Pode editalo embaixo." + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "Modificar %s" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Un ou máis %(fieldname)s no/a %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Un ou máis %(fieldname)s no/a %(name)s:" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "Eliminouse correctamente o/a %(name)s \"%(obj)s\"." + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "Está seguro?" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "Histórico de cambios: %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "Seleccione un/ha %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "Seleccione %s que modificar" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Erro da base de datos" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Os dous campos de contrasinal non coinciden." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Xa existe un usuario con ese nome de usuario." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Semella que o seu navegador non acepta 'cookies'. Requírense 'cookies' para " +"iniciar sesión." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Esta conta está inactiva." + +#: 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 enderezo de correo electrónico non ten unha conta de usuario asociada. " +"Está seguro de que está rexistrado?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Os dous campos 'contrasinal novo' non coinciden." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Inseriu incorrectamente o seu contrasinal actual. Por favor, insírao de novo." + +#: contrib/auth/models.py:44 contrib/auth/models.py:64 +msgid "name" +msgstr "nome" + +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "código" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "permiso" + +#: contrib/auth/models.py:50 contrib/auth/models.py:65 +msgid "permissions" +msgstr "permisos" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "grupo" + +#: contrib/auth/models.py:69 contrib/auth/models.py:109 +msgid "groups" +msgstr "grupos" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "nome de usuario" + +#: contrib/auth/models.py:99 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Requirido. 30 caracteres ou menos. Soamente caracteres alfanuméricos " +"(letras, díxitos ou guións baixos)." + +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "nome" + +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "apelidos" + +#: contrib/auth/models.py:102 +msgid "e-mail address" +msgstr "enderezo de correo electrónico" + +#: contrib/auth/models.py:103 +msgid "password" +msgstr "contrasinal" + +#: contrib/auth/models.py:103 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Use '[algo]$[salt]$[hexdigest]' ou utilice o formulario de " +"cambio de contrasinal." + +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "membro do persoal" + +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "Indica se o usuario pode entrar neste sitio de administración." + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "activo" + +#: contrib/auth/models.py:105 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Indica se o usuario pode entrar na sección de administración. " +"Desactíveo no canto de borrar contas de usuario." + +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "estatus de superusuario" + +#: contrib/auth/models.py:106 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Indica que este usuario ten todos os permisos sen asignarllos explicitamente." + + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "última sesión" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "data de rexistro" + +#: contrib/auth/models.py:110 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Ademais dos permisos asignados manualmente, este usuario gozará de todos os " +"permisos concedidos a cada un dos grupos aos que pertence." + +#: contrib/auth/models.py:111 +msgid "user permissions" +msgstr "permisos de usuario" + +#: contrib/auth/models.py:115 +msgid "user" +msgstr "usuario" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "usuarios" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "Información persoal" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "Permisos" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "Datas importantes" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "Grupos" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "mensaxe" + +#: contrib/auth/models.py:282 +msgid "AnonymousUser" +msgstr "UsuarioAnónimo" + +#: contrib/auth/views.py:40 +msgid "Logged out" +msgstr "Rematou a sesión" + #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "ID do obxecto" @@ -32,39 +1281,39 @@ msgstr "comentario" #: contrib/comments/models.py:70 msgid "rating #1" -msgstr "" +msgstr "valoración 1" #: contrib/comments/models.py:71 msgid "rating #2" -msgstr "" +msgstr "valoración 2" #: contrib/comments/models.py:72 msgid "rating #3" -msgstr "" +msgstr "valoración 3" #: contrib/comments/models.py:73 msgid "rating #4" -msgstr "" +msgstr "valoración 4" #: contrib/comments/models.py:74 msgid "rating #5" -msgstr "" +msgstr "valoración 5" #: contrib/comments/models.py:75 msgid "rating #6" -msgstr "" +msgstr "valoración 6" #: contrib/comments/models.py:76 msgid "rating #7" -msgstr "" +msgstr "valoración 7" #: contrib/comments/models.py:77 msgid "rating #8" -msgstr "" +msgstr "valoración 8" #: contrib/comments/models.py:82 msgid "is valid rating" -msgstr "é unha puntuación válida" +msgstr "é unha valoración válida" #: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" @@ -74,10 +1323,6 @@ msgstr "data/hora do envío" msgid "is public" msgstr "é público" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 -msgid "IP address" -msgstr "Enderezo IP" - #: contrib/comments/models.py:86 msgid "is removed" msgstr "está borrado" @@ -152,7 +1397,7 @@ msgstr "puntos de karma" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "" +msgstr "puntuación de %(score)d por %(user)s" #: contrib/comments/models.py:258 #, python-format @@ -199,24 +1444,49 @@ msgstr "borrados de moderador" msgid "Moderator deletion by %r" msgstr "Borrado polo moderador %r" -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Os usuarios anónimos non poden votar" +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Esqueceu o contrasinal?" -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "ID de comentario non válida" +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Valoracións" -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "Vostede non se pode votar a si mesmo" +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Requirido" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Opcional" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Publicar unha foto" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Comentario:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Previsualizar comentario" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "O seu nome:" + +#: contrib/comments/views/comments.py:27 msgid "" "This rating is required because you've entered at least one other rating." -msgstr "" +msgstr "Requírese esta valoración porque vostede inseriu polo menos " +"outra valoración." -#: contrib/comments/views/comments.py:112 +#: contrib/comments/views/comments.py:111 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -239,30 +1509,33 @@ msgstr[1] "" "\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" "\n" "%(text)s" msgstr "" +"Este comentario foi enviado por un usuario conflitivo:\n" +"\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 "Soamente se permiten envíos polo método POST" -#: 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 "Non se enviaron un ou máis dos campos requiridos" -#: 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én manipulou o formulario do comentario (violación de seguridade)" -#: 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 " @@ -276,816 +1549,29 @@ msgstr "" msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "O formulario de comentario non proporciona 'preview' ou 'post'" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Usuario:" +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Os usuarios anónimos non poden votar" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Contrasinal:" +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "ID de comentario non válida" -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Esqueceu o contrasinal?" +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Vostede non se pode votar a si mesmo" -#: 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/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Log out" -msgstr "Rematar sesión" +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "nome do módulo Python" -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "" +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "tipo de contido" -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Requirido" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Opcional" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Publicar unha foto" - -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Comentario:" - -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -msgid "Preview comment" -msgstr "Previsualizar comentario" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Nome:" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"

                  By %s:

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

                    Por %s:

                    \n" -"
                      \n" - -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 -msgid "All" -msgstr "Todo" - -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "Calquera data" - -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "Hoxe" - -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "Últimos 7 días" - -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "Este mes" - -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "Este ano" - -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Si" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Non" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Descoñecido" - -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "hora da acción" - -#: contrib/admin/models.py:19 -msgid "object id" -msgstr "id do obxecto" - -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "repr do obxecto" - -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "código do tipo de acción" - -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "cambiar mensaxe" - -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "entrada de rexistro" - -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "entradas de rexistro" - -#: contrib/admin/templatetags/admin_list.py:228 -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 "Insira un nome de usuario e un contrasinal correctos. Teña en conta que " -"nos dous campos se distingue entre maiúsculas e minúsculas." - -#: contrib/admin/views/decorators.py:23 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Iniciar sesión" - -#: contrib/admin/views/decorators.py:61 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Ten que identicarse outra vez porque a súa sesión expirou. Non se preocupe, " -"o que enviou quedou gardado." - -#: contrib/admin/views/decorators.py:68 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Semella que o seu navegador non está configurado para aceptar 'cookies'. " -"Por favor, habilite as 'cookies', recargue a páxina e ténteo de novo." - -#: contrib/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "Os nomes de usuario non poden conter o carácter '@'." - -#: contrib/admin/views/decorators.py:84 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"O seu enderezo de correo electrónico non é o seu nome de usuario. Probe con " -"'%s'." - -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "Administración do sitio web" - -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\"." - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "Pode editalo embaixo." - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 -#, python-format -msgid "You may add another %s below." -msgstr "Pode engadir outro/a %s embaixo." - -#: contrib/admin/views/main.py:290 -#, python-format -msgid "Add %s" -msgstr "Engadir %s" - -#: contrib/admin/views/main.py:336 -#, python-format -msgid "Added %s." -msgstr "Engadido/a %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 -#, python-format -msgid "Changed %s." -msgstr "Modificado(s) %s." - -#: contrib/admin/views/main.py:340 -#, python-format -msgid "Deleted %s." -msgstr "Eliminado(s) %s." - -#: contrib/admin/views/main.py:343 -msgid "No fields changed." -msgstr "Non se modificou ningún campo." - -#: contrib/admin/views/main.py:346 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "Modificouse correctamente o/a %(name)s \"%(obj)s\"." - -#: contrib/admin/views/main.py:354 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\" Pode editalo embaixo." - -#: contrib/admin/views/main.py:392 -#, python-format -msgid "Change %s" -msgstr "Modificar %s" - -#: contrib/admin/views/main.py:470 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Un ou máis %(fieldname)s no/a %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:475 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Un ou máis %(fieldname)s no/a %(name)s:" - -#: contrib/admin/views/main.py:508 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "Eliminouse correctamente o/a %(name)s \"%(obj)s\"." - -#: contrib/admin/views/main.py:511 -msgid "Are you sure?" -msgstr "Está seguro?" - -#: contrib/admin/views/main.py:533 -#, python-format -msgid "Change history: %s" -msgstr "Histórico de cambios: %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s" -msgstr "Seleccione un/ha %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s to change" -msgstr "Seleccione %s que modificar" - -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 -msgid "Integer" -msgstr "Número enteiro" - -#: contrib/admin/views/doc.py:278 -msgid "Boolean (Either True or False)" -msgstr "Valor booleano (verdadeiro ou falso)" - -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Cadea (ata %(maxlength)s caracteres)" - -#: contrib/admin/views/doc.py:280 -msgid "Comma-separated integers" -msgstr "Números enteiros separados por comas" - -#: contrib/admin/views/doc.py:281 -msgid "Date (without time)" -msgstr "Data (sen a hora)" - -#: contrib/admin/views/doc.py:282 -msgid "Date (with time)" -msgstr "Data (coa hora)" - -#: contrib/admin/views/doc.py:283 -msgid "E-mail address" -msgstr "Enderezo de correo electrónico" - -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 -msgid "File path" -msgstr "Ruta do ficheiro" - -#: contrib/admin/views/doc.py:285 -msgid "Decimal number" -msgstr "Número decimal" - -#: contrib/admin/views/doc.py:291 -msgid "Boolean (Either True, False or None)" -msgstr "Booleano (verdadeiro, falso ou ningún)" - -#: contrib/admin/views/doc.py:292 -msgid "Relation to parent model" -msgstr "Relación cun modelo pai" - -#: contrib/admin/views/doc.py:293 -msgid "Phone number" -msgstr "Número de teléfono" - -#: contrib/admin/views/doc.py:298 -msgid "Text" -msgstr "Texto" - -#: contrib/admin/views/doc.py:299 -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 Estados Unidos (dúas letras maíusculas)" - -#: contrib/admin/views/doc.py:302 -msgid "XML text" -msgstr "Texto XML" - -#: 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/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "Documentación" - -#: 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/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 "Cambiar contrasinal" - -#: 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/change_form.html:13 -#: 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 "Inicio" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 -msgid "History" -msgstr "Histórico" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Data/hora" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Usuario" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Acción" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j de N de Y, H:i" - -#: 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 "" -"Este obxecto non ten histórico de cambios. Posibelmente non se creou usando " -"este sitio de administración." - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Administración de sitio Django" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Administración de Django" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Erro do servidor" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Erro do servidor (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Erro do servidor (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Houbo un erro. Xa se informou aos administradores do sitio por correo " -"electrónico e debería quedar arranxado pronto. Grazas pola súa paciencia." - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Páxina non atopada" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Sentímolo, pero non se atopou a páxina solicitada." - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Modelos dispoñíbeis na aplicación %(name)s." - -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "Engadir" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Modificar" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Non ten permiso para editar nada." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Accións recentes" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "As miñas accións" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Ningunha dispoñíbel" - -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Engadir %(name)s" - -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Esqueceu o contrasinal?" - -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Benvido," - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Eliminar" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, 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:" -msgstr "" -"Borrar o %(object_name)s '%(object)s' resultaría na eliminación de elementos " -"relacionados, pero a súa conta non ten permiso para borrar os seguintes " -"tipos de elementos:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, 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:" -msgstr "" -"Seguro que quere borrar o %(object_name)s \"%(object)s\"? Eliminaranse os " -"seguintes obxectos relacionados:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Si, estou seguro" - -#: 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 na web" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Por favor, corrixa o erro de embaixo." -msgstr[1] "Por favor, corrixa os erros de embaixo." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Orde" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Orde:" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Gardar coma novo" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Gardar e engadir outro" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Gardar e seguir editando" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Gardar" - -#: 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 "Cambiar o contrasinal" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "O seu contrasinal cambiouse correctamente." - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Cambiouse o seu contrasinal." - -#: 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 "Recuperar o contrasinal" - -#: 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 "" -"Esqueceu o contrasinal? Introduza o seu enderezo de correo electrónico " -"embaixo e enviarémoslle un novo contrasinal." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Enderezo de correo electrónico:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Recuperar o meu contrasinal" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Grazas polo tempo que dedicou ao sitio web." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Entrar de novo" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "O contrasinal foi recuperado correctamente" - -#: 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 "" -"Acabamos de enviarlle un novo contrasinal ao enderezo de correo indicado. " -"Debería recibilo en breve." - -#: 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 "" -"Por razóns de seguridade, introduza o contrasinal actual. Despois introduza " -"dúas veces o contrasinal para verificarmos que o escribiu correctamente." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Contrasinal actual:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Contrasinal novo:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Confirmar contrasinal:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Cambiar o contrasinal" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Recibe esta mensaxe porque solicitou recuperar o contrasinal" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "para a súa conta de usuario en %(site_name)s" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "O seu novo contrasinal é: %(new_password)s" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "Pode cambiar este contrasinal visitando esta páxina:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "No caso de que o esquecese, o seu nome de usuario é:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Grazas por usar o noso sitio web!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "O equipo de %(site_name)s" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Bookmarklets" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Bookmarklets de documentación" - -#: 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 "" -"\n" -"

                      Para instalar bookmarklets, arrastre a ligazón á súa\n" -"barra de favoritos ou marcadores, ou faga clic co botón dereito\n" -"e engádao aos marcadores. Agora pode usar o bookmarklet dende\n" -" calquera páxina do sitio web. Teña en conta que algúns destes\n" -"bookmarklets precisan que estea a visitar o sitio dende un ordenador\n" -"designado coma \"interno\" (fale co administrador do sistema se\n" -"non está seguro de que o seu ordenador é \"interno\" .

                      \n" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Documentación para esta páxina" - -#: 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 "Salta á documentación para a vista que xera a páxina." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Amosar ID do obxecto" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Amosa o tipo de contido e a ID única para páxinas que representan un obxecto " -"determinado." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Editar este obxecto (nesta fiestra)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Salta á páxina de administración para páxina que representan un obxecto " -"determinado." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Editar este obxecto (nunha nova fiestra)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "Como enriba, pero abre a páxina de administración nunha nova fiestra." - -#: 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 "Agora:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modificar:" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "orixe da redirección" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Debe ser unha ruta absoluta, sen o nome de dominio. Exemplo: '/events/" -"search/'" - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "destino da redirección" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Pode ser unha ruta absoluta (coma a de enriba) ou un URL completo que empece " -"por 'http://'" - -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "redirección" - -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "redireccións" +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "tipos de contido" #: contrib/flatpages/models.py:8 msgid "" @@ -1111,11 +1597,11 @@ msgstr "nome da plantilla" #: contrib/flatpages/models.py:13 msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." msgstr "" -"Exemplo: 'flatpages/contact_page'. Se non se especifica, o sistema usará " -"'flatpages/default'." +"Exemplo: 'flatpages/contact_page.html'. Se non se especifica, o sistema usará " +"'flatpages/default.html'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1133,154 +1619,594 @@ msgstr "páxina simple" msgid "flat pages" msgstr "páxinas simples" -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "nome" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "º" -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "código" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "º" -#: contrib/auth/models.py:17 -msgid "permission" -msgstr "permiso" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "º" -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -msgid "permissions" -msgstr "permisos" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "º" -#: contrib/auth/models.py:29 -msgid "group" -msgstr "grupo" +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f millón" +msgstr[1] "%(value).1f millóns" -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -msgid "groups" -msgstr "grupos" +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f mil millóns" +msgstr[1] "%(value).1f miles de millóns" -#: contrib/auth/models.py:55 -msgid "username" -msgstr "nome de usuario" +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f billón" +msgstr[1] "%(value).1f billóns" -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "nome" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "un" -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "apelidos" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "dous" -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "enderezo de correo electrónico" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "tres" -#: contrib/auth/models.py:59 -msgid "password" -msgstr "contrasinal" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "catro" -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Use '[algo]$[salt]$[hexdigest]'" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "cinco" -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "membro do persoal" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "seis" -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "Indica se o usuario pode entrar neste sitio de administración." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "sete" -#: contrib/auth/models.py:61 -msgid "active" -msgstr "activo" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "oito" -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "estado de superusuario" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "nove" -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "última sesión" +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Insira un código postal de 4 díxitos." -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "data de rexistro" +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Insira un código postal no formato XXXXX-XXX." -#: 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." +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "" -"Ademais dos permisos asignados manualmente, este usuario gozará de todos os " -"permisos concedidos a cada un dos grupos aos que pertence." +"Os números de teléfono deben estar no formato XX-XXXX-XXXX." -#: contrib/auth/models.py:67 -msgid "user permissions" -msgstr "permisos de usuario" +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "Este campo soamente admite números." -#: contrib/auth/models.py:70 -msgid "user" -msgstr "usuario" +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Este campo acepta como máximo 11 díxitos ou 14 caracteres." -#: contrib/auth/models.py:71 -msgid "users" -msgstr "usuarios" +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "Número de CPF non válido." -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "Información persoal" +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "Este campo require polo menos 14 díxitos." -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "Permisos" +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "Número de CNPJ non válido" -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "Datas importantes" +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Argovia" -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "Grupos" +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Interior" -#: contrib/auth/models.py:219 -msgid "message" -msgstr "mensaxe" +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Exterior" -#: contrib/auth/forms.py:30 +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Basilea-Cidade" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Basilea-Campo" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Berna" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Friburgo" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Xenebra" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Grisóns" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Xura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Lucerna" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchatel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwald" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwald" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Soleura" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "San Galo" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Turgovia" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Tesino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Valais" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zurich" + +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Insira un código posttal no formato XXXX." + +#: contrib/localflavor/ch/forms.py:90 msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "Semella que o seu navegador non acepta 'cookies'. Requírense " -"'cookies' para iniciar sesión." +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "Insira un número válido de tarxeta de identidade ou pasaporte no " +"formato X1234567<0 ou 1234567890." -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "nome do módulo Python" +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Insira un RUT chileno válido. O formato é XX.XXX.XXX-X." -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "tipo de contido" +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "Insira un RUT chileno válido." -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "tipos de contido" +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" -#: contrib/sessions/models.py:35 +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Baviera" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlín" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandemburgo" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburgo" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hesse" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklemburgo-Pomerania Occidental" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Baixa Saxonia" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Renania do Norte-Westfalia" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Renania-Palatinado" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Sarre" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Saxonia" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Saxonia-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Turinxia" + +#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/fr/forms.py:17 +msgid "Enter a zip code in the format XXXXX." +msgstr "Insira un código postal no formato XXXXX" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "Insira un número válido de tarxeta de identidade alemá no formato " +"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Insira un número válido de tarxeta da seguridade social finlandesa." + +#: contrib/localflavor/is_/forms.py:16 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" +"Insira un número de identificación islandés válido. O formato é XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "O número de identificación islandés non é válido." + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Insira un código postal válido." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Insira un número da seguridade social válido." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Insira un número de IVE válido." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Insira un código postal no formato XXXXXXX ou XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaidō" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Toquio" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ishikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kioto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Osaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyōgo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kōchi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagasaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kumamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Ōita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Insira un número válida da seguridade social norueguesa." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Insira un código postal. Requírese un espazo entre as dúas partes do código postal." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Insira un código postal no formato XXXXX ou XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Insira un número válido da seguridade social dos Estados Unidos no formato XXX-XX-XXXX." + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "orixe da redirección" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Debe ser unha ruta absoluta, sen o nome de dominio. Exemplo: '/events/" +"search/'" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "destino da redirección" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Pode ser unha ruta absoluta (coma a de enriba) ou un URL completo que empece " +"por 'http://'" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redirección" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redireccións" + +#: contrib/sessions/models.py:68 msgid "session key" msgstr "clave da sesión" -#: contrib/sessions/models.py:36 +#: contrib/sessions/models.py:69 msgid "session data" msgstr "datos da sesión" -#: contrib/sessions/models.py:37 +#: contrib/sessions/models.py:70 msgid "expire date" msgstr "data de caducidade" -#: contrib/sessions/models.py:41 +#: contrib/sessions/models.py:74 msgid "session" msgstr "sesión" -#: contrib/sessions/models.py:42 +#: contrib/sessions/models.py:75 msgid "sessions" msgstr "sesións" @@ -1300,17 +2226,544 @@ msgstr "sitio" msgid "sites" msgstr "sitios" -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "d-m-Y" +#: core/validators.py:65 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Este valor soamente pode conter letras, números e guións baixos (_)." -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "d-m-Y H:i" +#: core/validators.py:69 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Este valor soamente pode conter letras, números, guións baixos (_), guións " +"(-) e barras inclinadas (/)." -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "H:i" +#: core/validators.py:73 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"Este valor soamente pode conter letras, números, guións baixos (_) e guións." + +#: core/validators.py:77 +msgid "Uppercase letters are not allowed here." +msgstr "Non se permiten letras maiúsculas." + +#: core/validators.py:81 +msgid "Lowercase letters are not allowed here." +msgstr "Non se permiten letras minúsculas." + +#: core/validators.py:88 +msgid "Enter only digits separated by commas." +msgstr "Insira só díxitos separados por comas." + +#: core/validators.py:100 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Insira enderezos de correo elecrónico válidos separados por comas." + +#: core/validators.py:104 +msgid "Please enter a valid IP address." +msgstr "Insira un enderezo IP válido." + +#: core/validators.py:108 +msgid "Empty values are not allowed here." +msgstr "Non se permiten valores en branco." + +#: core/validators.py:112 +msgid "Non-numeric characters aren't allowed here." +msgstr "Non se permiten caracteres non númericos." + +#: core/validators.py:116 +msgid "This value can't be comprised solely of digits." +msgstr "Este valor non pode estar composto por díxitos soamente." + +#: core/validators.py:121 newforms/fields.py:135 +msgid "Enter a whole number." +msgstr "Insira un número enteiro." + +#: core/validators.py:125 +msgid "Only alphabetical characters are allowed here." +msgstr "Soamente se permiten caracteres do alfabeto." + +#: core/validators.py:140 +msgid "Year must be 1900 or later." +msgstr "O ano debe ser 1900 ou posterior." + +#: core/validators.py:144 +#, python-format +msgid "Invalid date: %s" +msgstr "Data non válida: %s" + +#: core/validators.py:149 db/models/fields/__init__.py:463 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Insira unha data válida en formato AAAA-MM-DD." + +#: core/validators.py:154 +msgid "Enter a valid time in HH:MM format." +msgstr "Insira unha hora válida en formato HH:MM." + +#: core/validators.py:158 db/models/fields/__init__.py:532 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Insira unha data/hora válida en formato AAAA-MM-DD HH:MM." + +#: core/validators.py:163 newforms/fields.py:339 +msgid "Enter a valid e-mail address." +msgstr "Insira un enderezo de correo electrónico válido." + +#: core/validators.py:175 core/validators.py:453 oldforms/__init__.py:672 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Non se enviou ficheiro ningún. Comprobe o tipo de codificación do formulario." + +#: core/validators.py:179 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Suba unha imaxe válida. O ficheiro subido non era unha imaxe ou esta estaba " +"corrupta." + +#: core/validators.py:186 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "O URL %s non apunta a unha imaxe válida." + +#: core/validators.py:190 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Os números de teléfono deben estar no formato XXX-XXX-XXXX. \"%s\" non é " +"válido." + +#: core/validators.py:198 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "O URL %s non apunta a unha vídeo QuickTime válido." + +#: core/validators.py:202 +msgid "A valid URL is required." +msgstr "Precísase un URL válido." + +#: core/validators.py:216 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Precísase HTML válido. Os erros específicos son estes:\n" +"%s" + +#: core/validators.py:223 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML mal formado: %s" + +#: core/validators.py:240 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL non válido: %s" + +#: core/validators.py:245 core/validators.py:247 +#, python-format +msgid "The URL %s is a broken link." +msgstr "O URL %s é unha ligazón rota." + +#: core/validators.py:253 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Insira unha abreviatura estatal válida para os Estados Unidos." + +#: core/validators.py:267 +#, 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] "Sen palabrotas, por favor! Aquí non se pode usar a palabra %s." +msgstr[1] "Sen palabrotas, por favor! Aquí non se poden usar as palabras %s." + +#: core/validators.py:274 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Este campo ten que coincidir co campo '%s'." + +#: core/validators.py:293 +msgid "Please enter something for at least one field." +msgstr "Por favor, encha polo menos un campo." + +#: core/validators.py:302 core/validators.py:313 +msgid "Please enter both fields or leave them both empty." +msgstr "Por favor, encha os dous campos ou deixe ambos en branco." + +#: core/validators.py:321 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Débese encher este campo se %(field)s é %(value)s" + +#: core/validators.py:334 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Este campo débese encher se %(field)s non é %(value)s" + +#: core/validators.py:353 +msgid "Duplicate values are not allowed." +msgstr "Non se permiten valores duplicados." + +#: core/validators.py:368 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Este valor ten que estar comprendido entre %(lower)s e %(upper)s." + +#: core/validators.py:370 +#, python-format +msgid "This value must be at least %s." +msgstr "Este valor ten que ser polo menos %s." + +#: core/validators.py:372 +#, python-format +msgid "This value must be no more than %s." +msgstr "Este valor non pode ser superior a %s." + +#: core/validators.py:408 +#, python-format +msgid "This value must be a power of %s." +msgstr "Este valor ten que ser unha potencia de %s." + +#: core/validators.py:417 +msgid "Please enter a valid decimal number." +msgstr "Insira un número decimal válido." + +#: core/validators.py:423 +#, 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] "Insira un número decimal válido cun máximo de %s díxito en total." +msgstr[1] "Insira un número decimal válido cun máximo de %s díxitos en total." + +#: core/validators.py:426 +#, 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] "Insira un número decimal válido cunha parte enteira de como máximo %s díxito." +msgstr[1] "Insira un número decimal válido cunha parte enteira de como máximo %s díxitos." + +#: core/validators.py:429 +#, 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] "Insira un número decimal válido cun máximo de %s lugar decimal." +msgstr[1] "Insira un número decimal válido cun máximo de %s lugares decimais." + +#: core/validators.py:437 +msgid "Please enter a valid floating point number." +msgstr "Insira un número de coma flotante válido." + +#: core/validators.py:446 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Verifique que o ficheiro subido ten un tamaño mínimo de %s bytes." + +#: core/validators.py:447 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Verifique que o ficheiro subido ten un tamaño máximo de %s bytes." + +#: core/validators.py:464 +msgid "The format for this field is wrong." +msgstr "O formato deste campo é incorrecto." + +#: core/validators.py:479 +msgid "This field is invalid." +msgstr "Este campo non é válido." + +#: core/validators.py:515 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Non se puido recibir ningún dato de %s." + +#: core/validators.py:518 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"O URL %(url)s devolveu a cabeceira Content-Type non válida '%(contenttype)s'." + +#: core/validators.py:551 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Por favor, peche a etiqueta %(tag)s da liña %(line)s. (A liña comeza con \"%" +"(start)s\")." + +#: core/validators.py:555 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Algún texto a partir da liña %(line)s non é válido nese contexto. (A liña " +"comeza con \"%(start)s\")." + +#: core/validators.py:560 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" na liña %(line)s non é un atributo válido. (A liña comeza con " +"\"%(start)s\")." + +#: core/validators.py:565 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" na liña %(line)s non é unha etiqueta válida. (A liña comeza " +"con \"%(start)s\")." + +#: core/validators.py:569 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Falta un o máis dos atributos requiridos para unha etiqueta da liña %(line)" +"s. (A liña comeza con \"%(start)s\")." + +#: core/validators.py:574 +#, 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 liña %(line)s contén un valor non válido. (A liña " +"comeza con \"%(start)s\")." + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" +"Xa existe un obxecto %(object)s con este %(type)s para o campo %(field)s." + +#: db/models/fields/__init__.py:46 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "Xa existe un/ha %(optname)s con este/a %(fieldname)s." + +#: db/models/fields/__init__.py:121 db/models/fields/__init__.py:278 +#: db/models/fields/__init__.py:675 db/models/fields/__init__.py:686 +#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:520 +#: newforms/fields.py:531 newforms/models.py:186 oldforms/__init__.py:357 +msgid "This field is required." +msgstr "Requírese este campo." + +#: db/models/fields/__init__.py:373 +msgid "This value must be an integer." +msgstr "Este valor ten que ser un número enteiro." + +#: db/models/fields/__init__.py:408 +msgid "This value must be either True or False." +msgstr "Este valor ten que verdadeiro ou falso." + +#: db/models/fields/__init__.py:429 +msgid "This field cannot be null." +msgstr "Este campo non pode ser nulo." + +#: db/models/fields/__init__.py:592 +msgid "This value must be a decimal number." +msgstr "Este valor ten que ser un número decimal." + +#: db/models/fields/__init__.py:695 +msgid "Enter a valid filename." +msgstr "Introduza un nome de ficheiro válido." + +#: db/models/fields/__init__.py:818 +msgid "This value must be either None, True or False." +msgstr "Este valor ten que verdadeiro, falso ou nulo." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Insira un %s válido/a." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Separe varias IDs con comas." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +" Para seleccionar máis dunha entrada, manteña premida a tecla \"Control\", " +"ou \"Comando\" nun Mac." + +#: 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] "Insira IDs de %(self)s válidas. O valor %(value)r non é válido." +msgstr[1] "" +"Insira IDs de %(self)s válidas. Os valores %(value)r non son válidos." + +#: newforms/fields.py:110 newforms/fields.py:324 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Asegúrese de que este valor ten como máximo %d caracteres." + +#: newforms/fields.py:112 newforms/fields.py:326 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Asegúrese de que este valor ten polo menos %d caracteres." + +#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Asegúrese de que este valor é menor ou igual a %s." + +#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Asegúrese de que este valor é maior ou igual a %s" + +#: newforms/fields.py:158 newforms/fields.py:186 +msgid "Enter a number." +msgstr "Insira un número." + +#: newforms/fields.py:196 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Asegñurese de que non hai máis de %s díxitos en total." + +#: newforms/fields.py:198 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Asegúrese de que non hai máis de %s lugares decimais." + +#: newforms/fields.py:200 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Asegúrese de que no hai máis de %s díxitos antes do punto ou coma decimal." + +#: newforms/fields.py:233 +msgid "Enter a valid date." +msgstr "Insira unha data válida." + +#: newforms/fields.py:260 +msgid "Enter a valid time." +msgstr "Insira unha hora válida." + +#: newforms/fields.py:296 +msgid "Enter a valid date/time." +msgstr "Insira unha data/hora válida." + +#: newforms/fields.py:310 +msgid "Enter a valid value." +msgstr "Insira un valor válido." + +#: newforms/fields.py:357 newforms/fields.py:379 +msgid "Enter a valid URL." +msgstr "Insira un URL válido." + +#: newforms/fields.py:381 +msgid "This URL appears to be a broken link." +msgstr "Semella que este URL é unha ligazón rota." + +#: newforms/fields.py:432 newforms/models.py:173 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Escolla unha opción válida. Esta opción non se atopa entre as opcións dispoñíbeis" + +#: newforms/fields.py:448 newforms/fields.py:524 newforms/models.py:190 +msgid "Enter a list of values." +msgstr "Insira unha lista de valores." + +#: newforms/fields.py:457 newforms/models.py:196 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Escolla unha opción válida. %s non se atopa entre as opcións dispoñíbeis." + +#: 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] "Asegúrese de que o seu texto contén menos de %s carácter." +msgstr[1] "Asegúrese de que o seu texto contén menos de %s caracteres." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Aquí non se permiten saltos de liña." + +#: 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 "Elixa unha opción válida; '%(data)s' non está en %(choices)s." + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "O ficheiro enviado está baleiro." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Insira un número enteiro entre -32.768 e 32.767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Insira un número positivo." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Insira un número enteiro entre 0 e 32.767." + +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "si,non,quizais" + +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "medianoite" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "mediodía" #: utils/dates.py:6 msgid "Monday" @@ -1500,474 +2953,61 @@ msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "bengalí" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "checo" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "galés" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "dinamarqués" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "alemán" - -#: 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 "español" - -#: conf/global_settings.py:45 -msgid "French" -msgstr "francés" - -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "galego" - -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "húngaro" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "hebreo" - -#: 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 "xaponés" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "holandés" - -#: 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 "romanés" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "ruso" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "eslovaco" - -#: conf/global_settings.py:58 -msgid "Slovenian" -msgstr "esloveno" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "serbio" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "sueco" - -#: conf/global_settings.py:61 -msgid "Ukrainian" -msgstr "ucraíno" - -#: 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 "Este valor soamente pode conter letras, números e guións baixos (_)." - -#: core/validators.py:64 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Este valor soamente pode conter letras, números, guións baixos (_), guións (-) e barras " -"inclinadas (/)." - -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Non se permiten letras maiúsculas." - -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Non se permiten letras minúsculas." - -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Insira só díxitos separados por comas." - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Insira enderezos de correo elecrónico válidos separados por comas." - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Insira un enderezo IP válido." - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Non se permiten valores en branco." - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Non se permiten caracteres non númericos." - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "Este valor non pode estar composto por díxitos soamente." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Insira un número enteiro." - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Soamente se permiten caracteres do alfabeto." - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Insira unha data válida en formato AAAA-MM-DD." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Insira unha hora válida en 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 "Insira unha data/hora válida en formato AAAA-MM-DD HH:MM." - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Insira un enderezo de correo electrónico válido." - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Suba unha imaxe válida. O ficheiro subido non era unha imaxe ou esta estaba " -"corrupta." - -#: core/validators.py:155 +#: utils/timesince.py:40 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "O URL %s non apunta a unha imaxe válida." +msgid "%d milliseconds" +msgstr "%d milisegundos" -#: core/validators.py:159 +#: utils/timesince.py:41 #, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Os números de teléfono deben estar no formato XXX-XXX-XXXX. \"%s\" non é " -"válido." +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" -#: core/validators.py:167 +#: utils/timesince.py:47 #, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "O URL %s non apunta a unha vídeo QuickTime válido." +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "Precísase un URL válido." +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "d-m-Y" -#: core/validators.py:185 +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "d-m-Y H:i" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "H:i" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "m Y" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "d m" + +#: views/generic/create_update.py:43 #, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Precísase HTML válido. Os erros específicos son estes:\n" -"%s" +msgid "The %(verbose_name)s was created successfully." +msgstr "Creouse correctamente o/a %(verbose_name)s ." -#: core/validators.py:192 +#: views/generic/create_update.py:117 #, python-format -msgid "Badly formed XML: %s" -msgstr "XML mal formado: %s" +msgid "The %(verbose_name)s was updated successfully." +msgstr "Actualizouse correctamente o/a %(verbose_name)s." -#: core/validators.py:202 +#: views/generic/create_update.py:184 #, python-format -msgid "Invalid URL: %s" -msgstr "URL non válido: %s" +msgid "The %(verbose_name)s was deleted." +msgstr "Eliminouse o/a %(verbose_name)s" -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "O URL %s é unha ligazón rota." +#~ msgid "Have you forgotten your password?" +#~ msgstr "Esqueceu o contrasinal?" -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Insira unha abreviatura estatal válida para un dos Estados Unidos." - -#: core/validators.py:229 -#, 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] "Sen palabrotas, por favor! Non se pode usar a palabra %s aquí." -msgstr[1] "Sen palabrotas, por favor! Non se poden usar as palabras %s aquí." - -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Este campo ten que coincidir co campo '%s'." - -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Por favor, encha polo menos un campo." - -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "Por favor, encha os dous campos ou deixe ambos en branco." - -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Débese encher este campo se %(field)s é %(value)s" - -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Este campo débese encher se %(field)s non é %(value)s" - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Non se permiten valores duplicados." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "Este valor ten que ser unha potencia de %s." - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Insira un número decimal válido." - -#: core/validators.py:349 -#, 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] "Insira un número decimal válido cun máximo de %s díxito en total." -msgstr[1] "Insira un número decimal válido cun máximo de %s díxitos en total." - -#: core/validators.py:352 -#, 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] "Insira un número decimal válido cun máximo de %s lugar decimal." -msgstr[1] "Insira un número decimal válido cun máximo de %s lugares decimais." - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Verifique que o ficheiro subido ten un tamaño mínimo de %s bytes." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Verifique que o ficheiro subido ten un tamaño máximo de %s bytes." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "O formato deste campo é incorrecto." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "Este campo non é válido." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Non se puido recibir ningún dato de %s." - -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"O URL %(url)s devolveu a cabeceira Content-Type non válida '%(contenttype)s'." - -#: core/validators.py:462 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Por favor, peche a etiqueta %(tag)s da liña %(line)s. (A liña comeza con \"%" -"(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\".)" -msgstr "" -"Algún texto a partir da liña %(line)s non é válido nese contexto. (A liña " -"comeza con \"%(start)s\")." - -#: core/validators.py:471 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"%(attr)s\" na liña %(line)s non é un atributo válido. (A liña comeza con " -"\"%(start)s\")." - -#: core/validators.py:476 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"<%(tag)s>\" na liña %(line)s non é unha etiqueta válida. (A liña comeza " -"con \"%(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 "" -"Falta un o máis dos atributos requiridos para unha etiqueta da liña %(line)" -"s. (A liña comeza con \"%(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 liña %(line)s contén un valor non válido. (A liña " -"comeza con \"%(start)s\")." - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "Xa existe un obxecto %(object)s con este %(type)s para o campo %(field)s." - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "Xa existe un/ha %(optname)s con este/a %(fieldname)s." - -#: 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 "Requírese este campo." - -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "Este valor ten que ser un número enteiro." - -#: db/models/fields/__init__.py:369 -msgid "This value must be either True or False." -msgstr "Este valor ten que verdadeiro ou falso." - -#: db/models/fields/__init__.py:385 -msgid "This field cannot be null." -msgstr "Este campo non pode ser nulo." - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Introduza un nome de ficheiro válido." - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Insira un %s válido/a." - -#: db/models/fields/related.py:579 -msgid "Separate multiple IDs with commas." -msgstr "Separe IDs múltiplas con comas." - -#: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -" Para seleccionar máis dunha entrada, manteña premida a tecla \"Control\", " -"ou \"Comando\" nun Mac." - -#: db/models/fields/related.py:625 -#, 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] "Insira IDs de %(self)s válidas. O valor %(value)r non é válido." -msgstr[1] "" -"Insira IDs de %(self)s válidas. Os valores %(value)r non son válidos." - -#: forms/__init__.py:380 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Asegúrese de que o seu texto contén menos de %s carácter." -msgstr[1] "Asegúrese de que o seu texto contén menos de %s caracteres." - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "Aquí non se permiten saltos de liña." - -#: 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 "Elixa unha opción válida; '%(data)s' non está en %(choices)s." - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "O ficheiro enviado está baleiro." - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Insira un número enteiro entre -32.768 e 32.767." - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "Insira un número positivo." - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Insira un número enteiro entre 0 e 32.767." - -#: template/defaultfilters.py:379 -msgid "yes,no,maybe" -msgstr "si,non,quizais" +#~ msgid "Use '[algo]$[salt]$[hexdigest]'" +#~ msgstr "Use '[algo]$[salt]$[hexdigest]'" #~ msgid "Comment" #~ msgstr "Comentario" diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo index 1aa7e08dd4..798f8d72c4 100644 Binary files a/django/conf/locale/pl/LC_MESSAGES/django.mo and b/django/conf/locale/pl/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po index 7e7ccb850f..0fa18ce80c 100644 --- a/django/conf/locale/pl/LC_MESSAGES/django.po +++ b/django/conf/locale/pl/LC_MESSAGES/django.po @@ -28,7 +28,8 @@ msgstr "To pole jest wymagane." msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." msgstr[0] "Upewnij się, że tekst ma mniej niż %s znak." -msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków." +msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaki." +msgstr[2] "Upewnij się, że tekst ma mniej niż %s znaków." #: oldforms/__init__.py:397 msgid "Line breaks are not allowed here." @@ -75,7 +76,7 @@ msgid "Enter a whole number between 0 and 32,767." msgstr "Proszę wpisać liczbę całkowitą z zakresu od 0 do 32 767" #: db/models/manipulators.py:307 -#, fuzzy, python-format +#, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s z %(type)s już istnieje dla %(field)s." @@ -85,7 +86,7 @@ msgid "and" msgstr "i" #: db/models/fields/__init__.py:42 -#, fuzzy, python-format +#, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Już istnieje %(optname)s z %(fieldname)s." @@ -142,6 +143,9 @@ msgstr[0] "" msgstr[1] "" "Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są " "niepoprawne." +msgstr[2] "" +"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są " +"niepoprawne." #: conf/global_settings.py:39 msgid "Arabic" @@ -370,7 +374,7 @@ msgstr "Niepoprawna data: %s" #: core/validators.py:153 msgid "Enter a valid time in HH:MM format." -msgstr "Proszę wpisać poprawną godzinę w formacie GG:MM." +msgstr "Proszę wpisać poprawną godzinę w formacie HH:MM." #: core/validators.py:162 newforms/fields.py:271 msgid "Enter a valid e-mail address." @@ -439,6 +443,7 @@ 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] "Nie wolno przeklinać! Słowo %s nie jest dozwolone." msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone." +msgstr[2] "Nie wolno przeklinać! Słowa %s nie są dozwolone." #: core/validators.py:273 #, python-format @@ -497,13 +502,15 @@ 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] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrze." msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach." +msgstr[2] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach." #: core/validators.py:425 #, 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] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry." -msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr." +msgstr[0] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfrę." +msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry." +msgstr[2] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr." #: core/validators.py:428 #, python-format @@ -515,6 +522,9 @@ msgstr[0] "" msgstr[1] "" "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po " "przecinku." +msgstr[2] "" +"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po " +"przecinku." #: core/validators.py:438 #, python-format @@ -668,7 +678,7 @@ msgstr "Wpisz poprawny URL." #: newforms/fields.py:313 msgid "This URL appears to be a broken link." -msgstr "Odnośnik %s jest nieprawidłowy." +msgstr "Ten odnośnik jest nieprawidłowy." #: contrib/humanize/templatetags/humanize.py:17 msgid "th" @@ -691,21 +701,24 @@ msgstr "-ci" msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f milion" -msgstr[1] "%(value).1f milionów" +msgstr[1] "%(value).1f miliony" +msgstr[2] "%(value).1f milionów" #: contrib/humanize/templatetags/humanize.py:50 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value).1f miliard" -msgstr[1] "%(value).1f miliardów" +msgstr[1] "%(value).1f miliardy" +msgstr[2] "%(value).1f miliardów" #: contrib/humanize/templatetags/humanize.py:53 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value).1f bilion" -msgstr[1] "%(value).1f bilionów" +msgstr[1] "%(value).1f biliony" +msgstr[2] "%(value).1f bilionów" #: contrib/humanize/templatetags/humanize.py:68 msgid "one" @@ -987,6 +1000,15 @@ msgstr[0] "" "\n" "%(text)s" msgstr[1] "" +"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %" +"(count)s komentarze:\n" +"\n" +"%(text)s" +msgstr[2] "" +"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %" +"(count)s komentarzy:\n" +"\n" +"%(text)s" #: contrib/comments/views/comments.py:116 #, python-format @@ -1574,7 +1596,8 @@ msgstr "Szukaj" msgid "1 result" msgid_plural "%(counter)s results" msgstr[0] "1 wynik" -msgstr[1] "%(counter)s wyników" +msgstr[1] "%(counter)s wyniki" +msgstr[2] "%(counter)s wyników" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -1681,6 +1704,7 @@ msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Proszę popraw poniższy błąd" msgstr[1] "Proszę popraw poniższe błędy" +msgstr[2] "Proszę popraw poniższe błędy" #: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" @@ -2077,7 +2101,6 @@ msgstr "" msgid "user permissions" msgstr "uprawnienia użytkownika" -# kurwa #: contrib/auth/models.py:115 msgid "user" msgstr "użytkownik" @@ -2831,37 +2854,43 @@ msgstr "Gru." msgid "year" msgid_plural "years" msgstr[0] "rok" -msgstr[1] "lat" +msgstr[1] "lata" +msgstr[2] "lat" #: utils/timesince.py:13 msgid "month" msgid_plural "months" msgstr[0] "miesiąc" -msgstr[1] "miesięcy" +msgstr[1] "miesięce" +msgstr[2] "miesięcy" #: utils/timesince.py:14 msgid "week" msgid_plural "weeks" msgstr[0] "tydzień" -msgstr[1] "tygodni" +msgstr[1] "tygodnie" +msgstr[2] "tygodni" #: utils/timesince.py:15 msgid "day" msgid_plural "days" msgstr[0] "dzień" msgstr[1] "dni" +msgstr[2] "dni" #: utils/timesince.py:16 msgid "hour" msgid_plural "hours" msgstr[0] "godzina" -msgstr[1] "godzin" +msgstr[1] "godziny" +msgstr[2] "godzin" #: utils/timesince.py:17 msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" -msgstr[1] "minut" +msgstr[1] "minuty" +msgstr[2] "minut" #: utils/timesince.py:40 #, python-format @@ -2880,7 +2909,7 @@ msgstr ", %(number)d %(type)s" #: utils/dateformat.py:40 msgid "p.m." -msgstr "popołudniu" +msgstr "po południu" #: utils/dateformat.py:41 msgid "a.m." @@ -2888,7 +2917,7 @@ msgstr "rano" #: utils/dateformat.py:46 msgid "PM" -msgstr "popołudniu" +msgstr "po południu" #: utils/dateformat.py:47 msgid "AM" @@ -2931,13 +2960,13 @@ msgstr "tak,nie,może" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d bajt" -msgstr[1] "%(size)d bajtów" -msgstr[2] "" +msgstr[1] "%(size)d bajty" +msgstr[2] "%(size)d bajtów" #: template/defaultfilters.py:522 #, python-format msgid "%.1f KB" -msgstr "%.1f kB" +msgstr "%.1f KB" #: template/defaultfilters.py:524 #, python-format diff --git a/django/conf/locale/pl/LC_MESSAGES/djangojs.mo b/django/conf/locale/pl/LC_MESSAGES/djangojs.mo index 752211a454..eb162ab3a1 100644 Binary files a/django/conf/locale/pl/LC_MESSAGES/djangojs.mo and b/django/conf/locale/pl/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/pl/LC_MESSAGES/djangojs.po b/django/conf/locale/pl/LC_MESSAGES/djangojs.po index 8b929f309d..17af50f2ae 100644 --- a/django/conf/locale/pl/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/pl/LC_MESSAGES/djangojs.po @@ -40,7 +40,6 @@ msgid "Chosen %s" msgstr "Wybrano %s" #: contrib/admin/media/js/SelectFilter2.js:54 -#, fuzzy msgid "Select your choice(s) and click " msgstr "Zaznacz swój wybór i kliknij " diff --git a/django/conf/locale/sk/LC_MESSAGES/django.mo b/django/conf/locale/sk/LC_MESSAGES/django.mo index 2789e1518f..9c8cfd3cd6 100644 Binary files a/django/conf/locale/sk/LC_MESSAGES/django.mo and b/django/conf/locale/sk/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/sk/LC_MESSAGES/django.po b/django/conf/locale/sk/LC_MESSAGES/django.po index f1a3cd77a2..98cc44579c 100644 --- a/django/conf/locale/sk/LC_MESSAGES/django.po +++ b/django/conf/locale/sk/LC_MESSAGES/django.po @@ -1,72 +1,77 @@ -# -# -# +# translation of django.po to Slovak +# +# +# msgid "" msgstr "" -"Project-Id-Version: Django\n" +"Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-03-31 14:02+0200\n" -"PO-Revision-Date: 2007-04-03 21:49+0200\n" -"Last-Translator: <>\n" -"Language-Team: Slovak\n" +"POT-Creation-Date: 2007-06-23 18:09-0400\n" +"PO-Revision-Date: 2007-06-22 20:54-0400\n" +"Last-Translator: Vlado \n" +"Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\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:178 -#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 -#: newforms/fields.py:461 +#: oldforms/__init__.py:361 db/models/fields/__init__.py:121 +#: db/models/fields/__init__.py:278 db/models/fields/__init__.py:675 +#: db/models/fields/__init__.py:686 newforms/models.py:185 +#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:520 +#: newforms/fields.py:531 msgid "This field is required." msgstr "Toto pole je povinné." -#: oldforms/__init__.py:392 +#: oldforms/__init__.py:396 #, python-format msgid "Ensure your text is less than %s character." -msgstr "Uisite sa, že text je kratší ako %s znakov." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Uisite sa, že text je kratší ako %s znak." +msgstr[1] "Uisite sa, že text je kratší ako %s znakov." -#: oldforms/__init__.py:397 +#: oldforms/__init__.py:401 msgid "Line breaks are not allowed here." msgstr "Zalomenia riadkov nie sú povolené." -#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#: oldforms/__init__.py:502 oldforms/__init__.py:575 oldforms/__init__.py:614 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Vyberte platnú možnosť; '%(data)s' nie je v %(choices)s." -#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: oldforms/__init__.py:581 newforms/widgets.py:182 #: contrib/admin/filterspecs.py:150 msgid "Unknown" msgstr "Neznámy" -#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: oldforms/__init__.py:581 newforms/widgets.py:182 #: contrib/admin/filterspecs.py:143 msgid "Yes" msgstr "Áno" -#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: oldforms/__init__.py:581 newforms/widgets.py:182 #: contrib/admin/filterspecs.py:143 msgid "No" msgstr "Nie" -#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +#: oldforms/__init__.py:676 core/validators.py:175 core/validators.py:453 msgid "No file was submitted. Check the encoding type on the form." -msgstr "Súbor nebol odoslaný. Skontrolujte atribút 'enctype' encoding vo formulári." +msgstr "" +"Súbor nebol odoslaný. Skontrolujte atribút 'enctype' encoding vo formulári." -#: oldforms/__init__.py:674 +#: oldforms/__init__.py:678 msgid "The submitted file is empty." msgstr "Odoslaný súbor je prázdný." -#: oldforms/__init__.py:730 +#: oldforms/__init__.py:734 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Zadajte celé číslo s hodnotou medzi -32768 a 32767." -#: oldforms/__init__.py:740 +#: oldforms/__init__.py:744 msgid "Enter a positive number." msgstr "Zadajte celé kladné číslo." -#: oldforms/__init__.py:750 +#: oldforms/__init__.py:754 msgid "Enter a whole number between 0 and 32,767." msgstr "Zadajte celé číslo s hodnotou medzi 0 a 32767." @@ -80,38 +85,42 @@ msgstr "%(object)s s %(type)s už existuje pre prvok %(field)s." msgid "and" msgstr "a" -#: db/models/fields/__init__.py:42 +#: db/models/fields/__init__.py:46 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(optname)s s %(fieldname)s už existuje." -#: db/models/fields/__init__.py:367 +#: db/models/fields/__init__.py:373 msgid "This value must be an integer." msgstr "Táto hodnota musí byť celé číslo." -#: db/models/fields/__init__.py:402 +#: db/models/fields/__init__.py:408 msgid "This value must be either True or False." msgstr "Táto hodnota musí byť True alebo False." -#: db/models/fields/__init__.py:423 +#: db/models/fields/__init__.py:429 msgid "This field cannot be null." msgstr "Toto pole nemôže obsahovať null." -#: db/models/fields/__init__.py:457 core/validators.py:148 +#: db/models/fields/__init__.py:463 core/validators.py:149 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Zadajte platný dátum vo formáte RRRR-MM-DD." -#: db/models/fields/__init__.py:526 core/validators.py:157 +#: db/models/fields/__init__.py:532 core/validators.py:158 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Zadajte platný dátum a čas vo formáte RRRR-MM-DD HH:MM." -#: db/models/fields/__init__.py:630 +#: db/models/fields/__init__.py:592 +msgid "This value must be a decimal number." +msgstr "Táto hodnota musí byť desiatkove číslo." + +#: db/models/fields/__init__.py:695 msgid "Enter a valid filename." msgstr "Zadajte platný názov súboru." -#: db/models/fields/__init__.py:751 +#: db/models/fields/__init__.py:818 msgid "This value must be either None, True or False." -msgstr "Táto hodnota musí byť None, True alebo False." +msgstr "Táto hodnota musí byť buď None, True alebo False." #: db/models/fields/related.py:53 #, python-format @@ -125,13 +134,17 @@ msgstr "Oddeľte viacnásobné ID čiarkami." #: db/models/fields/related.py:644 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Ak chcete vybrať viacero možností, podržte \"Control\" alebo \"Command\" na Mac-u." +msgstr "" +"Ak chcete vybrať viacero možností, podržte \"Control\" alebo \"Command\" na " +"Mac-u." #: 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 "Prosím, vložte platné %(self)s ID-čka. Hodnota %(value)r je neplatná." +msgstr[0] "Prosím, vložte platné %(self)s ID. Hodnota %(value)r je neplatná." +msgstr[1] "" "Prosím, vložte platné %(self)s ID-čka. Hodnoty %(value)r sú neplatné." #: conf/global_settings.py:39 @@ -143,428 +156,463 @@ msgid "Bengali" msgstr "Bengálsky" #: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "Bulharský" + +#: conf/global_settings.py:42 msgid "Catalan" msgstr "Katalánsky" -#: conf/global_settings.py:42 +#: conf/global_settings.py:43 msgid "Czech" msgstr "Česky" -#: conf/global_settings.py:43 +#: conf/global_settings.py:44 msgid "Welsh" msgstr "Welšsky" -#: conf/global_settings.py:44 +#: conf/global_settings.py:45 msgid "Danish" msgstr "Dánsky" -#: conf/global_settings.py:45 +#: conf/global_settings.py:46 msgid "German" msgstr "Nemecky" -#: conf/global_settings.py:46 +#: conf/global_settings.py:47 msgid "Greek" msgstr "Grécky" -#: conf/global_settings.py:47 +#: conf/global_settings.py:48 msgid "English" msgstr "Anglicky" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Spanish" msgstr "Španielsky" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Argentinean Spanish" msgstr "Argentínska španielčina" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Finnish" msgstr "Fínsky" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "French" msgstr "Francúzsky" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Galician" msgstr "Galicijsky" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "Hungarian" msgstr "Maďarsky" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Hebrew" msgstr "Hebrejsky" -#: conf/global_settings.py:55 +#: conf/global_settings.py:56 msgid "Icelandic" msgstr "Islandsky" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Italian" msgstr "Taliansky" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 msgid "Japanese" msgstr "Japonsky" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 +msgid "Korean" +msgstr "Korejský" + +#: conf/global_settings.py:60 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Latvian" msgstr "Lotyšsky" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "Macedonian" msgstr "Mecedónsky" -#: conf/global_settings.py:61 +#: conf/global_settings.py:63 msgid "Dutch" msgstr "Holandsky" -#: conf/global_settings.py:62 +#: conf/global_settings.py:64 msgid "Norwegian" msgstr "Nórsky" -#: conf/global_settings.py:63 +#: conf/global_settings.py:65 msgid "Polish" msgstr "Poľsky" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Portugese" msgstr "Portugalsky" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Brazilian" msgstr "Brazílsky" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Romanian" msgstr "Rumunsky" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Russian" msgstr "Rusky" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Slovak" msgstr "Slovensky" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Slovenian" msgstr "Slovinsky" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Serbian" msgstr "Srbsky" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 msgid "Swedish" msgstr "Švédsky" -#: conf/global_settings.py:72 +#: conf/global_settings.py:74 msgid "Tamil" msgstr "Tamilsky" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:74 +#: conf/global_settings.py:76 msgid "Turkish" msgstr "Turecky" -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 msgid "Ukrainian" msgstr "Ukrajinsky" -#: conf/global_settings.py:76 +#: conf/global_settings.py:78 msgid "Simplified Chinese" msgstr "Čínsky (zjednodušene)" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Traditional Chinese" msgstr "Čínsky (tradične)" -#: core/validators.py:64 +#: core/validators.py:65 msgid "This value must contain only letters, numbers and underscores." msgstr "Táto hodnota môže obsahovať len písmená, číslice a podčiarkovníky." -#: core/validators.py:68 +#: core/validators.py:69 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." -msgstr "Táto hodnota môže obsahovať len písmena, číslice, podčiarkovniky, pomlčky a lomítka." +msgstr "" +"Táto hodnota môže obsahovať len písmena, číslice, podčiarkovniky, pomlčky a " +"lomítka." -#: core/validators.py:72 +#: core/validators.py:73 msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Táto hodnota môže obsahovať len písmená, číslice, počiarkovníky a pomlčky." +msgstr "" +"Táto hodnota môže obsahovať len písmená, číslice, počiarkovníky a pomlčky." -#: core/validators.py:76 +#: core/validators.py:77 msgid "Uppercase letters are not allowed here." msgstr "Veľké písmená nie sú povolené." -#: core/validators.py:80 +#: core/validators.py:81 msgid "Lowercase letters are not allowed here." msgstr "Malé písmena nie sú povolené." -#: core/validators.py:87 +#: core/validators.py:88 msgid "Enter only digits separated by commas." msgstr "Zadávajte len číslice oddelené čiarkami." -#: core/validators.py:99 +#: core/validators.py:100 msgid "Enter valid e-mail addresses separated by commas." msgstr "Zadajte platné e-mailové adresy oddelené čiarkami." -#: core/validators.py:103 +#: core/validators.py:104 msgid "Please enter a valid IP address." msgstr "Prosím, zadajte platnú IP adresu." -#: core/validators.py:107 +#: core/validators.py:108 msgid "Empty values are not allowed here." msgstr "Prázdne hodnoty tu nie sú povolené." -#: core/validators.py:111 +#: core/validators.py:112 msgid "Non-numeric characters aren't allowed here." msgstr "Iné ako numerické znaky tu nie sú povolené." -#: core/validators.py:115 +#: core/validators.py:116 msgid "This value can't be comprised solely of digits." msgstr "Táto hodnota nemôže byť čisto numerická." -#: core/validators.py:120 newforms/fields.py:126 +#: core/validators.py:121 newforms/fields.py:135 msgid "Enter a whole number." msgstr "Zadajte celé číslo." -#: core/validators.py:124 +#: core/validators.py:125 msgid "Only alphabetical characters are allowed here." msgstr "Tu sú povolené len alfanumerické znaky." -#: core/validators.py:139 +#: core/validators.py:140 msgid "Year must be 1900 or later." msgstr "Rok musí byť 1900 alebo neskôr." -#: core/validators.py:143 +#: core/validators.py:144 #, python-format msgid "Invalid date: %s" msgstr "Neplatný dátum: %s" -#: core/validators.py:153 +#: core/validators.py:154 msgid "Enter a valid time in HH:MM format." msgstr "Zadajte platný čas vo formáte HH:MM." -#: core/validators.py:162 newforms/fields.py:269 +#: core/validators.py:163 newforms/fields.py:339 msgid "Enter a valid e-mail address." msgstr "Zadajte platnú e-mailovú adresu." -#: core/validators.py:178 +#: core/validators.py:179 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "Nahrajte platný obrázok. Súbor, ktorý ste odoslali nebol obrázkový formát alebo bol poškodený." +msgstr "" +"Nahrajte platný obrázok. Súbor, ktorý ste odoslali nebol obrázkový formát " +"alebo bol poškodený." -#: core/validators.py:185 +#: core/validators.py:186 #, python-format msgid "The URL %s does not point to a valid image." msgstr "URL %s neodkazuje na platný obrázok." -#: core/validators.py:189 +#: core/validators.py:190 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefónne číslo musí mať formát XXX-XXX-XXXX. Číslo \"%s\" je neplatné." +msgstr "" +"Telefónne číslo musí mať formát XXX-XXX-XXXX. Číslo \"%s\" je neplatné." -#: core/validators.py:197 +#: core/validators.py:198 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "URL %s neodkazuje na platné QuickTime video." -#: core/validators.py:201 +#: core/validators.py:202 msgid "A valid URL is required." msgstr "Je požadovaná platná adresa URL." -#: core/validators.py:215 +#: core/validators.py:216 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" -msgstr "HTML kód musí zodpovedať špecifikácii. Zistené chyby sú:\n" +msgstr "" +"HTML kód musí zodpovedať špecifikácii. Zistené chyby sú:\n" "%s" -#: core/validators.py:222 +#: core/validators.py:223 #, python-format msgid "Badly formed XML: %s" msgstr "Chybné XML nezodpovedajúce definícii: %s" -#: core/validators.py:239 +#: core/validators.py:240 #, python-format msgid "Invalid URL: %s" msgstr "Neplatná adresa URL: %s" -#: core/validators.py:244 core/validators.py:246 +#: core/validators.py:245 core/validators.py:247 #, python-format msgid "The URL %s is a broken link." msgstr "Odkaz na URL %s je neplatný." -#: core/validators.py:252 +#: core/validators.py:253 msgid "Enter a valid U.S. state abbreviation." msgstr "Zadajte platnú skratku štátu USA." -#: core/validators.py:266 +#: core/validators.py:267 #, python-format msgid "Watch your mouth! The word %s is not allowed here." -msgstr "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené použivať." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené použivať." +msgstr[1] "Vyjadrujte sa slušne! Slová %s tu nie je dovolené použivať." -#: core/validators.py:273 +#: core/validators.py:274 #, python-format msgid "This field must match the '%s' field." msgstr "Toto pole sa musí zhodovať s poľom '%s'. " -#: core/validators.py:292 +#: core/validators.py:293 msgid "Please enter something for at least one field." msgstr "Prosím, vyplňte aspoň jedno pole." -#: core/validators.py:301 core/validators.py:312 +#: core/validators.py:302 core/validators.py:313 msgid "Please enter both fields or leave them both empty." msgstr "Prosím, vyplňte buď obidve polia, alebo ich nechajte prázdne." -#: core/validators.py:320 +#: core/validators.py:321 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Toto pole musí byť vyplnené ak, %(field)s je %(value)s" -#: core/validators.py:333 +#: core/validators.py:334 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Toto pole musí byť vyplnené, ak %(field)s nie je %(value)s" -#: core/validators.py:352 +#: core/validators.py:353 msgid "Duplicate values are not allowed." msgstr "Duplicitné hodnoty nie sú povolené." -#: core/validators.py:367 +#: core/validators.py:368 #, python-format msgid "This value must be between %(lower)s and %(upper)s." msgstr "Táto hodnota musí byť medzi %(lower)s a %(upper)s." -#: core/validators.py:369 +#: core/validators.py:370 #, python-format msgid "This value must be at least %s." msgstr "Táto hodnota musí byť prinajmenšom %s." -#: core/validators.py:371 +#: core/validators.py:372 #, python-format msgid "This value must be no more than %s." msgstr "Táto hodnota musí byť väčšia ako %s." -#: core/validators.py:407 +#: core/validators.py:408 #, python-format msgid "This value must be a power of %s." msgstr "Táto hodnota musí byť mocninou %s." -#: core/validators.py:418 +#: core/validators.py:417 msgid "Please enter a valid decimal number." msgstr "Prosím, vložte platné desatinné číslo. " -#: core/validators.py:422 +#: core/validators.py:423 #, 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 "Prosím vlož platné desatinné číslo s najviac %s číslicou." -"Prosím vlož platné desatinné číslo s najviac %s číslicami." +msgstr[0] "Prosím, vložte platné desatinné číslo. " +msgstr[1] "Prosím, vložte platné desatinné čísla. " -#: core/validators.py:425 +#: core/validators.py:426 #, 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 "Prosím, zadajte platné desatinné číslo s najviac %s číslicou pred desatinnou čiarkou." -"Prosím, zadajte platné desatinné číslo s najviac %s číslicami pred desatinnou čiarkou." +msgstr[0] "Prosím vlož platné desatinné číslo s najviac %s číslicou. " +msgstr[1] "Prosím vlož platné desatinné číslo s najviac %s číslicami." -#: core/validators.py:428 +#: core/validators.py:429 #, 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 "Prosím, zadajte platné desatinné číslo s najviac %s desatinným miestom." -"Prosím, zadajte platné desatinné číslo s najviac %s desatinnými miestami." +msgstr[0] "" +"Prosím, vložte platné desatinné číslo s najviac %s desatinným miestom. " +msgstr[1] "" +"Prosím, vložte platné desatinné číslo s najviac %s desatinnými miestamy. " -#: core/validators.py:438 +#: core/validators.py:437 +msgid "Please enter a valid floating point number." +msgstr "Prosím, vložte platné číslo s pohyblivou desatinnou čiarkou. " + +#: core/validators.py:446 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Uistite sa, že posielaný súbor nemá menej ako %s bajtov." -#: core/validators.py:439 +#: core/validators.py:447 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Uistite sa, že posielaný súbor nemá viac ako %s bajtov." -#: core/validators.py:456 +#: core/validators.py:464 msgid "The format for this field is wrong." msgstr "Formát pre toto pole je chybný." -#: core/validators.py:471 +#: core/validators.py:479 msgid "This field is invalid." msgstr "Toto pole nie je platné." -#: core/validators.py:507 +#: core/validators.py:515 #, python-format msgid "Could not retrieve anything from %s." msgstr "Z %s nič neprišlo." -#: core/validators.py:510 +#: core/validators.py:518 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "Adresa URL %(url)s vrátila v hlavičke neplatný Content-Type '%(contenttype)s'." +msgstr "" +"Adresa URL %(url)s vrátila v hlavičke neplatný Content-Type '%(contenttype)" +"s'." -#: core/validators.py:543 +#: core/validators.py:551 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" -msgstr "Prosím, uzatvorte tag %(tag)s na riadku %(line)s. (Riadok začína " -"s \"%(start)s\".)" +msgstr "" +"Prosím, uzatvorte tag %(tag)s na riadku %(line)s. (Riadok začína s \"%(start)" +"s\".)" -#: core/validators.py:547 +#: core/validators.py:555 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" -msgstr "Text začínajúci na riadku %(line)s nie je povolený v tomto kontexte. (Riadok začína s \"%(start)s\".)" +msgstr "" +"Text začínajúci na riadku %(line)s nie je povolený v tomto kontexte. (Riadok " +"začína s \"%(start)s\".)" -#: core/validators.py:552 +#: core/validators.py:560 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" -msgstr "\"%(attr)s\" na riadku %(line)s je neplatný atribút. (Riadok začína s \"%" +msgstr "" +"\"%(attr)s\" na riadku %(line)s je neplatný atribút. (Riadok začína s \"%" "(start)s\".)" -#: core/validators.py:557 +#: core/validators.py:565 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" -msgstr "\"<%(tag)s>\" na riadku %(line)s je neplatný tag. (Riadok začína s \"%" -"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" na riadku %(line)s je neplatný tag. (Riadok začína s \"%(start)" +"s\".)" -#: core/validators.py:561 +#: core/validators.py:569 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" -msgstr "V tagu na riadku %(line)s chýba jeden alebo viac atribútov. (Riadok " -"začína s \"%(start)s\".)" +msgstr "" +"V tagu na riadku %(line)s chýba jeden alebo viac atribútov. (Riadok začína s " +"\"%(start)s\".)" -#: core/validators.py:566 +#: core/validators.py:574 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" -msgstr "Atribút \"%(attr)s\" na riadku %(line)s má neplatnú hodnotu. (Riadok začína " +msgstr "" +"Atribút \"%(attr)s\" na riadku %(line)s má neplatnú hodnotu. (Riadok začína " "s \"%(start)s\".)" #: views/generic/create_update.py:43 @@ -582,60 +630,79 @@ msgstr "Objekt %(verbose_name)s bol úspešne zmenený." msgid "The %(verbose_name)s was deleted." msgstr "Objekt %(verbose_name)s bol zmazaný." -#: newforms/models.py:165 newforms/fields.py:360 +#: newforms/models.py:172 newforms/fields.py:432 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Vyberte platnú možnosť. Vybraná položka nepatrí medzi platné možnosti." -#: newforms/models.py:182 newforms/fields.py:378 newforms/fields.py:454 +#: newforms/models.py:189 newforms/fields.py:448 newforms/fields.py:524 msgid "Enter a list of values." msgstr "Vložte zoznam hodnôt." -#: newforms/models.py:188 newforms/fields.py:387 +#: newforms/models.py:195 newforms/fields.py:457 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Vyberte platnú možnost. %s nepatrí medzi dostupné možnosti." -#: newforms/fields.py:101 newforms/fields.py:254 +#: newforms/fields.py:110 newforms/fields.py:324 #, python-format msgid "Ensure this value has at most %d characters." msgstr "Uistite sa, že hodnota má najviac %d znakov." -#: newforms/fields.py:103 newforms/fields.py:256 +#: newforms/fields.py:112 newforms/fields.py:326 #, python-format msgid "Ensure this value has at least %d characters." msgstr "Uistite sa, že zadaná hodnota má menej ako %d znakov." -#: newforms/fields.py:128 +#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Uistite sa, že táto hodnota je menšia alebo rovná %s." -#: newforms/fields.py:130 +#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Uistite sa, že hodnota je väčšia alebo rovná %s." -#: newforms/fields.py:163 +#: newforms/fields.py:158 newforms/fields.py:186 +msgid "Enter a number." +msgstr "Zadajte číslo." + +#: newforms/fields.py:196 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "" + +#: newforms/fields.py:198 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Zabezpečte aby nebolo viac ako %s desatinných miest." + +#: newforms/fields.py:200 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Zabezpečte aby nebolo viac ako %s číslic pred desatinnou bodkou." + +#: newforms/fields.py:233 msgid "Enter a valid date." msgstr "Zadajte platný dátum." -#: newforms/fields.py:190 +#: newforms/fields.py:260 msgid "Enter a valid time." msgstr "Zadajte platný čas." -#: newforms/fields.py:226 +#: newforms/fields.py:296 msgid "Enter a valid date/time." msgstr "Zadajte platný dátum a čas." -#: newforms/fields.py:240 +#: newforms/fields.py:310 msgid "Enter a valid value." msgstr "Zadajte platnú hodnotu." -#: newforms/fields.py:287 newforms/fields.py:309 +#: newforms/fields.py:357 newforms/fields.py:379 msgid "Enter a valid URL." msgstr "Zadajte platnú adresu URL." -#: newforms/fields.py:311 +#: newforms/fields.py:381 msgid "This URL appears to be a broken link." msgstr "Odkaz na URL neexistuje." @@ -658,17 +725,23 @@ msgstr "rd" #: contrib/humanize/templatetags/humanize.py:47 #, python-format msgid "%(value).1f million" -msgstr "%(value).1f milión" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milión" +msgstr[1] "%(value).1f milión" #: contrib/humanize/templatetags/humanize.py:50 #, python-format msgid "%(value).1f billion" -msgstr "%(value).1f miliarda" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f miliarda" +msgstr[1] "%(value).1f miliarda" #: contrib/humanize/templatetags/humanize.py:53 #, python-format msgid "%(value).1f trillion" -msgstr "%(value).1f bilión" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f bilión" +msgstr[1] "%(value).1f bilión" #: contrib/humanize/templatetags/humanize.py:68 msgid "one" @@ -714,7 +787,9 @@ msgstr "presmerovať z" msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." -msgstr "Tu by sa mala použiť absolútna cesta bez názvu domény. Napríklad: '/events/search/'." +msgstr "" +"Tu by sa mala použiť absolútna cesta bez názvu domény. Napríklad: '/events/" +"search/'." #: contrib/redirects/models.py:9 msgid "redirect to" @@ -724,7 +799,9 @@ msgstr "presmerovať na " msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." -msgstr "Tu môže byť buď absolútna cesta (ako je uvedené vyššie) alebo úplná adresa URL začínajúca s 'http://'." +msgstr "" +"Tu môže byť buď absolútna cesta (ako je uvedené vyššie) alebo úplná adresa " +"URL začínajúca s 'http://'." #: contrib/redirects/models.py:13 msgid "redirect" @@ -791,7 +868,7 @@ msgstr "dátum a čas odoslania" msgid "is public" msgstr "je verejný" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:305 msgid "IP address" msgstr "IP adresa" @@ -803,7 +880,9 @@ msgstr "je vymazaný" msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." -msgstr "Zaškrtnite toto pole, ak je komentár nevhodný. Správa \"Tento komenár bol zmazaný\" sa bude zobrazovať namiesto neho." +msgstr "" +"Zaškrtnite toto pole, ak je komentár nevhodný. Správa \"Tento komenár bol " +"zmazaný\" sa bude zobrazovať namiesto neho." #: contrib/comments/models.py:91 msgid "comments" @@ -838,7 +917,7 @@ msgstr "ip adresa" #: contrib/comments/models.py:173 msgid "approved by staff" -msgstr "je zamestnancom" +msgstr "schválený zamestnancom" #: contrib/comments/models.py:176 msgid "free comment" @@ -875,13 +954,14 @@ msgid "" "This comment was flagged by %(user)s:\n" "\n" "%(text)s" -msgstr "Tento komentár bol označený užívateľom %(user)s:\n" +msgstr "" +"Tento komentár bol označený užívateľom %(user)s:\n" "\n" "%(text)s" #: contrib/comments/models.py:265 msgid "flag date" -msgstr "dátumové príznak" +msgstr "označený dátum" #: contrib/comments/models.py:268 msgid "user flag" @@ -937,18 +1017,18 @@ msgid "" "comment:\n" "\n" "%(text)s" +msgid_plural "" "This comment was posted by a user who has posted fewer than %(count)s " "comments:\n" "\n" "%(text)s" -msgstr "" -"Tento komentár je od užívateľa, ktorý doteraz poslal menej ako %(count)s " -"komentár:\n" -"\n" +msgstr[0] "" +"Tento komentár je od užívateľa, ktorý poslal menej ako %(count)s " +"príspevok\n" "%(text)s" -"Tento komentár je od užívateľa, ktorý doteraz poslal menej ako %(count)s " -"komentárov:\n" -"\n" +msgstr[1] "" +"Tento komentár je od užívateľa, ktorý poslal menej ako %(count)s " +"príspevkov .\n" "%(text)s" #: contrib/comments/views/comments.py:116 @@ -957,7 +1037,8 @@ msgid "" "This comment was posted by a sketchy user:\n" "\n" "%(text)s" -msgstr "Tento komentár je od užívateľa, ktorý sa rád vyjadruje v náznakoch:\n" +msgstr "" +"Tento komentár je od užívateľa, ktorý sa rád vyjadruje v náznakoch:\n" "\n" "%(text)s" @@ -974,7 +1055,8 @@ msgstr "Jedno alebo viac povinných polí nebolo vložených" #: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Niekto sa pokúšal manipulovať s formulárom komentára (porušenie bezpečnosti)" +msgstr "" +"Niekto sa pokúšal manipulovať s formulárom komentára (porušenie bezpečnosti)" #: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 @@ -987,7 +1069,22 @@ msgstr "" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Formulár komentára neobsahuje ani jednu z možností 'náhľad' alebo 'odoslať'." +msgstr "" +"Formulár komentára neobsahuje ani jednu z možností 'náhľad' alebo 'odoslať'." + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Tvoje meno:" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "Komentár:" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +msgstr "Náhľad komentára" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 @@ -996,24 +1093,24 @@ msgid "Username:" msgstr "Meno:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: 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/view_detail.html:4 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_detail.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 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Odhlásenie" @@ -1044,20 +1141,6 @@ msgstr "Nepovinné" msgid "Post a photo" msgstr "Pošli foto" -#: contrib/comments/templates/comments/form.html:28 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Komentár:" - -#: contrib/comments/templates/comments/form.html:35 -#: contrib/comments/templates/comments/freeform.html:10 -msgid "Preview comment" -msgstr "Náhľad komentára" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Tvoje meno:" - #: contrib/sites/models.py:10 msgid "domain name" msgstr "názov domény" @@ -1090,7 +1173,7 @@ msgstr "Všetko" #: contrib/admin/filterspecs.py:109 msgid "Any date" -msgstr "Všetky dátumy" +msgstr "Lubovoľný dátum" #: contrib/admin/filterspecs.py:110 msgid "Today" @@ -1136,10 +1219,48 @@ msgstr "záznam priebehu" msgid "log entries" msgstr "záznamy priebehu" -#: contrib/admin/templatetags/admin_list.py:247 +#: contrib/admin/templatetags/admin_list.py:249 msgid "All dates" msgstr "Všetky dátumy" +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Prosím, zadajte užívateľské meno a heslo. Rešpektujte malé a veľké písmená." + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Prihlásenie" + +#: 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 "" +"Vaša session vypršala. Prosím, príhlaste sa znovu. Nemusíte sa obávať, vaše " +"údaje boli uchované." + +#: 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 "" +"Vyzerá to tak, že váš prehliadač nemá povolené cookies. Prosím, povoľte si " +"cookies a skúste znova načítať stránku." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Užívateľské meno nemože obsahovať znak '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Vaša e-mailová adresa nie je užívateľským menom. Skúste použiť meno '%s'." + #: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." @@ -1252,43 +1373,10 @@ msgstr "Ktorý %s sa má zmeniť?" msgid "Database error" msgstr "Chyba databázy" -#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Prosím, zadajte užívateľské meno a heslo. Pozor na malé a veľké písmená." - -#: contrib/admin/views/decorators.py:24 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Prihlásenie" - -#: 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 "Vaša session vypršala. Prosím, príhlaste sa znovu. Nemusíte sa obávať, vaše údaje boli uchované." - -#: 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 "Vyzerá to tak, že váš prehliadač nemá povolené cookies. Prosím, povoľte si cookies a skúste znova načítať stránku." - -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Užívateľské meno nemože obsahovať znak '@'." - -#: contrib/admin/views/decorators.py:85 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Vaša e-mailová adresa nie je užívateľským menom. Skúste použiť meno '%s'." - #: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 #: contrib/admin/views/doc.py:50 msgid "tag:" -msgstr "" +msgstr "označovač:" #: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 #: contrib/admin/views/doc.py:81 @@ -1298,7 +1386,7 @@ msgstr "" #: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 #: contrib/admin/views/doc.py:139 msgid "view:" -msgstr "" +msgstr "prehľad:" #: contrib/admin/views/doc.py:164 #, python-format @@ -1340,9 +1428,9 @@ msgstr "počet %s" msgid "Fields on %s objects" msgstr "Polia objektu %s" -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 -#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 +#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 msgid "Integer" msgstr "Celé číslo" @@ -1350,7 +1438,7 @@ msgstr "Celé číslo" msgid "Boolean (Either True or False)" msgstr "Logická hodnota (True alebo False)" -#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 #, python-format msgid "String (up to %(maxlength)s)" msgstr "Dĺžka reťazca (maximálne do %(maxlength)s znakov)" @@ -1368,51 +1456,55 @@ msgid "Date (with time)" msgstr "Dátum (a čas)" #: contrib/admin/views/doc.py:297 -msgid "E-mail address" -msgstr "E-mailová adresa" - -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 -#: contrib/admin/views/doc.py:302 -msgid "File path" -msgstr "Cesta k súboru" - -#: contrib/admin/views/doc.py:300 msgid "Decimal number" msgstr "Desatinné číslo" -#: contrib/admin/views/doc.py:306 +#: contrib/admin/views/doc.py:298 +msgid "E-mail address" +msgstr "E-mailová adresa" + +#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:303 +msgid "File path" +msgstr "Cesta k súboru" + +#: contrib/admin/views/doc.py:301 +msgid "Floating point number" +msgstr "Císlo s pohyblivou čiarkou" + +#: contrib/admin/views/doc.py:307 msgid "Boolean (Either True, False or None)" msgstr "Logická hodnota (True, False alebo None)" -#: contrib/admin/views/doc.py:307 +#: contrib/admin/views/doc.py:308 msgid "Relation to parent model" msgstr "Má vzťah k nadradenému modelu" -#: contrib/admin/views/doc.py:308 +#: contrib/admin/views/doc.py:309 msgid "Phone number" msgstr "Číslo telefónu" -#: contrib/admin/views/doc.py:313 +#: contrib/admin/views/doc.py:314 msgid "Text" msgstr "Text" -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:315 msgid "Time" msgstr "Čas" -#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admin/views/doc.py:316 +#: contrib/admin/views/doc.py:317 msgid "U.S. state (two uppercase letters)" msgstr "Štát USA (dve veľké písmena)" -#: contrib/admin/views/doc.py:317 +#: contrib/admin/views/doc.py:318 msgid "XML text" msgstr "XML text" -#: contrib/admin/views/doc.py:343 +#: contrib/admin/views/doc.py:344 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s nie je urlpattern objekt" @@ -1433,11 +1525,11 @@ msgstr "Dátum:" msgid "Time:" msgstr "Čas:" -#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: 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 @@ -1445,36 +1537,36 @@ msgstr "Čas:" msgid "Documentation" msgstr "Dokumentácia" -#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: 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/view_detail.html:4 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_detail.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 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Change password" msgstr "Zmeniť heslo" -#: contrib/admin/templates/admin/change_list.html:6 #: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_list.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/delete_confirmation.html:6 #: 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 @@ -1485,16 +1577,6 @@ msgstr "Zmeniť heslo" msgid "Home" msgstr "Začiatok" -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Pridať %(name)s" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr "Podľa %(filter_title)s " - #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/change_form.html:21 msgid "History" @@ -1521,7 +1603,50 @@ msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"Tento object nemá históriu vykonaných zmien. Možno nebol pridaný prostredníctvom tohoto administračného rozhrania." +"Tento object nemá históriu vykonaných zmien. Možno nebol pridaný " +"prostredníctvom tohoto administračného rozhrania." + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Pridať %(name)s" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "Podľa %(filter_title)s " + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Chyba servera" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Chyba servera (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Chyba servera (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Vznikla neočakávaná chyba. Prostredníctvom e-mailu bol o nej informovaný " +"správca a dá sa predpokladať, že bude v krátkej dobe odstránená. Ďakujeme za " +"pochopenie." + +#: 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 "" +"S inštaláciou alebo nastavením vašej databázy nie je niečo v poriadku. " +"Uistite sa, že ste vytvorili potrebné databázové tabuľky. Taktiež " +"skontrolujte, či má systémový užívateľ, pod ktorým beží aplikácia, právo na " +"prístup k databáze a čítanie súborov databázy." #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" @@ -1530,7 +1655,9 @@ msgstr "Choď" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "1 result" -msgstr "1 výsledok" +msgid_plural "%(counter)s results" +msgstr[0] "1 výsledok" +msgstr[1] "%(counter)s výsledkov" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -1549,30 +1676,18 @@ msgstr "Django administrácia" msgid "Django administration" msgstr "Administrácia Django" -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Chyba servera" +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filter" -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Chyba servera (500)" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Stránka nebola nájdená" -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Chyba servera (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "Vznikla neočakávaná chyba. Prostredníctvom e-mailu bol o nej informovaný správca a dá sa predpokladať, že bude v krátkej dobe odstránená. Ďakujeme za pochopenie." - -#: 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 "S inštaláciou alebo nastavením vašej databázy nie je niečo v poriadku. Uistite sa, že ste vytvorili potrebné databázové tabuľky. Taktiež skontrolujte, či má systémový užívateľ, pod ktorým beží aplikácia, právo na prístup k databáze a čítanie súborov databázy." +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Ľutujeme, ale požadovaná stránka nebola nájdená." #: contrib/admin/templates/admin/index.html:17 #, python-format @@ -1609,19 +1724,6 @@ msgstr "Moje udalosti" msgid "None available" msgstr "Nedostupné" -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Stránka nebola nájdená" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Ľutujeme, ale požadovaná stránka nebola nájdená." - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filter" - #: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" msgstr "Pozrieť na stránke" @@ -1629,7 +1731,9 @@ msgstr "Pozrieť na stránke" #: contrib/admin/templates/admin/change_form.html:32 #: contrib/admin/templates/admin/auth/user/change_password.html:24 msgid "Please correct the error below." -msgstr "Prosím, opravte chyby uvedené nižšie." +msgid_plural "Please correct the errors below." +msgstr[0] "Prosím, opravte chybu uvedenú nižšie." +msgstr[1] "Prosím, opravte chyby uvedené nižšie." #: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" @@ -1639,6 +1743,10 @@ msgstr "Radenie" msgid "Order:" msgstr "Poradie:" +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Vitajte," + #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" @@ -1650,24 +1758,24 @@ 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 "Zmazanie objektu %(object_name)s '%(escaped_object)s' by spôsobilo zmazanie súvisiacich objektov, avšak vaše užívateľské práva vám neumožňujú zmazať nasledujúce typy objektov:" +msgstr "" +"Zmazanie objektu %(object_name)s '%(escaped_object)s' by spôsobilo zmazanie " +"súvisiacich objektov, avšak vaše užívateľské práva vám neumožňujú zmazať " +"nasledujúce typy objektov:" #: 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 "Ste si istý, že chcete zmazať objekt %(object_name)s \"%(escaped_object)s\"? " +msgstr "" +"Ste si istý, že chcete zmazať objekt %(object_name)s \"%(escaped_object)s\"? " "Zmazané budú aj všetky tieto súvisiace objekty:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Áno, som si istý" -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Vitajte," - #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Uložiť ako nový" @@ -1708,7 +1816,9 @@ msgstr "Znova zadajte heslo kvôli overeniu." msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." -msgstr "Najskôr zadajte užívateľské meno a heslo. Neskôr budete môcť upraviť ostatné užívateľské nastavnia." +msgstr "" +"Najskôr zadajte užívateľské meno a heslo. Neskôr budete môcť upraviť ostatné " +"užívateľské nastavnia." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -1741,7 +1851,9 @@ msgstr "Obnovenie hesla" 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 "Zabudli ste svoje heslo? Zadajte svoju e-mailovú adresu, na ktorú vám bude zaslané nové heslo." +msgstr "" +"Zabudli ste svoje heslo? Zadajte svoju e-mailovú adresu, na ktorú vám bude " +"zaslané nové heslo." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -1768,13 +1880,17 @@ msgstr "Heslo bolo úspešne obnovené" msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." -msgstr "Bolo vám zaslané nové heslo na uvedenú adresu. Mali by ste ho obdržať v najbližšej dobe." +msgstr "" +"Bolo vám zaslané nové heslo na uvedenú adresu. Mali by ste ho obdržať v " +"najbližšej dobe." #: 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 "Z bezpečnostných dôvodov zadajte najskôr staré heslo a potom dva krát nové heslo, tak aby sa mohlo overiť, či nevznikol preklep." +msgstr "" +"Z bezpečnostných dôvodov zadajte najskôr staré heslo a potom dva krát nové " +"heslo, tak aby sa mohlo overiť, či nevznikol preklep." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -1840,10 +1956,16 @@ msgid "" "bookmarklets require you to be viewing the site from a computer designated\n" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

                      \n" -msgstr "\n" -"

                      Ak chete nainštalovať záložky, pretiahnite linku do vášho panela so záložkami\n" -"alebo kliknite pravým tlačidlom myši na linku a pridajte ju do svojich záložiek.\n" -"Následne môžete záložky použiť na stránkach. Všimnite si, že použitie niektorých záložiek vyžaduje, aby bol váš počítač pridaný do zoznamu INTERNAL_IPS. Ak nie ste si istý, že ste v tomto zozname, oslovte vášho administrátora.

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

                      Ak chete nainštalovať záložky, pretiahnite linku do vášho " +"panela so záložkami\n" +"alebo kliknite pravým tlačidlom myši na linku a pridajte ju do svojich " +"záložiek.\n" +"Následne môžete záložky použiť na stránkach. Všimnite si, že použitie " +"niektorých záložiek vyžaduje, aby bol váš počítač pridaný do zoznamu " +"INTERNAL_IPS. Ak nie ste si istý, že ste v tomto zozname, oslovte vášho " +"administrátora.

                      \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -1854,7 +1976,8 @@ msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." msgstr "" -"Skočte z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa táto stránka generuje." +"Skočte z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa táto " +"stránka generuje." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" @@ -1894,140 +2017,155 @@ msgstr "typ obsahu" msgid "content types" msgstr "typy obsahu" -#: contrib/auth/views.py:39 +#: contrib/auth/views.py:40 msgid "Logged out" msgstr "Odhlásený" -#: contrib/auth/models.py:38 contrib/auth/models.py:57 +#: contrib/auth/models.py:44 contrib/auth/models.py:64 msgid "name" msgstr "meno" -#: contrib/auth/models.py:40 +#: contrib/auth/models.py:46 msgid "codename" msgstr "codename" -#: contrib/auth/models.py:42 +#: contrib/auth/models.py:49 msgid "permission" msgstr "povolenie" -#: contrib/auth/models.py:43 contrib/auth/models.py:58 +#: contrib/auth/models.py:50 contrib/auth/models.py:65 msgid "permissions" msgstr "práva" -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:68 msgid "group" msgstr "skupina" -#: contrib/auth/models.py:61 contrib/auth/models.py:100 +#: contrib/auth/models.py:69 contrib/auth/models.py:109 msgid "groups" msgstr "skupiny" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:99 msgid "username" msgstr "užívateľské meno" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:99 msgid "" "Required. 30 characters or fewer. Alphanumeric characters only (letters, " "digits and underscores)." -msgstr "Povinná položka s dĺžkou 30 znakov alebo menej. Povolené sú len alfanumerické znaky (písmená, čísla a podtržník)." +msgstr "" +"Povinná položka s dĺžkou 30 znakov alebo menej. Povolené sú len " +"alfanumerické znaky (písmená, čísla a podtržník)." -#: contrib/auth/models.py:91 +#: contrib/auth/models.py:100 msgid "first name" msgstr "krstné meno" -#: contrib/auth/models.py:92 +#: contrib/auth/models.py:101 msgid "last name" msgstr "priezvisko" -#: contrib/auth/models.py:93 +#: contrib/auth/models.py:102 msgid "e-mail address" msgstr "e-mailová adresa" -#: contrib/auth/models.py:94 +#: contrib/auth/models.py:103 msgid "password" msgstr "heslo" -#: contrib/auth/models.py:94 +#: contrib/auth/models.py:103 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." -msgstr "Použite '[algo]$[salt]$[hexdigest]' alebo formulár na zmenu hesla." +msgstr "" +"Použite '[algo]$[salt]$[hexdigest]' alebo formulár na " +"zmenu hesla." -#: contrib/auth/models.py:95 +#: contrib/auth/models.py:104 msgid "staff status" msgstr "zamestnanec" -#: contrib/auth/models.py:95 +#: contrib/auth/models.py:104 msgid "Designates whether the user can log into this admin site." -msgstr "Určuje, či má užívateľ oprávnenie prihlásiť sa do administračnej časti." +msgstr "" +"Určuje, či má užívateľ oprávnenie prihlásiť sa do administračnej časti." -#: contrib/auth/models.py:96 +#: contrib/auth/models.py:105 msgid "active" msgstr "aktívny" -#: contrib/auth/models.py:96 +#: contrib/auth/models.py:105 msgid "" "Designates whether this user can log into the Django admin. Unselect this " "instead of deleting accounts." -msgstr "Určuje, či je účet aktívny. Odškrtnite, ak chcete deaktivovať užívateľský účet." +msgstr "" +"Určuje, či je účet aktívny. Odškrtnite, ak chcete deaktivovať užívateľský " +"účet." -#: contrib/auth/models.py:97 +#: contrib/auth/models.py:106 msgid "superuser status" msgstr "superužívateľ" -#: contrib/auth/models.py:97 +#: contrib/auth/models.py:106 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." -msgstr "Určuje, či užívateľ získava automaticky všetky práva aj bez priameho priradenia." +msgstr "" +"Určuje, či užívateľ získava automaticky všetky práva aj bez priameho " +"priradenia." -#: contrib/auth/models.py:98 +#: contrib/auth/models.py:107 msgid "last login" msgstr "naposledy prihlásený" -#: contrib/auth/models.py:99 +#: contrib/auth/models.py:108 msgid "date joined" msgstr "dátum registrácie" -#: contrib/auth/models.py:101 +#: contrib/auth/models.py:110 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." -msgstr "Okrem ručne zadaných práv bude mať užívateľ aj všetky práva prislúchajúce skupinám, v ktorých sa nachádza." +msgstr "" +"Okrem ručne zadaných práv bude mať užívateľ aj všetky práva prislúchajúce " +"skupinám, v ktorých sa nachádza." -#: contrib/auth/models.py:102 +#: contrib/auth/models.py:111 msgid "user permissions" msgstr "užívateľské práva" -#: contrib/auth/models.py:105 +#: contrib/auth/models.py:115 msgid "user" msgstr "uživateľ" -#: contrib/auth/models.py:106 +#: contrib/auth/models.py:116 msgid "users" msgstr "užívatelia" -#: contrib/auth/models.py:111 +#: contrib/auth/models.py:122 msgid "Personal info" msgstr "Osobné údaje" -#: contrib/auth/models.py:112 +#: contrib/auth/models.py:123 msgid "Permissions" msgstr "Práva" -#: contrib/auth/models.py:113 +#: contrib/auth/models.py:124 msgid "Important dates" msgstr "Dôležité dátumy" -#: contrib/auth/models.py:114 +#: contrib/auth/models.py:125 msgid "Groups" msgstr "Skupiny" -#: contrib/auth/models.py:258 +#: contrib/auth/models.py:269 msgid "message" msgstr "správa" +#: contrib/auth/models.py:282 +msgid "AnonymousUser" +msgstr "Neregistrovaný užívateľ" + #: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." msgstr "Pole hesla a jeho potvrdenie sa nezhodujú." @@ -2040,17 +2178,21 @@ msgstr "Užívateľ s týmto užívateľským menom už existuje." msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." -msgstr "Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre úspešné prihlásenie." +msgstr "" +"Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre úspešné " +"prihlásenie." #: contrib/auth/forms.py:62 msgid "This account is inactive." msgstr "Účet je deaktivovaný." -#: contrib/auth/forms.py:85 +#: contrib/auth/forms.py:84 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" -msgstr "K danej e-mailovej adrese neexistuje užívateľský účet. Ste si istý, že ste sa zaregistrovali?" +msgstr "" +"K danej e-mailovej adrese neexistuje užívateľský účet. Ste si istý, že ste " +"sa zaregistrovali?" #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." @@ -2062,17 +2204,129 @@ msgstr "Vaše staré heslo nebolo zadané správne. Prosím, zadajte heslo znova #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." -msgstr "Zadajte britský poštový kód (PSČ). Medzera medzi dvomi časťami kódu je povinná." +msgstr "" +"Zadajte britský poštový kód (PSČ). Medzera medzi dvomi časťami kódu je " +"povinná." -#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/it/forms.py:15 +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Vložte poštové smerovacie číslo v tvare XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefónne číslo musí mať formát XX-XXXX-XXXX. " + +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "Toto pole je môže obsahovať len čísla." + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Toto pole môže mať najviac 11 čisiel alebo 14 písmen." + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "Chybné CPF číslo." + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "Toto pole vyžaduje minimale 14 číslic." + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "Chybné CNJP číslo." + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Vložte 4 čísla poštového smerovacieho čísla." + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 #: contrib/localflavor/fi/forms.py:14 msgid "Enter a zip code in the format XXXXX." msgstr "Vložte poštové smerovacie číslo v tvare XXXXX." -#: contrib/localflavor/usa/forms.py:17 +#: contrib/localflavor/us/forms.py:18 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Zadajte americký poštový kód (ZIP) vo formáte XXXXX alebo XXXXX-XXXX." +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Vložte platné U.S. číslo sociálneho poistenia vo formáte XXX-XX-XXXX." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bavórsko" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlín" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Zadajte poštové smerovacie číslo v tvare XXXXXXX alebo XXX-XXXX." + #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" msgstr "" @@ -2261,21 +2515,158 @@ msgstr "" msgid "Okinawa" msgstr "" -#: contrib/localflavor/jp/forms.py:21 -msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Zadajte poštové smerovacie číslo v tvare XXXXXXX alebo XXX-XXXX." +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" -#: contrib/localflavor/no/forms.py:15 +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:15 msgid "Enter a zip code in the format XXXX." msgstr "Vložte poštové smerovacie číslo v tvare XXXX." +#: contrib/localflavor/ch/forms.py:90 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/is_/forms.py:16 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Zadajte platné Islanské číslo v tvare XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Zadajte platné poštové smerovacie číslo." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Vložte platné číslo sociálneho poistenia ." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Zadajte platné VAT číslo." + #: contrib/localflavor/no/forms.py:36 msgid "Enter a valid Norwegian social security number." -msgstr "Vložte platné nórske číslo sociálneho poistenia (social security number)." +msgstr "" +"Vložte platné nórske číslo sociálneho poistenia (social security number)." -#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 msgid "Enter a valid Finnish social security number." -msgstr "Vložte platné fínske číslo sociálneho poistenia (social security number)." +msgstr "" +"Vložte platné fínske číslo sociálneho poistenia (social security number)." #: contrib/sessions/models.py:68 msgid "session key" @@ -2301,7 +2692,8 @@ msgstr "sessions" msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" -"Príklad: '/about/contact/'. Uistite sa, že adresa obsahuje na začiatku a na konci.lomítka." +"Príklad: '/about/contact/'. Uistite sa, že adresa obsahuje na začiatku a na " +"konci.lomítka." #: contrib/flatpages/models.py:9 msgid "title" @@ -2324,8 +2716,8 @@ msgid "" "Example: 'flatpages/contact_page.html'. If this isn't provided, the system " "will use 'flatpages/default.html'." msgstr "" -"Príklad: 'flatpages/contact_page'. Ak táto šablóna neexistuje, systém použije " -"'flatpages/default'." +"Príklad: 'flatpages/contact_page'. Ak táto šablóna neexistuje, systém " +"použije 'flatpages/default'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -2497,27 +2889,54 @@ msgstr "Dec." #: utils/timesince.py:12 msgid "year" -msgstr "rok" +msgid_plural "years" +msgstr[0] "rok" +msgstr[1] "roky" #: utils/timesince.py:13 msgid "month" -msgstr "mesiac" +msgid_plural "months" +msgstr[0] "mesiac" +msgstr[1] "mesiacov" #: utils/timesince.py:14 msgid "week" -msgstr "týždeň" +msgid_plural "weeks" +msgstr[0] "týždeň" +msgstr[1] "týždňov" #: utils/timesince.py:15 msgid "day" -msgstr "deň" +msgid_plural "days" +msgstr[0] "deň" +msgstr[1] "dni" #: utils/timesince.py:16 msgid "hour" -msgstr "hodina" +msgid_plural "hours" +msgstr[0] "hodina" +msgstr[1] "hodín" #: utils/timesince.py:17 msgid "minute" -msgstr "minúta" +msgid_plural "minutes" +msgstr[0] "minúta" +msgstr[1] "minúty" + +#: utils/timesince.py:40 +#, python-format +msgid "%d milliseconds" +msgstr "" + +#: utils/timesince.py:41 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:47 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" #: utils/dateformat.py:40 msgid "p.m." @@ -2543,23 +2962,23 @@ msgstr "polnoc" msgid "noon" msgstr "poludnie" -#: utils/translation/trans_real.py:362 +#: utils/translation/trans_real.py:358 msgid "DATE_FORMAT" msgstr "" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" msgstr "" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" msgstr "" -#: utils/translation/trans_real.py:380 +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" msgstr "" -#: utils/translation/trans_real.py:381 +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" msgstr "" @@ -2567,3 +2986,24 @@ msgstr "" msgid "yes,no,maybe" msgstr "áno,nie,možno" +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "" diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo index cd91c18cb7..5654541a4e 100644 Binary files a/django/conf/locale/sv/LC_MESSAGES/django.mo and b/django/conf/locale/sv/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/sv/LC_MESSAGES/django.po b/django/conf/locale/sv/LC_MESSAGES/django.po index befde10e77..db542460e6 100644 --- a/django/conf/locale/sv/LC_MESSAGES/django.po +++ b/django/conf/locale/sv/LC_MESSAGES/django.po @@ -2,17 +2,13 @@ # Copyright (C) 2005 # This file is distributed under the same license as the Django package. # -# -# Robin Sonefors , 2005. -# Ludvig Ericson , 2007. -# Mikko Hellsing , 2007. msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-03-06 00:17+0100\n" +"POT-Creation-Date: 2007-06-15 17:35+0200\n" "PO-Revision-Date: 2007-03-06 10:30+0100\n" -"Last-Translator: Mikko Hellsing \n" +"Last-Translator: Ludvig Ericson \n" "Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,62 +17,62 @@ msgstr "" "X-Poedit-Language: Swedish\n" "X-Poedit-Country: SWEDEN\n" -#: oldforms/__init__.py:352 db/models/fields/__init__.py:116 -#: db/models/fields/__init__.py:273 db/models/fields/__init__.py:609 -#: db/models/fields/__init__.py:620 newforms/models.py:177 -#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 -#: newforms/fields.py:461 +#: oldforms/__init__.py:357 db/models/fields/__init__.py:121 +#: db/models/fields/__init__.py:278 db/models/fields/__init__.py:675 +#: db/models/fields/__init__.py:686 newforms/models.py:185 +#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:520 +#: newforms/fields.py:531 msgid "This field is required." -msgstr "Detta fältet är obligatoriskt." +msgstr "Det här fältet är obligatoriskt." -#: oldforms/__init__.py:387 +#: 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] "Se till att din text är kortare än %s tecken." msgstr[1] "Se till att din text är kortare än %s tecken." -#: oldforms/__init__.py:392 +#: oldforms/__init__.py:397 msgid "Line breaks are not allowed here." msgstr "Radbrytningar är inte tillåtna här." -#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Välj ett giltigt alternativ. '%(data)s' finns inte bland %(choices)s." -#: oldforms/__init__.py:572 newforms/widgets.py:170 +#: oldforms/__init__.py:577 newforms/widgets.py:182 #: contrib/admin/filterspecs.py:150 msgid "Unknown" msgstr "Okänt" -#: oldforms/__init__.py:572 newforms/widgets.py:170 +#: oldforms/__init__.py:577 newforms/widgets.py:182 #: contrib/admin/filterspecs.py:143 msgid "Yes" msgstr "Ja" -#: oldforms/__init__.py:572 newforms/widgets.py:170 +#: oldforms/__init__.py:577 newforms/widgets.py:182 #: contrib/admin/filterspecs.py:143 msgid "No" msgstr "Nej" -#: oldforms/__init__.py:667 core/validators.py:173 core/validators.py:444 +#: oldforms/__init__.py:672 core/validators.py:175 core/validators.py:453 msgid "No file was submitted. Check the encoding type on the form." -msgstr "Ingen fil skickad. Kontrollera enkodningen i form taggen." +msgstr "Ingen fil skickades. Kontrollera kodningnstypen i formen." -#: oldforms/__init__.py:669 +#: oldforms/__init__.py:674 msgid "The submitted file is empty." msgstr "Den insända filen är tom." -#: oldforms/__init__.py:725 +#: oldforms/__init__.py:730 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Fyll i ett heltal mellan -32768 och 32767." -#: oldforms/__init__.py:735 +#: oldforms/__init__.py:740 msgid "Enter a positive number." msgstr "Fyll i ett positivt heltal." -#: oldforms/__init__.py:745 +#: oldforms/__init__.py:750 msgid "Enter a whole number between 0 and 32,767." msgstr "Fyll i ett heltal mellan 0 och 32767." @@ -90,35 +86,45 @@ msgstr "%(object)s med typen %(type)s finns redan för %(field)s." msgid "and" msgstr "och" -#: db/models/fields/__init__.py:42 +#: db/models/fields/__init__.py:46 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(optname)s med det här %(fieldname)s finns redan." -#: db/models/fields/__init__.py:366 +#: db/models/fields/__init__.py:373 msgid "This value must be an integer." msgstr "Det här värdet måste vara ett heltal." -#: db/models/fields/__init__.py:401 +#: db/models/fields/__init__.py:408 msgid "This value must be either True or False." msgstr "Det här värdet måste vara True eller False" -#: db/models/fields/__init__.py:422 +#: db/models/fields/__init__.py:429 msgid "This field cannot be null." -msgstr "Det här fältet får inte vara null." +msgstr "Det här fältet kan inte vara null." -#: db/models/fields/__init__.py:456 core/validators.py:147 +#: db/models/fields/__init__.py:463 core/validators.py:149 msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Fyll i ett giltigt datum i formatet ÅÅÅÅ-MM-DD." +msgstr "Fyll i ett giltigt datum i ÅÅÅÅ-MM-DD format." -#: db/models/fields/__init__.py:525 core/validators.py:156 +#: db/models/fields/__init__.py:532 core/validators.py:158 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Fyll i en giltig tidpunkt i formatet ÅÅÅÅ-MM-DD HH:MM" +msgstr "Fyll i en giltig tidpunkt i ÅÅÅÅ-MM-DD HH:MM format" -#: db/models/fields/__init__.py:629 +#: db/models/fields/__init__.py:592 +#, fuzzy +msgid "This value must be a decimal number." +msgstr "Det här värdet måste vara ett heltal." + +#: db/models/fields/__init__.py:695 msgid "Enter a valid filename." msgstr "Fyll i ett giltigt filnamn." +#: db/models/fields/__init__.py:818 +#, fuzzy +msgid "This value must be either None, True or False." +msgstr "Det här värdet måste vara antingen True eller False." + #: db/models/fields/related.py:53 #, python-format msgid "Please enter a valid %s." @@ -129,15 +135,20 @@ msgid "Separate multiple IDs with commas." msgstr "Separera flera ID:n med kommatecken." #: db/models/fields/related.py:644 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Håll ner \"Control\", eller \"Command\" på en Mac, för att välja mer än en." +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Håll ner \"Control\", eller \"Command\" på en Mac, för att välja mer än en." #: 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] "Var god och fyll giltiga %(self)s ID-nummer. Värdet %(value)r är ogiltigt." -msgstr[1] "Var god och fyll giltiga %(self)s ID-nummer. Värdena %(value)r är ogiltiga." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Var god och fyll giltiga %(self)s ID-nummer. Värdet %(value)r är ogiltigt." +msgstr[1] "" +"Var god och fyll giltiga %(self)s ID-nummer. Värdena %(value)r är ogiltiga." #: conf/global_settings.py:39 msgid "Arabic" @@ -148,150 +159,167 @@ msgid "Bengali" msgstr "Bengaliska" #: conf/global_settings.py:41 +#, fuzzy +msgid "Bulgarian" +msgstr "Ungerska" + +#: conf/global_settings.py:42 msgid "Catalan" msgstr "Katalanska" -#: conf/global_settings.py:42 +#: conf/global_settings.py:43 msgid "Czech" msgstr "Tjeckiska" -#: conf/global_settings.py:43 +#: conf/global_settings.py:44 msgid "Welsh" msgstr "Walesiska" -#: conf/global_settings.py:44 +#: conf/global_settings.py:45 msgid "Danish" msgstr "Danska" -#: conf/global_settings.py:45 +#: conf/global_settings.py:46 msgid "German" msgstr "Tyska" -#: conf/global_settings.py:46 +#: conf/global_settings.py:47 msgid "Greek" msgstr "Grekiska" -#: conf/global_settings.py:47 +#: conf/global_settings.py:48 msgid "English" msgstr "Engelska" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Spanish" msgstr "Spanska" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Argentinean Spanish" msgstr "Argentisk Spanska" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Finnish" msgstr "Finska" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "French" msgstr "Franska" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Galician" msgstr "Galisiska" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "Hungarian" msgstr "Ungerska" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Hebrew" msgstr "Hebreiska" -#: conf/global_settings.py:55 +#: conf/global_settings.py:56 msgid "Icelandic" msgstr "Isländska" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Italian" msgstr "Italienska" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 msgid "Japanese" msgstr "Japanska" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 +msgid "Korean" +msgstr "Koreanska" + +#: conf/global_settings.py:60 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Latvian" msgstr "Lettiska" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "Macedonian" msgstr "Makedonska" -#: conf/global_settings.py:61 +#: conf/global_settings.py:63 msgid "Dutch" msgstr "Holländska" -#: conf/global_settings.py:62 +#: conf/global_settings.py:64 msgid "Norwegian" msgstr "Norska" -#: conf/global_settings.py:63 +#: conf/global_settings.py:65 msgid "Polish" msgstr "Polska" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 +msgid "Portugese" +msgstr "Portugisiska" + +#: conf/global_settings.py:67 msgid "Brazilian" msgstr "Brasilianska" -#: conf/global_settings.py:65 +#: conf/global_settings.py:68 msgid "Romanian" msgstr "Rumänska" -#: conf/global_settings.py:66 +#: conf/global_settings.py:69 msgid "Russian" msgstr "Ryska" -#: conf/global_settings.py:67 +#: conf/global_settings.py:70 msgid "Slovak" msgstr "Slovakiska" -#: conf/global_settings.py:68 +#: conf/global_settings.py:71 msgid "Slovenian" msgstr "Slovenska" -#: conf/global_settings.py:69 +#: conf/global_settings.py:72 msgid "Serbian" msgstr "Serbiska" -#: conf/global_settings.py:70 +#: conf/global_settings.py:73 msgid "Swedish" msgstr "Svenska" -#: conf/global_settings.py:71 +#: conf/global_settings.py:74 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:72 +#: conf/global_settings.py:75 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:76 msgid "Turkish" msgstr "Turkiska" -#: conf/global_settings.py:73 +#: conf/global_settings.py:77 msgid "Ukrainian" msgstr "Ukrainska" -#: conf/global_settings.py:74 +#: conf/global_settings.py:78 msgid "Simplified Chinese" msgstr "Förenklad Kinesiska" -#: conf/global_settings.py:75 +#: conf/global_settings.py:79 msgid "Traditional Chinese" msgstr "Traditionell Kinesiska" -#: core/validators.py:64 +#: core/validators.py:65 msgid "This value must contain only letters, numbers and underscores." msgstr "Det här värdet får bara innehålla bokstäver, tal och understräck." -#: core/validators.py:68 +#: core/validators.py:69 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." @@ -299,97 +327,99 @@ msgstr "" "Det här värdet får bara innehålla bokstäver, siffror, understräck, sträck " "och snedsträck" -#: core/validators.py:72 +#: core/validators.py:73 msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Det här värdet får bara innehålla bokstäver, siffror, understräck eller sträck ." +msgstr "" +"Det här värdet får bara innehålla bokstäver, siffror, understräck eller " +"bindessträck." -#: core/validators.py:76 +#: core/validators.py:77 msgid "Uppercase letters are not allowed here." msgstr "Stora bokstäver är inte tillåtna här." -#: core/validators.py:80 +#: core/validators.py:81 msgid "Lowercase letters are not allowed here." msgstr "Små bokstäver är inte tillåtna här." -#: core/validators.py:87 +#: core/validators.py:88 msgid "Enter only digits separated by commas." msgstr "Fyll enbart i siffror avskilda med kommatecken." -#: core/validators.py:99 +#: core/validators.py:100 msgid "Enter valid e-mail addresses separated by commas." msgstr "Fyll i giltiga e-mailadresser avskilda med kommatecken." -#: core/validators.py:103 +#: core/validators.py:104 msgid "Please enter a valid IP address." msgstr "Var god fyll i en giltigt IP-adress." -#: core/validators.py:107 +#: core/validators.py:108 msgid "Empty values are not allowed here." msgstr "Tomma värden är inte tillåtna här." -#: core/validators.py:111 +#: core/validators.py:112 msgid "Non-numeric characters aren't allowed here." msgstr "Icke-numeriska tecken är inte tillåtna här." -#: core/validators.py:115 +#: core/validators.py:116 msgid "This value can't be comprised solely of digits." msgstr "Det här värdet kan inte enbart bestå av siffror." -#: core/validators.py:120 newforms/fields.py:126 +#: core/validators.py:121 newforms/fields.py:135 msgid "Enter a whole number." msgstr "Fyll i ett heltal." -#: core/validators.py:124 +#: core/validators.py:125 msgid "Only alphabetical characters are allowed here." msgstr "Endast bokstäver är tillåtna här." -#: core/validators.py:139 +#: core/validators.py:140 msgid "Year must be 1900 or later." msgstr "Årtal måste vara 1900 eller senare." -#: core/validators.py:143 -#, python-format -msgid "Invalid date: %s." +#: core/validators.py:144 +#, fuzzy, python-format +msgid "Invalid date: %s" msgstr "Felaktigt datum: %s" -#: core/validators.py:152 +#: core/validators.py:154 msgid "Enter a valid time in HH:MM format." -msgstr "Fyll i en giltig tid i formatet HH:MM" +msgstr "Fyll i en giltig tid i HH:MM format." -#: core/validators.py:161 newforms/fields.py:269 +#: core/validators.py:163 newforms/fields.py:339 msgid "Enter a valid e-mail address." msgstr "Fyll i en giltig e-mailadress." -#: core/validators.py:177 +#: core/validators.py:179 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller en " -"korrupt bild." +"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller " +"en korrupt bild." -#: core/validators.py:184 +#: core/validators.py:186 #, python-format msgid "The URL %s does not point to a valid image." -msgstr "URL:en %s pekar inte på en giltig bild." +msgstr "URL:en %s pekar inte mot en giltig bild." -#: core/validators.py:188 +#: core/validators.py:190 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -"Telefonnummer måste vara i det amerikanska formatet XXX-XXX-XXXX. \"%s\" är " +"Telefonnummer måste vara i det amerikanska XXX-XXX-XXXX formated. \"%s\" är " "ogiltigt." -#: core/validators.py:196 +#: core/validators.py:198 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "URL:en %s pekar inte på en giltig QuickTime-video." -#: core/validators.py:200 +#: core/validators.py:202 msgid "A valid URL is required." msgstr "En giltig URL krävs." -#: core/validators.py:214 +#: core/validators.py:216 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -398,133 +428,146 @@ msgstr "" "Giltig HTML krävs. Specifika fel är:\n" "%s" -#: core/validators.py:221 +#: core/validators.py:223 #, python-format msgid "Badly formed XML: %s" msgstr "Missformad XML: %s" -#: core/validators.py:238 +#: core/validators.py:240 #, python-format msgid "Invalid URL: %s" msgstr "Felaktig URL: %s" -#: core/validators.py:243 core/validators.py:245 +#: core/validators.py:245 core/validators.py:247 #, python-format msgid "The URL %s is a broken link." msgstr "URL:en %s är en trasig länk." -#: core/validators.py:251 +#: core/validators.py:253 msgid "Enter a valid U.S. state abbreviation." -msgstr "Fyll i en giltig förkortning för en amerikansk delstat" +msgstr "Fyll i en giltig förkortning för en amerikansk delstat." -#: core/validators.py:265 +#: core/validators.py:267 #, 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] "Akta din tunga! Ordet %s är inte tillåtet här." msgstr[1] "Akta din tunga! Orden %s är inte tillåtna här." -#: core/validators.py:272 +#: core/validators.py:274 #, python-format msgid "This field must match the '%s' field." msgstr "Det här fältet måste matcha fältet '%s'." -#: core/validators.py:291 +#: core/validators.py:293 msgid "Please enter something for at least one field." -msgstr "Fyll i något i minst ett fält." +msgstr "Var god fyll i minst ett fält." -#: core/validators.py:300 core/validators.py:311 +#: core/validators.py:302 core/validators.py:313 msgid "Please enter both fields or leave them both empty." -msgstr "Fyll antingen i båda fälten, eller lämna båda tomma" +msgstr "Fyll antingen i båda fälten, eller lämna båda tomma." -#: core/validators.py:319 +#: core/validators.py:321 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Det är fältet måste anges om %(field)s är %(value)s" -#: core/validators.py:332 +#: core/validators.py:334 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Det här fältet måste anges om %(field)s inte är %(value)s" -#: core/validators.py:351 +#: core/validators.py:353 msgid "Duplicate values are not allowed." msgstr "Upprepade värden är inte tillåtna." -#: core/validators.py:366 -#, python-format -msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Det här värdet måste mellan %(lower)s och %(upper)s." - #: core/validators.py:368 #, python-format -msgid "This value must be at least %s." -msgstr "Det här värdet måste minsta vara %s." +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Det här värdet måste vara mellan %(lower)s och %(upper)s." #: core/validators.py:370 #, python-format +msgid "This value must be at least %s." +msgstr "Det här värdet måste vara minst %s." + +#: core/validators.py:372 +#, python-format msgid "This value must be no more than %s." msgstr "Det här värdet får inte vara mer än %s." -#: core/validators.py:406 +#: core/validators.py:408 #, python-format msgid "This value must be a power of %s." -msgstr "Det här värdet måste vara en multipel av %s." +msgstr "Det här värdet måste vara en potens av %s." #: core/validators.py:417 msgid "Please enter a valid decimal number." msgstr "Fyll i ett giltigt decimaltal." -#: core/validators.py:421 +#: core/validators.py:423 #, 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] "Fyll i ett giltigt decimaltal med mindre än %s siffra totalt." -msgstr[1] "Fyll i ett giltigt decimaltal med mindre än %s siffror totalt." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Fyll i ett giltigt decimaltal med högst %s siffra totalt." +msgstr[1] "Fyll i ett giltigt decimaltal med högst %s siffror totalt." -#: core/validators.py:424 +#: core/validators.py:426 #, 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] "Fyll i ett giltigt decimaltal med en heltalsdel som inte är mer än %s siffra." -msgstr[1] "Fyll i ett giltigt decimaltal med en heltalsdel som inte är mer än %s siffror." +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] "" +"Fyll i ett giltigt decimaltal med en heltalsdel som högst är %s siffra." +msgstr[1] "" +"Fyll i ett giltigt decimaltal med en heltalsdel som högst är %s siffror." -#: core/validators.py:427 +#: core/validators.py:429 #, 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] "Fyll i ett giltigt decimaltal med %s decimal som mest." -msgstr[1] "Fyll i ett giltigt decimaltal med %s decimaler som mest." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Fyll i ett giltigt decimaltal med högst %s decimal." +msgstr[1] "Fyll i ett giltigt decimaltal med högst %s decimaler." #: core/validators.py:437 +msgid "Please enter a valid floating point number." +msgstr "Fyll i ett giltigt flyttal." + +#: core/validators.py:446 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Se till att filen du laddade upp är minst %s bytes stor." -#: core/validators.py:438 +#: core/validators.py:447 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Se till att filen du laddade upp är som mest %s bytes stor." -#: core/validators.py:455 +#: core/validators.py:464 msgid "The format for this field is wrong." msgstr "Formatet på det här fältet är fel." -#: core/validators.py:470 +#: core/validators.py:479 msgid "This field is invalid." msgstr "Det här fältet är ogiltigt." -#: core/validators.py:506 +#: core/validators.py:515 #, python-format msgid "Could not retrieve anything from %s." msgstr "Kunde inte hämta något från %s." -#: core/validators.py:509 +#: core/validators.py:518 #, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "URL:en %(url)s returnerade den ogiltiga Content-Type headern '%(contenttype)s'" +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"URL:en %(url)s returnerade den ogiltiga Content-Type headern '%(contenttype)" +"s'" -#: core/validators.py:542 +#: core/validators.py:551 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -533,7 +576,7 @@ msgstr "" "Var god avsluta den oavslutade taggen %(tag)s på rad %(line)s. (Raden börjar " "med \"%(start)s\".)" -#: core/validators.py:546 +#: core/validators.py:555 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -542,7 +585,7 @@ msgstr "" "En del text från rad %(line)s är inte tillåtet i det sammanhanget. (Raden " "börjar med \"%(start)s\".)" -#: core/validators.py:551 +#: core/validators.py:560 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -551,7 +594,7 @@ msgstr "" "\"%(attr)s\" på rad %(line)s är inte ett giltigt attribut. (Raden startar " "med \"%(start)s\".)" -#: core/validators.py:556 +#: core/validators.py:565 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -560,7 +603,7 @@ msgstr "" "\"<%(tag)s>\" på rad %(line)s är en ogiltig tagg. (Raden börjar med \"%" "(start)s\".)" -#: core/validators.py:560 +#: core/validators.py:569 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -569,7 +612,7 @@ msgstr "" "En tagg på rad %(line)s saknar en eller flera nödvändiga attribut. (Raden " "börjar med \"%(start)s\".)" -#: core/validators.py:565 +#: core/validators.py:574 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " @@ -580,11 +623,13 @@ msgstr "" #: views/generic/create_update.py:43 #, python-format +#, fuzzy msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s skapades framgångsrikt." #: views/generic/create_update.py:117 #, python-format +#, fuzzy msgid "The %(verbose_name)s was updated successfully." msgstr " %(verbose_name)s uppdaterades framgångsrikt." @@ -593,258 +638,160 @@ msgstr " %(verbose_name)s uppdaterades framgångsrikt." msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s togs bort." -#: newforms/models.py:164 newforms/fields.py:360 +#: newforms/models.py:172 newforms/fields.py:432 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga alternativ." +msgstr "" +"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga " +"alternativ." -#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454 +#: newforms/models.py:189 newforms/fields.py:448 newforms/fields.py:524 msgid "Enter a list of values." msgstr "Fyll i en lista med värden." -#: newforms/models.py:187 newforms/fields.py:387 +#: newforms/models.py:195 newforms/fields.py:457 #, python-format msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Välj ett giltigt alternativ. '%s' finns inte bland tillgängliga alternativ." +msgstr "" +"Välj ett giltigt alternativ. '%s' finns inte bland tillgängliga alternativ." -#: newforms/fields.py:101 newforms/fields.py:254 +#: newforms/fields.py:110 newforms/fields.py:324 #, python-format msgid "Ensure this value has at most %d characters." -msgstr "Se till att din text inte har mer än %d tecken." +msgstr "Säkerställ att detta värdet har högst %d tecken." -#: newforms/fields.py:103 newforms/fields.py:256 +#: newforms/fields.py:112 newforms/fields.py:326 #, python-format msgid "Ensure this value has at least %d characters." -msgstr "Se till att din text har minst %d tecken." +msgstr "Säkerställ att detta värdet har minst %d tecken." -#: newforms/fields.py:128 +#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 #, python-format msgid "Ensure this value is less than or equal to %s." -msgstr "Se till att detta värdet är mindre än eller lika med %s." +msgstr "Säkerställ att detta värdet är mindre eller lika med %s." -#: newforms/fields.py:130 +#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 #, python-format msgid "Ensure this value is greater than or equal to %s." -msgstr "Se till att detta värde är större eller lika med %s." +msgstr "Säkerställ att detta värdet är mer eller lika med %s." -#: newforms/fields.py:163 +#: newforms/fields.py:158 newforms/fields.py:186 +msgid "Enter a number." +msgstr "Fyll i ett tal." + +#: newforms/fields.py:196 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Säkerställ att det inte finns mer än %s siffror totalt." + +#: newforms/fields.py:198 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Säkerställ att det inte finns mer än %s decimaler." + +#: newforms/fields.py:200 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Säkerställ att det inte finns mer än %s siffror före kommatecknet." + +#: newforms/fields.py:233 msgid "Enter a valid date." msgstr "Fyll i ett giltigt datum." -#: newforms/fields.py:190 +#: newforms/fields.py:260 msgid "Enter a valid time." msgstr "Fyll i en giltig tid." -#: newforms/fields.py:226 +#: newforms/fields.py:296 msgid "Enter a valid date/time." msgstr "Fyll i ett giltigt datum/tid." -#: newforms/fields.py:240 +#: newforms/fields.py:310 msgid "Enter a valid value." msgstr "Fyll i ett giltigt värde." -#: newforms/fields.py:287 newforms/fields.py:309 +#: newforms/fields.py:357 newforms/fields.py:379 msgid "Enter a valid URL." msgstr "Fyll i ett giltigt URL." -#: newforms/fields.py:311 +#: newforms/fields.py:381 msgid "This URL appears to be a broken link." -msgstr "Detta URL verkar vara en trasig länk." +msgstr "Denna URL verkar vara en trasig länk." -#: contrib/contenttypes/models.py:26 -msgid "python model class name" -msgstr "python modell klass namn" - -#: contrib/contenttypes/models.py:29 -msgid "content type" -msgstr "innehållstyp" - -#: contrib/contenttypes/models.py:30 -msgid "content types" -msgstr "innehållstyper" - -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "Utloggad" - -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "namn" - -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "kodnamn" - -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "rättighet" - -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "rättigheter" - -#: contrib/auth/models.py:60 -msgid "group" -msgstr "grupp" - -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "grupper" - -#: contrib/auth/models.py:90 -msgid "username" -msgstr "användarnamn" - -#: contrib/auth/models.py:90 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "Obligatorisk. 30 tecken eller mindre. Endast bokstäver, siffror eller understräck." - -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "förnamn" - -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "efternamn" - -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "e-mailadress" - -#: contrib/auth/models.py:94 -msgid "password" -msgstr "lösenord" - -#: contrib/auth/models.py:94 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "Använd '[algo]$[salt]$[hexdigest]' eller använd Ändra lösenord." - -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "personalstatus" - -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Avgör om användaren kan logga in på den här admin-siten." - -#: contrib/auth/models.py:96 -msgid "active" -msgstr "aktiv" - -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" msgstr "" -"Avgör om användaren kan logga in till Django admin. Av-markera denna " -"istället för att ta bort konton." -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "superanvändare" - -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" msgstr "" -"Bestämmer att användaren har alla rättigheter utan att uttryckligen tilldela " -"dem" -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "senaste inloggning" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "registreringsdatum" - -#: 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." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" msgstr "" -"Förutom de rättigheterna som utdelas manuellt så kommer användaren dessutom " -"få samma rättigheter som de grupper där han/hon är medlem." -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "användarättigheter" - -#: contrib/auth/models.py:105 -msgid "user" -msgstr "användare" - -#: contrib/auth/models.py:106 -msgid "users" -msgstr "användare" - -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Personlig information" - -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Rättigheter" - -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Viktiga datum" - -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Grupper" - -#: contrib/auth/models.py:258 -msgid "message" -msgstr "meddelande" - -#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 -msgid "The two password fields didn't match." -msgstr "De båda lösenorden stämde inte överens." - -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "En användare med det användarnamnet finns redan." - -#: contrib/auth/forms.py:53 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" msgstr "" -"Din webläsare verkar inte stödja cookies. Cookie behövs för att kunna logga " -"in." -#: 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 "" -"V.G. ange ett korrekt användarnamn och lösenord. Observera att båda fälten gör " -"skillnad på versaler och gemener." +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f miljon" +msgstr[1] "%(value).1f miljoner" -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "Detta konto är inaktivt." +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +#, fuzzy +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value)1.f miljard" +msgstr[1] "%(value)1.f miljarder" -#: contrib/auth/forms.py:85 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" -"Den e-mailadressen har inte något konto associerat med sig. Är du säker på " -"att du har registrerat dig?" +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +#, fuzzy +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value)1.f biljon" +msgstr[1] "%(value)1.f biljoner" -#: contrib/auth/forms.py:117 -msgid "The two 'new password' fields didn't match." -msgstr "De båda nya lösenordsfälten stämde inte överens." +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "one" +msgstr "ett" -#: contrib/auth/forms.py:124 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "två" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "tre" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "fyra" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "fem" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "sex" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "sju" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "åtta" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "nio" #: contrib/redirects/models.py:7 msgid "redirect from" @@ -867,8 +814,8 @@ msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" -"Detta kan vara antingen en absolut sökväg (som ovan), eller en komplett " -"URL som börjar med 'http://'." +"Detta kan vara antingen en absolut sökväg (som ovan), eller en komplett URL " +"som börjar med 'http://'." #: contrib/redirects/models.py:13 msgid "redirect" @@ -935,7 +882,7 @@ msgstr "datum/tid postat" msgid "is public" msgstr "är offentligt" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:305 msgid "IP address" msgstr "IP-adress" @@ -1045,20 +992,20 @@ msgstr "Flaggad av %r" #: contrib/comments/models.py:278 msgid "deletion date" -msgstr "borttagnings-datum" +msgstr "borttagningsdatum" #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "moderator-borttagning" +msgstr "moderatorborttagning" #: contrib/comments/models.py:281 msgid "moderator deletions" -msgstr "moderator-borttagningar" +msgstr "moderatorborttagningar" #: contrib/comments/models.py:285 #, python-format msgid "Moderator deletion by %r" -msgstr "Moderator-borttagning av %r" +msgstr "Moderatorborttagning av %r" #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" @@ -1066,14 +1013,15 @@ msgstr "Anonyma användare kan inte rösta" #: contrib/comments/views/karma.py:23 msgid "Invalid comment ID" -msgstr "Ogiltig kommentaridentifikation" +msgstr "Ogiltig kommentarsidentifikation" #: contrib/comments/views/karma.py:25 msgid "No voting for yourself" msgstr "Du får inte rösta på dig själv" #: contrib/comments/views/comments.py:27 -msgid "This rating is required because you've entered at least one other rating." +msgid "" +"This rating is required because you've entered at least one other rating." msgstr "Det här betyget krävs eftersom du har fyllt i minst ett annat betyg." #: contrib/comments/views/comments.py:111 @@ -1089,13 +1037,13 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" -"Den här kommentaren postades av en användare som har postat mindre än " -"%(count)s kommentar:\n" +"Den här kommentaren postades av en användare som har postat mindre än %" +"(count)s kommentar:\n" "\n" "%(text)s" msgstr[1] "" -"Den här kommentaren postades av en användare som har postat mindre än " -"%(count)s kommentarer:\n" +"Den här kommentaren postades av en användare som har postat mindre än %" +"(count)s kommentarer:\n" "\n" "%(text)s" @@ -1139,20 +1087,6 @@ msgstr "" msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "Kommentars-formuläret skickade varken 'förhandsgranska' eller 'post'" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Ditt namn:" - -#: contrib/comments/templates/comments/freeform.html:5 -#: contrib/comments/templates/comments/form.html:28 -msgid "Comment:" -msgstr "Kommentar:" - -#: contrib/comments/templates/comments/freeform.html:10 -#: contrib/comments/templates/comments/form.html:35 -msgid "Preview comment" -msgstr "Förhandsgranska kommentar" - #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 @@ -1160,24 +1094,24 @@ msgid "Username:" msgstr "Användarnamn:" #: 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/object_history.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/base.html:25 #: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_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 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Logga ut" @@ -1208,73 +1142,19 @@ msgstr "Valfri" msgid "Post a photo" msgstr "Lägg till foto" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 -msgid "URL" -msgstr "URL" +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Kommentar:" -#: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedsträck." +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Förhandsgranska kommentar" -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "titel" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "innehåll" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "aktivera kommentarer" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "mallnamn" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Exempel: 'sidor/kontaktsida.html'. Om det här inte fylls i kommer systemet " -"att använda 'sidor/default.html'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "registrering krävs" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Om det här bockas i kommer endast inloggade användare att kunna visa sidan" - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "flatsida" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "flatsidor" - -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "sessionsnyckel" - -#: contrib/sessions/models.py:52 -msgid "session data" -msgstr "sessionsdata" - -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "utgångsdatum" - -#: contrib/sessions/models.py:57 -msgid "session" -msgstr "session" - -#: contrib/sessions/models.py:58 -msgid "sessions" -msgstr "sessioner" +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Ditt namn:" #: contrib/sites/models.py:10 msgid "domain name" @@ -1354,49 +1234,19 @@ msgstr "loggpost" msgid "log entries" msgstr "loggposter" -#: contrib/admin/templatetags/admin_list.py:247 +#: contrib/admin/templatetags/admin_list.py:249 msgid "All dates" msgstr "Alla datum" -#: contrib/admin/views/decorators.py:24 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Logga in" - -#: 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 "" -"V.G. logga in igen, eftersom din session har tagit slut. Oroa dig inte: ditt " -"bidrag har sparats." - -#: 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 "" -"Det ser ut som om din webläsare inte är konfigurerad att acceptera cookies. " -"Aktivera cookies, ladda om den här sidan, och försök igen." - -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Användarnamn kan inte innehålla tecknet '@'." - -#: contrib/admin/views/decorators.py:85 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Din e-mailadress är inte ditt användarnamn. Försök med '%s' istället." - #: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)set \"%(obj)s\" lades till." +msgstr "%(name)s \"%(obj)s\" lades till." #: 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 "Du kan ändra det igen här under." +msgstr "Du kan ändra det igen nedanför." #: contrib/admin/views/auth.py:30 msgid "Add user" @@ -1413,12 +1263,12 @@ msgstr "Ändra lösenord: %s" #: contrib/admin/views/main.py:223 msgid "Site administration" -msgstr "Administration" +msgstr "Site-administration" #: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." -msgstr "Du kan lägga till en till %s här under." +msgstr "Du kan lägga till en till %s nedanför." #: contrib/admin/views/main.py:289 #, python-format @@ -1447,12 +1297,13 @@ msgstr "Inga fält ändrade." #: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)set \"%(obj)s\" ändrades." +msgstr "%(name)s \"%(obj)s\" ändrades." #: contrib/admin/views/main.py:353 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "%(name)set \"%(obj)s\" lades till. Du kan ändra det igen här under." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" lades till. Du kan ändra det igen nedanför." #: contrib/admin/views/main.py:391 #, python-format @@ -1481,7 +1332,7 @@ msgstr "Är du säker?" #: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" -msgstr "Ändra historien: %s" +msgstr "Ändra historik: %s" #: contrib/admin/views/main.py:573 #, python-format @@ -1495,7 +1346,45 @@ msgstr "Välj %s att ändra" #: contrib/admin/views/main.py:768 msgid "Database error" -msgstr "Databas fel" +msgstr "Databasfel" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Var god ange ett korrekt användarnamn och lösenord. Observera att båda " +"fälten är skiftlägeskänsliga." + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Logga in" + +#: 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 "" +"Var god logga in igen, eftersom din session har tagit slut. " +"Oroa dig inte: Ditt bidrag har sparats." + +#: 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 "" +"Det ser ut som om din webläsare inte är konfigurerad att acceptera cookies. " +"Aktivera cookies, ladda om den här sidan, och försök igen." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Användarnamn kan inte innehålla '@' tecknet." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Din e-mailadress är inte ditt användarnamn. Försök med '%s' istället." #: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 #: contrib/admin/views/doc.py:50 @@ -1510,7 +1399,7 @@ msgstr "filter:" #: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 #: contrib/admin/views/doc.py:139 msgid "view:" -msgstr "Vy:" +msgstr "vy:" #: contrib/admin/views/doc.py:164 #, python-format @@ -1518,14 +1407,14 @@ msgid "App %r not found" msgstr "Applikation %r hittades inte" #: contrib/admin/views/doc.py:171 -#, python-format -msgid "Model %(model_name)r not found in app %(app_label)r" +#, fuzzy, python-format +msgid "Model %(name)r not found in app %(label)r" msgstr "Modellen %(model_name)r hittades inte i applikation %(app_label)r" #: contrib/admin/views/doc.py:183 -#, python-format -msgid "the related `%(app_label)s.%(data_type)s` object" -msgstr "Det sammalänkade `%(app_label)s.%(data_type)s` objektet" +#, fuzzy, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "det relaterade `%(app_label)s.%(data_type)s` objektet" #: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 #: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 @@ -1533,9 +1422,9 @@ msgid "model:" msgstr "modell:" #: contrib/admin/views/doc.py:214 -#, python-format -msgid "related `%(app_label)s.%(object_name)s` objects" -msgstr "sammanlänkade `%(app_label)s.%(object_name)s` objekt" +#, fuzzy, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "relaterade `%(app_label)s.%(object_name)s` objekt" #: contrib/admin/views/doc.py:219 #, python-format @@ -1552,17 +1441,17 @@ msgstr "antal %s" msgid "Fields on %s objects" msgstr "Fält på %s objekt" -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 -#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 +#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 msgid "Integer" msgstr "Heltal" #: contrib/admin/views/doc.py:292 msgid "Boolean (Either True or False)" -msgstr "Boolesk (antingen Sann eller Falsk)" +msgstr "Boolesk (antingen True eller False)" -#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 #, python-format msgid "String (up to %(maxlength)s)" msgstr "Sträng (upp till %(maxlength)s)" @@ -1580,50 +1469,58 @@ msgid "Date (with time)" msgstr "Datum (med tid)" #: contrib/admin/views/doc.py:297 -msgid "E-mail address" -msgstr "E-postadress:" - -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 -#: contrib/admin/views/doc.py:302 -msgid "File path" -msgstr "Sökväg" - -#: contrib/admin/views/doc.py:300 msgid "Decimal number" msgstr "Decimaltal" -#: contrib/admin/views/doc.py:306 +#: contrib/admin/views/doc.py:298 +msgid "E-mail address" +msgstr "E-postadress:" + +#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:303 +msgid "File path" +msgstr "Filsökväg" + +#: contrib/admin/views/doc.py:301 +msgid "Floating point number" +msgstr "Flyttal" + +#: contrib/admin/views/doc.py:307 msgid "Boolean (Either True, False or None)" msgstr "Boolesk (antingen True, False eller None)" -#: contrib/admin/views/doc.py:307 +#: contrib/admin/views/doc.py:308 msgid "Relation to parent model" msgstr "Relation till förälder-modell" -#: contrib/admin/views/doc.py:308 +#: contrib/admin/views/doc.py:309 msgid "Phone number" msgstr "Telefonnummer" -#: contrib/admin/views/doc.py:313 +#: contrib/admin/views/doc.py:314 msgid "Text" msgstr "Text" -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:315 msgid "Time" msgstr "Tid" -#: contrib/admin/views/doc.py:316 +#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:317 msgid "U.S. state (two uppercase letters)" msgstr "Stat i USA (två versaler)" -#: contrib/admin/views/doc.py:317 +#: contrib/admin/views/doc.py:318 msgid "XML text" msgstr "XML-text" -#: contrib/admin/views/doc.py:343 +#: contrib/admin/views/doc.py:344 #, python-format msgid "%s does not appear to be a urlpattern object" -msgstr "%s verkar inte vara ett urlmönster-objekt" +msgstr "%s verkar inte vara ett urlpattern-objekt" #: contrib/admin/templates/widget/file.html:2 msgid "Currently:" @@ -1641,11 +1538,11 @@ msgstr "Datum:" msgid "Time:" msgstr "Tid:" -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.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/base.html:25 #: 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 @@ -1653,36 +1550,36 @@ msgstr "Tid:" msgid "Documentation" msgstr "Dokumentation" -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.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/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_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/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_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 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Change password" msgstr "Ändra lösenord" -#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 #: 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/base.html:30 #: 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 @@ -1693,6 +1590,16 @@ msgstr "Ändra lösenord" msgid "Home" msgstr "Hem" +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Lägg till %(name)s" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Av %(filter_title)s " + #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/change_form.html:21 msgid "History" @@ -1720,50 +1627,11 @@ msgid "" "admin site." msgstr "" "Det här objektet har ingen ändringshistorik. Det lades antagligen inte till " -"i den här admin-siten" - -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Lägg till %(name)s" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Av %(filter_title)s " - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Serverfel" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Serverfel (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Serverfel (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Ett fel har uppstått. Administratören har meddelats via e-mail och " -"felet bör åtgärdas snart. Tack för ditt tålamod." - -#: 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 "" -"Någonting är fel med din databasinstallation. Se till att de rätta tabellerna har " -"skapats och att databasen är läsbar av rätt användare." +"via denna administrationssite." #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" -msgstr "Utför" +msgstr "Kör" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -1789,18 +1657,34 @@ msgstr "Django site-administration" msgid "Django administration" msgstr "Django administration" -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filter" +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Serverfel" -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Sidan kunde inte hittas" +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Serverfel (500)" -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Vi är ledsna, men den efterfrågade sidan kunde inte hittas." +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Serverfel (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Ett fel har uppstått. Administratören har meddelats via e-mail och felet bör " +"åtgärdas snart. Tack för ditt tålamod." + +#: 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 "" +"Någonting är fel med din databasinstallation. Se till att de rätta " +"tabellerna har skapats och att databasen är läsbar av rätt användare." #: contrib/admin/templates/admin/index.html:17 #, python-format @@ -1814,6 +1698,7 @@ msgstr "%(name)s" #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 +#, fuzzy msgid "Add" msgstr "Lägg till" @@ -1837,9 +1722,22 @@ msgstr "Mina Händelser" msgid "None available" msgstr "Inga tillgängliga" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Sidan kunde inte hittas" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Vi är ledsna, men den efterfrågade sidan kunde inte hittas." + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filter" + #: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" -msgstr "Visa på siten" +msgstr "Visa på site" #: contrib/admin/templates/admin/change_form.html:32 #: contrib/admin/templates/admin/auth/user/change_password.html:24 @@ -1856,10 +1754,6 @@ msgstr "Sortering" msgid "Order:" msgstr "Sortera:" -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Välkommen," - #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" @@ -1872,9 +1766,9 @@ msgid "" "related objects, but your account doesn't have permission to delete the " "following types of objects:" msgstr "" -"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att besläktade " -"objekt togs bort, men ditt konto har inte rättigheter att ta bort följande " -"objekttyper:" +"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att " +"besläktade objekt togs bort, men ditt konto har inte rättigheter att ta bort " +"följande objekttyper:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format @@ -1882,13 +1776,17 @@ 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 "" -"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? Alla " -"dessa sammanlänkade objekt kommer att tas bort:" +"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? " +"Alla dessa sammanlänkade objekt kommer att tas bort:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Ja, jag är säker" +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Välkommen," + #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Spara som ny" @@ -1930,8 +1828,8 @@ msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." msgstr "" -"Ange först ett användarnamn och ett lösenord. Sedan kommer du att kunna ändra " -"fler användaralternativ." +"Ange först ett användarnamn och ett lösenord. Sedan kommer du att kunna " +"ändra fler användaralternativ." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -1958,7 +1856,7 @@ msgstr "Ditt lösenord har ändrats." #: contrib/admin/templates/registration/password_reset_form.html:10 #: contrib/admin/templates/registration/password_reset_done.html:4 msgid "Password reset" -msgstr "Nollställ lösenordet" +msgstr "Nollställ lösenord" #: contrib/admin/templates/registration/password_reset_form.html:12 msgid "" @@ -1987,7 +1885,7 @@ msgstr "Logga in igen" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "Nollställning av lösenordet lyckades" +msgstr "Lösenordsnollställning lyckades." #: contrib/admin/templates/registration/password_reset_done.html:12 msgid "" @@ -2052,7 +1950,7 @@ msgstr "Tack för att du använder vår site!" #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" -msgstr "%(site_name)s-laget" +msgstr "%(site_name)s-teamet" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -2076,7 +1974,8 @@ msgstr "" "

                      För att installera smarta bokmärken, dra länken till din\n" "verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\n" "till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\n" -"på siten. Observera att några av dessa smarta bokmärken kräver att du besöker\n" +"på siten. Observera att några av dessa smarta bokmärken kräver att du " +"besöker\n" "sidan från en dator som är \"intern\" (tala med din systemadministratör\n" "om du inte är säker på om din dator är \"intern\").

                      \n" @@ -2122,14 +2021,737 @@ msgstr "Redigera det här objektet (nytt fönster)" msgid "As above, but opens the admin page in a new window." msgstr "Som ovan, men öppnar administrationssidan i ett nytt fönster." +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "python modell klassnamn" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "innehållstyp" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "innehållstyper" + +#: contrib/auth/views.py:40 +msgid "Logged out" +msgstr "Utloggad" + +#: contrib/auth/models.py:44 contrib/auth/models.py:64 +msgid "name" +msgstr "namn" + +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "kodnamn" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "rättighet" + +#: contrib/auth/models.py:50 contrib/auth/models.py:65 +msgid "permissions" +msgstr "rättigheter" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "grupp" + +#: contrib/auth/models.py:69 contrib/auth/models.py:109 +msgid "groups" +msgstr "grupper" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "användarnamn" + +#: contrib/auth/models.py:99 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Obligatorisk. 30 tecken eller mindre. Endast bokstäver, siffror eller " +"understräck." + +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "förnamn" + +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "efternamn" + +#: contrib/auth/models.py:102 +msgid "e-mail address" +msgstr "e-mailadress" + +#: contrib/auth/models.py:103 +msgid "password" +msgstr "lösenord" + +#: contrib/auth/models.py:103 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Använd '[algo]$[salt]$[hexdigest]' eller använd Ändra " +"lösenord." + +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "personalstatus" + +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "Avgör om användaren kan logga in på den här admin-siten." + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "aktiv" + +#: contrib/auth/models.py:105 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Avgör om användaren kan logga in till Django admin. Avmarkera denna " +"istället för att ta bort konton." + +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "superanvändare" + +#: contrib/auth/models.py:106 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Avgör om användaren har alla rättigheter utan att uttryckligen tilldela " +"dem" + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "senaste inloggning" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "registreringsdatum" + +#: contrib/auth/models.py:110 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Förutom de rättigheterna som utdelas manuellt så kommer användaren dessutom " +"få samma rättigheter som de grupper där han/hon är medlem." + +#: contrib/auth/models.py:111 +msgid "user permissions" +msgstr "användarättigheter" + +#: contrib/auth/models.py:115 +msgid "user" +msgstr "användare" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "användare" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "Personlig information" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "Rättigheter" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "Viktiga datum" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "Grupper" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "meddelande" + +#: contrib/auth/models.py:282 +#, fuzzy +msgid "AnonymousUser" +msgstr "Anonym användare" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "De båda lösenorden stämde inte överens." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "En användare med det användarnamnet finns redan." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Din webläsare verkar inte stödja cookies. Cookie behövs för att kunna logga " +"in." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Detta konto är inaktivt." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Den e-mailadressen har inte något konto associerat med sig. Är du säker på " +"att du har registrerat dig?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "De två lösenordsfälten stämde inte överens." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen" + #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "Fyll i ett postnummer. Du måste ha mellanslag mellan nummerdelarna." -#: contrib/localflavor/usa/forms.py:17 +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Fyll i en fyra-sifrigt postkod." + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Fyll i zipkod i XXXXX-XXX format." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefonnummer måste vara i det amerikanska formatet XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "Detta fält kräver enbart siffror." + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Detta fält kräver högst 11 siffror eller 14 bokstäver." + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "Ogiltigt CPF-nummer." + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "Detta fält kräver minst 14 sifrror" + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "Ogiltigt CNPJ-nummer." + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Fyll i en zipkod i XXXXX format." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bayern" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Vorpommern" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Nedre Sachsen" + +#: contrib/localflavor/de/de_states.py:14 +#, fuzzy +msgid "North Rhine-Westphalia" +msgstr "Norra Rhen-Westphalia" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rhenlandet" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Saarland" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Sachsen" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Sachsen-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Fyll i ett giltigt tyskt ID-kortnummer i XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaido" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokyo" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ischikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kyoto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Osaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyogo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kochi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagasaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kuamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Oita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Fyll i zipkod i formatet XXXXXXX eller XXX-XXXX." + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Fyll i en giltigt zipkod." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Fyll i ett giltigt personnummer." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Fyll i ett giltigt VAT-nummer." + +#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18 +msgid "Enter a zip code in the format XXXX." +msgstr "Fyll i zipkod i formatet XXXX." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Fyll i ett giltigt norskt personnummer." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Fyll i ett giltigt finskt personnummer." + +#: contrib/localflavor/us/forms.py:18 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Fyll i zipkod i formatet XXXXX eller XXXXX-XXXX." +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Fyll i ett giltigt amerikanskt personnummer i XXX-XX-XXXX format." + +#: contrib/localflavor/is_/forms.py:16 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Fyll i ett giltigt isländskt personnummer. Formatet är XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "Det isländska personnumret är inte giltigt." + +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Fyll i ett giltigt chileanskt RUT. Formatet är XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "Fyll i ett giltigt chileanskt RUT" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:90 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Fyll i ett giltigt Schweiziskt ID- eller passkortnummer i X1234567<0 eller " +"1234567890 format." + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "sessionsnyckel" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "sessionsdata" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "utgångsdatum" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "session" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sessioner" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedsträck." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "titel" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "innehåll" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "aktivera kommentarer" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "mallnamn" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Exempel: 'sidor/kontaktsida.html'. Om det här inte fylls i kommer systemet " +"att använda 'sidor/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "registrering krävs" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Om det här bockas i kommer endast inloggade användare att kunna visa sidan" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "flatsida" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "flatsidor" + #: utils/dates.py:6 msgid "Monday" msgstr "Måndag" @@ -2204,7 +2826,7 @@ msgstr "November" #: utils/dates.py:16 msgid "December" -msgstr "december" +msgstr "December" #: utils/dates.py:19 msgid "jan" @@ -2318,27 +2940,87 @@ msgid_plural "minutes" msgstr[0] "minut" msgstr[1] "minuter" -#: utils/translation/trans_real.py:362 +#: utils/timesince.py:40 +#, python-format +msgid "%d milliseconds" +msgstr "%d millisekunder" + +#: utils/timesince.py:41 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:47 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "midnatt" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "middag" + +#: utils/translation/trans_real.py:358 msgid "DATE_FORMAT" -msgstr "" +msgstr "N j, Y" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" -msgstr "" +msgstr "N j, Y, P" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" -msgstr "" +msgstr "P" -#: utils/translation/trans_real.py:380 +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" -msgstr "" +msgstr "F Y" -#: utils/translation/trans_real.py:381 +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" -msgstr "" +msgstr "F j" -#: template/defaultfilters.py:490 +#: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "ja,nej,kanske" +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.po b/django/conf/locale/sv/LC_MESSAGES/djangojs.po index 5abc8780d5..29fbe2eb15 100644 --- a/django/conf/locale/sv/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.po @@ -2,9 +2,6 @@ # Copyright (C) 2005 # This file is distributed under the same license as the Django package. # -# -# Robin Sonefors , 2005. -# Mikko Hellsing , 2007. msgid "" msgstr "" "Project-Id-Version: djangojs\n" diff --git a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js index db4ed1a9d1..e5e05a7e32 100644 --- a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js +++ b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js @@ -30,7 +30,12 @@ function dismissRelatedLookupPopup(win, chosenId) { function showAddAnotherPopup(triggeringLink) { var name = triggeringLink.id.replace(/^add_/, ''); name = name.replace(/\./g, '___'); - var win = window.open(triggeringLink.href + '?_popup=1', name, 'height=500,width=800,resizable=yes,scrollbars=yes'); + href = triggeringLink.href + if (href.indexOf('?') == -1) + href += '?_popup=1'; + else + href += '&_popup=1'; + var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); win.focus(); return false; } diff --git a/django/contrib/admin/models.py b/django/contrib/admin/models.py index 421de52c0e..b5b779a3ac 100644 --- a/django/contrib/admin/models.py +++ b/django/contrib/admin/models.py @@ -2,6 +2,7 @@ from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ +from django.utils.encoding import smart_unicode ADDITION = 1 CHANGE = 2 @@ -9,7 +10,7 @@ DELETION = 3 class LogEntryManager(models.Manager): def log_action(self, user_id, content_type_id, object_id, object_repr, action_flag, change_message=''): - e = self.model(None, None, user_id, content_type_id, object_id, object_repr[:200], action_flag, change_message) + e = self.model(None, None, user_id, content_type_id, smart_unicode(object_id), object_repr[:200], action_flag, change_message) e.save() class LogEntry(models.Model): diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index bc38f17679..7e3f36c291 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -16,6 +16,11 @@ from django.utils.encoding import force_unicode, smart_str from django.utils.translation import ugettext as _ import operator +try: + set +except NameError: + from sets import Set as set # Python 2.3 fallback + from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION if not LogEntry._meta.installed: raise ImproperlyConfigured, "You'll need to put 'django.contrib.admin' in your INSTALLED_APPS setting before you can use the admin application." @@ -491,7 +496,6 @@ def _get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current perms_needed.add(related.opts.verbose_name) def delete_stage(request, app_label, model_name, object_id): - import sets model = models.get_model(app_label, model_name) object_id = unquote(object_id) if model is None: @@ -504,7 +508,7 @@ def delete_stage(request, app_label, model_name, object_id): # Populate deleted_objects, a data structure of all related objects that # will also be deleted. deleted_objects = [u'%s: %s' % (force_unicode(capfirst(opts.verbose_name)), force_unicode(object_id), escape(obj)), []] - perms_needed = sets.Set() + perms_needed = set() _get_deleted_objects(deleted_objects, perms_needed, request.user, obj, opts, 1) if request.POST: # The user has already confirmed the deletion. diff --git a/django/contrib/auth/__init__.py b/django/contrib/auth/__init__.py index d37450805f..14ae020674 100644 --- a/django/contrib/auth/__init__.py +++ b/django/contrib/auth/__init__.py @@ -53,6 +53,8 @@ def login(request, user): user.save() request.session[SESSION_KEY] = user.id request.session[BACKEND_SESSION_KEY] = user.backend + if hasattr(request, 'user'): + request.user = user def logout(request): """ @@ -66,6 +68,9 @@ def logout(request): del request.session[BACKEND_SESSION_KEY] except KeyError: pass + if hasattr(request, 'user'): + from django.contrib.auth.models import AnonymousUser + request.user = AnonymousUser() def get_user(request): from django.contrib.auth.models import AnonymousUser diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py index 5b9ab2a7ae..2a68e94766 100644 --- a/django/contrib/auth/forms.py +++ b/django/contrib/auth/forms.py @@ -79,32 +79,32 @@ class PasswordResetForm(oldforms.Manipulator): def isValidUserEmail(self, new_data, all_data): "Validates that a user exists with the given e-mail address" - try: - self.user_cache = User.objects.get(email__iexact=new_data) - except User.DoesNotExist: + self.users_cache = list(User.objects.filter(email__iexact=new_data)) + if len(self.users_cache) == 0: raise validators.ValidationError, _("That e-mail address doesn't have an associated user account. Are you sure you've registered?") def save(self, domain_override=None, email_template_name='registration/password_reset_email.html'): "Calculates a new password randomly and sends it to the user" from django.core.mail import send_mail - new_pass = User.objects.make_random_password() - self.user_cache.set_password(new_pass) - self.user_cache.save() - if not domain_override: - current_site = Site.objects.get_current() - site_name = current_site.name - domain = current_site.domain - else: - site_name = domain = domain_override - t = loader.get_template(email_template_name) - c = { - 'new_password': new_pass, - 'email': self.user_cache.email, - 'domain': domain, - 'site_name': site_name, - 'user': self.user_cache, - } - send_mail('Password reset on %s' % site_name, t.render(Context(c)), None, [self.user_cache.email]) + for user in self.users_cache: + new_pass = User.objects.make_random_password() + user.set_password(new_pass) + user.save() + if not domain_override: + current_site = Site.objects.get_current() + site_name = current_site.name + domain = current_site.domain + else: + site_name = domain = domain_override + t = loader.get_template(email_template_name) + c = { + 'new_password': new_pass, + 'email': user.email, + 'domain': domain, + 'site_name': site_name, + 'user': user, + } + send_mail('Password reset on %s' % site_name, t.render(Context(c)), None, [user.email]) class PasswordChangeForm(oldforms.Manipulator): "A form that lets a user change his password." diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py index ac265837f3..fa53a7d9e1 100644 --- a/django/contrib/auth/models.py +++ b/django/contrib/auth/models.py @@ -7,6 +7,11 @@ from django.utils.translation import ugettext_lazy as _ import datetime import urllib +try: + set +except NameError: + from sets import Set as set # Python 2.3 fallback + def check_password(raw_password, enc_password): """ Returns a boolean of whether the raw_password was correct. Handles @@ -177,7 +182,6 @@ class User(models.Model): def get_group_permissions(self): "Returns a list of permission strings that this user has through his/her groups." if not hasattr(self, '_group_perm_cache'): - import sets cursor = connection.cursor() # The SQL below works out to the following, after DB quoting: # cursor.execute(""" @@ -202,13 +206,12 @@ class User(models.Model): backend.quote_name('id'), backend.quote_name('content_type_id'), backend.quote_name('user_id'),) cursor.execute(sql, [self.id]) - self._group_perm_cache = sets.Set(["%s.%s" % (row[0], row[1]) for row in cursor.fetchall()]) + self._group_perm_cache = set(["%s.%s" % (row[0], row[1]) for row in cursor.fetchall()]) return self._group_perm_cache def get_all_permissions(self): if not hasattr(self, '_perm_cache'): - import sets - self._perm_cache = sets.Set([u"%s.%s" % (p.content_type.app_label, p.codename) for p in self.user_permissions.select_related()]) + self._perm_cache = set([u"%s.%s" % (p.content_type.app_label, p.codename) for p in self.user_permissions.select_related()]) self._perm_cache.update(self.get_group_permissions()) return self._perm_cache diff --git a/django/contrib/databrowse/templates/databrowse/object_detail.html b/django/contrib/databrowse/templates/databrowse/object_detail.html index 0096178cd2..2195ad3080 100644 --- a/django/contrib/databrowse/templates/databrowse/object_detail.html +++ b/django/contrib/databrowse/templates/databrowse/object_detail.html @@ -32,10 +32,10 @@
                    • {{ object }}
                    • {% endfor %}
                    - {% else %}

                    (None)

                    {% endif %} + {% endfor %} {% endblock %} diff --git a/django/contrib/redirects/middleware.py b/django/contrib/redirects/middleware.py index 32f2760c45..8998c2ce3e 100644 --- a/django/contrib/redirects/middleware.py +++ b/django/contrib/redirects/middleware.py @@ -19,7 +19,7 @@ class RedirectFallbackMiddleware(object): except Redirect.DoesNotExist: pass if r is not None: - if r == '': + if r.new_path == '': return http.HttpResponseGone() return http.HttpResponsePermanentRedirect(r.new_path) diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py index 5b18ed246a..d2df17284c 100644 --- a/django/contrib/sessions/models.py +++ b/django/contrib/sessions/models.py @@ -1,4 +1,4 @@ -import base64, md5, random, sys, datetime +import base64, md5, random, sys, datetime, os, time import cPickle as pickle from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -14,9 +14,9 @@ class SessionManager(models.Manager): def get_new_session_key(self): "Returns session key that isn't being used." # The random module is seeded when this Apache child is created. - # Use person_id and SECRET_KEY as added salt. + # Use SECRET_KEY as added salt. while 1: - session_key = md5.new(str(random.randint(0, sys.maxint - 1)) + str(random.randint(0, sys.maxint - 1)) + settings.SECRET_KEY).hexdigest() + session_key = md5.new("%s%s%s%s" % (random.randint(0, sys.maxint - 1), os.getpid(), time.time(), settings.SECRET_KEY)).hexdigest() try: self.get(session_key=session_key) except self.model.DoesNotExist: diff --git a/django/core/management.py b/django/core/management.py index fec7fefde4..e31c131de6 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -7,9 +7,10 @@ from optparse import OptionParser from django.utils import termcolors import os, re, shutil, sys, textwrap -# For Python 2.3 -if not hasattr(__builtins__, 'set'): - from sets import Set as set +try: + set +except NameError: + from sets import Set as set # Python 2.3 fallback # For backwards compatibility: get_version() used to be in this module. get_version = django.get_version @@ -58,12 +59,16 @@ def _is_valid_dir_name(s): def _get_installed_models(table_list): "Gets a set of all models that are installed, given a list of existing tables" - from django.db import models + from django.db import backend, models all_models = [] for app in models.get_apps(): for model in models.get_models(app): all_models.append(model) - return set([m for m in all_models if m._meta.db_table in table_list]) + if backend.uses_case_insensitive_names: + converter = str.upper + else: + converter = lambda x: x + return set([m for m in all_models if converter(m._meta.db_table) in map(converter, table_list)]) def _get_table_list(): "Gets a list of all db tables that are physically installed." @@ -99,6 +104,7 @@ get_rel_data_type = lambda f: (f.get_internal_type() in ('AutoField', 'PositiveI def get_sql_create(app): "Returns a list of the CREATE TABLE SQL statements for the given app." from django.db import get_creation_module, models + data_types = get_creation_module().DATA_TYPES if not data_types: @@ -170,15 +176,20 @@ def _get_sql_model_create(model, known_models=set()): rel_field = f data_type = f.get_internal_type() col_type = data_types[data_type] + tablespace = f.db_tablespace or opts.db_tablespace if col_type is not None: # Make the definition (e.g. 'foo VARCHAR(30)') for this field. field_output = [style.SQL_FIELD(backend.quote_name(f.column)), style.SQL_COLTYPE(col_type % rel_field.__dict__)] field_output.append(style.SQL_KEYWORD('%sNULL' % (not f.null and 'NOT ' or ''))) - if f.unique: + if f.unique and (not f.primary_key or backend.allows_unique_and_pk): field_output.append(style.SQL_KEYWORD('UNIQUE')) if f.primary_key: field_output.append(style.SQL_KEYWORD('PRIMARY KEY')) + if tablespace and backend.supports_tablespaces and (f.unique or f.primary_key) and backend.autoindexes_primary_keys: + # We must specify the index tablespace inline, because we + # won't be generating a CREATE INDEX statement for this field. + field_output.append(backend.get_tablespace_sql(tablespace, inline=True)) if f.rel: if f.rel.to in known_models: field_output.append(style.SQL_KEYWORD('REFERENCES') + ' ' + \ @@ -202,9 +213,19 @@ def _get_sql_model_create(model, known_models=set()): full_statement = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + style.SQL_TABLE(backend.quote_name(opts.db_table)) + ' ('] for i, line in enumerate(table_output): # Combine and add commas. full_statement.append(' %s%s' % (line, i < len(table_output)-1 and ',' or '')) - full_statement.append(');') + full_statement.append(')') + if opts.db_tablespace and backend.supports_tablespaces: + full_statement.append(backend.get_tablespace_sql(opts.db_tablespace)) + full_statement.append(';') final_output.append('\n'.join(full_statement)) + if opts.has_auto_field and hasattr(backend, 'get_autoinc_sql'): + # Add any extra SQL needed to support auto-incrementing primary keys + autoinc_sql = backend.get_autoinc_sql(opts.db_table) + if autoinc_sql: + for stmt in autoinc_sql: + final_output.append(stmt) + return final_output, pending_references def _get_sql_for_pending_references(model, pending_references): @@ -212,6 +233,7 @@ def _get_sql_for_pending_references(model, pending_references): Get any ALTER TABLE statements to add constraints after the fact. """ from django.db import backend, get_creation_module + from django.db.backends.util import truncate_name data_types = get_creation_module().DATA_TYPES final_output = [] @@ -228,7 +250,7 @@ def _get_sql_for_pending_references(model, pending_references): # So we are careful with character usage here. r_name = '%s_refs_%s_%x' % (r_col, col, abs(hash((r_table, table)))) final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % \ - (backend.quote_name(r_table), r_name, + (backend.quote_name(r_table), truncate_name(r_name, backend.get_max_name_length()), backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col), backend.get_deferrable_sql())) del pending_references[model] @@ -244,12 +266,18 @@ def _get_many_to_many_sql_for_model(model): final_output = [] for f in opts.many_to_many: if not isinstance(f.rel, generic.GenericRel): + tablespace = f.db_tablespace or opts.db_tablespace + if tablespace and backend.supports_tablespaces and backend.autoindexes_primary_keys: + tablespace_sql = ' ' + backend.get_tablespace_sql(tablespace, inline=True) + else: + tablespace_sql = '' table_output = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + \ style.SQL_TABLE(backend.quote_name(f.m2m_db_table())) + ' ('] - table_output.append(' %s %s %s,' % \ + table_output.append(' %s %s %s%s,' % \ (style.SQL_FIELD(backend.quote_name('id')), style.SQL_COLTYPE(data_types['AutoField']), - style.SQL_KEYWORD('NOT NULL PRIMARY KEY'))) + style.SQL_KEYWORD('NOT NULL PRIMARY KEY'), + tablespace_sql)) table_output.append(' %s %s %s %s (%s)%s,' % \ (style.SQL_FIELD(backend.quote_name(f.m2m_column_name())), style.SQL_COLTYPE(data_types[get_rel_data_type(opts.pk)] % opts.pk.__dict__), @@ -264,17 +292,30 @@ def _get_many_to_many_sql_for_model(model): style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)), style.SQL_FIELD(backend.quote_name(f.rel.to._meta.pk.column)), backend.get_deferrable_sql())) - table_output.append(' %s (%s, %s)' % \ + table_output.append(' %s (%s, %s)%s' % \ (style.SQL_KEYWORD('UNIQUE'), style.SQL_FIELD(backend.quote_name(f.m2m_column_name())), - style.SQL_FIELD(backend.quote_name(f.m2m_reverse_name())))) - table_output.append(');') + style.SQL_FIELD(backend.quote_name(f.m2m_reverse_name())), + tablespace_sql)) + table_output.append(')') + if opts.db_tablespace and backend.supports_tablespaces: + # f.db_tablespace is only for indices, so ignore its value here. + table_output.append(backend.get_tablespace_sql(opts.db_tablespace)) + table_output.append(';') final_output.append('\n'.join(table_output)) + + # Add any extra SQL needed to support auto-incrementing PKs + autoinc_sql = backend.get_autoinc_sql(f.m2m_db_table()) + if autoinc_sql: + for stmt in autoinc_sql: + final_output.append(stmt) + return final_output def get_sql_delete(app): "Returns a list of the DROP TABLE SQL statements for the given app." from django.db import backend, connection, models, get_introspection_module + from django.db.backends.util import truncate_name introspection = get_introspection_module() # This should work even if a connection isn't available @@ -288,6 +329,10 @@ def get_sql_delete(app): table_names = introspection.get_table_list(cursor) else: table_names = [] + if backend.uses_case_insensitive_names: + table_name_converter = str.upper + else: + table_name_converter = lambda x: x output = [] @@ -297,7 +342,7 @@ def get_sql_delete(app): references_to_delete = {} app_models = models.get_models(app) for model in app_models: - if cursor and model._meta.db_table in table_names: + if cursor and table_name_converter(model._meta.db_table) in table_names: # The table exists, so it needs to be dropped opts = model._meta for f in opts.fields: @@ -307,7 +352,7 @@ def get_sql_delete(app): to_delete.add(model) for model in app_models: - if cursor and model._meta.db_table in table_names: + if cursor and table_name_converter(model._meta.db_table) in table_names: # Drop the table now output.append('%s %s;' % (style.SQL_KEYWORD('DROP TABLE'), style.SQL_TABLE(backend.quote_name(model._meta.db_table)))) @@ -317,20 +362,26 @@ def get_sql_delete(app): col = f.column r_table = model._meta.db_table r_col = model._meta.get_field(f.rel.field_name).column + r_name = '%s_refs_%s_%x' % (col, r_col, abs(hash((table, r_table)))) output.append('%s %s %s %s;' % \ (style.SQL_KEYWORD('ALTER TABLE'), style.SQL_TABLE(backend.quote_name(table)), style.SQL_KEYWORD(backend.get_drop_foreignkey_sql()), - style.SQL_FIELD(backend.quote_name('%s_refs_%s_%x' % (col, r_col, abs(hash((table, r_table)))))))) + style.SQL_FIELD(truncate_name(r_name, backend.get_max_name_length())))) del references_to_delete[model] + if model._meta.has_auto_field and hasattr(backend, 'get_drop_sequence'): + output.append(backend.get_drop_sequence(model._meta.db_table)) # Output DROP TABLE statements for many-to-many tables. for model in app_models: opts = model._meta for f in opts.many_to_many: - if cursor and f.m2m_db_table() in table_names: + if cursor and table_name_converter(f.m2m_db_table()) in table_names: output.append("%s %s;" % (style.SQL_KEYWORD('DROP TABLE'), style.SQL_TABLE(backend.quote_name(f.m2m_db_table())))) + if hasattr(backend, 'get_drop_sequence'): + output.append(backend.get_drop_sequence("%s_%s" % (model._meta.db_table, f.column))) + app_label = app_models[0]._meta.app_label @@ -429,14 +480,20 @@ def get_sql_indexes_for_model(model): output = [] for f in model._meta.fields: - if f.db_index: + if f.db_index and not ((f.primary_key or f.unique) and backend.autoindexes_primary_keys): unique = f.unique and 'UNIQUE ' or '' + tablespace = f.db_tablespace or model._meta.db_tablespace + if tablespace and backend.supports_tablespaces: + tablespace_sql = ' ' + backend.get_tablespace_sql(tablespace) + else: + tablespace_sql = '' output.append( style.SQL_KEYWORD('CREATE %sINDEX' % unique) + ' ' + \ style.SQL_TABLE(backend.quote_name('%s_%s' % (model._meta.db_table, f.column))) + ' ' + \ style.SQL_KEYWORD('ON') + ' ' + \ style.SQL_TABLE(backend.quote_name(model._meta.db_table)) + ' ' + \ - "(%s);" % style.SQL_FIELD(backend.quote_name(f.column)) + "(%s)" % style.SQL_FIELD(backend.quote_name(f.column)) + \ + "%s;" % tablespace_sql ) return output @@ -460,7 +517,7 @@ def _emit_post_sync_signal(created_models, verbosity, interactive): def syncdb(verbosity=1, interactive=True): "Creates the database tables for all apps in INSTALLED_APPS whose tables haven't already been created." - from django.db import connection, transaction, models, get_creation_module + from django.db import backend, connection, transaction, models, get_creation_module from django.conf import settings disable_termcolors() @@ -483,6 +540,10 @@ def syncdb(verbosity=1, interactive=True): # Get a list of all existing database tables, # so we know what needs to be added. table_list = _get_table_list() + if backend.uses_case_insensitive_names: + table_name_converter = str.upper + else: + table_name_converter = lambda x: x # Get a list of already installed *models* so that references work right. seen_models = _get_installed_models(table_list) @@ -497,7 +558,7 @@ def syncdb(verbosity=1, interactive=True): # Create the model's database table, if it doesn't already exist. if verbosity >= 2: print "Processing %s.%s model" % (app_name, model._meta.object_name) - if model._meta.db_table in table_list: + if table_name_converter(model._meta.db_table) in table_list: continue sql, references = _get_sql_model_create(model, seen_models) seen_models.add(model) @@ -509,7 +570,7 @@ def syncdb(verbosity=1, interactive=True): print "Creating table %s" % model._meta.db_table for statement in sql: cursor.execute(statement) - table_list.append(model._meta.db_table) + table_list.append(table_name_converter(model._meta.db_table)) # Create the m2m tables. This must be done after all tables have been created # to ensure that all referred tables will exist. @@ -828,7 +889,7 @@ def inspectdb(): except NotImplementedError: indexes = {} for i, row in enumerate(introspection_module.get_table_description(cursor, table_name)): - att_name = row[0] + att_name = row[0].lower() comment_notes = [] # Holds Field notes, to be displayed in a Python comment. extra_params = {} # Holds Field parameters such as 'db_column'. @@ -1321,7 +1382,7 @@ def load_data(fixture_labels, verbosity=1): # Keep a count of the installed objects and fixtures count = [0,0] models = set() - + humanize = lambda dirname: dirname and "'%s'" % dirname or 'absolute path' # Get a cursor (even though we don't need one yet). This has @@ -1399,7 +1460,7 @@ def load_data(fixture_labels, verbosity=1): if verbosity > 1: print "No %s fixture '%s' in %s." % \ (format, fixture_name, humanize(fixture_dir)) - + if count[0] > 0: sequence_sql = backend.get_sql_sequence_reset(style, models) if sequence_sql: @@ -1407,10 +1468,10 @@ def load_data(fixture_labels, verbosity=1): print "Resetting sequences" for line in sequence_sql: cursor.execute(line) - + transaction.commit() transaction.leave_transaction_management() - + if count[0] == 0: if verbosity > 0: print "No fixtures found." @@ -1625,7 +1686,9 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None): if not mod_list: parser.print_usage_and_exit() if action not in NO_SQL_TRANSACTION: - print style.SQL_KEYWORD("BEGIN;") + from django.db import backend + if backend.get_start_transaction_sql(): + print style.SQL_KEYWORD(backend.get_start_transaction_sql()) for mod in mod_list: if action == 'reset': output = action_mapping[action](mod, options.interactive) diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py index 80a0bf6a91..64ed739473 100644 --- a/django/core/servers/basehttp.py +++ b/django/core/servers/basehttp.py @@ -9,7 +9,7 @@ been reviewed for security issues. Don't use it for production use. from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from types import ListType, StringType -import os, re, sys, time, urllib +import os, re, sys, time, urllib, mimetypes __version__ = "0.1" __all__ = ['WSGIServer','WSGIRequestHandler','demo_app'] @@ -630,6 +630,9 @@ class AdminMediaHandler(object): else: status = '200 OK' headers = {} + mime_type = mimetypes.guess_type(file_path)[0] + if mime_type: + headers['Content-Type'] = mime_type output = [fp.read()] fp.close() start_response(status, headers.items()) diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py index 43cd11f967..b2cc86708d 100644 --- a/django/core/urlresolvers.py +++ b/django/core/urlresolvers.py @@ -10,8 +10,17 @@ a string) and returns a tuple in this format: from django.http import Http404 from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist from django.utils.encoding import iri_to_uri +from django.utils.functional import memoize import re +try: + reversed +except NameError: + from django.utils.itercompat import reversed # Python 2.3 fallback + +_resolver_cache = {} # Maps urlconf modules to RegexURLResolver instances. +_callable_cache = {} # Maps view and url pattern names to their view functions. + class Resolver404(Http404): pass @@ -19,6 +28,34 @@ class NoReverseMatch(Exception): # Don't make this raise an error when used in a template. silent_variable_failure = True +def get_callable(lookup_view, can_fail=False): + """ + Convert a string version of a function name to the callable object. + + If the lookup_view is not an import path, it is assumed to be a URL pattern + label and the original string is returned. + + If can_fail is True, lookup_view might be a URL pattern label, so errors + during the import fail and the string is returned. + """ + if not callable(lookup_view): + mod_name, func_name = get_mod_func(lookup_view) + try: + if func_name != '': + lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name) + except (ImportError, AttributeError): + if not can_fail: + raise + return lookup_view +get_callable = memoize(get_callable, _callable_cache) + +def get_resolver(urlconf): + if urlconf is None: + from django.conf import settings + urlconf = settings.ROOT_URLCONF + return RegexURLResolver(r'^/', urlconf) +get_resolver = memoize(get_resolver, _resolver_cache) + def get_mod_func(callback): # Converts 'django.views.news.stories.story_detail' to # ['django.views.news.stories', 'story_detail'] @@ -130,12 +167,13 @@ class RegexURLPattern(object): def _get_callback(self): if self._callback is not None: return self._callback - mod_name, func_name = get_mod_func(self._callback_str) try: - self._callback = getattr(__import__(mod_name, {}, {}, ['']), func_name) + self._callback = get_callable(self._callback_str) except ImportError, e: + mod_name, _ = get_mod_func(self._callback_str) raise ViewDoesNotExist, "Could not import %s. Error was: %s" % (mod_name, str(e)) except AttributeError, e: + mod_name, func_name = get_mod_func(self._callback_str) raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e)) return self._callback callback = property(_get_callback) @@ -161,6 +199,19 @@ class RegexURLResolver(object): self.urlconf_name = urlconf_name self.callback = None self.default_kwargs = default_kwargs or {} + self._reverse_dict = {} + + def _get_reverse_dict(self): + if not self._reverse_dict: + for pattern in reversed(self.urlconf_module.urlpatterns): + if isinstance(pattern, RegexURLResolver): + for key, value in pattern.reverse_dict.iteritems(): + self._reverse_dict[key] = (pattern,) + value + else: + self._reverse_dict[pattern.callback] = (pattern,) + self._reverse_dict[pattern.name] = (pattern,) + return self._reverse_dict + reverse_dict = property(_get_reverse_dict) def resolve(self, path): tried = [] @@ -210,24 +261,12 @@ class RegexURLResolver(object): return self._resolve_special('500') def reverse(self, lookup_view, *args, **kwargs): - if not callable(lookup_view): - mod_name, func_name = get_mod_func(lookup_view) - try: - lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name) - except (ImportError, AttributeError): - if func_name != '': - raise NoReverseMatch - for pattern in self.urlconf_module.urlpatterns: - if isinstance(pattern, RegexURLResolver): - try: - return pattern.reverse_helper(lookup_view, *args, **kwargs) - except NoReverseMatch: - continue - elif pattern.callback == lookup_view or pattern.name == lookup_view: - try: - return pattern.reverse_helper(*args, **kwargs) - except NoReverseMatch: - continue + try: + lookup_view = get_callable(lookup_view, True) + except (ImportError, AttributeError): + raise NoReverseMatch + if lookup_view in self.reverse_dict: + return ''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view]]) raise NoReverseMatch def reverse_helper(self, lookup_view, *args, **kwargs): @@ -236,17 +275,10 @@ class RegexURLResolver(object): return result + sub_match def resolve(path, urlconf=None): - if urlconf is None: - from django.conf import settings - urlconf = settings.ROOT_URLCONF - resolver = RegexURLResolver(r'^/', urlconf) - return resolver.resolve(path) + return get_resolver(urlconf).resolve(path) def reverse(viewname, urlconf=None, args=None, kwargs=None): args = args or [] kwargs = kwargs or {} - if urlconf is None: - from django.conf import settings - urlconf = settings.ROOT_URLCONF - resolver = RegexURLResolver(r'^/', urlconf) - return iri_to_uri(u'/' + resolver.reverse(viewname, *args, **kwargs)) + return iri_to_uri(u'/' + get_resolver(urlconf).reverse(viewname, *args, **kwargs)) + diff --git a/django/db/backends/ado_mssql/base.py b/django/db/backends/ado_mssql/base.py index 52363ed705..0deb6aae64 100644 --- a/django/db/backends/ado_mssql/base.py +++ b/django/db/backends/ado_mssql/base.py @@ -89,7 +89,14 @@ class DatabaseWrapper(local): self.connection.close() self.connection = None +allows_group_by_ordinal = True +allows_unique_and_pk = True +autoindexes_primary_keys = True +needs_datetime_string_cast = True +needs_upper_for_iops = False supports_constraints = True +supports_tablespaces = True +uses_case_insensitive_names = False def quote_name(name): if name.startswith('[') and name.endswith(']'): @@ -117,6 +124,9 @@ def get_date_trunc_sql(lookup_type, field_name): if lookup_type=='day': return "Convert(datetime, Convert(varchar(12), %s))" % field_name +def get_datetime_cast_sql(): + return None + def get_limit_offset_sql(limit, offset=None): # TODO: This is a guess. Make sure this is correct. sql = "LIMIT %s" % limit @@ -139,6 +149,18 @@ def get_drop_foreignkey_sql(): def get_pk_default_value(): return "DEFAULT" +def get_max_name_length(): + return None + +def get_start_transaction_sql(): + return "BEGIN;" + +def get_tablespace_sql(tablespace, inline=False): + return "ON %s" % quote_name(tablespace) + +def get_autoinc_sql(table): + return None + def get_sql_flush(style, tables, sequences): """Return a list of SQL statements required to remove all data from all tables in the database (without actually removing the tables diff --git a/django/db/backends/dummy/base.py b/django/db/backends/dummy/base.py index d0ec897407..6a190cf59c 100644 --- a/django/db/backends/dummy/base.py +++ b/django/db/backends/dummy/base.py @@ -33,6 +33,7 @@ class DatabaseWrapper: pass # close() supports_constraints = False +supports_tablespaces = False quote_name = complain dictfetchone = complain dictfetchmany = complain diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 8bab8bb900..a6d56406d6 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -134,7 +134,14 @@ class DatabaseWrapper(local): self.server_version = tuple([int(x) for x in m.groups()]) return self.server_version +allows_group_by_ordinal = True +allows_unique_and_pk = True +autoindexes_primary_keys = False +needs_datetime_string_cast = True # MySQLdb requires a typecast for dates +needs_upper_for_iops = False supports_constraints = True +supports_tablespaces = False +uses_case_insensitive_names = False def quote_name(name): if name.startswith("`") and name.endswith("`"): @@ -167,6 +174,9 @@ def get_date_trunc_sql(lookup_type, field_name): sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str) return sql +def get_datetime_cast_sql(): + return None + def get_limit_offset_sql(limit, offset=None): sql = "LIMIT " if offset and offset != 0: @@ -188,11 +198,20 @@ def get_drop_foreignkey_sql(): def get_pk_default_value(): return "DEFAULT" +def get_max_name_length(): + return None; + +def get_start_transaction_sql(): + return "BEGIN;" + +def get_autoinc_sql(table): + return None + def get_sql_flush(style, tables, sequences): """Return a list of SQL statements required to remove all data from all tables in the database (without actually removing the tables themselves) and put the database in an empty 'initial' state - + """ # NB: The generated SQL below is specific to MySQL # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements @@ -204,7 +223,7 @@ def get_sql_flush(style, tables, sequences): style.SQL_FIELD(quote_name(table)) ) for table in tables] + \ ['SET FOREIGN_KEY_CHECKS = 1;'] - + # 'ALTER TABLE table AUTO_INCREMENT = 1;'... style SQL statements # to reset sequence indices sql.extend(["%s %s %s %s %s;" % \ diff --git a/django/db/backends/mysql_old/base.py b/django/db/backends/mysql_old/base.py index 87aed4520e..4a14fa822a 100644 --- a/django/db/backends/mysql_old/base.py +++ b/django/db/backends/mysql_old/base.py @@ -137,7 +137,14 @@ class DatabaseWrapper(local): self.server_version = tuple([int(x) for x in m.groups()]) return self.server_version +allows_group_by_ordinal = True +allows_unique_and_pk = True +autoindexes_primary_keys = False +needs_datetime_string_cast = True # MySQLdb requires a typecast for dates +needs_upper_for_iops = False supports_constraints = True +supports_tablespaces = False +uses_case_insensitive_names = False def quote_name(name): if name.startswith("`") and name.endswith("`"): @@ -170,6 +177,9 @@ def get_date_trunc_sql(lookup_type, field_name): sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str) return sql +def get_datetime_cast_sql(): + return None + def get_limit_offset_sql(limit, offset=None): sql = "LIMIT " if offset and offset != 0: @@ -191,11 +201,20 @@ def get_drop_foreignkey_sql(): def get_pk_default_value(): return "DEFAULT" +def get_max_name_length(): + return None; + +def get_start_transaction_sql(): + return "BEGIN;" + +def get_autoinc_sql(table): + return None + def get_sql_flush(style, tables, sequences): """Return a list of SQL statements required to remove all data from all tables in the database (without actually removing the tables themselves) and put the database in an empty 'initial' state - + """ # NB: The generated SQL below is specific to MySQL # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements @@ -207,7 +226,7 @@ def get_sql_flush(style, tables, sequences): style.SQL_FIELD(quote_name(table)) ) for table in tables] + \ ['SET FOREIGN_KEY_CHECKS = 1;'] - + # 'ALTER TABLE table AUTO_INCREMENT = 1;'... style SQL statements # to reset sequence indices sql.extend(["%s %s %s %s %s;" % \ diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 2bc88bb7b9..48b3c27355 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -4,12 +4,16 @@ Oracle database backend for Django. Requires cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/ """ +from django.conf import settings from django.db.backends import util try: import cx_Oracle as Database except ImportError, e: from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured, "Error loading cx_Oracle module: %s" % e +import datetime +from django.utils.datastructures import SortedDict + DatabaseError = Database.Error IntegrityError = Database.IntegrityError @@ -31,7 +35,6 @@ class DatabaseWrapper(local): return self.connection is not None def cursor(self): - from django.conf import settings if not self._valid_connection(): if len(settings.DATABASE_HOST.strip()) == 0: settings.DATABASE_HOST = 'localhost' @@ -41,25 +44,37 @@ class DatabaseWrapper(local): else: conn_string = "%s/%s@%s" % (settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME) self.connection = Database.connect(conn_string, **self.options) - return FormatStylePlaceholderCursor(self.connection) + cursor = FormatStylePlaceholderCursor(self.connection) + # default arraysize of 1 is highly sub-optimal + cursor.arraysize = 100 + # set oracle date to ansi date format + cursor.execute("ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'") + cursor.execute("ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF'") + if settings.DEBUG: + return util.CursorDebugWrapper(cursor, self) + return cursor def _commit(self): if self.connection is not None: - self.connection.commit() + return self.connection.commit() def _rollback(self): if self.connection is not None: - try: - self.connection.rollback() - except Database.NotSupportedError: - pass + return self.connection.rollback() def close(self): if self.connection is not None: self.connection.close() self.connection = None +allows_group_by_ordinal = False +allows_unique_and_pk = False # Suppress UNIQUE/PK for Oracle (ORA-02259) +autoindexes_primary_keys = True +needs_datetime_string_cast = False +needs_upper_for_iops = True supports_constraints = True +supports_tablespaces = True +uses_case_insensitive_names = True class FormatStylePlaceholderCursor(Database.Cursor): """ @@ -67,45 +82,75 @@ class FormatStylePlaceholderCursor(Database.Cursor): This fixes it -- but note that if you want to use a literal "%s" in a query, you'll need to use "%%s". """ + def _rewrite_args(self, query, params=None): + if params is None: + params = [] + else: + # cx_Oracle can't handle unicode parameters, so cast to str for now + for i, param in enumerate(params): + if type(param) == unicode: + try: + params[i] = param.encode('utf-8') + except UnicodeError: + params[i] = str(param) + args = [(':arg%d' % i) for i in range(len(params))] + query = query % tuple(args) + # cx_Oracle wants no trailing ';' for SQL statements. For PL/SQL, it + # it does want a trailing ';' but not a trailing '/'. However, these + # characters must be included in the original query in case the query + # is being passed to SQL*Plus. + if query.endswith(';') or query.endswith('/'): + query = query[:-1] + return query, params + def execute(self, query, params=None): - if params is None: params = [] - query = self.convert_arguments(query, len(params)) + query, params = self._rewrite_args(query, params) return Database.Cursor.execute(self, query, params) def executemany(self, query, params=None): - if params is None: params = [] - query = self.convert_arguments(query, len(params[0])) + query, params = self._rewrite_args(query, params) return Database.Cursor.executemany(self, query, params) - def convert_arguments(self, query, num_params): - # replace occurances of "%s" with ":arg" - Oracle requires colons for parameter placeholders. - args = [':arg' for i in range(num_params)] - return query % tuple(args) - def quote_name(name): - return name + # SQL92 requires delimited (quoted) names to be case-sensitive. When + # not quoted, Oracle has case-insensitive behavior for identifiers, but + # always defaults to uppercase. + # We simplify things by making Oracle identifiers always uppercase. + if not name.startswith('"') and not name.endswith('"'): + name = '"%s"' % util.truncate_name(name.upper(), get_max_name_length()) + return name.upper() dictfetchone = util.dictfetchone dictfetchmany = util.dictfetchmany dictfetchall = util.dictfetchall def get_last_insert_id(cursor, table_name, pk_name): - query = "SELECT %s_sq.currval from dual" % table_name - cursor.execute(query) + sq_name = util.truncate_name(table_name, get_max_name_length()-3) + cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name) return cursor.fetchone()[0] def get_date_extract_sql(lookup_type, table_name): # lookup_type is 'year', 'month', 'day' - # http://www.psoug.org/reference/date_func.html + # http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96540/functions42a.htm#1017163 return "EXTRACT(%s FROM %s)" % (lookup_type, table_name) def get_date_trunc_sql(lookup_type, field_name): - return "EXTRACT(%s FROM TRUNC(%s))" % (lookup_type, field_name) + # lookup_type is 'year', 'month', 'day' + # Oracle uses TRUNC() for both dates and numbers. + # http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96540/functions155a.htm#SQLRF06151 + if lookup_type == 'day': + sql = 'TRUNC(%s)' % (field_name,) + else: + sql = "TRUNC(%s, '%s')" % (field_name, lookup_type) + return sql + +def get_datetime_cast_sql(): + return "TO_TIMESTAMP(%s, 'YYYY-MM-DD HH24:MI:SS.FF')" def get_limit_offset_sql(limit, offset=None): # Limits and offset are too complicated to be handled here. - # Instead, they are handled in django/db/query.py. - pass + # Instead, they are handled in django/db/backends/oracle/query.py. + return "" def get_random_function_sql(): return "DBMS_RANDOM.RANDOM" @@ -117,40 +162,363 @@ def get_fulltext_search_sql(field_name): raise NotImplementedError def get_drop_foreignkey_sql(): - return "DROP FOREIGN KEY" + return "DROP CONSTRAINT" def get_pk_default_value(): return "DEFAULT" +def get_max_name_length(): + return 30 + +def get_start_transaction_sql(): + return None + +def get_tablespace_sql(tablespace, inline=False): + return "%sTABLESPACE %s" % ((inline and "USING INDEX " or ""), quote_name(tablespace)) + +def get_autoinc_sql(table): + # To simulate auto-incrementing primary keys in Oracle, we have to + # create a sequence and a trigger. + sq_name = get_sequence_name(table) + tr_name = get_trigger_name(table) + sequence_sql = 'CREATE SEQUENCE %s;' % sq_name + trigger_sql = """CREATE OR REPLACE TRIGGER %s + BEFORE INSERT ON %s + FOR EACH ROW + WHEN (new.id IS NULL) + BEGIN + SELECT %s.nextval INTO :new.id FROM dual; + END; + /""" % (tr_name, quote_name(table), sq_name) + return sequence_sql, trigger_sql + +def get_drop_sequence(table): + return "DROP SEQUENCE %s;" % quote_name(get_sequence_name(table)) + +def _get_sequence_reset_sql(): + # TODO: colorize this SQL code with style.SQL_KEYWORD(), etc. + return """ + DECLARE + startvalue integer; + cval integer; + BEGIN + LOCK TABLE %(table)s IN SHARE MODE; + SELECT NVL(MAX(id), 0) INTO startvalue FROM %(table)s; + SELECT %(sequence)s.nextval INTO cval FROM dual; + cval := startvalue - cval; + IF cval != 0 THEN + EXECUTE IMMEDIATE 'ALTER SEQUENCE %(sequence)s MINVALUE 0 INCREMENT BY '||cval; + SELECT %(sequence)s.nextval INTO cval FROM dual; + EXECUTE IMMEDIATE 'ALTER SEQUENCE %(sequence)s INCREMENT BY 1'; + END IF; + COMMIT; + END; + /""" + def get_sql_flush(style, tables, sequences): """Return a list of SQL statements required to remove all data from all tables in the database (without actually removing the tables themselves) and put the database in an empty 'initial' state """ - # Return a list of 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements - # TODO - SQL not actually tested against Oracle yet! - # TODO - autoincrement indices reset required? See other get_sql_flush() implementations - sql = ['%s %s;' % \ - (style.SQL_KEYWORD('TRUNCATE'), - style.SQL_FIELD(quote_name(table)) - ) for table in tables] + # Return a list of 'TRUNCATE x;', 'TRUNCATE y;', + # 'TRUNCATE z;'... style SQL statements + if tables: + # Oracle does support TRUNCATE, but it seems to get us into + # FK referential trouble, whereas DELETE FROM table works. + sql = ['%s %s %s;' % \ + (style.SQL_KEYWORD('DELETE'), + style.SQL_KEYWORD('FROM'), + style.SQL_FIELD(quote_name(table)) + ) for table in tables] + # Since we've just deleted all the rows, running our sequence + # ALTER code will reset the sequence to 0. + for sequence_info in sequences: + table_name = sequence_info['table'] + seq_name = get_sequence_name(table_name) + query = _get_sequence_reset_sql() % {'sequence':seq_name, + 'table':quote_name(table_name)} + sql.append(query) + return sql + else: + return [] + +def get_sequence_name(table): + name_length = get_max_name_length() - 3 + return '%s_SQ' % util.truncate_name(table, name_length).upper() def get_sql_sequence_reset(style, model_list): "Returns a list of the SQL statements to reset sequences for the given models." - # No sequence reset required - return [] + from django.db import models + output = [] + query = _get_sequence_reset_sql() + for model in model_list: + for f in model._meta.fields: + if isinstance(f, models.AutoField): + sequence_name = get_sequence_name(model._meta.db_table) + output.append(query % {'sequence':sequence_name, + 'table':model._meta.db_table}) + break # Only one AutoField is allowed per model, so don't bother continuing. + for f in model._meta.many_to_many: + sequence_name = get_sequence_name(f.m2m_db_table()) + output.append(query % {'sequence':sequence_name, + 'table':f.m2m_db_table()}) + return output + +def get_trigger_name(table): + name_length = get_max_name_length() - 3 + return '%s_TR' % util.truncate_name(table, name_length).upper() + +def get_query_set_class(DefaultQuerySet): + "Create a custom QuerySet class for Oracle." + + from django.db import backend, connection + from django.db.models.query import EmptyResultSet, GET_ITERATOR_CHUNK_SIZE, quote_only_if_word + + class OracleQuerySet(DefaultQuerySet): + + def iterator(self): + "Performs the SELECT database lookup of this QuerySet." + + from django.db.models.query import get_cached_row + + # self._select is a dictionary, and dictionaries' key order is + # undefined, so we convert it to a list of tuples. + extra_select = self._select.items() + + full_query = None + + try: + try: + select, sql, params, full_query = self._get_sql_clause(get_full_query=True) + except TypeError: + select, sql, params = self._get_sql_clause() + except EmptyResultSet: + raise StopIteration + if not full_query: + full_query = "SELECT %s%s\n%s" % \ + ((self._distinct and "DISTINCT " or ""), + ', '.join(select), sql) + + cursor = connection.cursor() + cursor.execute(full_query, params) + + fill_cache = self._select_related + fields = self.model._meta.fields + index_end = len(fields) + + # so here's the logic; + # 1. retrieve each row in turn + # 2. convert NCLOBs + + while 1: + rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE) + if not rows: + raise StopIteration + for row in rows: + row = self.resolve_columns(row, fields) + if fill_cache: + obj, index_end = get_cached_row(klass=self.model, row=row, + index_start=0, max_depth=self._max_related_depth) + else: + obj = self.model(*row[:index_end]) + for i, k in enumerate(extra_select): + setattr(obj, k[0], row[index_end+i]) + yield obj + + + def _get_sql_clause(self, get_full_query=False): + from django.db.models.query import fill_table_cache, \ + handle_legacy_orderlist, orderfield2column + + opts = self.model._meta + + # Construct the fundamental parts of the query: SELECT X FROM Y WHERE Z. + select = ["%s.%s" % (backend.quote_name(opts.db_table), backend.quote_name(f.column)) for f in opts.fields] + tables = [quote_only_if_word(t) for t in self._tables] + joins = SortedDict() + where = self._where[:] + params = self._params[:] + + # Convert self._filters into SQL. + joins2, where2, params2 = self._filters.get_sql(opts) + joins.update(joins2) + where.extend(where2) + params.extend(params2) + + # Add additional tables and WHERE clauses based on select_related. + if self._select_related: + fill_table_cache(opts, select, tables, where, opts.db_table, [opts.db_table]) + + # Add any additional SELECTs. + if self._select: + select.extend(['(%s) AS %s' % (quote_only_if_word(s[1]), backend.quote_name(s[0])) for s in self._select.items()]) + + # Start composing the body of the SQL statement. + sql = [" FROM", backend.quote_name(opts.db_table)] + + # Compose the join dictionary into SQL describing the joins. + if joins: + sql.append(" ".join(["%s %s %s ON %s" % (join_type, table, alias, condition) + for (alias, (table, join_type, condition)) in joins.items()])) + + # Compose the tables clause into SQL. + if tables: + sql.append(", " + ", ".join(tables)) + + # Compose the where clause into SQL. + if where: + sql.append(where and "WHERE " + " AND ".join(where)) + + # ORDER BY clause + order_by = [] + if self._order_by is not None: + ordering_to_use = self._order_by + else: + ordering_to_use = opts.ordering + for f in handle_legacy_orderlist(ordering_to_use): + if f == '?': # Special case. + order_by.append(backend.get_random_function_sql()) + else: + if f.startswith('-'): + col_name = f[1:] + order = "DESC" + else: + col_name = f + order = "ASC" + if "." in col_name: + table_prefix, col_name = col_name.split('.', 1) + table_prefix = backend.quote_name(table_prefix) + '.' + else: + # Use the database table as a column prefix if it wasn't given, + # and if the requested column isn't a custom SELECT. + if "." not in col_name and col_name not in (self._select or ()): + table_prefix = backend.quote_name(opts.db_table) + '.' + else: + table_prefix = '' + order_by.append('%s%s %s' % (table_prefix, backend.quote_name(orderfield2column(col_name, opts)), order)) + if order_by: + sql.append("ORDER BY " + ", ".join(order_by)) + + # Look for column name collisions in the select elements + # and fix them with an AS alias. This allows us to do a + # SELECT * later in the paging query. + cols = [clause.split('.')[-1] for clause in select] + for index, col in enumerate(cols): + if cols.count(col) > 1: + col = '%s%d' % (col.replace('"', ''), index) + cols[index] = col + select[index] = '%s AS %s' % (select[index], col) + + # LIMIT and OFFSET clauses + # To support limits and offsets, Oracle requires some funky rewriting of an otherwise normal looking query. + select_clause = ",".join(select) + distinct = (self._distinct and "DISTINCT " or "") + + if order_by: + order_by_clause = " OVER (ORDER BY %s )" % (", ".join(order_by)) + else: + #Oracle's row_number() function always requires an order-by clause. + #So we need to define a default order-by, since none was provided. + order_by_clause = " OVER (ORDER BY %s.%s)" % \ + (backend.quote_name(opts.db_table), + backend.quote_name(opts.fields[0].db_column or opts.fields[0].column)) + # limit_and_offset_clause + if self._limit is None: + assert self._offset is None, "'offset' is not allowed without 'limit'" + + if self._offset is not None: + offset = int(self._offset) + else: + offset = 0 + if self._limit is not None: + limit = int(self._limit) + else: + limit = None + + limit_and_offset_clause = '' + if limit is not None: + limit_and_offset_clause = "WHERE rn > %s AND rn <= %s" % (offset, limit+offset) + elif offset: + limit_and_offset_clause = "WHERE rn > %s" % (offset) + + if len(limit_and_offset_clause) > 0: + fmt = \ +"""SELECT * FROM + (SELECT %s%s, + ROW_NUMBER()%s AS rn + %s) +%s""" + full_query = fmt % (distinct, select_clause, + order_by_clause, ' '.join(sql).strip(), + limit_and_offset_clause) + else: + full_query = None + + if get_full_query: + return select, " ".join(sql), params, full_query + else: + return select, " ".join(sql), params + + def resolve_columns(self, row, fields=()): + from django.db.models.fields import DateField, DateTimeField, \ + TimeField, BooleanField, NullBooleanField, DecimalField, Field + values = [] + for value, field in map(None, row, fields): + if isinstance(value, Database.LOB): + value = value.read() + # Oracle stores empty strings as null. We need to undo this in + # order to adhere to the Django convention of using the empty + # string instead of null, but only if the field accepts the + # empty string. + if value is None and isinstance(field, Field) and field.empty_strings_allowed: + value = '' + # Convert 1 or 0 to True or False + elif value in (1, 0) and isinstance(field, (BooleanField, NullBooleanField)): + value = bool(value) + # Convert floats to decimals + elif value is not None and isinstance(field, DecimalField): + value = util.typecast_decimal(field.format_number(value)) + # cx_Oracle always returns datetime.datetime objects for + # DATE and TIMESTAMP columns, but Django wants to see a + # python datetime.date, .time, or .datetime. We use the type + # of the Field to determine which to cast to, but it's not + # always available. + # As a workaround, we cast to date if all the time-related + # values are 0, or to time if the date is 1/1/1900. + # This could be cleaned a bit by adding a method to the Field + # classes to normalize values from the database (the to_python + # method is used for validation and isn't what we want here). + elif isinstance(value, Database.Timestamp): + # In Python 2.3, the cx_Oracle driver returns its own + # Timestamp object that we must convert to a datetime class. + if not isinstance(value, datetime.datetime): + value = datetime.datetime(value.year, value.month, value.day, value.hour, + value.minute, value.second, value.fsecond) + if isinstance(field, DateTimeField): + pass # DateTimeField subclasses DateField so must be checked first. + elif isinstance(field, DateField): + value = value.date() + elif isinstance(field, TimeField) or (value.year == 1900 and value.month == value.day == 1): + value = value.time() + elif value.hour == value.minute == value.second == value.microsecond == 0: + value = value.date() + values.append(value) + return values + + return OracleQuerySet + OPERATOR_MAPPING = { 'exact': '= %s', - 'iexact': 'LIKE %s', - 'contains': 'LIKE %s', - 'icontains': 'LIKE %s', + 'iexact': '= UPPER(%s)', + 'contains': "LIKE %s ESCAPE '\\'", + 'icontains': "LIKE UPPER(%s) ESCAPE '\\'", 'gt': '> %s', 'gte': '>= %s', 'lt': '< %s', 'lte': '<= %s', - 'startswith': 'LIKE %s', - 'endswith': 'LIKE %s', - 'istartswith': 'LIKE %s', - 'iendswith': 'LIKE %s', + 'startswith': "LIKE %s ESCAPE '\\'", + 'endswith': "LIKE %s ESCAPE '\\'", + 'istartswith': "LIKE UPPER(%s) ESCAPE '\\'", + 'iendswith': "LIKE UPPER(%s) ESCAPE '\\'", } diff --git a/django/db/backends/oracle/client.py b/django/db/backends/oracle/client.py index 7e32ebef2f..372783aa97 100644 --- a/django/db/backends/oracle/client.py +++ b/django/db/backends/oracle/client.py @@ -2,9 +2,10 @@ from django.conf import settings import os def runshell(): - args = '' - args += settings.DATABASE_USER + dsn = settings.DATABASE_USER if settings.DATABASE_PASSWORD: - args += "/%s" % settings.DATABASE_PASSWORD - args += "@%s" % settings.DATABASE_NAME - os.execvp('sqlplus', args) + dsn += "/%s" % settings.DATABASE_PASSWORD + if settings.DATABASE_NAME: + dsn += "@%s" % settings.DATABASE_NAME + args = ["sqlplus", "-L", dsn] + os.execvp("sqlplus", args) diff --git a/django/db/backends/oracle/creation.py b/django/db/backends/oracle/creation.py index 14a864ac28..6b1a30d55d 100644 --- a/django/db/backends/oracle/creation.py +++ b/django/db/backends/oracle/creation.py @@ -1,26 +1,304 @@ +import sys, time +from django.core import management + +# This dictionary maps Field objects to their associated Oracle column +# types, as strings. Column-type strings can contain format strings; they'll +# be interpolated against the values of Field.__dict__ before being output. +# If a column type is set to None, it won't be included in the output. DATA_TYPES = { - 'AutoField': 'number(38)', - 'BooleanField': 'number(1)', - 'CharField': 'varchar2(%(maxlength)s)', - 'CommaSeparatedIntegerField': 'varchar2(%(maxlength)s)', - 'DateField': 'date', - 'DateTimeField': 'date', - 'DecimalField': 'number(%(max_digits)s, %(decimal_places)s)', - 'FileField': 'varchar2(100)', - 'FilePathField': 'varchar2(100)', - 'FloatField': 'double precision', - 'ImageField': 'varchar2(100)', - 'IntegerField': 'integer', - 'IPAddressField': 'char(15)', - 'ManyToManyField': None, - 'NullBooleanField': 'integer', - 'OneToOneField': 'integer', - 'PhoneNumberField': 'varchar(20)', - 'PositiveIntegerField': 'integer', - 'PositiveSmallIntegerField': 'smallint', - 'SlugField': 'varchar(50)', - 'SmallIntegerField': 'smallint', - 'TextField': 'long', - 'TimeField': 'timestamp', - 'USStateField': 'varchar(2)', + 'AutoField': 'NUMBER(11)', + 'BooleanField': 'NUMBER(1) CHECK (%(column)s IN (0,1))', + 'CharField': 'VARCHAR2(%(maxlength)s)', + 'CommaSeparatedIntegerField': 'VARCHAR2(%(maxlength)s)', + 'DateField': 'DATE', + 'DateTimeField': 'TIMESTAMP', + 'DecimalField': 'NUMBER(%(max_digits)s, %(decimal_places)s)', + 'FileField': 'VARCHAR2(100)', + 'FilePathField': 'VARCHAR2(100)', + 'FloatField': 'DOUBLE PRECISION', + 'ImageField': 'VARCHAR2(100)', + 'IntegerField': 'NUMBER(11)', + 'IPAddressField': 'VARCHAR2(15)', + 'ManyToManyField': None, + 'NullBooleanField': 'NUMBER(1) CHECK ((%(column)s IN (0,1)) OR (%(column)s IS NULL))', + 'OneToOneField': 'NUMBER(11)', + 'PhoneNumberField': 'VARCHAR2(20)', + 'PositiveIntegerField': 'NUMBER(11) CHECK (%(column)s >= 0)', + 'PositiveSmallIntegerField': 'NUMBER(11) CHECK (%(column)s >= 0)', + 'SlugField': 'VARCHAR2(50)', + 'SmallIntegerField': 'NUMBER(11)', + 'TextField': 'NCLOB', + 'TimeField': 'TIMESTAMP', + 'URLField': 'VARCHAR2(200)', + 'USStateField': 'CHAR(2)', } + +TEST_DATABASE_PREFIX = 'test_' +PASSWORD = 'Im_a_lumberjack' +REMEMBER = {} + + +def create_test_db(settings, connection, backend, verbosity=1, autoclobber=False): + + TEST_DATABASE_NAME = _test_database_name(settings) + TEST_DATABASE_USER = _test_database_user(settings) + TEST_DATABASE_PASSWD = _test_database_passwd(settings) + TEST_DATABASE_TBLSPACE = _test_database_tblspace(settings) + TEST_DATABASE_TBLSPACE_TMP = _test_database_tblspace_tmp(settings) + + parameters = { + 'dbname': TEST_DATABASE_NAME, + 'user': TEST_DATABASE_USER, + 'password': TEST_DATABASE_PASSWD, + 'tblspace': TEST_DATABASE_TBLSPACE, + 'tblspace_temp': TEST_DATABASE_TBLSPACE_TMP, + } + + REMEMBER['user'] = settings.DATABASE_USER + REMEMBER['passwd'] = settings.DATABASE_PASSWORD + + cursor = connection.cursor() + if _test_database_create(settings): + if verbosity >= 1: + print 'Creating test database...' + try: + _create_test_db(cursor, parameters, verbosity) + except Exception, e: + sys.stderr.write("Got an error creating the test database: %s\n" % e) + if not autoclobber: + confirm = raw_input("It appears the test database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % TEST_DATABASE_NAME) + if autoclobber or confirm == 'yes': + try: + if verbosity >= 1: + print "Destroying old test database..." + _destroy_test_db(cursor, parameters, verbosity) + if verbosity >= 1: + print "Creating test database..." + _create_test_db(cursor, parameters, verbosity) + except Exception, e: + sys.stderr.write("Got an error recreating the test database: %s\n" % e) + sys.exit(2) + else: + print "Tests cancelled." + sys.exit(1) + + if _test_user_create(settings): + if verbosity >= 1: + print "Creating test user..." + try: + _create_test_user(cursor, parameters, verbosity) + except Exception, e: + sys.stderr.write("Got an error creating the test user: %s\n" % e) + if not autoclobber: + confirm = raw_input("It appears the test user, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % TEST_DATABASE_USER) + if autoclobber or confirm == 'yes': + try: + if verbosity >= 1: + print "Destroying old test user..." + _destroy_test_user(cursor, parameters, verbosity) + if verbosity >= 1: + print "Creating test user..." + _create_test_user(cursor, parameters, verbosity) + except Exception, e: + sys.stderr.write("Got an error recreating the test user: %s\n" % e) + sys.exit(2) + else: + print "Tests cancelled." + sys.exit(1) + + connection.close() + settings.DATABASE_USER = TEST_DATABASE_USER + settings.DATABASE_PASSWORD = TEST_DATABASE_PASSWD + + management.syncdb(verbosity, interactive=False) + + # Get a cursor (even though we don't need one yet). This has + # the side effect of initializing the test database. + cursor = connection.cursor() + + +def destroy_test_db(settings, connection, backend, old_database_name, verbosity=1): + connection.close() + + TEST_DATABASE_NAME = _test_database_name(settings) + TEST_DATABASE_USER = _test_database_user(settings) + TEST_DATABASE_PASSWD = _test_database_passwd(settings) + TEST_DATABASE_TBLSPACE = _test_database_tblspace(settings) + TEST_DATABASE_TBLSPACE_TMP = _test_database_tblspace_tmp(settings) + + settings.DATABASE_NAME = old_database_name + settings.DATABASE_USER = REMEMBER['user'] + settings.DATABASE_PASSWORD = REMEMBER['passwd'] + + parameters = { + 'dbname': TEST_DATABASE_NAME, + 'user': TEST_DATABASE_USER, + 'password': TEST_DATABASE_PASSWD, + 'tblspace': TEST_DATABASE_TBLSPACE, + 'tblspace_temp': TEST_DATABASE_TBLSPACE_TMP, + } + + REMEMBER['user'] = settings.DATABASE_USER + REMEMBER['passwd'] = settings.DATABASE_PASSWORD + + cursor = connection.cursor() + time.sleep(1) # To avoid "database is being accessed by other users" errors. + if _test_user_create(settings): + if verbosity >= 1: + print 'Destroying test user...' + _destroy_test_user(cursor, parameters, verbosity) + if _test_database_create(settings): + if verbosity >= 1: + print 'Destroying test database...' + _destroy_test_db(cursor, parameters, verbosity) + connection.close() + + +def _create_test_db(cursor, parameters, verbosity): + if verbosity >= 2: + print "_create_test_db(): dbname = %s" % parameters['dbname'] + statements = [ + """CREATE TABLESPACE %(tblspace)s + DATAFILE '%(tblspace)s.dbf' SIZE 20M + REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M + """, + """CREATE TEMPORARY TABLESPACE %(tblspace_temp)s + TEMPFILE '%(tblspace_temp)s.dbf' SIZE 20M + REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M + """, + ] + _execute_statements(cursor, statements, parameters, verbosity) + + +def _create_test_user(cursor, parameters, verbosity): + if verbosity >= 2: + print "_create_test_user(): username = %s" % parameters['user'] + statements = [ + """CREATE USER %(user)s + IDENTIFIED BY %(password)s + DEFAULT TABLESPACE %(tblspace)s + TEMPORARY TABLESPACE %(tblspace_temp)s + """, + """GRANT CONNECT, RESOURCE TO %(user)s""", + ] + _execute_statements(cursor, statements, parameters, verbosity) + + +def _destroy_test_db(cursor, parameters, verbosity): + if verbosity >= 2: + print "_destroy_test_db(): dbname=%s" % parameters['dbname'] + statements = [ + 'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS', + 'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS', + ] + _execute_statements(cursor, statements, parameters, verbosity) + + +def _destroy_test_user(cursor, parameters, verbosity): + if verbosity >= 2: + print "_destroy_test_user(): user=%s" % parameters['user'] + print "Be patient. This can take some time..." + statements = [ + 'DROP USER %(user)s CASCADE', + ] + _execute_statements(cursor, statements, parameters, verbosity) + + +def _execute_statements(cursor, statements, parameters, verbosity): + for template in statements: + stmt = template % parameters + if verbosity >= 2: + print stmt + try: + cursor.execute(stmt) + except Exception, err: + sys.stderr.write("Failed (%s)\n" % (err)) + raise + + +def _test_database_name(settings): + name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME + try: + if settings.TEST_DATABASE_NAME: + name = settings.TEST_DATABASE_NAME + except AttributeError: + pass + except: + raise + return name + + +def _test_database_create(settings): + name = True + try: + if settings.TEST_DATABASE_CREATE: + name = True + else: + name = False + except AttributeError: + pass + except: + raise + return name + + +def _test_user_create(settings): + name = True + try: + if settings.TEST_USER_CREATE: + name = True + else: + name = False + except AttributeError: + pass + except: + raise + return name + + +def _test_database_user(settings): + name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME + try: + if settings.TEST_DATABASE_USER: + name = settings.TEST_DATABASE_USER + except AttributeError: + pass + except: + raise + return name + + +def _test_database_passwd(settings): + name = PASSWORD + try: + if settings.TEST_DATABASE_PASSWD: + name = settings.TEST_DATABASE_PASSWD + except AttributeError: + pass + except: + raise + return name + + +def _test_database_tblspace(settings): + name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME + try: + if settings.TEST_DATABASE_TBLSPACE: + name = settings.TEST_DATABASE_TBLSPACE + except AttributeError: + pass + except: + raise + return name + + +def _test_database_tblspace_tmp(settings): + name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME + '_temp' + try: + if settings.TEST_DATABASE_TBLSPACE_TMP: + name = settings.TEST_DATABASE_TBLSPACE_TMP + except AttributeError: + pass + except: + raise + return name diff --git a/django/db/backends/oracle/introspection.py b/django/db/backends/oracle/introspection.py index 7634206178..44430a0029 100644 --- a/django/db/backends/oracle/introspection.py +++ b/django/db/backends/oracle/introspection.py @@ -1,14 +1,19 @@ +from django.db.backends.oracle.base import quote_name import re +import cx_Oracle + foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)") def get_table_list(cursor): "Returns a list of table names in the current database." cursor.execute("SELECT TABLE_NAME FROM USER_TABLES") - return [row[0] for row in cursor.fetchall()] + return [row[0].upper() for row in cursor.fetchall()] def get_table_description(cursor, table_name): - return table_name + "Returns a description of the table, with the DB-API cursor.description interface." + cursor.execute("SELECT * FROM %s WHERE ROWNUM < 2" % quote_name(table_name)) + return cursor.description def _name_to_index(cursor, table_name): """ @@ -22,7 +27,24 @@ def get_relations(cursor, table_name): Returns a dictionary of {field_index: (field_index_other_table, other_table)} representing all relationships to the given table. Indexes are 0-based. """ - raise NotImplementedError + cursor.execute(""" +SELECT ta.column_id - 1, tb.table_name, tb.column_id - 1 +FROM user_constraints, USER_CONS_COLUMNS ca, USER_CONS_COLUMNS cb, + user_tab_cols ta, user_tab_cols tb +WHERE user_constraints.table_name = %s AND + ta.table_name = %s AND + ta.column_name = ca.column_name AND + ca.table_name = %s AND + user_constraints.constraint_name = ca.constraint_name AND + user_constraints.r_constraint_name = cb.constraint_name AND + cb.table_name = tb.table_name AND + cb.column_name = tb.column_name AND + ca.position = cb.position""", [table_name, table_name, table_name]) + + relations = {} + for row in cursor.fetchall(): + relations[row[0]] = (row[2], row[1]) + return relations def get_indexes(cursor, table_name): """ @@ -31,20 +53,46 @@ def get_indexes(cursor, table_name): {'primary_key': boolean representing whether it's the primary key, 'unique': boolean representing whether it's a unique index} """ - raise NotImplementedError + # This query retrieves each index on the given table, including the + # first associated field name + # "We were in the nick of time; you were in great peril!" + sql = """ +WITH primarycols AS ( + SELECT user_cons_columns.table_name, user_cons_columns.column_name, 1 AS PRIMARYCOL + FROM user_cons_columns, user_constraints + WHERE user_cons_columns.constraint_name = user_constraints.constraint_name AND + user_constraints.constraint_type = 'P' AND + user_cons_columns.table_name = %s), + uniquecols AS ( + SELECT user_ind_columns.table_name, user_ind_columns.column_name, 1 AS UNIQUECOL + FROM user_indexes, user_ind_columns + WHERE uniqueness = 'UNIQUE' AND + user_indexes.index_name = user_ind_columns.index_name AND + user_ind_columns.table_name = %s) +SELECT allcols.column_name, primarycols.primarycol, uniquecols.UNIQUECOL +FROM (SELECT column_name FROM primarycols UNION SELECT column_name FROM +uniquecols) allcols, + primarycols, uniquecols +WHERE allcols.column_name = primarycols.column_name (+) AND + allcols.column_name = uniquecols.column_name (+) + """ + cursor.execute(sql, [table_name, table_name]) + indexes = {} + for row in cursor.fetchall(): + # row[1] (idx.indkey) is stored in the DB as an array. It comes out as + # a string of space-separated integers. This designates the field + # indexes (1-based) of the fields that have indexes on the table. + # Here, we skip any indexes across multiple fields. + indexes[row[0]] = {'primary_key': row[1], 'unique': row[2]} + return indexes -# Maps type codes to Django Field types. +# Maps type objects to Django Field types. DATA_TYPES_REVERSE = { - 16: 'BooleanField', - 21: 'SmallIntegerField', - 23: 'IntegerField', - 25: 'TextField', - 869: 'IPAddressField', - 1043: 'CharField', - 1082: 'DateField', - 1083: 'TimeField', - 1114: 'DateTimeField', - 1184: 'DateTimeField', - 1266: 'TimeField', - 1700: 'DecimalField', + cx_Oracle.CLOB: 'TextField', + cx_Oracle.DATETIME: 'DateTimeField', + cx_Oracle.FIXED_CHAR: 'CharField', + cx_Oracle.NCLOB: 'TextField', + cx_Oracle.NUMBER: 'DecimalField', + cx_Oracle.STRING: 'CharField', + cx_Oracle.TIMESTAMP: 'DateTimeField', } diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py index 2186fa3863..ea19f65839 100644 --- a/django/db/backends/postgresql/base.py +++ b/django/db/backends/postgresql/base.py @@ -124,7 +124,14 @@ class DatabaseWrapper(local): self.connection.close() self.connection = None +allows_group_by_ordinal = True +allows_unique_and_pk = True +autoindexes_primary_keys = True +needs_datetime_string_cast = True +needs_upper_for_iops = False supports_constraints = True +supports_tablespaces = False +uses_case_insensitive_names = False def quote_name(name): if name.startswith('"') and name.endswith('"'): @@ -157,6 +164,9 @@ def get_date_trunc_sql(lookup_type, field_name): # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC return "DATE_TRUNC('%s', %s)" % (lookup_type, field_name) +def get_datetime_cast_sql(): + return None + def get_limit_offset_sql(limit, offset=None): sql = "LIMIT %s" % limit if offset and offset != 0: @@ -178,6 +188,15 @@ def get_drop_foreignkey_sql(): def get_pk_default_value(): return "DEFAULT" +def get_max_name_length(): + return None + +def get_start_transaction_sql(): + return "BEGIN;" + +def get_autoinc_sql(table): + return None + def get_sql_flush(style, tables, sequences): """Return a list of SQL statements required to remove all data from all tables in the database (without actually removing the tables diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index 764e3a34f3..4a9a44b3f9 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -59,7 +59,7 @@ class DatabaseWrapper(local): global postgres_version if not postgres_version: cursor.execute("SELECT version()") - postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] + postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] if settings.DEBUG: return util.CursorDebugWrapper(cursor, self) return cursor @@ -77,7 +77,14 @@ class DatabaseWrapper(local): self.connection.close() self.connection = None +allows_group_by_ordinal = True +allows_unique_and_pk = True +autoindexes_primary_keys = True +needs_datetime_string_cast = False +needs_upper_for_iops = False supports_constraints = True +supports_tablespaces = False +uses_case_insensitive_names = False def quote_name(name): if name.startswith('"') and name.endswith('"'): @@ -102,6 +109,9 @@ def get_date_trunc_sql(lookup_type, field_name): # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC return "DATE_TRUNC('%s', %s)" % (lookup_type, field_name) +def get_datetime_cast_sql(): + return None + def get_limit_offset_sql(limit, offset=None): sql = "LIMIT %s" % limit if offset and offset != 0: @@ -123,6 +133,15 @@ def get_drop_foreignkey_sql(): def get_pk_default_value(): return "DEFAULT" +def get_max_name_length(): + return None + +def get_start_transaction_sql(): + return "BEGIN;" + +def get_autoinc_sql(table): + return None + def get_sql_flush(style, tables, sequences): """Return a list of SQL statements required to remove all data from all tables in the database (without actually removing the tables @@ -143,7 +162,7 @@ def get_sql_flush(style, tables, sequences): style.SQL_KEYWORD('FROM'), style.SQL_FIELD(quote_name(table)) ) for table in tables] - + # 'ALTER SEQUENCE sequence_name RESTART WITH 1;'... style SQL statements # to reset sequence indices for sequence in sequences: @@ -204,7 +223,7 @@ def get_sql_sequence_reset(style, model_list): style.SQL_KEYWORD('FROM'), style.SQL_TABLE(f.m2m_db_table()))) return output - + OPERATOR_MAPPING = { 'exact': '= %s', 'iexact': 'ILIKE %s', diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 2cd24d71fa..d31d11fea6 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -99,7 +99,14 @@ class SQLiteCursorWrapper(Database.Cursor): def convert_query(self, query, num_params): return query % tuple("?" * num_params) +allows_group_by_ordinal = True +allows_unique_and_pk = True +autoindexes_primary_keys = True +needs_datetime_string_cast = True +needs_upper_for_iops = False supports_constraints = False +supports_tablespaces = False +uses_case_insensitive_names = False def quote_name(name): if name.startswith('"') and name.endswith('"'): @@ -131,6 +138,9 @@ def get_date_trunc_sql(lookup_type, field_name): # sqlite doesn't support DATE_TRUNC, so we fake it as above. return 'django_date_trunc("%s", %s)' % (lookup_type.lower(), field_name) +def get_datetime_cast_sql(): + return None + def get_limit_offset_sql(limit, offset=None): sql = "LIMIT %s" % limit if offset and offset != 0: @@ -152,11 +162,20 @@ def get_drop_foreignkey_sql(): def get_pk_default_value(): return "NULL" +def get_max_name_length(): + return None + +def get_start_transaction_sql(): + return "BEGIN;" + +def get_autoinc_sql(table): + return None + def get_sql_flush(style, tables, sequences): """ - Return a list of SQL statements required to remove all data from all tables - in the database (without actually removing the tables themselves) and put - the database in an empty 'initial' state. + Return a list of SQL statements required to remove all data from + all tables in the database (without actually removing the tables + themselves) and put the database in an empty 'initial' state """ # NB: The generated SQL below is specific to SQLite # Note: The DELETE FROM... SQL generated below works for SQLite databases diff --git a/django/db/backends/util.py b/django/db/backends/util.py index fd0f6598a7..4de7c517d6 100644 --- a/django/db/backends/util.py +++ b/django/db/backends/util.py @@ -1,4 +1,5 @@ import datetime +import md5 from time import time from django.utils.encoding import smart_unicode, force_unicode @@ -114,6 +115,16 @@ def rev_typecast_decimal(d): return None return str(d) +def truncate_name(name, length=None): + """Shortens a string to a repeatable mangled version with the given length. + """ + if length is None or len(name) <= length: + return name + + hash = md5.md5(name).hexdigest()[:4] + + return '%s%s' % (name[:length-4], hash) + ################################################################################## # Helper functions for dictfetch* for databases that don't natively support them # ################################################################################## diff --git a/django/db/models/base.py b/django/db/models/base.py index 1f689a6444..d430d03a31 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -99,9 +99,9 @@ class Model(object): def __init__(self, *args, **kwargs): dispatcher.send(signal=signals.pre_init, sender=self.__class__, args=args, kwargs=kwargs) - + # There is a rather weird disparity here; if kwargs, it's set, then args - # overrides it. It should be one or the other; don't duplicate the work + # overrides it. It should be one or the other; don't duplicate the work # The reason for the kwargs check is that standard iterator passes in by # args, and nstantiation for iteration is 33% faster. args_len = len(args) @@ -125,10 +125,10 @@ class Model(object): # Maintain compatibility with existing calls. if isinstance(field.rel, ManyToOneRel): kwargs.pop(field.attname, None) - + # Now we're left with the unprocessed fields that *must* come from # keywords, or default. - + for field in fields_iter: if kwargs: if isinstance(field.rel, ManyToOneRel): @@ -150,7 +150,7 @@ class Model(object): try: val = getattr(rel_obj, field.rel.get_related_field().attname) except AttributeError: - raise TypeError("Invalid value: %r should be a %s instance, not a %s" % + raise TypeError("Invalid value: %r should be a %s instance, not a %s" % (field.name, field.rel.to, type(rel_obj))) else: val = kwargs.pop(field.attname, field.get_default()) @@ -213,17 +213,18 @@ class Model(object): record_exists = True if pk_set: # Determine whether a record with the primary key already exists. - cursor.execute("SELECT 1 FROM %s WHERE %s=%%s LIMIT 1" % \ - (backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column)), [pk_val]) + cursor.execute("SELECT COUNT(*) FROM %s WHERE %s=%%s" % \ + (backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column)), + self._meta.pk.get_db_prep_lookup('exact', pk_val)) # If it does already exist, do an UPDATE. - if cursor.fetchone(): + if cursor.fetchone()[0] > 0: db_values = [f.get_db_prep_save(f.pre_save(self, False)) for f in non_pks] if db_values: cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % \ (backend.quote_name(self._meta.db_table), ','.join(['%s=%%s' % backend.quote_name(f.column) for f in non_pks]), backend.quote_name(self._meta.pk.column)), - db_values + [pk_val]) + db_values + self._meta.pk.get_db_prep_lookup('exact', pk_val)) else: record_exists = False if not pk_set or not record_exists: diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 4c3056881c..167155fdbb 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -75,12 +75,16 @@ class Field(object): core=False, rel=None, default=NOT_PROVIDED, editable=True, serialize=True, prepopulate_from=None, unique_for_date=None, unique_for_month=None, unique_for_year=None, validator_list=None, choices=None, radio_admin=None, - help_text='', db_column=None): + help_text='', db_column=None, db_tablespace=None): self.name = name self.verbose_name = verbose_name self.primary_key = primary_key self.maxlength, self.unique = maxlength, unique self.blank, self.null = blank, null + # Oracle treats the empty string ('') as null, so coerce the null + # option whenever '' is a possible value. + if self.empty_strings_allowed and settings.DATABASE_ENGINE == 'oracle': + self.null = True self.core, self.rel, self.default = core, rel, default self.editable = editable self.serialize = serialize @@ -92,6 +96,7 @@ class Field(object): self.radio_admin = radio_admin self.help_text = help_text self.db_column = db_column + self.db_tablespace = db_tablespace # Set db_index to True if the field has a relationship and doesn't explicitly set db_index. self.db_index = db_index @@ -202,7 +207,7 @@ class Field(object): if callable(self.default): return self.default() return self.default - if not self.empty_strings_allowed or self.null: + if not self.empty_strings_allowed or (self.null and settings.DATABASE_ENGINE != 'oracle'): return None return "" @@ -807,6 +812,7 @@ class IPAddressField(Field): validators.isValidIPAddress4(field_data, None) class NullBooleanField(Field): + empty_strings_allowed = False def __init__(self, *args, **kwargs): kwargs['null'] = True Field.__init__(self, *args, **kwargs) @@ -876,10 +882,18 @@ class TimeField(Field): Field.__init__(self, verbose_name, name, **kwargs) def get_db_prep_lookup(self, lookup_type, value): - if lookup_type == 'range': - value = [smart_unicode(v) for v in value] + if settings.DATABASE_ENGINE == 'oracle': + # Oracle requires a date in order to parse. + def prep(value): + if isinstance(value, datetime.time): + value = datetime.datetime.combine(datetime.date(1900, 1, 1), value) + return smart_unicode(value) else: - value = smart_unicode(value) + prep = smart_unicode + if lookup_type == 'range': + value = [prep(v) for v in value] + else: + value = prep(value) return Field.get_db_prep_lookup(self, lookup_type, value) def pre_save(self, model_instance, add): @@ -897,7 +911,15 @@ class TimeField(Field): # doesn't support microseconds. if settings.DATABASE_ENGINE == 'mysql' and hasattr(value, 'microsecond'): value = value.replace(microsecond=0) - value = smart_unicode(value) + if settings.DATABASE_ENGINE == 'oracle': + # cx_Oracle expects a datetime.datetime to persist into TIMESTAMP field. + if isinstance(value, datetime.time): + value = datetime.datetime(1900, 1, 1, value.hour, value.minute, + value.second, value.microsecond) + elif isinstance(value, basestring): + value = datetime.datetime(*(time.strptime(value, '%H:%M:%S')[:6])) + else: + value = smart_unicode(value) return Field.get_db_prep_save(self, value) def get_manipulator_field_objs(self): diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 95aa66a1ef..152af10545 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -11,9 +11,10 @@ from django import oldforms from django import newforms as forms from django.dispatch import dispatcher -# For Python 2.3 -if not hasattr(__builtins__, 'set'): - from sets import Set as set +try: + set +except NameError: + from sets import Set as set # Python 2.3 fallback # Values for Relation.edit_inline. TABULAR, STACKED = 1, 2 @@ -336,10 +337,7 @@ def create_many_related_manager(superclass): (target_col_name, self.join_table, source_col_name, target_col_name, ",".join(['%s'] * len(new_ids))), [self._pk_val] + list(new_ids)) - if cursor.rowcount is not None and cursor.rowcount != 0: - existing_ids = set([row[0] for row in cursor.fetchmany(cursor.rowcount)]) - else: - existing_ids = set() + existing_ids = set([row[0] for row in cursor.fetchall()]) # Add the ones that aren't there already for obj_id in (new_ids - existing_ids): diff --git a/django/db/models/options.py b/django/db/models/options.py index 1228c06852..7cccb611cf 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -15,7 +15,7 @@ get_verbose_name = lambda class_name: re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]| DEFAULT_NAMES = ('verbose_name', 'db_table', 'ordering', 'unique_together', 'permissions', 'get_latest_by', - 'order_with_respect_to', 'app_label') + 'order_with_respect_to', 'app_label', 'db_tablespace') class Options(object): def __init__(self, meta): @@ -29,6 +29,7 @@ class Options(object): self.object_name, self.app_label = None, None self.get_latest_by = None self.order_with_respect_to = None + self.db_tablespace = None self.admin = None self.meta = meta self.pk = None @@ -62,6 +63,8 @@ class Options(object): del self.meta def _prepare(self, model): + from django.db import backend + from django.db.backends.util import truncate_name if self.order_with_respect_to: self.order_with_respect_to = self.get_field(self.order_with_respect_to) self.ordering = ('_order',) @@ -76,6 +79,8 @@ class Options(object): # If the db_table wasn't provided, use the app_label + module_name. if not self.db_table: self.db_table = "%s_%s" % (self.app_label, self.module_name) + self.db_table = truncate_name(self.db_table, + backend.get_max_name_length()) def add_field(self, field): # Insert the given field in the order in which it was created, using diff --git a/django/db/models/query.py b/django/db/models/query.py index 930552ad47..076fa15fae 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -5,12 +5,14 @@ from django.dispatch import dispatcher from django.utils.datastructures import SortedDict from django.utils.encoding import smart_unicode from django.contrib.contenttypes import generic +import datetime import operator import re -# For Python 2.3 -if not hasattr(__builtins__, 'set'): - from sets import Set as set +try: + set +except NameError: + from sets import Set as set # Python 2.3 fallback # The string constant used to separate query parts LOOKUP_SEPARATOR = '__' @@ -78,7 +80,7 @@ def quote_only_if_word(word): else: return backend.quote_name(word) -class QuerySet(object): +class _QuerySet(object): "Represents a lazy database lookup for a set of objects" def __init__(self, model=None): self.model = model @@ -182,13 +184,18 @@ class QuerySet(object): cursor = connection.cursor() cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") + ",".join(select) + sql, params) + fill_cache = self._select_related - index_end = len(self.model._meta.fields) + fields = self.model._meta.fields + index_end = len(fields) + has_resolve_columns = hasattr(self, 'resolve_columns') while 1: rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE) if not rows: raise StopIteration for row in rows: + if has_resolve_columns: + row = self.resolve_columns(row, fields) if fill_cache: obj, index_end = get_cached_row(klass=self.model, row=row, index_start=0, max_depth=self._max_related_depth) @@ -552,6 +559,12 @@ class QuerySet(object): return select, " ".join(sql), params +# Use the backend's QuerySet class if it defines one, otherwise use _QuerySet. +if hasattr(backend, 'get_query_set_class'): + QuerySet = backend.get_query_set_class(_QuerySet) +else: + QuerySet = _QuerySet + class ValuesQuerySet(QuerySet): def __init__(self, *args, **kwargs): super(ValuesQuerySet, self).__init__(*args, **kwargs) @@ -566,35 +579,38 @@ class ValuesQuerySet(QuerySet): # self._fields is a list of field names to fetch. if self._fields: - #columns = [self.model._meta.get_field(f, many_to_many=False).column for f in self._fields] if not self._select: - columns = [self.model._meta.get_field(f, many_to_many=False).column for f in self._fields] + fields = [self.model._meta.get_field(f, many_to_many=False) for f in self._fields] else: - columns = [] + fields = [] for f in self._fields: if f in [field.name for field in self.model._meta.fields]: - columns.append( self.model._meta.get_field(f, many_to_many=False).column ) + fields.append(self.model._meta.get_field(f, many_to_many=False)) elif not self._select.has_key( f ): raise FieldDoesNotExist, '%s has no field named %r' % ( self.model._meta.object_name, f ) field_names = self._fields else: # Default to all fields. - columns = [f.column for f in self.model._meta.fields] - field_names = [f.attname for f in self.model._meta.fields] + fields = self.model._meta.fields + field_names = [f.attname for f in fields] + columns = [f.column for f in fields] select = ['%s.%s' % (backend.quote_name(self.model._meta.db_table), backend.quote_name(c)) for c in columns] - # Add any additional SELECTs. if self._select: select.extend(['(%s) AS %s' % (quote_only_if_word(s[1]), backend.quote_name(s[0])) for s in self._select.items()]) cursor = connection.cursor() cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") + ",".join(select) + sql, params) + + has_resolve_columns = hasattr(self, 'resolve_columns') while 1: rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE) if not rows: raise StopIteration for row in rows: + if has_resolve_columns: + row = self.resolve_columns(row, fields) yield dict(zip(field_names, row)) def _clone(self, klass=None, **kwargs): @@ -605,25 +621,49 @@ class ValuesQuerySet(QuerySet): class DateQuerySet(QuerySet): def iterator(self): from django.db.backends.util import typecast_timestamp + from django.db.models.fields import DateTimeField self._order_by = () # Clear this because it'll mess things up otherwise. if self._field.null: self._where.append('%s.%s IS NOT NULL' % \ (backend.quote_name(self.model._meta.db_table), backend.quote_name(self._field.column))) - try: select, sql, params = self._get_sql_clause() except EmptyResultSet: raise StopIteration - sql = 'SELECT %s %s GROUP BY 1 ORDER BY 1 %s' % \ + table_name = backend.quote_name(self.model._meta.db_table) + field_name = backend.quote_name(self._field.column) + + if backend.allows_group_by_ordinal: + group_by = '1' + else: + group_by = backend.get_date_trunc_sql(self._kind, + '%s.%s' % (table_name, field_name)) + + sql = 'SELECT %s %s GROUP BY %s ORDER BY 1 %s' % \ (backend.get_date_trunc_sql(self._kind, '%s.%s' % (backend.quote_name(self.model._meta.db_table), - backend.quote_name(self._field.column))), sql, self._order) + backend.quote_name(self._field.column))), sql, group_by, self._order) cursor = connection.cursor() cursor.execute(sql, params) - # We have to manually run typecast_timestamp(str()) on the results, because - # MySQL doesn't automatically cast the result of date functions as datetime - # objects -- MySQL returns the values as strings, instead. - return [typecast_timestamp(str(row[0])) for row in cursor.fetchall()] + + has_resolve_columns = hasattr(self, 'resolve_columns') + needs_datetime_string_cast = backend.needs_datetime_string_cast + dates = [] + # It would be better to use self._field here instead of DateTimeField(), + # but in Oracle that will result in a list of datetime.date instead of + # datetime.datetime. + fields = [DateTimeField()] + while 1: + rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE) + if not rows: + return dates + for row in rows: + date = row[0] + if has_resolve_columns: + date = self.resolve_columns([date], fields)[0] + elif needs_datetime_string_cast: + date = typecast_timestamp(str(date)) + dates.append(date) def _clone(self, klass=None, **kwargs): c = super(DateQuerySet, self)._clone(klass, **kwargs) @@ -731,8 +771,17 @@ def get_where_clause(lookup_type, table_prefix, field_name, value): if table_prefix.endswith('.'): table_prefix = backend.quote_name(table_prefix[:-1])+'.' field_name = backend.quote_name(field_name) + if type(value) == datetime.datetime and backend.get_datetime_cast_sql(): + cast_sql = backend.get_datetime_cast_sql() + else: + cast_sql = '%s' + if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith') and backend.needs_upper_for_iops: + format = 'UPPER(%s%s) %s' + else: + format = '%s%s %s' try: - return '%s%s %s' % (table_prefix, field_name, (backend.OPERATOR_MAPPING[lookup_type] % '%s')) + return format % (table_prefix, field_name, + backend.OPERATOR_MAPPING[lookup_type] % cast_sql) except KeyError: pass if lookup_type == 'in': diff --git a/django/middleware/common.py b/django/middleware/common.py index 5f671dff7d..9610e1e952 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -11,7 +11,8 @@ class CommonMiddleware(object): - Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings, - this middleware appends missing slashes and/or prepends missing "www."s. + this middleware appends missing slashes and/or prepends missing + "www."s. - ETags: If the USE_ETAGS setting is set, ETags will be calculated from the entire page content and Not Modified responses will be returned @@ -74,7 +75,10 @@ class CommonMiddleware(object): # Use ETags, if requested. if settings.USE_ETAGS: - etag = md5.new(response.content).hexdigest() + if response.has_header('ETag'): + etag = response['ETag'] + else: + etag = md5.new(response.content).hexdigest() if response.status_code >= 200 and response.status_code < 300 and request.META.get('HTTP_IF_NONE_MATCH') == etag: response = http.HttpResponseNotModified() else: diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 3172488d99..a91e5af450 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -27,9 +27,9 @@ __all__ = ( EMPTY_VALUES = (None, '') try: - set # Only available in Python 2.4+ + set except NameError: - from sets import Set as set # Python 2.3 fallback + from sets import Set as set # Python 2.3 fallback try: from decimal import Decimal @@ -516,11 +516,13 @@ class MultiValueField(Field): """ clean_data = [] errors = ErrorList() - if self.required and not value: - raise ValidationError(ugettext(u'This field is required.')) - elif not self.required and not value: - return self.compress([]) - if not isinstance(value, (list, tuple)): + if not value or isinstance(value, (list, tuple)): + if not value or not [v for v in value if v not in EMPTY_VALUES]: + if self.required: + raise ValidationError(ugettext(u'This field is required.')) + else: + return self.compress([]) + else: raise ValidationError(ugettext(u'Enter a list of values.')) for i, field in enumerate(self.fields): try: @@ -558,5 +560,11 @@ class SplitDateTimeField(MultiValueField): def compress(self, data_list): if data_list: + # Raise a validation error if time or date is empty + # (possible if SplitDateTimeField has required=False). + if data_list[0] in EMPTY_VALUES: + raise ValidationError(ugettext(u'Enter a valid date.')) + if data_list[1] in EMPTY_VALUES: + raise ValidationError(ugettext(u'Enter a valid time.')) return datetime.datetime.combine(*data_list) return None diff --git a/django/newforms/forms.py b/django/newforms/forms.py index 7dd40b60aa..50e6f42108 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -159,7 +159,7 @@ class BaseForm(StrAndUnicode): def as_p(self): "Returns this form rendered as HTML

                    s." - return self._html_output(u'

                    %(label)s %(field)s%(help_text)s

                    ', u'

                    %s

                    ', '

                    ', u' %s', True) + return self._html_output(u'

                    %(label)s %(field)s%(help_text)s

                    ', u'%s', '

                    ', u' %s', True) def non_field_errors(self): """ diff --git a/django/newforms/models.py b/django/newforms/models.py index 51d9a5c99e..2803de9675 100644 --- a/django/newforms/models.py +++ b/django/newforms/models.py @@ -20,9 +20,8 @@ def save_instance(form, instance, fields=None, fail_message='saved', commit=True """ Saves bound Form ``form``'s cleaned_data into model instance ``instance``. - Assumes ``form`` has a field for every non-AutoField database field in - ``instance``. If commit=True, then the changes to ``instance`` will be - saved to the database. Returns ``instance``. + If commit=True, then the changes to ``instance`` will be saved to the + database. Returns ``instance``. """ from django.db import models opts = instance.__class__._meta diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index ae17d753bf..50de37074a 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -3,16 +3,15 @@ HTML Widget classes """ try: - set # Only available in Python 2.4+ + set except NameError: - from sets import Set as set # Python 2.3 fallback -from itertools import chain + from sets import Set as set # Python 2.3 fallback +from itertools import chain from django.utils.datastructures import MultiValueDict from django.utils.html import escape from django.utils.translation import ugettext from django.utils.encoding import StrAndUnicode, force_unicode - from util import flatatt __all__ = ( diff --git a/django/template/__init__.py b/django/template/__init__.py index 422820f905..b58e9f049c 100644 --- a/django/template/__init__.py +++ b/django/template/__init__.py @@ -497,9 +497,6 @@ class TokenParser(object): self.pointer = i return s - - - filter_raw_string = r""" ^%(i18n_open)s"(?P%(str)s)"%(i18n_close)s| ^"(?P%(str)s)"| diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 83ad8272d4..7b3a261a5b 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -5,16 +5,14 @@ from django.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG from django.template import get_library, Library, InvalidTemplateLibrary from django.conf import settings from django.utils.encoding import smart_str, smart_unicode +from django.utils.itercompat import groupby import sys import re -if not hasattr(__builtins__, 'reversed'): - # For Python 2.3. - # From http://www.python.org/doc/current/tut/node11.html - def reversed(data): - for index in xrange(len(data)-1, -1, -1): - yield data[index] - +try: + reversed +except NameError: + from django.utils.itercompat import reversed # Python 2.3 fallback register = Library() @@ -253,15 +251,10 @@ class RegroupNode(Node): if obj_list == None: # target_var wasn't found in context; fail silently context[self.var_name] = [] return '' - output = [] # list of dictionaries in the format {'grouper': 'key', 'list': [list of contents]} - for obj in obj_list: - grouper = self.expression.resolve(obj, True) - # TODO: Is this a sensible way to determine equality? - if output and repr(output[-1]['grouper']) == repr(grouper): - output[-1]['list'].append(obj) - else: - output.append({'grouper': grouper, 'list': [obj]}) - context[self.var_name] = output + # List of dictionaries in the format + # {'grouper': 'key', 'list': [list of contents]}. + context[self.var_name] = [{'grouper':key, 'list':list(val)} for key, val in + groupby(obj_list, lambda v, f=self.expression.resolve: f(v, True))] return '' def include_is_allowed(filepath): diff --git a/django/test/utils.py b/django/test/utils.py index a33395a6d8..0836b7eac6 100644 --- a/django/test/utils.py +++ b/django/test/utils.py @@ -1,6 +1,7 @@ import sys, time from django.conf import settings -from django.db import connection, transaction, backend +from django.db import connection, backend, get_creation_module +from django.core import management, mail from django.core import management, mail from django.dispatch import dispatcher from django.test import signals @@ -88,6 +89,12 @@ def get_postgresql_create_suffix(): return '' def create_test_db(verbosity=1, autoclobber=False): + # If the database backend wants to create the test DB itself, let it + creation_module = get_creation_module() + if hasattr(creation_module, "create_test_db"): + creation_module.create_test_db(settings, connection, backend, verbosity, autoclobber) + return + if verbosity >= 1: print "Creating test database..." # If we're using SQLite, it's more convenient to test against an @@ -142,6 +149,12 @@ def create_test_db(verbosity=1, autoclobber=False): cursor = connection.cursor() def destroy_test_db(old_database_name, verbosity=1): + # If the database wants to drop the test DB itself, let it + creation_module = get_creation_module() + if hasattr(creation_module, "destroy_test_db"): + creation_module.destroy_test_db(settings, connection, backend, old_database_name, verbosity) + return + # Unless we're using SQLite, remove the test database to clean up after # ourselves. Connect to the previous database (not the test database) # to do so, because it's not allowed to delete a database while being diff --git a/django/utils/functional.py b/django/utils/functional.py index 574f433fd5..656f3406c4 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -3,6 +3,21 @@ def curry(_curried_func, *args, **kwargs): return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs)) return _curried +def memoize(func, cache): + """ + Wrap a function so that results for any argument tuple are stored in + 'cache'. Note that the args to the function must be usable as dictionary + keys. + """ + def wrapper(*args): + if args in cache: + return cache[args] + + result = func(*args) + cache[args] = result + return result + return wrapper + class Promise(object): """ This is just a base class for the proxy class created in diff --git a/django/utils/html.py b/django/utils/html.py index 1dde298c29..56216b5d48 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -65,13 +65,13 @@ def urlize(text, trim_url_limit=None, nofollow=False): close-parens) and leading punctuation (opening parens) and it'll still do the right thing. - If trim_url_limit is not None, the URLs in link text will be limited to - trim_url_limit characters. + If trim_url_limit is not None, the URLs in link text longer than this limit + will truncated to trim_url_limit-3 characters and appended with an elipsis. If nofollow is True, the URLs in link text will get a rel="nofollow" attribute. """ - trim_url = lambda x, limit=trim_url_limit: limit is not None and (x[:limit] + (len(x) >=limit and '...' or '')) or x + trim_url = lambda x, limit=trim_url_limit: limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x words = word_split_re.split(force_unicode(text)) nofollow_attr = nofollow and ' rel="nofollow"' or '' for i, word in enumerate(words): diff --git a/django/utils/itercompat.py b/django/utils/itercompat.py index 370988bedb..0de1b6cbe2 100644 --- a/django/utils/itercompat.py +++ b/django/utils/itercompat.py @@ -7,7 +7,8 @@ these implementations if necessary. import itertools def compat_tee(iterable): - """Return two independent iterators from a single iterable. + """ + Return two independent iterators from a single iterable. Based on http://www.python.org/doc/2.3.5/lib/itertools-example.html """ @@ -25,7 +26,34 @@ def compat_tee(iterable): next = iter(iterable).next return gen(next), gen(next) +def groupby(iterable, keyfunc=None): + """ + Taken from http://docs.python.org/lib/itertools-functions.html + """ + if keyfunc is None: + keyfunc = lambda x:x + iterable = iter(iterable) + l = [iterable.next()] + lastkey = keyfunc(l[0]) + for item in iterable: + key = keyfunc(item) + if key != lastkey: + yield lastkey, l + lastkey = key + l = [item] + else: + l.append(item) + yield lastkey, l + +# Not really in itertools, since it's a builtin in Python 2.4 and later, but it +# does operate as an iterator. +def reversed(data): + for index in xrange(len(data)-1, -1, -1): + yield data[index] + if hasattr(itertools, 'tee'): tee = itertools.tee else: tee = compat_tee +if hasattr(itertools, 'groupby'): + groupby = itertools.groupby diff --git a/docs/authentication.txt b/docs/authentication.txt index 12b61db538..972ca42073 100644 --- a/docs/authentication.txt +++ b/docs/authentication.txt @@ -161,8 +161,8 @@ The ``User`` model has a custom manager that has the following helper functions: * ``make_random_password(length=10, allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789')`` Returns a random password with the given length and given string of allowed characters. (Note that the default value of ``allowed_chars`` - doesn't contain ``"I"`` or letters that look like it, to avoid user - confusion. + doesn't contain letters that can cause user confusion, including + ``1``, ``I`` and ``0``). Basic usage ----------- diff --git a/docs/db-api.txt b/docs/db-api.txt index f58dca3f3a..38510ef530 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -598,7 +598,7 @@ related ``Person`` *and* the related ``City``:: p = b.author # Doesn't hit the database. c = p.hometown # Doesn't hit the database. - sv = Book.objects.get(id=4) # No select_related() in this example. + b = Book.objects.get(id=4) # No select_related() in this example. p = b.author # Hits the database. c = p.hometown # Hits the database. diff --git a/docs/faq.txt b/docs/faq.txt index bdd8c5360e..d7d8f41146 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -301,7 +301,7 @@ means it can run on a variety of server platforms. If you want to use Django with a database, which is probably the case, you'll also need a database engine. PostgreSQL_ is recommended, because we're -PostgreSQL fans, and MySQL_ and `SQLite 3`_ are also supported. +PostgreSQL fans, and MySQL_, `SQLite 3`_, and Oracle_ are also supported. .. _Python: http://www.python.org/ .. _Apache 2: http://httpd.apache.org/ @@ -310,6 +310,7 @@ PostgreSQL fans, and MySQL_ and `SQLite 3`_ are also supported. .. _PostgreSQL: http://www.postgresql.org/ .. _MySQL: http://www.mysql.com/ .. _`SQLite 3`: http://www.sqlite.org/ +.. _Oracle: http://www.oracle.com/ Do I lose anything by using Python 2.3 versus newer Python versions, such as Python 2.5? ---------------------------------------------------------------------------------------- diff --git a/docs/install.txt b/docs/install.txt index 4f5a4bbe31..99aad4e52d 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -17,8 +17,10 @@ probably already have it installed. Install Apache and mod_python ============================= -If you just want to experiment with Django, skip this step. Django comes with -its own Web server for development purposes. +If you just want to experiment with Django, skip ahead to the next +section; Django includes a lightweight web server you can use for +testing, so you won't need to set up Apache until you're ready to +deploy Django in production. If you want to use Django on a production site, use Apache with `mod_python`_. mod_python is similar to mod_perl -- it embeds Python within Apache and loads @@ -62,6 +64,8 @@ installed. * If you're using SQLite, you'll need pysqlite_. Use version 2.0.3 or higher. +* If you're using Oracle, you'll need cx_Oracle_, version 4.3.1 or higher. + .. _PostgreSQL: http://www.postgresql.org/ .. _MySQL: http://www.mysql.com/ .. _Django's ticket system: http://code.djangoproject.com/report/1 @@ -71,6 +75,7 @@ installed. .. _SQLite: http://www.sqlite.org/ .. _pysqlite: http://initd.org/tracker/pysqlite .. _MySQL backend: ../databases/ +.. _cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/ Remove any old versions of Django ================================= @@ -83,23 +88,20 @@ If you installed Django using ``setup.py install``, uninstalling is as simple as deleting the ``django`` directory from your Python ``site-packages``. -If you installed Django from a Python Egg, remove the Django ``.egg`` file, +If you installed Django from a Python egg, remove the Django ``.egg`` file, and remove the reference to the egg in the file named ``easy-install.pth``. This file should also be located in your ``site-packages`` directory. .. admonition:: Where are my ``site-packages`` stored? The location of the ``site-packages`` directory depends on the operating - system, and the location in which Python was installed. However, the - following locations are common: + system, and the location in which Python was installed. To find out your + system's ``site-packages`` location, execute the following:: - * If you're using Linux: ``/usr/lib/python2.X/site-packages`` + python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" - * If you're using Windows: ``C:\Python2.X\lib\site-packages`` - - * If you're using MacOSX: ``/Library/Python2.X/site-packages`` or - ``/Library/Frameworks/Python.framework/Versions/2.X/lib/python2.X/site-packages/`` - (in later releases). + (Note that this should be run from a shell prompt, not a Python interactive + prompt.) Install the Django code ======================= @@ -138,12 +140,15 @@ latest bug fixes and improvements, follow these instructions: 1. Make sure you have Subversion_ installed. 2. Check out the Django code into your Python ``site-packages`` directory. + On Linux / Mac OSX / Unix, do this:: svn co http://code.djangoproject.com/svn/django/trunk/ django_src - ln -s `pwd`/django_src/django /usr/lib/python2.3/site-packages/django + ln -s `pwd`/django_src/django SITE-PACKAGES-DIR/django - (In the above line, change ``python2.3`` to match your current Python version.) + (In the above line, change ``SITE-PACKAGES-DIR`` to match the location of + your system's ``site-packages`` directory, as explained in the + "Where are my ``site-packages`` stored?" section above.) On Windows, do this:: diff --git a/docs/model-api.txt b/docs/model-api.txt index bef923ec33..074e5fec82 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -492,6 +492,11 @@ has ``null=True``, that means it has two possible values for "no data": possible values for "no data;" Django convention is to use the empty string, not ``NULL``. +.. note:: + Due to database limitations, when using the Oracle backend the + ``null=True`` option will be coerced for string-based fields that can + blank, and the value ``NULL`` will be stored to denote the empty string. + ``blank`` ~~~~~~~~~ @@ -586,6 +591,13 @@ scenes. If ``True``, ``django-admin.py sqlindexes`` will output a ``CREATE INDEX`` statement for this field. +``db_tablespace`` +~~~~~~~~~~~~~~~~~ + +If this field is indexed, the name of the database tablespace to use for the +index. The default is the ``db_tablespace`` of the model, if any. If the +backend doesn't support tablespaces, this option is ignored. + ``default`` ~~~~~~~~~~~ @@ -996,6 +1008,12 @@ If your database table name is an SQL reserved word, or contains characters that aren't allowed in Python variable names -- notably, the hyphen -- that's OK. Django quotes column and table names behind the scenes. +``db_tablespace`` +----------------- + +The name of the database tablespace to use for the model. If the backend +doesn't support tablespaces, this option is ignored. + ``get_latest_by`` ----------------- @@ -1906,11 +1924,11 @@ used by the SQLite Python bindings. This is for the sake of consistency and sanity.) A final note: If all you want to do is a custom ``WHERE`` clause, you can just -just the ``where``, ``tables`` and ``params`` arguments to the standard lookup +use the ``where``, ``tables`` and ``params`` arguments to the standard lookup API. See `Other lookup options`_. .. _Python DB-API: http://www.python.org/peps/pep-0249.html -.. _Other lookup options: ../db-api/#extra-params-select-where-tables +.. _Other lookup options: ../db-api/#extra-select-none-where-none-params-none-tables-none .. _transaction handling: ../transactions/ Overriding default model methods diff --git a/docs/newforms.txt b/docs/newforms.txt index 4dc42caff2..c2e08c63b9 100644 --- a/docs/newforms.txt +++ b/docs/newforms.txt @@ -110,7 +110,7 @@ shortly. Creating ``Form`` instances --------------------------- -A ``Form`` instance is either **bound** or **unbound** to a set of data. +A ``Form`` instance is either **bound** to a set of data, or **unbound**. * If it's **bound** to a set of data, it's capable of validating that data and rendering the form as HTML with the data displayed in the HTML. @@ -1224,7 +1224,7 @@ Form validation happens when the data is cleaned. If you want to customise this process, there are various places you can change, each one serving a different purpose. Thee types of cleaning methods are run during form processing. These are normally executed when you call the ``is_valid()`` -method on a form. There are other things that can kick of cleaning and +method on a form. There are other things that can trigger cleaning and validation (accessing the ``errors`` attribute or calling ``full_clean()`` directly), but normally they won't be needed. @@ -1234,7 +1234,7 @@ the ``ValidationError`` constructor. If no ``ValidationError`` is raised, the method should return the cleaned (normalised) data as a Python object. If you detect multiple errors during a cleaning method and wish to signal all -of them to the form submittor, it is possible to pass a list of errors to the +of them to the form submitter, it is possible to pass a list of errors to the ``ValidationError`` constructor. The three types of cleaning methods are: @@ -1293,7 +1293,7 @@ dictionary. The previous paragraph means that if you are overriding ``Form.clean()``, you should iterate through ``self.cleaned_data.items()``, possibly considering the ``_errors`` dictionary attribute on the form as well. In this way, you will -already know which fields have passed thei individual validation requirements. +already know which fields have passed their individual validation requirements. A simple example ~~~~~~~~~~~~~~~~ diff --git a/docs/settings.txt b/docs/settings.txt index 4455864d54..9c9602d9ec 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -244,9 +244,9 @@ DATABASE_ENGINE Default: ``''`` (Empty string) -Which database backend to use. Either ``'postgresql_psycopg2'``, -``'postgresql'``, ``'mysql'``, ``'mysql_old'``, ``'sqlite3'`` or -``'ado_mssql'``. +The database backend to use. Either ``'postgresql_psycopg2'``, +``'postgresql'``, ``'mysql'``, ``'mysql_old'``, ``'sqlite3'``, +``'oracle'``, or ``'ado_mssql'``. DATABASE_HOST ------------- diff --git a/docs/templates.txt b/docs/templates.txt index 41289248c1..e3eb371bcf 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -1276,7 +1276,8 @@ Converts URLs in plain text into clickable links. urlizetrunc ~~~~~~~~~~~ -Converts URLs into clickable links, truncating URLs to the given character limit. +Converts URLs into clickable links, truncating URLs longer than the given +character limit. **Argument:** Length to truncate URLs to diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt index d5f5fda5b2..eb530e92ff 100644 --- a/docs/tutorial01.txt +++ b/docs/tutorial01.txt @@ -10,7 +10,7 @@ poll application. It'll consist of two parts: * A public site that lets people view polls and vote in them. - * An admin site that lets you add, change and delete poll. + * An admin site that lets you add, change and delete polls. We'll assume you have `Django installed`_ already. You can tell Django is installed by running the Python interactive interpreter and typing diff --git a/tests/regressiontests/datatypes/__init__.py b/tests/regressiontests/datatypes/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/datatypes/models.py b/tests/regressiontests/datatypes/models.py new file mode 100644 index 0000000000..8c5c8c285d --- /dev/null +++ b/tests/regressiontests/datatypes/models.py @@ -0,0 +1,59 @@ +""" +This is a basic model to test saving and loading boolean and date-related +types, which in the past were problematic for some database backends. +""" + +from django.db import models +from django.conf import settings + +class Donut(models.Model): + name = models.CharField(maxlength=100) + is_frosted = models.BooleanField(default=False) + has_sprinkles = models.NullBooleanField() + baked_date = models.DateField(null=True) + baked_time = models.TimeField(null=True) + consumed_at = models.DateTimeField(null=True) + + class Meta: + ordering = ('consumed_at',) + + def __str__(self): + return self.name + +__test__ = {'API_TESTS': """ +# No donuts are in the system yet. +>>> Donut.objects.all() +[] + +>>> d = Donut(name='Apple Fritter') + +# Ensure we're getting True and False, not 0 and 1 +>>> d.is_frosted +False +>>> d.has_sprinkles +>>> d.has_sprinkles = True +>>> d.has_sprinkles == True +True +>>> d.save() +>>> d2 = Donut.objects.all()[0] +>>> d2 + +>>> d2.is_frosted == False +True +>>> d2.has_sprinkles == True +True + +>>> import datetime +>>> d2.baked_date = datetime.date(year=1938, month=6, day=4) +>>> d2.baked_time = datetime.time(hour=5, minute=30) +>>> d2.consumed_at = datetime.datetime(year=2007, month=4, day=20, hour=16, minute=19, second=59) +>>> d2.save() + +>>> d3 = Donut.objects.all()[0] +>>> d3.baked_date +datetime.date(1938, 6, 4) +>>> d3.baked_time +datetime.time(5, 30) +>>> d3.consumed_at +datetime.datetime(2007, 4, 20, 16, 19, 59) +"""} diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py index 1acad6135c..53a92edaed 100644 --- a/tests/regressiontests/defaultfilters/tests.py +++ b/tests/regressiontests/defaultfilters/tests.py @@ -124,9 +124,23 @@ u'fran%C3%A7ois%20%26%20jill' u'http://short.com/' >>> urlizetrunc(u'http://www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&meta=', 20) -u'http://www.google.co...' +u'http://www.google....' ->>> wordcount(u'') +>>> urlizetrunc('http://www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&meta=', 20) +u'http://www.google...' + +# Check truncating of URIs which are the exact length +>>> uri = 'http://31characteruri.com/test/' +>>> len(uri) +31 +>>> urlizetrunc(uri, 31) +u'http://31characteruri.com/test/' +>>> urlizetrunc(uri, 30) +u'http://31characteruri.com/t...' +>>> urlizetrunc(uri, 2) +u'...' + +>>> wordcount('') 0 >>> wordcount(u'oneword') diff --git a/tests/regressiontests/forms/regressions.py b/tests/regressiontests/forms/regressions.py index 54b9138b20..df2ef578a1 100644 --- a/tests/regressiontests/forms/regressions.py +++ b/tests/regressiontests/forms/regressions.py @@ -57,7 +57,7 @@ Translated error messages used to be buggy. >>> activate('ru') >>> f = SomeForm({}) >>> f.as_p() -u'

                    • \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.

                    \n

                      \n
                    • \n
                    • \n
                    • \n

                    ' +u'
                    • \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.
                    \n

                      \n
                    • \n
                    • \n
                    • \n

                    ' >>> deactivate() ####################### diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index a2e23b8b42..67d527a08e 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -1859,8 +1859,12 @@ ValidationError: [u'Enter a valid date.'] >>> f = SplitDateTimeField(required=False) >>> f.clean([datetime.date(2006, 1, 10), datetime.time(7, 30)]) datetime.datetime(2006, 1, 10, 7, 30) +>>> f.clean(['2006-01-10', '07:30']) +datetime.datetime(2006, 1, 10, 7, 30) >>> f.clean(None) >>> f.clean('') +>>> f.clean(['']) +>>> f.clean(['', '']) >>> f.clean('hello') Traceback (most recent call last): ... @@ -1877,6 +1881,18 @@ ValidationError: [u'Enter a valid time.'] Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] +>>> f.clean(['2006-01-10', '']) +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid time.'] +>>> f.clean(['2006-01-10']) +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid time.'] +>>> f.clean(['', '07:30']) +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] ######### # Forms # @@ -1958,11 +1974,11 @@ AttributeError: 'Person' object has no attribute 'cleaned_data'
                    • This field is required.
                    • This field is required.
                  • >>> print p.as_p() -

                    • This field is required.

                    +
                    • This field is required.

                    -

                    • This field is required.

                    +
                    • This field is required.

                    -

                    • This field is required.

                    +
                    • This field is required.

                    If you don't pass any values to the Form's __init__(), or if you pass None, @@ -2668,7 +2684,7 @@ its field's order in the form.
                  • Last name:
                  • Birthday:
                  • >>> print p.as_p() -

                    • (Hidden field hidden_text) This field is required.

                    +
                    • (Hidden field hidden_text) This field is required.

                    First name:

                    Last name:

                    Birthday:

                    diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py index 4afd87ccc8..7c6da9d356 100644 --- a/tests/regressiontests/serializers_regress/tests.py +++ b/tests/regressiontests/serializers_regress/tests.py @@ -15,6 +15,7 @@ from django.utils.functional import curry from django.core import serializers from django.db import transaction from django.core import management +from django.conf import settings from models import * try: @@ -119,10 +120,13 @@ test_data = [ (data_obj, 31, DateTimeData, None), (data_obj, 40, EmailData, "hovercraft@example.com"), (data_obj, 41, EmailData, None), + (data_obj, 42, EmailData, ""), (data_obj, 50, FileData, 'file:///foo/bar/whiz.txt'), (data_obj, 51, FileData, None), + (data_obj, 52, FileData, ""), (data_obj, 60, FilePathData, "/foo/bar/whiz.txt"), (data_obj, 61, FilePathData, None), + (data_obj, 62, FilePathData, ""), (data_obj, 70, DecimalData, decimal.Decimal('12.345')), (data_obj, 71, DecimalData, decimal.Decimal('-12.345')), (data_obj, 72, DecimalData, decimal.Decimal('0.0')), @@ -149,6 +153,7 @@ test_data = [ (data_obj, 131, PositiveSmallIntegerData, None), (data_obj, 140, SlugData, "this-is-a-slug"), (data_obj, 141, SlugData, None), + (data_obj, 142, SlugData, ""), (data_obj, 150, SmallData, 12), (data_obj, 151, SmallData, -12), (data_obj, 152, SmallData, 0), @@ -163,8 +168,10 @@ The end."""), (data_obj, 171, TimeData, None), (data_obj, 180, USStateData, "MA"), (data_obj, 181, USStateData, None), + (data_obj, 182, USStateData, ""), (data_obj, 190, XMLData, ""), (data_obj, 191, XMLData, None), + (data_obj, 192, XMLData, ""), (generic_obj, 200, GenericData, ['Generic Object 1', 'tag1', 'tag2']), (generic_obj, 201, GenericData, ['Generic Object 2', 'tag2', 'tag3']), @@ -244,6 +251,15 @@ The end."""), # (pk_obj, 790, XMLPKData, ""), ] +# Because Oracle treats the empty string as NULL, Oracle is expected to fail +# when field.empty_strings_allowed is True and the value is None; skip these +# tests. +if settings.DATABASE_ENGINE == 'oracle': + test_data = [data for data in test_data + if not (data[0] == data_obj and + data[2]._meta.get_field('data').empty_strings_allowed and + data[3] is None)] + # Dynamically create serializer tests to ensure that all # registered serializers are automatically tested. class SerializerTests(unittest.TestCase): diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index b6615e1aa9..c78ccff678 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -731,7 +731,7 @@ class Templates(unittest.TestCase): 'url01' : ('{% url regressiontests.templates.views.client client.id %}', {'client': {'id': 1}}, '/url_tag/client/1/'), 'url02' : ('{% url regressiontests.templates.views.client_action client.id, action="update" %}', {'client': {'id': 1}}, '/url_tag/client/1/update/'), 'url03' : ('{% url regressiontests.templates.views.index %}', {}, '/url_tag/'), - 'url04' : ('{% url named-client client.id %}', {'client': {'id': 1}}, '/url_tag/named-client/1/'), + 'url04' : ('{% url named.client client.id %}', {'client': {'id': 1}}, '/url_tag/named-client/1/'), # Failures 'url-fail01' : ('{% url %}', {}, template.TemplateSyntaxError), diff --git a/tests/regressiontests/templates/urls.py b/tests/regressiontests/templates/urls.py index eaa9fd5d9f..5fbade5c58 100644 --- a/tests/regressiontests/templates/urls.py +++ b/tests/regressiontests/templates/urls.py @@ -7,5 +7,5 @@ urlpatterns = patterns('', (r'^$', views.index), (r'^client/(\d+)/$', views.client), (r'^client/(\d+)/(?P[^/]+)/$', views.client_action), - url(r'^named-client/(\d+)/$', views.client, name="named-client"), + url(r'^named-client/(\d+)/$', views.client, name="named.client"), )