mirror of
https://github.com/django/django.git
synced 2025-07-04 09:49:12 +00:00
sqlalchemy: Merged revisions 3724 to 3769 from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/sqlalchemy@3770 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
70e0581791
commit
8afc419b12
2
AUTHORS
2
AUTHORS
@ -44,6 +44,7 @@ answer newbie questions, and generally made Django that much better:
|
||||
|
||||
akaihola
|
||||
Andreas
|
||||
ant9000@netwise.it
|
||||
David Ascher <http://ascher.ca/>
|
||||
Arthur <avandorp@gmail.com>
|
||||
Jiri Barton
|
||||
@ -126,6 +127,7 @@ answer newbie questions, and generally made Django that much better:
|
||||
Oliver Rutherfurd <http://rutherfurd.net/>
|
||||
Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/>
|
||||
David Schein
|
||||
serbaut@gmail.com
|
||||
Pete Shinners <pete@shinners.org>
|
||||
SmileyChris <smileychris@gmail.com>
|
||||
sopel
|
||||
|
@ -46,6 +46,7 @@ LANGUAGES = (
|
||||
('en', gettext_noop('English')),
|
||||
('es', gettext_noop('Spanish')),
|
||||
('es_AR', gettext_noop('Argentinean Spanish')),
|
||||
('fi', gettext_noop('Finnish')),
|
||||
('fr', gettext_noop('French')),
|
||||
('gl', gettext_noop('Galician')),
|
||||
('hu', gettext_noop('Hungarian')),
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
django/conf/locale/fi/LC_MESSAGES/django.mo
Normal file
BIN
django/conf/locale/fi/LC_MESSAGES/django.mo
Normal file
Binary file not shown.
2031
django/conf/locale/fi/LC_MESSAGES/django.po
Normal file
2031
django/conf/locale/fi/LC_MESSAGES/django.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
django/conf/locale/fi/LC_MESSAGES/djangojs.mo
Normal file
BIN
django/conf/locale/fi/LC_MESSAGES/djangojs.mo
Normal file
Binary file not shown.
110
django/conf/locale/fi/LC_MESSAGES/djangojs.po
Normal file
110
django/conf/locale/fi/LC_MESSAGES/djangojs.po
Normal file
@ -0,0 +1,110 @@
|
||||
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-12-09 11:51+0100\n"
|
||||
"PO-Revision-Date: 2006-08-05 15:27+0300\n"
|
||||
"Last-Translator: Antti Kaihola <akaihola@ambitone.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 "Mahdolliset %s"
|
||||
|
||||
#: contrib/admin/media/js/SelectFilter2.js:41
|
||||
msgid "Choose all"
|
||||
msgstr "Valitse kaikki"
|
||||
|
||||
#: contrib/admin/media/js/SelectFilter2.js:46
|
||||
msgid "Add"
|
||||
msgstr "Lisää uusi"
|
||||
|
||||
#: contrib/admin/media/js/SelectFilter2.js:48
|
||||
msgid "Remove"
|
||||
msgstr "Poista"
|
||||
|
||||
#: contrib/admin/media/js/SelectFilter2.js:53
|
||||
#, perl-format
|
||||
msgid "Chosen %s"
|
||||
msgstr "Valitut %s"
|
||||
|
||||
#: contrib/admin/media/js/SelectFilter2.js:54
|
||||
msgid "Select your choice(s) and click "
|
||||
msgstr "Valitse vasemmalta ja napsauta "
|
||||
|
||||
#: contrib/admin/media/js/SelectFilter2.js:59
|
||||
msgid "Clear all"
|
||||
msgstr "Tyhjennä kaikki"
|
||||
|
||||
#: 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 ""
|
||||
"Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Kesäkuu Heinäkuu Elokuu "
|
||||
"Syyskuu Lokakuu Marraskuu Joulukuu"
|
||||
|
||||
#: contrib/admin/media/js/dateparse.js:27
|
||||
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
|
||||
msgstr "Sunnuntai Maanantai Tiistai Keskiviikko Torstai Perjantai Lauantai"
|
||||
|
||||
#: contrib/admin/media/js/calendar.js:25
|
||||
msgid "S M T W T F S"
|
||||
msgstr "S M T K T P L"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
|
||||
msgid "Now"
|
||||
msgstr "Nyt"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
|
||||
msgid "Clock"
|
||||
msgstr "Kello"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
|
||||
msgid "Choose a time"
|
||||
msgstr "Valitse kellonaika"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
|
||||
msgid "Midnight"
|
||||
msgstr "24"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
|
||||
msgid "6 a.m."
|
||||
msgstr "06"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
|
||||
msgid "Noon"
|
||||
msgstr "12"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
|
||||
msgid "Cancel"
|
||||
msgstr "Peruuta"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
|
||||
msgid "Today"
|
||||
msgstr "Tänään"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
|
||||
msgid "Calendar"
|
||||
msgstr "Kalenteri"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
|
||||
msgid "Yesterday"
|
||||
msgstr "Eilen"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
|
||||
msgid "Tomorrow"
|
||||
msgstr "Huomenna"
|
Binary file not shown.
@ -264,7 +264,7 @@ msgstr "Bare POST er tillatt"
|
||||
#: contrib/comments/views/comments.py:193
|
||||
#: contrib/comments/views/comments.py:284
|
||||
msgid "One or more of the required fields wasn't submitted"
|
||||
msgstr "En eller flere av feltene som er krevd ble ikke sendt."
|
||||
msgstr "En eller flere av feltene som er påkrevd ble ikke sendt."
|
||||
|
||||
#: contrib/comments/views/comments.py:197
|
||||
#: contrib/comments/views/comments.py:286
|
||||
@ -371,35 +371,32 @@ msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
#: contrib/admin/filterspecs.py:109
|
||||
#, fuzzy
|
||||
msgid "Any date"
|
||||
msgstr "Alle datoer"
|
||||
msgstr "Når som helst"
|
||||
|
||||
#: contrib/admin/filterspecs.py:110
|
||||
#, fuzzy
|
||||
msgid "Today"
|
||||
msgstr "Mondag"
|
||||
msgstr "I dag"
|
||||
|
||||
#: contrib/admin/filterspecs.py:113
|
||||
msgid "Past 7 days"
|
||||
msgstr ""
|
||||
msgstr "Siste 7 dager"
|
||||
|
||||
#: contrib/admin/filterspecs.py:115
|
||||
msgid "This month"
|
||||
msgstr ""
|
||||
msgstr "Denne måneden"
|
||||
|
||||
#: contrib/admin/filterspecs.py:117
|
||||
msgid "This year"
|
||||
msgstr ""
|
||||
msgstr "I år"
|
||||
|
||||
#: contrib/admin/filterspecs.py:143
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
msgstr "Ja"
|
||||
|
||||
#: contrib/admin/filterspecs.py:143
|
||||
#, fuzzy
|
||||
msgid "No"
|
||||
msgstr "Nov."
|
||||
msgstr "Nei"
|
||||
|
||||
#: contrib/admin/filterspecs.py:150
|
||||
msgid "Unknown"
|
||||
@ -443,11 +440,13 @@ msgid ""
|
||||
"Please enter a correct username and password. Note that both fields are case-"
|
||||
"sensitive."
|
||||
msgstr ""
|
||||
"Vær snill å angi korrekt brukernavn og passord. La merke til at små og "
|
||||
"store bokstaver er betraktet ulik."
|
||||
|
||||
#: contrib/admin/views/decorators.py:23
|
||||
#: contrib/admin/templates/admin/login.html:25
|
||||
msgid "Log in"
|
||||
msgstr "Log inn"
|
||||
msgstr "Logg inn"
|
||||
|
||||
#: contrib/admin/views/decorators.py:61
|
||||
msgid ""
|
||||
@ -473,12 +472,11 @@ msgstr "Brukernavnet kan ikke inneholde '@'"
|
||||
#: contrib/admin/views/decorators.py:84
|
||||
#, python-format
|
||||
msgid "Your e-mail address is not your username. Try '%s' instead."
|
||||
msgstr "Epost adressen din er ikke brukernavnet ditt, prøv '%s' i stede."
|
||||
msgstr "E-post adressen din er ikke brukernavnet ditt, prøv '%s' i stede."
|
||||
|
||||
#: contrib/admin/views/main.py:226
|
||||
#, fuzzy
|
||||
msgid "Site administration"
|
||||
msgstr "Django administrasjon"
|
||||
msgstr "Nettsted administrasjon"
|
||||
|
||||
#: contrib/admin/views/main.py:260
|
||||
#, python-format
|
||||
@ -502,7 +500,7 @@ msgstr "Ny %s"
|
||||
#: contrib/admin/views/main.py:336
|
||||
#, python-format
|
||||
msgid "Added %s."
|
||||
msgstr "La til %s"
|
||||
msgstr "Lagt til %s"
|
||||
|
||||
#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
|
||||
#: contrib/admin/views/main.py:340
|
||||
@ -559,7 +557,7 @@ msgid "Are you sure?"
|
||||
msgstr "Er du sikker?"
|
||||
|
||||
#: contrib/admin/views/main.py:533
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Change history: %s"
|
||||
msgstr "Endre historien: %s"
|
||||
|
||||
@ -580,7 +578,6 @@ msgid "Integer"
|
||||
msgstr "Heltall"
|
||||
|
||||
#: contrib/admin/views/doc.py:278
|
||||
#, fuzzy
|
||||
msgid "Boolean (Either True or False)"
|
||||
msgstr "Boolean (Enten \"True\" eller \"False\")"
|
||||
|
||||
@ -603,7 +600,7 @@ msgstr "Dato/tid"
|
||||
|
||||
#: contrib/admin/views/doc.py:283
|
||||
msgid "E-mail address"
|
||||
msgstr "Epost adresse"
|
||||
msgstr "E-post adresse"
|
||||
|
||||
#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
|
||||
msgid "File path"
|
||||
@ -614,13 +611,12 @@ msgid "Decimal number"
|
||||
msgstr "Desimal tall"
|
||||
|
||||
#: contrib/admin/views/doc.py:291
|
||||
#, fuzzy
|
||||
msgid "Boolean (Either True, False or None)"
|
||||
msgstr "Boolean (enten \"True\", \"False\" eller \"None\")"
|
||||
|
||||
#: contrib/admin/views/doc.py:292
|
||||
msgid "Relation to parent model"
|
||||
msgstr ""
|
||||
msgstr "Relasjon til forelder modell"
|
||||
|
||||
#: contrib/admin/views/doc.py:293
|
||||
msgid "Phone number"
|
||||
@ -636,7 +632,7 @@ msgstr "Tid"
|
||||
|
||||
#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
|
||||
msgid "URL"
|
||||
msgstr "Internettadresse"
|
||||
msgstr "URL"
|
||||
|
||||
#: contrib/admin/views/doc.py:301
|
||||
msgid "U.S. state (two uppercase letters)"
|
||||
@ -756,12 +752,12 @@ msgstr "Fant ikke siden"
|
||||
|
||||
#: contrib/admin/templates/admin/404.html:10
|
||||
msgid "We're sorry, but the requested page could not be found."
|
||||
msgstr "Beklager, men siden du spør etter finnest ikke."
|
||||
msgstr "Beklager, men siden du spør etter finnes ikke."
|
||||
|
||||
#: contrib/admin/templates/admin/index.html:17
|
||||
#, python-format
|
||||
msgid "Models available in the %(name)s application."
|
||||
msgstr ""
|
||||
msgstr "Modeller fra applikasjonen %(name)s."
|
||||
|
||||
#: contrib/admin/templates/admin/index.html:28
|
||||
#: contrib/admin/templates/admin/change_form.html:15
|
||||
@ -813,7 +809,7 @@ msgid ""
|
||||
"objects, but your account doesn't have permission to delete the following "
|
||||
"types of objects:"
|
||||
msgstr ""
|
||||
"Vist du sletter %(object_name)s '%(object)s' vill du også slette relaterte "
|
||||
"Hivs du sletter %(object_name)s '%(object)s' vil du også slette relaterte "
|
||||
"objekter, men du har ikke tillatelse til å slette de følgende objektene:"
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:21
|
||||
@ -836,11 +832,11 @@ msgstr "Av %(title)s "
|
||||
|
||||
#: contrib/admin/templates/admin/search_form.html:8
|
||||
msgid "Go"
|
||||
msgstr ""
|
||||
msgstr "Gå"
|
||||
|
||||
#: contrib/admin/templates/admin/change_form.html:21
|
||||
msgid "View on site"
|
||||
msgstr "Vis på siden"
|
||||
msgstr "Vis på nettsted"
|
||||
|
||||
#: contrib/admin/templates/admin/change_form.html:30
|
||||
msgid "Please correct the error below."
|
||||
@ -900,12 +896,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 ""
|
||||
"Har du glemt passordet ditt? Skriv inn epost adressen din under, så sender "
|
||||
"vi deg et nytt passord via epost."
|
||||
"Har du glemt passordet ditt? Skriv inn e-post adressen din under, så sender "
|
||||
"vi deg et nytt passord via e-post."
|
||||
|
||||
#: contrib/admin/templates/registration/password_reset_form.html:16
|
||||
msgid "E-mail address:"
|
||||
msgstr "Epost adresse:"
|
||||
msgstr "E-post adresse:"
|
||||
|
||||
#: contrib/admin/templates/registration/password_reset_form.html:16
|
||||
msgid "Reset my password"
|
||||
@ -917,7 +913,7 @@ msgstr "Takk for å bruke tid på internett siden i dag."
|
||||
|
||||
#: contrib/admin/templates/registration/logged_out.html:10
|
||||
msgid "Log in again"
|
||||
msgstr "Log inn igjen"
|
||||
msgstr "Logg inn igjen"
|
||||
|
||||
#: contrib/admin/templates/registration/password_reset_done.html:6
|
||||
#: contrib/admin/templates/registration/password_reset_done.html:10
|
||||
@ -929,7 +925,7 @@ msgid ""
|
||||
"We've e-mailed a new password to the e-mail address you submitted. You "
|
||||
"should be receiving it shortly."
|
||||
msgstr ""
|
||||
"Vi sender deg et nytt passord til epost adressen du oppgav. Du villmotta det "
|
||||
"Vi sender deg et nytt passord til e-post adressen du oppgav. Du villmotta det "
|
||||
"snart."
|
||||
|
||||
#: contrib/admin/templates/registration/password_change_form.html:12
|
||||
@ -959,7 +955,7 @@ msgstr "Endre passord"
|
||||
#: contrib/admin/templates/registration/password_reset_email.html:2
|
||||
msgid "You're receiving this e-mail because you requested a password reset"
|
||||
msgstr ""
|
||||
"Du har mottatt denne epost-en fordi du ba om å tilbakestille passordet ditt"
|
||||
"Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt"
|
||||
|
||||
#: contrib/admin/templates/registration/password_reset_email.html:3
|
||||
#, python-format
|
||||
@ -1036,10 +1032,9 @@ msgid "Edit this object (current window)"
|
||||
msgstr "Endre dette objektet (åpnes i dette vinduet)"
|
||||
|
||||
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
|
||||
#, fuzzy
|
||||
msgid "Jumps to the admin page for pages that represent a single object."
|
||||
msgstr ""
|
||||
"Hopp til administrasjonsiden for siden som representerer et enkelt objekt."
|
||||
"Hopp til administrasjonsiden for sidene som representerer et enkelt objekt."
|
||||
|
||||
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
|
||||
msgid "Edit this object (new window)"
|
||||
@ -1051,21 +1046,19 @@ msgstr "Samme som over, men åpner administrasjonsiden i et nytt vindu."
|
||||
|
||||
#: contrib/admin/templates/widget/date_time.html:3
|
||||
msgid "Date:"
|
||||
msgstr ""
|
||||
msgstr "Dato:"
|
||||
|
||||
#: contrib/admin/templates/widget/date_time.html:4
|
||||
#, fuzzy
|
||||
msgid "Time:"
|
||||
msgstr "Tid"
|
||||
msgstr "Tid:"
|
||||
|
||||
#: contrib/admin/templates/widget/file.html:2
|
||||
msgid "Currently:"
|
||||
msgstr ""
|
||||
msgstr "Nå:"
|
||||
|
||||
#: contrib/admin/templates/widget/file.html:3
|
||||
#, fuzzy
|
||||
msgid "Change:"
|
||||
msgstr "Endre"
|
||||
msgstr "Endre:"
|
||||
|
||||
#: contrib/redirects/models.py:7
|
||||
msgid "redirect from"
|
||||
@ -1126,7 +1119,7 @@ msgid ""
|
||||
"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
|
||||
"use 'flatpages/default'."
|
||||
msgstr ""
|
||||
"Eksempel: 'flatfiler/kontakt_side'. Vist denne ikke denne er gitt, vill "
|
||||
"Eksempel: 'flatfiler/kontakt_side'. Hvis denne ikke denne er gitt, vill "
|
||||
"'flatfiles/default' bli brukt."
|
||||
|
||||
#: contrib/flatpages/models.py:14
|
||||
@ -1136,7 +1129,7 @@ msgstr "registrering kreves"
|
||||
#: contrib/flatpages/models.py:14
|
||||
msgid "If this is checked, only logged-in users will be able to view the page."
|
||||
msgstr ""
|
||||
"Vist denne er krysset av er det bare brukere som er logget inn som kan se "
|
||||
"Hvis denne er krysset av er det bare brukere som er logget inn som kan se "
|
||||
"siden."
|
||||
|
||||
#: contrib/flatpages/models.py:18
|
||||
@ -1156,24 +1149,20 @@ msgid "codename"
|
||||
msgstr "kodenavn"
|
||||
|
||||
#: contrib/auth/models.py:17
|
||||
#, fuzzy
|
||||
msgid "permission"
|
||||
msgstr "Rettighet"
|
||||
msgstr "rettighet"
|
||||
|
||||
#: contrib/auth/models.py:18 contrib/auth/models.py:27
|
||||
#, fuzzy
|
||||
msgid "permissions"
|
||||
msgstr "Rettigheter"
|
||||
msgstr "rettigheter"
|
||||
|
||||
#: contrib/auth/models.py:29
|
||||
#, fuzzy
|
||||
msgid "group"
|
||||
msgstr "Gruppe"
|
||||
msgstr "gruppe"
|
||||
|
||||
#: contrib/auth/models.py:30 contrib/auth/models.py:65
|
||||
#, fuzzy
|
||||
msgid "groups"
|
||||
msgstr "Grupper"
|
||||
msgstr "grupper"
|
||||
|
||||
#: contrib/auth/models.py:55
|
||||
msgid "username"
|
||||
@ -1205,7 +1194,7 @@ msgstr "administrasjons status"
|
||||
|
||||
#: contrib/auth/models.py:60
|
||||
msgid "Designates whether the user can log into this admin site."
|
||||
msgstr "Bestemmer om brukeren kan logge inn på denne administrasjons siden."
|
||||
msgstr "Bestemmer om brukeren kan logge inn på dette administrasjons sted."
|
||||
|
||||
#: contrib/auth/models.py:61
|
||||
msgid "active"
|
||||
@ -1217,7 +1206,7 @@ msgstr "super bruker"
|
||||
|
||||
#: contrib/auth/models.py:63
|
||||
msgid "last login"
|
||||
msgstr "liste logg inn"
|
||||
msgstr "siste logg inn"
|
||||
|
||||
#: contrib/auth/models.py:64
|
||||
msgid "date joined"
|
||||
@ -1232,19 +1221,16 @@ msgstr ""
|
||||
"tilgang til gruppene han/hun er i."
|
||||
|
||||
#: contrib/auth/models.py:67
|
||||
#, fuzzy
|
||||
msgid "user permissions"
|
||||
msgstr "Rettigheter"
|
||||
|
||||
#: contrib/auth/models.py:70
|
||||
#, fuzzy
|
||||
msgid "user"
|
||||
msgstr "Bruker"
|
||||
msgstr "bruker"
|
||||
|
||||
#: contrib/auth/models.py:71
|
||||
#, fuzzy
|
||||
msgid "users"
|
||||
msgstr "Brukere"
|
||||
msgstr "brukere"
|
||||
|
||||
#: contrib/auth/models.py:76
|
||||
msgid "Personal info"
|
||||
@ -1263,9 +1249,8 @@ msgid "Groups"
|
||||
msgstr "Grupper"
|
||||
|
||||
#: contrib/auth/models.py:219
|
||||
#, fuzzy
|
||||
msgid "message"
|
||||
msgstr "Meldinger"
|
||||
msgstr "Melding"
|
||||
|
||||
#: contrib/auth/forms.py:30
|
||||
msgid ""
|
||||
@ -1274,9 +1259,8 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: contrib/contenttypes/models.py:25
|
||||
#, fuzzy
|
||||
msgid "python model class name"
|
||||
msgstr "python modul navn"
|
||||
msgstr "python modell klasse navn"
|
||||
|
||||
#: contrib/contenttypes/models.py:28
|
||||
msgid "content type"
|
||||
@ -1312,23 +1296,23 @@ msgstr "domene navn"
|
||||
|
||||
#: contrib/sites/models.py:11
|
||||
msgid "display name"
|
||||
msgstr "vist navn"
|
||||
msgstr "vise navn"
|
||||
|
||||
#: contrib/sites/models.py:15
|
||||
msgid "site"
|
||||
msgstr "side"
|
||||
msgstr "nettsted"
|
||||
|
||||
#: contrib/sites/models.py:16
|
||||
msgid "sites"
|
||||
msgstr "sider"
|
||||
msgstr "nettsteder"
|
||||
|
||||
#: utils/translation.py:360
|
||||
msgid "DATE_FORMAT"
|
||||
msgstr "j. M U"
|
||||
msgstr "j. M Y"
|
||||
|
||||
#: utils/translation.py:361
|
||||
msgid "DATETIME_FORMAT"
|
||||
msgstr "j. M U - h:i"
|
||||
msgstr "j. M Y - h:i"
|
||||
|
||||
#: utils/translation.py:362
|
||||
msgid "TIME_FORMAT"
|
||||
@ -1336,7 +1320,7 @@ msgstr "h:i"
|
||||
|
||||
#: utils/dates.py:6
|
||||
msgid "Monday"
|
||||
msgstr "Mondag"
|
||||
msgstr "Mandag"
|
||||
|
||||
#: utils/dates.py:6
|
||||
msgid "Tuesday"
|
||||
@ -1411,54 +1395,52 @@ msgid "December"
|
||||
msgstr "Desember"
|
||||
|
||||
#: utils/dates.py:19
|
||||
#, fuzzy
|
||||
msgid "jan"
|
||||
msgstr "og"
|
||||
msgstr "jan"
|
||||
|
||||
#: utils/dates.py:19
|
||||
msgid "feb"
|
||||
msgstr ""
|
||||
msgstr "feb"
|
||||
|
||||
#: utils/dates.py:19
|
||||
msgid "mar"
|
||||
msgstr ""
|
||||
msgstr "mar"
|
||||
|
||||
#: utils/dates.py:19
|
||||
msgid "apr"
|
||||
msgstr ""
|
||||
msgstr "apr"
|
||||
|
||||
#: utils/dates.py:19
|
||||
#, fuzzy
|
||||
msgid "may"
|
||||
msgstr "Mai"
|
||||
msgstr "mai"
|
||||
|
||||
#: utils/dates.py:19
|
||||
msgid "jun"
|
||||
msgstr ""
|
||||
msgstr "jun"
|
||||
|
||||
#: utils/dates.py:20
|
||||
msgid "jul"
|
||||
msgstr ""
|
||||
msgstr "jul"
|
||||
|
||||
#: utils/dates.py:20
|
||||
msgid "aug"
|
||||
msgstr ""
|
||||
msgstr "aug"
|
||||
|
||||
#: utils/dates.py:20
|
||||
msgid "sep"
|
||||
msgstr ""
|
||||
msgstr "sep"
|
||||
|
||||
#: utils/dates.py:20
|
||||
msgid "oct"
|
||||
msgstr ""
|
||||
msgstr "okt"
|
||||
|
||||
#: utils/dates.py:20
|
||||
msgid "nov"
|
||||
msgstr ""
|
||||
msgstr "nov"
|
||||
|
||||
#: utils/dates.py:20
|
||||
msgid "dec"
|
||||
msgstr ""
|
||||
msgstr "des"
|
||||
|
||||
#: utils/dates.py:27
|
||||
msgid "Jan."
|
||||
@ -1466,7 +1448,7 @@ msgstr "Jan."
|
||||
|
||||
#: utils/dates.py:27
|
||||
msgid "Feb."
|
||||
msgstr "Fef."
|
||||
msgstr "Feb."
|
||||
|
||||
#: utils/dates.py:28
|
||||
msgid "Aug."
|
||||
@ -1491,40 +1473,38 @@ msgstr "Des."
|
||||
#: utils/timesince.py:12
|
||||
msgid "year"
|
||||
msgid_plural "years"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "år"
|
||||
msgstr[1] "år"
|
||||
|
||||
#: utils/timesince.py:13
|
||||
msgid "month"
|
||||
msgid_plural "months"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "måned"
|
||||
msgstr[1] "måndeder"
|
||||
|
||||
#: utils/timesince.py:14
|
||||
msgid "week"
|
||||
msgid_plural "weeks"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "uke"
|
||||
msgstr[1] "uker"
|
||||
|
||||
#: utils/timesince.py:15
|
||||
#, fuzzy
|
||||
msgid "day"
|
||||
msgid_plural "days"
|
||||
msgstr[0] "Mai"
|
||||
msgstr[1] "Mai"
|
||||
msgstr[0] "dag"
|
||||
msgstr[1] "dager"
|
||||
|
||||
#: utils/timesince.py:16
|
||||
msgid "hour"
|
||||
msgid_plural "hours"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "time"
|
||||
msgstr[1] "timer"
|
||||
|
||||
#: utils/timesince.py:17
|
||||
#, fuzzy
|
||||
msgid "minute"
|
||||
msgid_plural "minutes"
|
||||
msgstr[0] "side"
|
||||
msgstr[1] "side"
|
||||
msgstr[0] "minutt"
|
||||
msgstr[1] "minutter"
|
||||
|
||||
#: conf/global_settings.py:37
|
||||
msgid "Bengali"
|
||||
@ -1548,7 +1528,7 @@ msgstr "Tysk"
|
||||
|
||||
#: conf/global_settings.py:42
|
||||
msgid "Greek"
|
||||
msgstr ""
|
||||
msgstr "Gresk"
|
||||
|
||||
#: conf/global_settings.py:43
|
||||
msgid "English"
|
||||
@ -1568,11 +1548,11 @@ msgstr "Galisisk"
|
||||
|
||||
#: conf/global_settings.py:47
|
||||
msgid "Hungarian"
|
||||
msgstr ""
|
||||
msgstr "Ungarsk"
|
||||
|
||||
#: conf/global_settings.py:48
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
msgstr "Hebraiske"
|
||||
|
||||
#: conf/global_settings.py:49
|
||||
msgid "Icelandic"
|
||||
@ -1584,11 +1564,11 @@ msgstr "Italiensk"
|
||||
|
||||
#: conf/global_settings.py:51
|
||||
msgid "Japanese"
|
||||
msgstr ""
|
||||
msgstr "Japansk"
|
||||
|
||||
#: conf/global_settings.py:52
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
msgstr "Nederlandsk"
|
||||
|
||||
#: conf/global_settings.py:53
|
||||
msgid "Norwegian"
|
||||
@ -1600,7 +1580,7 @@ msgstr "Brasiliansk"
|
||||
|
||||
#: conf/global_settings.py:55
|
||||
msgid "Romanian"
|
||||
msgstr "Romansk"
|
||||
msgstr "Rumensk"
|
||||
|
||||
#: conf/global_settings.py:56
|
||||
msgid "Russian"
|
||||
@ -1611,9 +1591,8 @@ msgid "Slovak"
|
||||
msgstr "Slovakisk"
|
||||
|
||||
#: conf/global_settings.py:58
|
||||
#, fuzzy
|
||||
msgid "Slovenian"
|
||||
msgstr "Slovakisk"
|
||||
msgstr "Slovensk"
|
||||
|
||||
#: conf/global_settings.py:59
|
||||
msgid "Serbian"
|
||||
@ -1624,9 +1603,8 @@ msgid "Swedish"
|
||||
msgstr "Svensk"
|
||||
|
||||
#: conf/global_settings.py:61
|
||||
#, fuzzy
|
||||
msgid "Ukrainian"
|
||||
msgstr "Brasiliansk"
|
||||
msgstr "Ukrainsk"
|
||||
|
||||
#: conf/global_settings.py:62
|
||||
msgid "Simplified Chinese"
|
||||
@ -1634,14 +1612,13 @@ msgstr "Simplifisert Kinesisk"
|
||||
|
||||
#: conf/global_settings.py:63
|
||||
msgid "Traditional Chinese"
|
||||
msgstr ""
|
||||
msgstr "Tradisjonell Kinesisk"
|
||||
|
||||
#: core/validators.py:60
|
||||
msgid "This value must contain only letters, numbers and underscores."
|
||||
msgstr "Dette feltet må bare inneholde bokstaver, nummer og understreker."
|
||||
|
||||
#: core/validators.py:64
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This value must contain only letters, numbers, underscores, dashes or "
|
||||
"slashes."
|
||||
@ -1651,7 +1628,7 @@ msgstr ""
|
||||
|
||||
#: core/validators.py:72
|
||||
msgid "Uppercase letters are not allowed here."
|
||||
msgstr "Tor skrift er ikke tillatt her."
|
||||
msgstr "Stor bokstaver er ikke tillatt her."
|
||||
|
||||
#: core/validators.py:76
|
||||
msgid "Lowercase letters are not allowed here."
|
||||
@ -1687,19 +1664,19 @@ msgstr "Skriv inn et helt nummer."
|
||||
|
||||
#: core/validators.py:120
|
||||
msgid "Only alphabetical characters are allowed here."
|
||||
msgstr "Bare alfabetiske bokstaber er tillatt her."
|
||||
msgstr "Bare alfabetiske bokstaver er tillatt her."
|
||||
|
||||
#: core/validators.py:124
|
||||
msgid "Enter a valid date in YYYY-MM-DD format."
|
||||
msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD formatet."
|
||||
msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD format."
|
||||
|
||||
#: core/validators.py:128
|
||||
msgid "Enter a valid time in HH:MM format."
|
||||
msgstr "Skriv inn tiden i TT:MM formatet."
|
||||
msgstr "Skriv inn tiden i TT:MM format."
|
||||
|
||||
#: core/validators.py:132 db/models/fields/__init__.py:468
|
||||
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
|
||||
msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM formatet."
|
||||
msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM format."
|
||||
|
||||
#: core/validators.py:136
|
||||
msgid "Enter a valid e-mail address."
|
||||
@ -1722,7 +1699,7 @@ msgstr "Internettadressen %s peker ikke til et godkjent bilde."
|
||||
#, python-format
|
||||
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
|
||||
msgstr ""
|
||||
"Telefon nummeret må være i XXX-XXX-XXXX formatet. \"%s\" er ikke godkjent."
|
||||
"Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent."
|
||||
|
||||
#: core/validators.py:167
|
||||
#, python-format
|
||||
@ -1731,7 +1708,7 @@ msgstr "Internettadressen %s peker ikke til en godkjent QuickTime film."
|
||||
|
||||
#: core/validators.py:171
|
||||
msgid "A valid URL is required."
|
||||
msgstr "En godkjent internettadresse er påbudt."
|
||||
msgstr "En godkjent internettadresse er påkrevd."
|
||||
|
||||
#: core/validators.py:185
|
||||
#, python-format
|
||||
@ -1739,7 +1716,7 @@ msgid ""
|
||||
"Valid HTML is required. Specific errors are:\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Godkjent HTML er påbudt. Feilene var:\n"
|
||||
"Godkjent HTML er påkrevd. Feilene var:\n"
|
||||
"%s"
|
||||
|
||||
#: core/validators.py:192
|
||||
@ -1750,7 +1727,7 @@ msgstr "Ikke godkjent XML: %s"
|
||||
#: core/validators.py:202
|
||||
#, python-format
|
||||
msgid "Invalid URL: %s"
|
||||
msgstr "Ikke godkjent internettadresse: %s"
|
||||
msgstr "Ikke godkjent URL: %s"
|
||||
|
||||
#: core/validators.py:206 core/validators.py:208
|
||||
#, python-format
|
||||
@ -1759,7 +1736,7 @@ msgstr "Internettadresse fører til en side som ikke virker."
|
||||
|
||||
#: core/validators.py:214
|
||||
msgid "Enter a valid U.S. state abbreviation."
|
||||
msgstr "Skriv inn en godkjent amerikansk stats forkortelse."
|
||||
msgstr "Skriv inn en godkjent amerikansk delstat forkortelse."
|
||||
|
||||
#: core/validators.py:229
|
||||
#, python-format
|
||||
@ -1771,7 +1748,7 @@ msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
|
||||
#: core/validators.py:236
|
||||
#, python-format
|
||||
msgid "This field must match the '%s' field."
|
||||
msgstr "Dette felte må være det samme som i '%s' feltet."
|
||||
msgstr "Dette feltet må være det samme som i '%s' feltet."
|
||||
|
||||
#: core/validators.py:255
|
||||
msgid "Please enter something for at least one field."
|
||||
@ -1784,12 +1761,12 @@ msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke."
|
||||
#: core/validators.py:282
|
||||
#, python-format
|
||||
msgid "This field must be given if %(field)s is %(value)s"
|
||||
msgstr "Dette feltet må bare brukes vist %(field)s er lik %(value)s"
|
||||
msgstr "Dette feltet må bare brukes hvis %(field)s er lik %(value)s"
|
||||
|
||||
#: core/validators.py:294
|
||||
#, python-format
|
||||
msgid "This field must be given if %(field)s is not %(value)s"
|
||||
msgstr "Dette feltet må bare brukes vist %(field)s ikke er lik %(value)s"
|
||||
msgstr "Dette feltet må bare brukes hvis %(field)s ikke er lik %(value)s"
|
||||
|
||||
#: core/validators.py:313
|
||||
msgid "Duplicate values are not allowed."
|
||||
@ -1824,13 +1801,13 @@ msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. "
|
||||
#, python-format
|
||||
msgid "Make sure your uploaded file is at least %s bytes big."
|
||||
msgstr ""
|
||||
"Er du sikker på at fila du prøver å laste opp er minimum %s bytes stor?"
|
||||
"Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor."
|
||||
|
||||
#: core/validators.py:363
|
||||
#, python-format
|
||||
msgid "Make sure your uploaded file is at most %s bytes big."
|
||||
msgstr ""
|
||||
"Er du sikker på at fila du prøver å laste opp er maksimum %s bytes stor?"
|
||||
"Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor."
|
||||
|
||||
#: core/validators.py:376
|
||||
msgid "The format for this field is wrong."
|
||||
@ -1850,7 +1827,7 @@ msgstr "Klarte ikke å motta noe fra %s."
|
||||
msgid ""
|
||||
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
|
||||
msgstr ""
|
||||
"Tnternettadressen %(url)s returnerte en ikke godkjent Content-Type '%"
|
||||
"Internettadressen %(url)s returnerte en ikke godkjent Content-Type '%"
|
||||
"(contenttype)s'."
|
||||
|
||||
#: core/validators.py:462
|
||||
@ -1859,7 +1836,7 @@ msgid ""
|
||||
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
|
||||
"\"%(start)s\".)"
|
||||
msgstr ""
|
||||
"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linja starer med \"%(start)"
|
||||
"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med \"%(start)"
|
||||
"s\".)"
|
||||
|
||||
#: core/validators.py:466
|
||||
@ -1868,7 +1845,7 @@ msgid ""
|
||||
"Some text starting on line %(line)s is not allowed in that context. (Line "
|
||||
"starts with \"%(start)s\".)"
|
||||
msgstr ""
|
||||
"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linja starter "
|
||||
"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linjen starter "
|
||||
"med \"%(start)s\".)"
|
||||
|
||||
#: core/validators.py:471
|
||||
@ -1877,7 +1854,7 @@ msgid ""
|
||||
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
|
||||
"(start)s\".)"
|
||||
msgstr ""
|
||||
"\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linja starter "
|
||||
"\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linjen starter "
|
||||
"med \"%(start)s\".)"
|
||||
|
||||
#: core/validators.py:476
|
||||
@ -1886,7 +1863,7 @@ msgid ""
|
||||
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
|
||||
"(start)s\".)"
|
||||
msgstr ""
|
||||
"\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linja starter med "
|
||||
"\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linjen starter med "
|
||||
"\"%(start)s\".)"
|
||||
|
||||
#: core/validators.py:480
|
||||
@ -1895,7 +1872,7 @@ msgid ""
|
||||
"A tag on line %(line)s is missing one or more required attributes. (Line "
|
||||
"starts with \"%(start)s\".)"
|
||||
msgstr ""
|
||||
"En tag på linje %(line)s mangler en av de påbydte tillegga. (linja starter "
|
||||
"En tag på linje %(line)s mangler en av de påkrevde attributtene. (linjen starter "
|
||||
"med \"%(start)s\".)"
|
||||
|
||||
#: core/validators.py:485
|
||||
@ -1904,13 +1881,13 @@ msgid ""
|
||||
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
|
||||
"starts with \"%(start)s\".)"
|
||||
msgstr ""
|
||||
"\"%(attr)s\" tillegg på linje $(line)s har en ikke godkjent verdi. (Linja "
|
||||
"\"%(attr)s\" tillegg på linje $(line)s har en ikke godkjent verdi. (Linjen "
|
||||
"starter med \"%(start)s\".)"
|
||||
|
||||
#: db/models/manipulators.py:302
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
|
||||
msgstr "$(optname)s med %(fieldname)s finnes allerede."
|
||||
msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s."
|
||||
|
||||
#: db/models/fields/__init__.py:40
|
||||
#, python-format
|
||||
@ -1924,37 +1901,31 @@ msgid "This field is required."
|
||||
msgstr "Dette feltet er påkrevd."
|
||||
|
||||
#: db/models/fields/__init__.py:337
|
||||
#, fuzzy
|
||||
msgid "This value must be an integer."
|
||||
msgstr "Denne verdien må være 'power' av %s."
|
||||
msgstr "Denne verdien må være et heltall."
|
||||
|
||||
#: db/models/fields/__init__.py:369
|
||||
#, fuzzy
|
||||
msgid "This value must be either True or False."
|
||||
msgstr "Denne verdien må være 'power' av %s."
|
||||
msgstr "Denne verdien må være enten \"True\" eller \"False\"."
|
||||
|
||||
#: db/models/fields/__init__.py:385
|
||||
#, fuzzy
|
||||
msgid "This field cannot be null."
|
||||
msgstr "Dette feltet er feil."
|
||||
msgstr "Dette feltet kan ikke være null/tom."
|
||||
|
||||
#: db/models/fields/__init__.py:562
|
||||
#, fuzzy
|
||||
msgid "Enter a valid filename."
|
||||
msgstr "Skriv inn en godkjent e-post adresse."
|
||||
msgstr "Skriv inn et godkjent fil navn."
|
||||
|
||||
#: db/models/fields/related.py:43
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Please enter a valid %s."
|
||||
msgstr "Vennligst skriv inn en godkjent IP adresse."
|
||||
msgstr "Vennligst skriv inn en/et gyldig %s."
|
||||
|
||||
#: db/models/fields/related.py:579
|
||||
#, fuzzy
|
||||
msgid "Separate multiple IDs with commas."
|
||||
msgstr "Separer Id-ene med kommaer."
|
||||
|
||||
#: db/models/fields/related.py:581
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
|
||||
msgstr ""
|
||||
@ -1965,14 +1936,14 @@ msgstr ""
|
||||
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
|
||||
msgid_plural ""
|
||||
"Please enter valid %(self)s IDs. The values %(value)r are invalid."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig."
|
||||
msgstr[1] "Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige."
|
||||
|
||||
#: forms/__init__.py:380
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Ensure your text is less than %s character."
|
||||
msgid_plural "Ensure your text is less than %s characters."
|
||||
msgstr[0] "Sjekk at teksten er kortere enn %s bokstaver"
|
||||
msgstr[0] "Sjekk at teksten er kortere enn %s bokstav"
|
||||
msgstr[1] "Sjekk at teksten er kortere enn %s bokstaver"
|
||||
|
||||
#: forms/__init__.py:385
|
||||
@ -1982,7 +1953,7 @@ msgstr "Det er ikke tillatt med flere linjer her."
|
||||
#: 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 "Velg et av valga; '%(data)s' er ikke i %(choices)s."
|
||||
msgstr "Velg et gyldig valg; '%(data)s' er ikke i %(choices)s."
|
||||
|
||||
#: forms/__init__.py:645
|
||||
msgid "The submitted file is empty."
|
||||
@ -2002,7 +1973,7 @@ msgstr "Skriv inn et heltall mellom 0 og 32767."
|
||||
|
||||
#: template/defaultfilters.py:379
|
||||
msgid "yes,no,maybe"
|
||||
msgstr ""
|
||||
msgstr "ja,nei,kanskje"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Comments"
|
||||
|
Binary file not shown.
@ -61,6 +61,15 @@ msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag"
|
||||
msgid "S M T W T F S"
|
||||
msgstr "S M T O T F L"
|
||||
|
||||
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
|
||||
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
|
||||
msgid "Show"
|
||||
msgstr "Vis"
|
||||
|
||||
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
|
||||
msgid "Hide"
|
||||
msgstr "Skjul"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
|
||||
msgid "Now"
|
||||
@ -80,7 +89,7 @@ msgstr "24.00"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
|
||||
msgid "6 a.m."
|
||||
msgstr "18.00"
|
||||
msgstr "06.00"
|
||||
|
||||
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
|
||||
msgid "Noon"
|
||||
|
Binary file not shown.
@ -126,12 +126,10 @@ msgid "approved by staff"
|
||||
msgstr "zaakceptowano"
|
||||
|
||||
#: contrib/comments/models.py:176
|
||||
#, fuzzy
|
||||
msgid "free comment"
|
||||
msgstr "wolny komentarz"
|
||||
|
||||
#: contrib/comments/models.py:177
|
||||
#, fuzzy
|
||||
msgid "free comments"
|
||||
msgstr "wolne komentarze"
|
||||
|
||||
@ -144,7 +142,6 @@ msgid "score date"
|
||||
msgstr "data przyznania punktów"
|
||||
|
||||
#: contrib/comments/models.py:237
|
||||
#, fuzzy
|
||||
msgid "karma score"
|
||||
msgstr "ilość punktów"
|
||||
|
||||
@ -243,6 +240,9 @@ msgid ""
|
||||
"\n"
|
||||
"%(text)s"
|
||||
msgstr ""
|
||||
"Ten komentarze został dodany przez użytkownika::\n"
|
||||
"\n"
|
||||
"%(text)s"
|
||||
|
||||
#: contrib/comments/views/comments.py:189
|
||||
#: contrib/comments/views/comments.py:280
|
||||
@ -257,19 +257,20 @@ msgstr "Jedno lub więcej wymaganych pól nie zostało wypełnionych"
|
||||
#: contrib/comments/views/comments.py:197
|
||||
#: contrib/comments/views/comments.py:286
|
||||
msgid "Somebody tampered with the comment form (security violation)"
|
||||
msgstr ""
|
||||
msgstr "Ktoś próbował obejść zabezpieczenia formularza komentarzy"
|
||||
|
||||
#: contrib/comments/views/comments.py:207
|
||||
#: contrib/comments/views/comments.py:292
|
||||
msgid ""
|
||||
"The comment form had an invalid 'target' parameter -- the object ID was "
|
||||
"invalid"
|
||||
msgstr ""
|
||||
msgstr "Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było "
|
||||
"niepoprawne"
|
||||
|
||||
#: contrib/comments/views/comments.py:257
|
||||
#: contrib/comments/views/comments.py:321
|
||||
msgid "The comment form didn't provide either 'preview' or 'post'"
|
||||
msgstr ""
|
||||
msgstr "Formularz komentarza nie zapewnił obiektów 'preview' ani 'post'"
|
||||
|
||||
#: contrib/comments/templates/comments/form.html:6
|
||||
#: contrib/comments/templates/comments/form.html:8
|
||||
@ -600,7 +601,7 @@ msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)"
|
||||
|
||||
#: contrib/admin/views/doc.py:292
|
||||
msgid "Relation to parent model"
|
||||
msgstr ""
|
||||
msgstr "Relacja do modelu rodzica"
|
||||
|
||||
#: contrib/admin/views/doc.py:293
|
||||
msgid "Phone number"
|
||||
@ -794,6 +795,9 @@ msgid ""
|
||||
"objects, but your account doesn't have permission to delete the following "
|
||||
"types of objects:"
|
||||
msgstr ""
|
||||
"Skasowanie %(object_name)s '%(object)s' spowoduje kasację zależnych "
|
||||
"obiektów, lecz twoje uprawnienia nie pozwalają na usunięcie następujących "
|
||||
"typów obiektów:"
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:21
|
||||
#, python-format
|
||||
@ -801,6 +805,8 @@ msgid ""
|
||||
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
|
||||
"the following related items will be deleted:"
|
||||
msgstr ""
|
||||
"Czy chcesz skasować %(object_name)s \"%(object)s\"? Wszystkie "
|
||||
"zależne obiekty zostaną skasowane:"
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:26
|
||||
msgid "Yes, I'm sure"
|
||||
@ -820,11 +826,10 @@ msgid "View on site"
|
||||
msgstr "Pokaż na stronie"
|
||||
|
||||
#: contrib/admin/templates/admin/change_form.html:30
|
||||
#, fuzzy
|
||||
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ższy błąd"
|
||||
msgstr[1] "Proszę popraw poniższe błędy"
|
||||
|
||||
#: contrib/admin/templates/admin/change_form.html:48
|
||||
msgid "Ordering"
|
||||
@ -965,11 +970,11 @@ msgstr "Zespół %(site_name)s"
|
||||
|
||||
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
|
||||
msgid "Bookmarklets"
|
||||
msgstr ""
|
||||
msgstr "Zakładki"
|
||||
|
||||
#: contrib/admin/templates/admin_doc/bookmarklets.html:5
|
||||
msgid "Documentation bookmarklets"
|
||||
msgstr ""
|
||||
msgstr "Zakładki Dokumentacji"
|
||||
|
||||
#: contrib/admin/templates/admin_doc/bookmarklets.html:9
|
||||
msgid ""
|
||||
@ -1094,6 +1099,8 @@ msgid ""
|
||||
"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
|
||||
"use 'flatpages/default'."
|
||||
msgstr ""
|
||||
"Przykład: 'flatpages/contact_page'. Jeżeli nie podane system użyje "
|
||||
"'flatpages/default'."
|
||||
|
||||
#: contrib/flatpages/models.py:14
|
||||
msgid "registration required"
|
||||
@ -1105,11 +1112,11 @@ msgstr "Jeżeli zaznaczone - tylko zalogowani użytkownicy będą mogli zobaczy
|
||||
|
||||
#: contrib/flatpages/models.py:18
|
||||
msgid "flat page"
|
||||
msgstr ""
|
||||
msgstr "strona statyczna"
|
||||
|
||||
#: contrib/flatpages/models.py:19
|
||||
msgid "flat pages"
|
||||
msgstr ""
|
||||
msgstr "strony statyczne"
|
||||
|
||||
#: contrib/auth/models.py:13 contrib/auth/models.py:26
|
||||
msgid "name"
|
||||
@ -1117,7 +1124,7 @@ msgstr "nazwa"
|
||||
|
||||
#: contrib/auth/models.py:15
|
||||
msgid "codename"
|
||||
msgstr ""
|
||||
msgstr "nazwa kodowa"
|
||||
|
||||
#: contrib/auth/models.py:17
|
||||
msgid "permission"
|
||||
@ -1161,11 +1168,11 @@ msgstr "Użyj '[algo]$[salt]$[hexdigest]'"
|
||||
|
||||
#: contrib/auth/models.py:60
|
||||
msgid "staff status"
|
||||
msgstr "stan w zespole"
|
||||
msgstr "w zespole"
|
||||
|
||||
#: contrib/auth/models.py:60
|
||||
msgid "Designates whether the user can log into this admin site."
|
||||
msgstr "Oznaczy czy użytkownik może zalogować się do panelu admina."
|
||||
msgstr "Oznacza czy użytkownik może zalogować się do panelu admina."
|
||||
|
||||
#: contrib/auth/models.py:61
|
||||
msgid "active"
|
||||
@ -1195,15 +1202,14 @@ msgstr ""
|
||||
msgid "user permissions"
|
||||
msgstr "uprawnienia użytkownika"
|
||||
|
||||
#kurwa
|
||||
#: contrib/auth/models.py:70
|
||||
#, fuzzy
|
||||
msgid "user"
|
||||
msgstr "Użytkownik"
|
||||
msgstr "użytkownik"
|
||||
|
||||
#: contrib/auth/models.py:71
|
||||
#, fuzzy
|
||||
msgid "users"
|
||||
msgstr "Uzytkownicy"
|
||||
msgstr "użytkownicy"
|
||||
|
||||
#: contrib/auth/models.py:76
|
||||
msgid "Personal info"
|
||||
@ -1222,7 +1228,6 @@ msgid "Groups"
|
||||
msgstr "Grupy"
|
||||
|
||||
#: contrib/auth/models.py:219
|
||||
#, fuzzy
|
||||
msgid "message"
|
||||
msgstr "wiadomość"
|
||||
|
||||
@ -1371,7 +1376,6 @@ msgid "December"
|
||||
msgstr "Grudzień"
|
||||
|
||||
#: utils/dates.py:19
|
||||
#, fuzzy
|
||||
msgid "jan"
|
||||
msgstr "sty"
|
||||
|
||||
@ -1472,11 +1476,10 @@ msgstr[0] "dzień"
|
||||
msgstr[1] "dni"
|
||||
|
||||
#: utils/timesince.py:16
|
||||
#, fuzzy
|
||||
msgid "hour"
|
||||
msgid_plural "hours"
|
||||
msgstr[0] "godzina"
|
||||
msgstr[1] "godzina"
|
||||
msgstr[1] "godzin"
|
||||
|
||||
#: utils/timesince.py:17
|
||||
msgid "minute"
|
||||
@ -1569,7 +1572,6 @@ msgid "Slovak"
|
||||
msgstr "Słowacki"
|
||||
|
||||
#: conf/global_settings.py:58
|
||||
#, fuzzy
|
||||
msgid "Slovenian"
|
||||
msgstr "Słowacki"
|
||||
|
||||
@ -1582,9 +1584,8 @@ msgid "Swedish"
|
||||
msgstr "Szwedzki"
|
||||
|
||||
#: conf/global_settings.py:61
|
||||
#, fuzzy
|
||||
msgid "Ukrainian"
|
||||
msgstr "Brazylijski"
|
||||
msgstr "Ukraiński"
|
||||
|
||||
#: conf/global_settings.py:62
|
||||
msgid "Simplified Chinese"
|
||||
@ -1715,14 +1716,14 @@ msgstr "Odnośnik %s jest nieprawidłowy."
|
||||
|
||||
#: core/validators.py:214
|
||||
msgid "Enter a valid U.S. state abbreviation."
|
||||
msgstr "Wpisz poprawny kod stanu U.S."
|
||||
msgstr "Wpisz poprawny kod stanu U.S.A."
|
||||
|
||||
#: core/validators.py:229
|
||||
#, fuzzy, python-format
|
||||
#, 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] "Nie wolno przeklinać! Słowo %s jest niedozwolone."
|
||||
msgstr[1] "Nie wolno przeklinać! Słowo %s jest niedozwolone."
|
||||
msgstr[1] "Nie wolno przeklinać! Słowa %s są niedozwolone."
|
||||
|
||||
#: core/validators.py:236
|
||||
#, python-format
|
||||
@ -1745,11 +1746,11 @@ msgstr "To pole musi być uzupełnione jeśli %(field)s jest %(value)s"
|
||||
#: core/validators.py:294
|
||||
#, python-format
|
||||
msgid "This field must be given if %(field)s is not %(value)s"
|
||||
msgstr ""
|
||||
msgstr "To pole musi być wypełnione jeżeli %(field)s nie jest %(value)s"
|
||||
|
||||
#: core/validators.py:313
|
||||
msgid "Duplicate values are not allowed."
|
||||
msgstr ""
|
||||
msgstr "Duplikaty są niedozwolone."
|
||||
|
||||
#: core/validators.py:336
|
||||
#, python-format
|
||||
@ -1761,20 +1762,20 @@ msgid "Please enter a valid decimal number."
|
||||
msgstr "Proszę wpisać poprawną liczbę dziesiętną."
|
||||
|
||||
#: core/validators.py:349
|
||||
#, fuzzy, python-format
|
||||
#, 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] "Proszę wpisać poprawną liczbę dziesiętną."
|
||||
msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną."
|
||||
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."
|
||||
|
||||
#: core/validators.py:352
|
||||
#, fuzzy, python-format
|
||||
#, 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] "Proszę wpisać poprawną liczbę dziesiętną."
|
||||
msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną."
|
||||
msgstr[0] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po przecinku."
|
||||
msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po przecinku."
|
||||
|
||||
#: core/validators.py:362
|
||||
#, python-format
|
||||
@ -1797,13 +1798,14 @@ msgstr "To pole jest nieprawidłowe."
|
||||
#: core/validators.py:426
|
||||
#, python-format
|
||||
msgid "Could not retrieve anything from %s."
|
||||
msgstr "Nie można otrzymać nic z %s."
|
||||
msgstr "Nie można nic pobrać z %s."
|
||||
|
||||
#: core/validators.py:429
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
|
||||
msgstr ""
|
||||
"URL %(url)s zwrócił niepoprawny Content-Type header '%(contenttype)s'."
|
||||
|
||||
|
||||
#: core/validators.py:462
|
||||
@ -1866,17 +1868,15 @@ msgstr "To pole jest wymagane"
|
||||
|
||||
#: db/models/fields/__init__.py:337
|
||||
msgid "This value must be an integer."
|
||||
msgstr ""
|
||||
msgstr "Ta wartość musi być liczbą całkowitą"
|
||||
|
||||
#: db/models/fields/__init__.py:369
|
||||
#, fuzzy
|
||||
msgid "This value must be either True or False."
|
||||
msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
|
||||
msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)."
|
||||
|
||||
#: db/models/fields/__init__.py:385
|
||||
#, fuzzy
|
||||
msgid "This field cannot be null."
|
||||
msgstr "To pole jest nieprawidłowe."
|
||||
msgstr "To pole nie może być puste."
|
||||
|
||||
#: db/models/fields/__init__.py:562
|
||||
msgid "Enter a valid filename."
|
||||
@ -1888,12 +1888,10 @@ msgid "Please enter a valid %s."
|
||||
msgstr "Proszę wpisać poprawne %s."
|
||||
|
||||
#: db/models/fields/related.py:579
|
||||
#, fuzzy
|
||||
msgid "Separate multiple IDs with commas."
|
||||
msgstr "Oddziel kilka pól ID przecinkami."
|
||||
|
||||
#: db/models/fields/related.py:581
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
|
||||
msgstr ""
|
||||
@ -1909,11 +1907,11 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: forms/__init__.py:380
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Ensure your text is less than %s character."
|
||||
msgid_plural "Ensure your text is less than %s characters."
|
||||
msgstr[0] "Upewnij się, że jest mniej niż %s znaków."
|
||||
msgstr[1] "Upewnij się, że jest mniej niż %s znaków."
|
||||
msgstr[0] "Upewnij się, że tekst ma mniej niż %s znak."
|
||||
msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków."
|
||||
|
||||
#: forms/__init__.py:385
|
||||
msgid "Line breaks are not allowed here."
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -171,7 +171,6 @@ var DateTimeShortcuts = {
|
||||
cal_nav_prev.className = 'calendarnav-previous';
|
||||
var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');');
|
||||
cal_nav_next.className = 'calendarnav-next';
|
||||
cal_box.appendChild(cal_nav);
|
||||
|
||||
// main box
|
||||
var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);
|
||||
|
@ -1,3 +1,4 @@
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.contrib.auth.models import User
|
||||
from django import forms, template
|
||||
@ -5,6 +6,8 @@ from django.shortcuts import render_to_response
|
||||
from django.http import HttpResponseRedirect
|
||||
|
||||
def user_add_stage(request):
|
||||
if not request.user.has_perm('auth.change_user'):
|
||||
raise PermissionDenied
|
||||
manipulator = UserCreationForm()
|
||||
if request.method == 'POST':
|
||||
new_data = request.POST.copy()
|
||||
@ -37,3 +40,4 @@ def user_add_stage(request):
|
||||
'opts': User._meta,
|
||||
'username_help_text': User._meta.get_field('username').help_text,
|
||||
}, context_instance=template.RequestContext(request))
|
||||
user_add_stage = staff_member_required(user_add_stage)
|
||||
|
@ -1,12 +1,9 @@
|
||||
class LazyUser(object):
|
||||
def __init__(self):
|
||||
self._user = None
|
||||
|
||||
def __get__(self, request, obj_type=None):
|
||||
if self._user is None:
|
||||
if not hasattr(request, '_cached_user'):
|
||||
from django.contrib.auth import get_user
|
||||
self._user = get_user(request)
|
||||
return self._user
|
||||
request._cached_user = get_user(request)
|
||||
return request._cached_user
|
||||
|
||||
class AuthenticationMiddleware(object):
|
||||
def process_request(self, request):
|
||||
|
@ -492,7 +492,7 @@ def syncdb(verbosity=2, interactive=True):
|
||||
# to do at this point.
|
||||
for app in models.get_apps():
|
||||
dispatcher.send(signal=signals.post_syncdb, sender=app,
|
||||
app=app, created_models=created_models,
|
||||
app=app, created_models=created_models,
|
||||
verbosity=verbosity, interactive=interactive)
|
||||
|
||||
# Install initial data for the app (but only if this is a model we've
|
||||
@ -552,7 +552,7 @@ def diffsettings():
|
||||
# Inspired by Postfix's "postconf -n".
|
||||
from django.conf import settings, global_settings
|
||||
|
||||
user_settings = _module_to_dict(settings)
|
||||
user_settings = _module_to_dict(settings._target)
|
||||
default_settings = _module_to_dict(global_settings)
|
||||
|
||||
output = []
|
||||
@ -903,27 +903,32 @@ def get_validation_errors(outfile, app=None):
|
||||
|
||||
rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()
|
||||
rel_query_name = f.related_query_name()
|
||||
for r in rel_opts.fields:
|
||||
if r.name == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
if r.name == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
for r in rel_opts.many_to_many:
|
||||
if r.name == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
if r.name == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
for r in rel_opts.get_all_related_many_to_many_objects():
|
||||
if r.field is not f:
|
||||
# If rel_name is none, there is no reverse accessor.
|
||||
# (This only occurs for symmetrical m2m relations to self).
|
||||
# If this is the case, there are no clashes to check for this field, as
|
||||
# there are no reverse descriptors for this field.
|
||||
if rel_name is not None:
|
||||
for r in rel_opts.fields:
|
||||
if r.name == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
if r.name == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
for r in rel_opts.many_to_many:
|
||||
if r.name == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
if r.name == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
|
||||
for r in rel_opts.get_all_related_many_to_many_objects():
|
||||
if r.field is not f:
|
||||
if r.get_accessor_name() == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
if r.get_accessor_name() == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
for r in rel_opts.get_all_related_objects():
|
||||
if r.get_accessor_name() == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
if r.get_accessor_name() == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
for r in rel_opts.get_all_related_objects():
|
||||
if r.get_accessor_name() == rel_name:
|
||||
e.add(opts, "Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
if r.get_accessor_name() == rel_query_name:
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
e.add(opts, "Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
|
||||
|
||||
# Check admin attribute.
|
||||
if opts.admin is not None:
|
||||
@ -1167,7 +1172,7 @@ def test(verbosity, app_labels):
|
||||
app_list = get_apps()
|
||||
else:
|
||||
app_list = [get_app(app_label) for app_label in app_labels]
|
||||
|
||||
|
||||
test_path = settings.TEST_RUNNER.split('.')
|
||||
# Allow for Python 2.5 relative paths
|
||||
if len(test_path) > 1:
|
||||
@ -1176,7 +1181,7 @@ def test(verbosity, app_labels):
|
||||
test_module_name = '.'
|
||||
test_module = __import__(test_module_name, [],[],test_path[-1])
|
||||
test_runner = getattr(test_module, test_path[-1])
|
||||
|
||||
|
||||
test_runner(app_list, verbosity)
|
||||
test.help_doc = 'Runs the test suite for the specified applications, or the entire site if no apps are specified'
|
||||
test.args = '[--verbosity] ' + APP_ARGS
|
||||
|
@ -74,8 +74,9 @@ def fastcgi_help(message=None):
|
||||
print message
|
||||
return False
|
||||
|
||||
def runfastcgi(argset):
|
||||
def runfastcgi(argset, **kwargs):
|
||||
options = FASTCGI_OPTIONS.copy()
|
||||
options.update(kwargs)
|
||||
for x in argset:
|
||||
if "=" in x:
|
||||
k, v = x.split('=', 1)
|
||||
|
@ -36,13 +36,14 @@ def get_relations(cursor, table_name):
|
||||
SELECT column_name, referenced_table_name, referenced_column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = %s
|
||||
AND table_schema = DATABASE()
|
||||
AND referenced_table_name IS NOT NULL
|
||||
AND referenced_column_name IS NOT NULL""", [table_name])
|
||||
constraints.extend(cursor.fetchall())
|
||||
except (ProgrammingError, OperationalError):
|
||||
# Fall back to "SHOW CREATE TABLE", for previous MySQL versions.
|
||||
# Go through all constraints and save the equal matches.
|
||||
cursor.execute("SHOW CREATE TABLE %s" % table_name)
|
||||
cursor.execute("SHOW CREATE TABLE %s" % quote_name(table_name))
|
||||
for row in cursor.fetchall():
|
||||
pos = 0
|
||||
while True:
|
||||
|
@ -68,23 +68,9 @@ def quote_name(name):
|
||||
return name # Quoting once is enough.
|
||||
return '"%s"' % name
|
||||
|
||||
def dictfetchone(cursor):
|
||||
"Returns a row from the cursor as a dict"
|
||||
# TODO: cursor.dictfetchone() doesn't exist in psycopg2,
|
||||
# but no Django code uses this. Safe to remove?
|
||||
return cursor.dictfetchone()
|
||||
|
||||
def dictfetchmany(cursor, number):
|
||||
"Returns a certain number of rows from a cursor as a dict"
|
||||
# TODO: cursor.dictfetchmany() doesn't exist in psycopg2,
|
||||
# but no Django code uses this. Safe to remove?
|
||||
return cursor.dictfetchmany(number)
|
||||
|
||||
def dictfetchall(cursor):
|
||||
"Returns all rows from a cursor as a dict"
|
||||
# TODO: cursor.dictfetchall() doesn't exist in psycopg2,
|
||||
# but no Django code uses this. Safe to remove?
|
||||
return cursor.dictfetchall()
|
||||
dictfetchone = util.dictfetchone
|
||||
dictfetchmany = util.dictfetchmany
|
||||
dictfetchall = util.dictfetchall
|
||||
|
||||
def get_last_insert_id(cursor, table_name, pk_name):
|
||||
cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name))
|
||||
|
@ -131,6 +131,9 @@ class RelatedObject(object):
|
||||
# many-to-many objects. It uses the lower-cased object_name + "_set",
|
||||
# but this can be overridden with the "related_name" option.
|
||||
if self.field.rel.multiple:
|
||||
# If this is a symmetrical m2m relation on self, there is no reverse accessor.
|
||||
if getattr(self.field.rel, 'symmetrical', False) and self.model == self.parent_model:
|
||||
return None
|
||||
return self.field.rel.related_name or (self.opts.object_name.lower() + '_set')
|
||||
else:
|
||||
return self.field.rel.related_name or (self.opts.object_name.lower())
|
||||
|
@ -38,10 +38,23 @@ def build_suite(app_module):
|
||||
except ValueError:
|
||||
# No doc tests in tests.py
|
||||
pass
|
||||
except ImportError:
|
||||
# No tests.py file for application
|
||||
pass
|
||||
|
||||
except ImportError, e:
|
||||
# Couldn't import tests.py. Was it due to a missing file, or
|
||||
# due to an import error in a tests.py that actually exists?
|
||||
import os.path
|
||||
from imp import find_module
|
||||
try:
|
||||
mod = find_module(TEST_MODULE, [os.path.dirname(app_module.__file__)])
|
||||
except ImportError:
|
||||
# 'tests' module doesn't exist. Move on.
|
||||
pass
|
||||
else:
|
||||
# The module exists, so there must be an import error in the
|
||||
# test module itself. We don't need the module; close the file
|
||||
# handle returned by find_module.
|
||||
mod[0].close()
|
||||
raise
|
||||
|
||||
return suite
|
||||
|
||||
def run_tests(module_list, verbosity=1, extra_tests=[]):
|
||||
|
@ -1,6 +1,6 @@
|
||||
def curry(*args, **kwargs):
|
||||
def curry(_curried_func, *args, **kwargs):
|
||||
def _curried(*moreargs, **morekwargs):
|
||||
return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items()))
|
||||
return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
|
||||
return _curried
|
||||
|
||||
class Promise:
|
||||
|
@ -82,14 +82,14 @@ Methods
|
||||
``user_permissions``. ``User`` objects can access their related
|
||||
objects in the same way as any other `Django model`_::
|
||||
|
||||
myuser.objects.groups = [group_list]
|
||||
myuser.objects.groups.add(group, group,...)
|
||||
myuser.objects.groups.remove(group, group,...)
|
||||
myuser.objects.groups.clear()
|
||||
myuser.objects.permissions = [permission_list]
|
||||
myuser.objects.permissions.add(permission, permission, ...)
|
||||
myuser.objects.permissions.remove(permission, permission, ...]
|
||||
myuser.objects.permissions.clear()
|
||||
myuser.groups = [group_list]
|
||||
myuser.groups.add(group, group,...)
|
||||
myuser.groups.remove(group, group,...)
|
||||
myuser.groups.clear()
|
||||
myuser.permissions = [permission_list]
|
||||
myuser.permissions.add(permission, permission, ...)
|
||||
myuser.permissions.remove(permission, permission, ...]
|
||||
myuser.permissions.clear()
|
||||
|
||||
In addition to those automatic API methods, ``User`` objects have the following
|
||||
custom methods:
|
||||
|
@ -295,6 +295,8 @@ give you the option of creating a superuser immediately.
|
||||
test
|
||||
----
|
||||
|
||||
**New in Django development version**
|
||||
|
||||
Discover and run tests for all installed models. See `Testing Django applications`_ for more information.
|
||||
|
||||
.. _testing django applications: ../testing/
|
||||
@ -348,6 +350,8 @@ options.
|
||||
--noinput
|
||||
---------
|
||||
|
||||
**New in Django development version**
|
||||
|
||||
Inform django-admin that the user should NOT be prompted for any input. Useful if
|
||||
the django-admin script will be executed as an unattended, automated script.
|
||||
|
||||
@ -369,6 +373,8 @@ Example output::
|
||||
--verbosity
|
||||
-----------
|
||||
|
||||
**New in Django development version**
|
||||
|
||||
Example usage::
|
||||
|
||||
django-admin.py syncdb --verbosity=2
|
||||
|
@ -270,7 +270,7 @@ In your Web root directory, add this to a file named ``.htaccess`` ::
|
||||
AddHandler fastcgi-script .fcgi
|
||||
RewriteEngine On
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]
|
||||
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]
|
||||
|
||||
Then, create a small script that tells Apache how to spawn your FastCGI
|
||||
program. Create a file ``mysite.fcgi`` and place it in your Web directory, and
|
||||
@ -289,7 +289,7 @@ be sure to make it executable ::
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"
|
||||
|
||||
from django.core.servers.fastcgi import runfastcgi
|
||||
runfastcgi(["method=threaded", "daemonize=false"])
|
||||
runfastcgi(method="threaded", daemonize="false")
|
||||
|
||||
Restarting the spawned server
|
||||
-----------------------------
|
||||
|
@ -321,7 +321,7 @@ about editing an existing one? It's shockingly similar to creating a new one::
|
||||
else:
|
||||
errors = {}
|
||||
# This makes sure the form accurate represents the fields of the place.
|
||||
new_data = place.__dict__
|
||||
new_data = manipulator.flatten_data()
|
||||
|
||||
form = forms.FormWrapper(manipulator, new_data, errors)
|
||||
return render_to_response('places/edit_form.html', {'form': form, 'place': place})
|
||||
@ -336,10 +336,10 @@ The only real differences are:
|
||||
* ``ChangeManipulator.original_object`` stores the instance of the
|
||||
object being edited.
|
||||
|
||||
* We set ``new_data`` to the original object's ``__dict__``. This makes
|
||||
sure the form fields contain the current values of the object.
|
||||
``FormWrapper`` does not modify ``new_data`` in any way, and templates
|
||||
cannot, so this is perfectly safe.
|
||||
* We set ``new_data`` based upon ``flatten_data()`` from the manipulator.
|
||||
``flatten_data()`` takes the data from the original object under
|
||||
manipulation, and converts it into a data dictionary that can be used
|
||||
to populate form elements with the existing values for the object.
|
||||
|
||||
* The above example uses a different template, so create and edit can be
|
||||
"skinned" differently if needed, but the form chunk itself is completely
|
||||
|
@ -92,7 +92,8 @@ Writing unittests
|
||||
|
||||
Like doctests, Django's unit tests use a standard library module: unittest_.
|
||||
As with doctests, Django's test runner looks for any unit test cases defined
|
||||
in ``models.py``, or in a ``tests.py`` file in your application directory.
|
||||
in ``models.py``, or in a ``tests.py`` file stored in the application
|
||||
directory.
|
||||
|
||||
An equivalent unittest test case for the above example would look like::
|
||||
|
||||
@ -110,8 +111,9 @@ An equivalent unittest test case for the above example would look like::
|
||||
self.assertEquals(self.cat.speak(), 'The cat says "meow"')
|
||||
|
||||
When you `run your tests`_, the test utility will find all the test cases
|
||||
(that is, subclasses of ``unittest.TestCase``) in ``tests.py``, automatically
|
||||
build a test suite out of those test cases, and run that suite.
|
||||
(that is, subclasses of ``unittest.TestCase``) in ``models.py`` and
|
||||
``tests.py``, automatically build a test suite out of those test cases,
|
||||
and run that suite.
|
||||
|
||||
For more details about ``unittest``, see the `standard library unittest
|
||||
documentation`_.
|
||||
@ -197,10 +199,10 @@ used as test conditions.
|
||||
.. _Selenium: http://www.openqa.org/selenium/
|
||||
|
||||
The Test Client is stateful; if a cookie is returned as part of a response,
|
||||
that cookie is provided as part of the next request. Expiry policies for these
|
||||
cookies are not followed; if you want a cookie to expire, either delete it
|
||||
manually from ``client.cookies``, or create a new Client instance (which will
|
||||
effectively delete all cookies).
|
||||
that cookie is provided as part of the next request issued to that Client
|
||||
instance. Expiry policies for these cookies are not followed; if you want
|
||||
a cookie to expire, either delete it manually from ``client.cookies``, or
|
||||
create a new Client instance (which will effectively delete all cookies).
|
||||
|
||||
Making requests
|
||||
~~~~~~~~~~~~~~~
|
||||
@ -210,7 +212,6 @@ no arguments at time of construction. Once constructed, the following methods
|
||||
can be invoked on the ``Client`` instance.
|
||||
|
||||
``get(path, data={})``
|
||||
|
||||
Make a GET request on the provided ``path``. The key-value pairs in the
|
||||
data dictionary will be used to create a GET data payload. For example::
|
||||
|
||||
@ -222,7 +223,6 @@ can be invoked on the ``Client`` instance.
|
||||
http://yoursite.com/customers/details/?name='fred'&age=7
|
||||
|
||||
``post(path, data={})``
|
||||
|
||||
Make a POST request on the provided ``path``. The key-value pairs in the
|
||||
data dictionary will be used to create the POST data payload. This payload
|
||||
will be transmitted with the mimetype ``multipart/form-data``.
|
||||
@ -243,7 +243,6 @@ can be invoked on the ``Client`` instance.
|
||||
need to manually close the file after it has been provided to the POST.
|
||||
|
||||
``login(path, username, password)``
|
||||
|
||||
In a production site, it is likely that some views will be protected with
|
||||
the @login_required URL provided by ``django.contrib.auth``. Interacting
|
||||
with a URL that has been login protected is a slightly complex operation,
|
||||
@ -307,9 +306,12 @@ The following is a simple unit test using the Test Client::
|
||||
# Every test needs a client
|
||||
self.client = Client()
|
||||
def test_details(self):
|
||||
# Issue a GET request
|
||||
response = self.client.get('/customer/details/')
|
||||
|
||||
# Check that the respose is 200 OK
|
||||
self.failUnlessEqual(response.status_code, 200)
|
||||
# Check that the rendered context contains 5 customers
|
||||
self.failUnlessEqual(len(response.context['customers']), 5)
|
||||
|
||||
Fixtures
|
||||
|
@ -68,15 +68,34 @@ class SelfClashForeign(models.Model):
|
||||
foreign_1 = models.ForeignKey("SelfClashForeign", related_name='id')
|
||||
foreign_2 = models.ForeignKey("SelfClashForeign", related_name='src_safe')
|
||||
|
||||
class ValidM2M(models.Model):
|
||||
src_safe = models.CharField(maxlength=10)
|
||||
validm2m = models.CharField(maxlength=10)
|
||||
|
||||
# M2M fields are symmetrical by default. Symmetrical M2M fields
|
||||
# on self don't require a related accessor, so many potential
|
||||
# clashes are avoided.
|
||||
validm2m_set = models.ManyToManyField("ValidM2M")
|
||||
|
||||
m2m_1 = models.ManyToManyField("ValidM2M", related_name='id')
|
||||
m2m_2 = models.ManyToManyField("ValidM2M", related_name='src_safe')
|
||||
|
||||
m2m_3 = models.ManyToManyField('self')
|
||||
m2m_4 = models.ManyToManyField('self')
|
||||
|
||||
class SelfClashM2M(models.Model):
|
||||
src_safe = models.CharField(maxlength=10)
|
||||
selfclashm2m = models.CharField(maxlength=10)
|
||||
|
||||
selfclashm2m_set = models.ManyToManyField("SelfClashM2M")
|
||||
m2m_1 = models.ManyToManyField("SelfClashM2M", related_name='id')
|
||||
m2m_2 = models.ManyToManyField("SelfClashM2M", related_name='src_safe')
|
||||
|
||||
# Non-symmetrical M2M fields _do_ have related accessors, so
|
||||
# there is potential for clashes.
|
||||
selfclashm2m_set = models.ManyToManyField("SelfClashM2M", symmetrical=False)
|
||||
|
||||
m2m_1 = models.ManyToManyField("SelfClashM2M", related_name='id', symmetrical=False)
|
||||
m2m_2 = models.ManyToManyField("SelfClashM2M", related_name='src_safe', symmetrical=False)
|
||||
|
||||
m2m_3 = models.ManyToManyField('self', symmetrical=False)
|
||||
m2m_4 = models.ManyToManyField('self', symmetrical=False)
|
||||
|
||||
model_errors = """invalid_models.fielderrors: "charfield": CharFields require a "maxlength" attribute.
|
||||
invalid_models.fielderrors: "floatfield": FloatFields require a "decimal_places" attribute.
|
||||
@ -147,9 +166,17 @@ invalid_models.selfclashforeign: Accessor for field 'foreign_2' clashes with fie
|
||||
invalid_models.selfclashforeign: Reverse query name for field 'foreign_2' clashes with field 'SelfClashForeign.src_safe'. Add a related_name argument to the definition for 'foreign_2'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'selfclashm2m_set' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'selfclashm2m_set'.
|
||||
invalid_models.selfclashm2m: Reverse query name for m2m field 'selfclashm2m_set' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'selfclashm2m_set'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'selfclashm2m_set' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'selfclashm2m_set'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_1' clashes with field 'SelfClashM2M.id'. Add a related_name argument to the definition for 'm2m_1'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_2' clashes with field 'SelfClashM2M.src_safe'. Add a related_name argument to the definition for 'm2m_2'.
|
||||
invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_1' clashes with field 'SelfClashM2M.id'. Add a related_name argument to the definition for 'm2m_1'.
|
||||
invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_2' clashes with field 'SelfClashM2M.src_safe'. Add a related_name argument to the definition for 'm2m_2'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'.
|
||||
invalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'.
|
||||
invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_3' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'm2m_3'.
|
||||
invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_4' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'm2m_4'.
|
||||
"""
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user