1
0
mirror of https://github.com/django/django.git synced 2025-07-04 09:49:12 +00:00

merged to trunk r1124

git-svn-id: http://code.djangoproject.com/svn/django/branches/new-admin@1125 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Robert Wittams 2005-11-08 15:16:12 +00:00
commit 5abf214ea6
52 changed files with 5867 additions and 4258 deletions

View File

@ -70,7 +70,13 @@ for lang in languages:
if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath))
cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % (
os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile))
msgs = os.popen(cmd, 'r').read()
(stdin, stdout, stderr) = os.popen3(cmd, 'r')
msgs = stdout.read()
errors = stderr.read()
if errors:
print "errors happened while running xgettext on %s" % file
print errors
sys.exit(8)
if thefile != file:
old = '#: '+os.path.join(dirpath, thefile)[2:]
new = '#: '+os.path.join(dirpath, file)[2:]
@ -80,10 +86,22 @@ for lang in languages:
if thefile != file:
os.unlink(os.path.join(dirpath, thefile))
msgs = os.popen('msguniq %s' % potfile, 'r').read()
(stdin, stdout, stderr) = os.popen3('msguniq %s' % potfile, 'r')
msgs = stdout.read()
errors = stderr.read()
if errors:
print "errors happened while running msguniq"
print errors
sys.exit(8)
open(potfile, 'w').write(msgs)
if os.path.exists(pofile):
msgs = os.popen('msgmerge %s %s' % (pofile, potfile), 'r').read()
(stdin, stdout, stderr) = os.popen3('msgmerge -q %s %s' % (pofile, potfile), 'r')
msgs = stdout.read()
errors = stderr.read()
if errors:
print "errors happened while running msgmerge"
print errors
sys.exit(8)
open(pofile, 'wb').write(msgs)
os.unlink(potfile)

View File

@ -41,11 +41,12 @@ LANGUAGES = (
('fr', _('French')),
('gl', _('Galician')),
('it', _('Italian')),
('no-nb', _('Norwegian')),
('no', _('Norwegian')),
('pt-br', _('Brazilian')),
('ru', _('Russian')),
('sr', _('Serbian')),
('zh-cn', _('Simplified Chinese')),
('sk', _('Slovak')),
)
# Not-necessarily-technical managers of the site. They get broken link
@ -147,6 +148,26 @@ SECRET_KEY = ''
# Path to the "jing" executable -- needed to validate XMLFields
JING_PATH = "/usr/bin/jing"
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT.
# Example: "http://media.lawrence.com"
MEDIA_URL = ''
# Default formatting for date objects. See all available format strings here:
# http://www.djangoproject.com/documentation/templates/#now
DATE_FORMAT = 'N j, Y'
# Default formatting for datetime objects. See all available format strings here:
# http://www.djangoproject.com/documentation/templates/#now
DATETIME_FORMAT = 'N j, Y, P'
# Default formatting for time objects. See all available format strings here:
# http://www.djangoproject.com/documentation/templates/#now
TIME_FORMAT = 'P'
##############
# MIDDLEWARE #
##############
@ -204,11 +225,3 @@ COMMENTS_FIRST_FEW = 0
# A tuple of IP addresses that have been banned from participating in various
# Django-powered features.
BANNED_IPS = ()
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT.
# Example: "http://media.lawrence.com"
MEDIA_URL = ''

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -16,36 +16,110 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/models/admin.py:9
msgid "object id"
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/models/admin.py:10
msgid "object repr"
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/models/admin.py:11
msgid "action flag"
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/models/admin.py:12
msgid "change message"
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/models/admin.py:15
msgid "log entry"
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/models/admin.py:16
msgid "log entries"
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:600
#, python-format
msgid "Add %s"
msgstr ""
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, python-format
msgid "Changed %s."
msgstr ""
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, python-format
msgid "Change %s"
msgstr ""
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, python-format
msgid "Change history: %s"
msgstr ""
#: contrib/admin/views/decorators.py:22
@ -74,112 +148,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, python-format
msgid "Add %s"
msgstr ""
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, python-format
msgid "Changed %s."
msgstr ""
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, python-format
msgid "Change %s"
msgstr ""
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, python-format
msgid "Change history: %s"
msgstr ""
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -243,7 +211,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr ""
@ -255,6 +223,53 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr ""
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr ""
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
msgid "Home"
msgstr ""
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
msgstr ""
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr ""
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr ""
#: contrib/admin/templates/admin/500.html:10
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr ""
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
@ -280,36 +295,6 @@ msgstr ""
msgid "None available"
msgstr ""
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: 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
msgid "Home"
msgstr ""
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
msgstr ""
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr ""
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
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/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -337,14 +322,6 @@ msgid ""
"admin site."
msgstr ""
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr ""
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr ""
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr ""
@ -357,31 +334,16 @@ msgstr ""
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr ""
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr ""
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr ""
#: contrib/admin/templates/admin/delete_confirmation.html:7
@ -403,16 +365,22 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
@ -543,6 +511,38 @@ msgstr ""
msgid "The %(site_name)s team"
msgstr ""
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr ""
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr ""
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr ""
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr ""
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr ""
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr ""
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr ""
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
@ -647,138 +647,138 @@ msgstr ""
msgid "Dec."
msgstr ""
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr ""
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr ""
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr ""
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr ""
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr ""
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr ""
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr ""
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr ""
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr ""
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr ""
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr ""
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr ""
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr ""
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr ""
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr ""
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr ""
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr ""
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr ""
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr ""
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr ""
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr ""
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr ""
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr ""
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr ""
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr ""
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr ""
@ -920,165 +920,169 @@ msgstr ""
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr ""
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr ""
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#: core/validators.py:224
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1086,7 +1090,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1094,71 +1098,71 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#: core/validators.py:461
#, 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:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#: core/validators.py:475
#, 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:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: 2005-10-04 20:59GMT\n"
"Last-Translator: Ricardo Javier Cárdenes Medina <ricardo.cardenes@gmail."
"com>\n"
@ -17,39 +17,112 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.10.2\n"
#: contrib/admin/models/admin.py:6
#, fuzzy
msgid "action time"
msgstr "Fecha/hora"
#: contrib/admin/models/admin.py:9
msgid "object id"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/models/admin.py:10
msgid "object repr"
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/models/admin.py:11
msgid "action flag"
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/models/admin.py:12
msgid "change message"
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "Cambie para modificar"
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/models/admin.py:15
msgid "log entry"
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/models/admin.py:16
msgid "log entries"
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "Agregar"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Modificar"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "Modificar"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Cambiar clave"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -76,112 +149,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "Cambie para modificar"
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "Agregar"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Modificar"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "Modificar"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Cambiar clave"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -249,7 +216,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr ""
@ -261,35 +228,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Agregar"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Sitio de administración de Django"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Modificar"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "No tiene permiso para editar nada."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Acciones recientes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mis acciones"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Ninguno disponible"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administración de Django"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -320,6 +270,40 @@ msgstr ""
"mediante correo electrónico y debería arreglarse en breve. Gracias por su "
"paciencia"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Página no encontrada"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Lo sentimos, pero no se encuentra la página solicitada."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Agregar"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Modificar"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "No tiene permiso para editar nada."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Acciones recientes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mis acciones"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Ninguno disponible"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -349,14 +333,6 @@ msgstr ""
"Este objeto no tiene histórico de cambios. Probablemente no fue añadido "
"usando este sitio de administración."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Sitio de administración de Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administración de Django"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Usuario:"
@ -369,32 +345,17 @@ msgstr "Clave:"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "¿Ha <a href=\"/password_reset/\">olvidado su clave</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Página no encontrada"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bienvenido,"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Lo sentimos, pero no se encuentra la página solicitada."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambiar clave"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Terminar"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -420,17 +381,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "Sí, estoy seguro"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bienvenido,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambiar clave"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Terminar"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -566,6 +533,39 @@ msgstr "
msgid "The %(site_name)s team"
msgstr "El equipo de %(site_name)s"
#: contrib/admin/models/admin.py:6
#, fuzzy
msgid "action time"
msgstr "Fecha/hora"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr ""
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr ""
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr ""
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr ""
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr ""
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr ""
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
@ -670,139 +670,139 @@ msgstr ""
msgid "Dec."
msgstr ""
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr ""
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr ""
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr ""
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr ""
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "Usuario:"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr ""
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr ""
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr ""
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr ""
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr ""
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr ""
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr ""
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr ""
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr ""
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr ""
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr ""
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr ""
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr ""
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr ""
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr ""
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr ""
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr ""
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr ""
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr ""
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr ""
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr ""
@ -948,167 +948,171 @@ msgstr ""
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "Este valor debe contener sólo letras, números y guión bajo."
#: core/validators.py:62
#: core/validators.py:63
#, fuzzy
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "Este valor debe contener sólo letras, números y guión bajo."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
#: core/validators.py:135
#, fuzzy
msgid "Enter a valid e-mail address."
msgstr "Dirección de correo:"
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#: core/validators.py:224
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1116,7 +1120,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1124,71 +1128,71 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#: core/validators.py:461
#, 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:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#: core/validators.py:475
#, 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:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: 2005-10-18 12:27+0200\n"
"Last-Translator: Laurent Rahuel <laurent.rahuel@gmail.com>\n"
"Language-Team: français <fr@li.org>\n"
@ -15,38 +15,112 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "heure de l'action"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id de l'objet"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "repr de l'objet"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "drapeau de l'action"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "message de modification"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "entrée de log"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "entrées de log"
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "Ajouter"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Modifier"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "Modifier"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Modifier votre mot de passe"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -73,112 +147,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "Ajouter"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Modifier"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "Modifier"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Modifier votre mot de passe"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -248,7 +216,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr "URL"
@ -260,35 +228,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Ajouter"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Site d'administration de Django"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Modifier"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Vous n'avez pas la permission d'éditer quoi que ce soit."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Actions récentes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mes actions"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Aucun(e) disponible"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administration de Django"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -319,6 +270,40 @@ msgstr ""
"administrateurs du site et sera corrigée dans les meilleurs délais. Merci "
"pour votre patience."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Cette page n'a pas été trouvée"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Nous sommes désolés, mais la page demandée est introuvable."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Ajouter"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Modifier"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Vous n'avez pas la permission d'éditer quoi que ce soit."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Actions récentes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mes actions"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Aucun(e) disponible"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -348,14 +333,6 @@ msgstr ""
"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été "
"ajouté au moyen de ce site d'administration."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Site d'administration de Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administration de Django"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Nom d'utilisateur"
@ -368,32 +345,17 @@ msgstr "Mot de passe"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "Avez vous <a href=\"/password_reset/\">perdu votre mot de passe</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Cette page n'a pas été trouvée"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bienvenue,"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Nous sommes désolés, mais la page demandée est introuvable."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Modifier votre mot de passe"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Déconnection"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -419,17 +381,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "Oui, je suis certain"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bienvenue,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Modifier votre mot de passe"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Déconnection"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -569,6 +537,38 @@ msgstr "Merci d'utiliser notre site!"
msgid "The %(site_name)s team"
msgstr "L'équipe %(site_name)s"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "heure de l'action"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id de l'objet"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "repr de l'objet"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "drapeau de l'action"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "message de modification"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "entrée de log"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "entrées de log"
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr "Lundi"
@ -673,55 +673,55 @@ msgstr "Nov."
msgid "Dec."
msgstr "Déc."
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr "nom de domaine"
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr "nom à afficher"
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr "site"
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr "sites"
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr "intitulé"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "nom"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr "paquetage"
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr "paquetages"
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr "nom du module python"
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr "type de contenu"
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr "types de contenu"
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr "redirigé depuis"
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
@ -729,11 +729,11 @@ msgstr ""
"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/events/"
"search/'."
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr "redirigé vers"
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
@ -741,38 +741,38 @@ msgstr ""
"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète "
"débutant par 'http://'."
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr "redirection"
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr "redirections"
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Par exemple : '/about/contact/'. Vérifiez la présence du caractère '/' en "
"début et en fin de chaine."
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr "titre"
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr "contenu"
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr "autoriser les commentaires"
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr "nom du template"
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
@ -780,41 +780,41 @@ msgstr ""
"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera "
"'flatfiles/default'."
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr "enregistrement requis"
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"Si coché, seuls les utilisateurs connectés auront la possibilité de voir "
"cette page."
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr "page à plat"
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr "pages à plat"
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr "clé de session"
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr "donnée de session"
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr "date d'expiration"
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr "session"
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr "sessions"
@ -961,74 +961,78 @@ msgstr "Serbe"
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr ""
"Ce champ ne doit contenir que des lettres, des nombres et des sous-tirets."
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
"Ce champ ne doit contenir que des lettres, des nombres, des sous-tirets et "
"des '/'."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr "Les lettres majuscules ne sont pas autorisées ici."
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr "Les lettres minuscules ne sont pas autorisées ici."
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr "Seulement des chiffres ([0-9]), séparés par des virgules."
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Entrez des adresses de courriel valides séparées par des virgules."
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr "Entrez une adresse IP valide."
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr "Vous ne pouvez pas laisser ce champ vide."
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr "Les caractères non numériques ne sont pas autorisés ici."
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr "Cette valeur ne peut contenir que des chiffres [0-9]."
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr "Entrez un nombre entier."
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr "Seules les lettres de l'alphabet sont autorisées ici."
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Entrez une date valide au format AAAA-MM-JJ."
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr "Entrez une heure valide au format HH:MM."
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM."
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr "Entrez une adresse de courriel valide."
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@ -1036,28 +1040,28 @@ msgstr ""
"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une "
"image ou bien est une image corrompue."
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "L'URL %s ne pointe pas vers une image valide."
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Les numéros de téléphone doivent être au format XX XX XX XX XX. \"%s\" est "
"incorrect."
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide."
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr "Une URL valide est requise."
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1066,69 +1070,69 @@ msgstr ""
"Du HTML valide est requis. Les erreurs spécifiques sont:\n"
"%s"
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formé: %s"
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr "URL invalide: %s"
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr "L'URL %s est un lien cassé."
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr "Entrez une abréviation d'état américain valide."
#: core/validators.py:226
#: core/validators.py:224
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Attention à votre langage,! Le mot %s n'est pas autorisé ici."
msgstr[1] "Attention à votre langage,! Les mots %s ne sont pas autorisés ici."
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr "Ce champ doit correspondre au champ '%s'."
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr "S'il vous plaît, saisissez au moins une valeur dans un des champs."
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr "S'il vous plaît, renseignez chaque champ ou laissez les deux vides."
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s"
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s"
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr "Des valeurs identiques ne sont pas autorisées."
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr "Cette valeur doit être une puissance de %s."
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr "S'il vous plaît, saisissez un nombre décimal valide."
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1138,7 +1142,7 @@ msgstr[0] ""
msgstr[1] ""
"S'il vous plaît, saisissez un nombre décimal valide avec au plus %s chiffres."
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1148,32 +1152,32 @@ msgstr[0] ""
msgstr[1] ""
"S'il vous plaît, saisissez un nombre décimal valide avec au plus %s décimales"
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
"Vérifiez que le fichier transféré fait au moins une taille de %s octets."
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
"Vérifiez que le fichier transféré fait au plus une taille de %s octets."
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr "Le format de ce champ est mauvais."
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr "Ce champ est invalide."
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Impossible de récupérer quoi que ce soit depuis %s."
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@ -1181,7 +1185,7 @@ msgstr ""
"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est "
"pas valide."
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1190,7 +1194,7 @@ msgstr ""
"Veuillez fermer le tag %(tag)s de la ligne %(line)s. (La ligne débutant par "
"\"%(start)s\".)"
#: core/validators.py:463
#: core/validators.py:461
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1199,7 +1203,7 @@ msgstr ""
"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. "
"(Ligne débutant par \"%(start)s\".)"
#: core/validators.py:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1208,7 +1212,7 @@ msgstr ""
"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant "
"par \"%(start)s\".)"
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1217,7 +1221,7 @@ msgstr ""
"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%"
"(start)s\".)"
#: core/validators.py:477
#: core/validators.py:475
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1226,7 +1230,7 @@ msgstr ""
"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. "
"(Ligne débutant par \"%(start)s\".)"
#: core/validators.py:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -16,38 +16,112 @@ msgstr ""
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "data azione"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id dell'oggetto"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "rappresentazione dell'oggetto"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "flag azione"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "messaggio"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "voce di log"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "voci di log"
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "Clicca per cambiare"
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "Aggiungi"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Cambia"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "Cambia"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Cambia la password"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -74,112 +148,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "Clicca per cambiare"
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "Aggiungi"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Cambia"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "Cambia"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Cambia la password"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -249,7 +217,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr "URL"
@ -261,35 +229,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Aggiungi"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Amministrazione sito Django"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Cambia"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Non hai i permessi di modificare nulla."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Azioni Recenti"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Azioni Proprie"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nessuna disponibile"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Amministrazione Django"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -319,6 +270,40 @@ msgstr ""
"C'è stato un errore. E' stato riportato agli amministratori del sito via e-"
"mail e verrà risolto a breve. Grazie per la pazienza."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Pagina non trovata"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Spiacente, ma la pagina richiesta non esiste."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Aggiungi"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Cambia"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Non hai i permessi di modificare nulla."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Azioni Recenti"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Azioni Proprie"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nessuna disponibile"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -348,14 +333,6 @@ msgstr ""
"Questo oggetto non ha cambiamenti storicizzati. Probabilmente non è stato "
"creato con questo sito di amministrazione."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Amministrazione sito Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Amministrazione Django"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Nome utente:"
@ -368,32 +345,17 @@ msgstr "Password:"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "Hai <a href=\"/password_reset/\">dimenticato la tua password</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Pagina non trovata"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Benvenuto,"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Spiacente, ma la pagina richiesta non esiste."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambia la password"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Esci"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -419,17 +381,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "Sì, sono sicuro"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Benvenuto,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambia la password"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Esci"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -567,6 +535,38 @@ msgstr "Ti ringraziamo per l'utilizzo del nostro sito!"
msgid "The %(site_name)s team"
msgstr "Il team di %(site_name)s"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "data azione"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id dell'oggetto"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "rappresentazione dell'oggetto"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "flag azione"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "messaggio"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "voce di log"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "voci di log"
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr "Lunedì"
@ -671,55 +671,55 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dic."
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr "nome a dominio"
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr "nome visualizzato"
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr "sito"
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr "siti"
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr "etichetta"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "nome"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr "pacchetto"
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr "pacchetti"
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr "nome del modulo python"
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr "tipo di contenuto"
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr "tipo di contenuti"
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr "redirigi da"
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
@ -727,48 +727,48 @@ msgstr ""
"Un percorso assoluto, senza nome a dominio. Esempio: '/events/search/'.Un "
"percorso assoluto, senza nome a dominio. Esempio: '/events/search/'."
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr "redirigi verso"
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Un percorso assoluto (come sopra) o un URL completa che inizi con 'http://'."
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr "redirigi"
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr "redirezioni"
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Esempio: '/about/contact/'. Attenzione alla barra ('/') iniziale e finale."
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr "titolo"
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr "contenuto"
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr "abilita commenti"
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr "nome modello"
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
@ -776,39 +776,39 @@ msgstr ""
"Esempio: 'flatfiles/contact_page'. Se non specificato, il sistema userà "
"'flatfiles/default'."
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr "registrazione obbligatoria"
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr "Se selezionata, solo gli utenti registrati potranno vedere la pagina."
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr "pagina statica"
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr "pagine statiche"
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr "chiave di sessione"
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr "dati di sessione"
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr "data di scadenza"
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr "sessione"
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr "sessioni"
@ -953,99 +953,103 @@ msgstr "Serbo"
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "Sono ammesse solo lettere, numeri e sottolineature ('_')."
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "Sono ammesse solo lettere, numeri, sottolineature ('_') e barre ('/')."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr "Non sono ammesse lettere maiuscole."
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr "Non sono ammesse lettere minuscole."
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr "Inserire solo numeri separati da virgole."
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Inserire indirizzi e-mail validi separati da virgole."
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr "Inserire un indirizzo IP valido."
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr "E' necessario inserire un valore."
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr "Sono ammessi soltanto caratteri alfabetici."
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr "Il valore non può essere composto solo da cifre."
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr "Inserire un numero."
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr "Sono ammessi solo caratteri alfabetici."
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Inserire un data valida in formato YYYY-MM-DD."
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr "Inserire un orario valido in formato HH:MM."
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Inserire una data/ora in formato YYYY-MM-DD HH:MM."
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr "Inserire un indirizzo e-mail valido."
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Caricare un'immagine valida. Il file inserito non è un'immagine o è corrotto."
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "L'URL %s non punta ad un'immagine valida."
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"I numeri di telefono devono essere in formato XXX-XXX-XXXX. \"%s\" non è "
"valido."
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "L'URL %s non punta ad un video QuickTime valido."
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr "Inserire un URL valido."
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1054,69 +1058,69 @@ msgstr ""
"E' richiesto HTML valido. Gli errori sono i seguenti:\n"
"%s"
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML malformato: %s"
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr "URL non valida: %s"
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr "L'URL %s è un link rotto."
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr "Inserire un nome di stato americano abbreviato valido."
#: core/validators.py:226
#: core/validators.py:224
#, 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] "Attenzione! La parola %s non è ammessa qui."
msgstr[1] "Attenzione! Le parole %s non sono ammesse qui."
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr "Questo campo deve corrispondere al campo '%s'."
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr "Inserire almeno un campo."
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti."
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Il campo è obbligatorio se %(field)s è %(value)s"
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Il campo non può essere valorizzato se %(field)s non è %(value)s"
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr "Non sono ammessi valori duplicati."
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr "Il valore deve essere una potenza di %s."
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr "Inserire un numero decimale valido."
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1124,7 +1128,7 @@ msgid_plural ""
msgstr[0] "Inserire un numero decimale con non più di %s cifre totali."
msgstr[1] ""
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1132,30 +1136,30 @@ msgid_plural ""
msgstr[0] "Inserire un decimale con non più di %s cifre decimali."
msgstr[1] ""
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Verifica che il file inserito sia almeno di %s byte."
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Verifica che il file inserito sia al massimo %d byte."
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr "Formato del file non valido."
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr "Il campo non è valido."
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Impossibile recuperare alcunchè da %s."
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@ -1163,7 +1167,7 @@ msgstr ""
"L'URL %(url)s restituisce un Content-Type header non valido '%(contenttype)"
"s'."
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1172,7 +1176,7 @@ msgstr ""
"Il tag %(tag)s alla linea %(line)s non è chiuso. (La linea comincia con \"%"
"(start)s\".)"
#: core/validators.py:463
#: core/validators.py:461
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1181,7 +1185,7 @@ msgstr ""
"Il testo che comincia a linea %(line)s non e' ammesso in questo contesto. "
"(La linea comincia con \"%(start)s\".)"
#: core/validators.py:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1190,7 +1194,7 @@ msgstr ""
"\"%(attr)s\" alla linea %(line)s è un attributo invalido. (La linea comincia "
"con \"%(start)s\".)"
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1199,7 +1203,7 @@ msgstr ""
"\"<%(tag)s>\" alla linea %(line)s tag non valido. (La linea comincia con \"%"
"(start)s\".)"
#: core/validators.py:477
#: core/validators.py:475
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1208,7 +1212,7 @@ msgstr ""
"Un tag alla linea %(line)s manca di uno o più attributi richiesti. (La linea "
"comincia con \"%(start)s\".)"
#: core/validators.py:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

Binary file not shown.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Espen Grndhaug <espen@grindhaug.org>\n"
"Language-Team: Norwegian\n"
@ -16,38 +16,112 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "handlings tid"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "objekt id"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "objekt repr"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "handlings flagg"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "endre melding"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "logg notis"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "logg innlegg"
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "Legg til"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Endre"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "Endre"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Endre passord"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -74,112 +148,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "Legg til"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Endre"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "Endre"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Endre passord"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -249,7 +217,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr "Internettadresse"
@ -261,35 +229,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Legg til"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django administrasjonsside"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Endre"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Du har ikke rettigheter til å endre."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Siste handlinger"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mine handlinger"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Ingen tilgjengelige"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django administrasjon"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -318,6 +269,40 @@ msgstr ""
"Det har vært en feil. Feilen er blitt rapportert til administrator via e-"
"mail, og vill bli fikset snart. Takk for din tålmodighet."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
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."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Legg til"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Endre"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Du har ikke rettigheter til å endre."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Siste handlinger"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mine handlinger"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Ingen tilgjengelige"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -347,14 +332,6 @@ msgstr ""
"Dette objektet har ingen endrings historie. Den var sannsynligvis ikke laget "
"via denne siden"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django administrasjonsside"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django administrasjon"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Brukernavn:"
@ -367,32 +344,17 @@ msgstr "Passord:"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "Har du <a href=\"/password_reset/\">glemt passordet ditt</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Fant ikke siden"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Velkommen"
#: 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."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Endre passord"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Log ut"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, python-format
@ -417,17 +379,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "Ja, jeg er sikker"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Velkommen"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Endre passord"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Log ut"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -565,6 +533,38 @@ msgstr "Takk for at du bruker vår side!"
msgid "The %(site_name)s team"
msgstr "Hilsen %(site_name)s"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "handlings tid"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "objekt id"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "objekt repr"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "handlings flagg"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "endre melding"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "logg notis"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "logg innlegg"
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr "Mondag"
@ -669,55 +669,55 @@ msgstr "Nov."
msgid "Dec."
msgstr "Des."
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr "domene navn"
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr "vist navn"
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr "side"
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr "sider"
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr "merkelapp"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "navn"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr "pakke"
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr "pakker"
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr "python modul navn"
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr "innholds type"
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr "innholds typer"
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr "videresend fra"
msgstr "omadresser fra"
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
@ -725,11 +725,11 @@ msgstr ""
"Denne burde vær en fullstendig sti, uten domene navnet. Foreksempel: '/"
"nyheter/les/"
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr "videresend til"
msgstr "omadresser til"
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
@ -737,37 +737,37 @@ msgstr ""
"Denne kan enten være en fullstendig sti (som over), eller en hel "
"internettadresse som starter med 'http://'"
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr "videresend"
msgstr "omadressering"
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr "vidersesendelser"
msgstr "omadresserelser"
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak."
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr "tittel"
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr "innhold"
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr "tillat kommentarer"
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr "mal navn"
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
@ -775,41 +775,41 @@ msgstr ""
"Eksempel: 'flatfiler/kontakt_side'. Vist denne ikke denne er gitt, vill "
"'flatfiles/default' bli brukt."
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr "registrering kreves"
#: models/core.py:88
#: models/core.py:94
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 "
"siden."
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr "flatside"
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr "flatsider"
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr "sesjon nøkkel"
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr "sesjon data"
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr "utløpsdato"
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr "sesjon"
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr "sesjoner"
@ -935,7 +935,7 @@ msgstr "Italiensk"
#: conf/global_settings.py:44
msgid "Norwegian"
msgstr ""
msgstr "Norsk"
#: conf/global_settings.py:45
msgid "Brazilian"
@ -951,75 +951,79 @@ msgstr "Serbisk"
#: conf/global_settings.py:48
msgid "Simplified Chinese"
msgstr "Simpel Kinesisk"
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:58
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "Dette feltet må bare inneholde bokstaver, nummer og understreker."
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
"Dette feltet må bare inneholde bokstaver, nummer, understreker og "
"skråstreker."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr "Tor skrift er ikke tillatt her."
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr "Små bokstaver er ikke tillatt her."
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr "Skriv inn bare tall, skilt med kommaer."
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Skriv inn e-post adresser skilt med kommaer."
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr "Vennligst skriv inn en godkjent IP adresse."
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr "Dette felte kan ikke være tomt."
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr "Det er bare tall som kan stå i dette feltet."
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr "Dette feltet kan ikke bare bestå av nummer."
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr "Skriv inn et helt nummer."
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr "Bare alfabetiske bokstaber er tillatt her."
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD formatet."
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr "Skriv inn tiden i TT:MM formatet."
#: core/validators.py:133
#: core/validators.py:131
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."
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr "Skriv inn en godkjent e-post adresse."
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@ -1027,27 +1031,27 @@ msgstr ""
"Lastopp et bilde. Filen du lastet opp var ikke et bilde, eller så var det et "
"ødelagt bilde"
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "Internettadressen %s peker ikke til et godkjent bilde."
#: core/validators.py:160
#: core/validators.py:158
#, 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."
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Internettadressen %s peker ikke til en godkjent QuickTime film."
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr "En godkjent internettadresse er påbudt."
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1056,69 +1060,69 @@ msgstr ""
"Godkjent HTML er påbudt. Feilene var:\n"
"%s"
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr "Ikke godkjent XML: %s"
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr "Ikke godkjent internettadresse: %s"
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr "Internettadresse fører til en side som ikke virker."
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr "Skriv inn en godkjent amerikansk stats forkortelse."
#: core/validators.py:226
#: core/validators.py:224
#, 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] "Pass munnen din! Ordet %s er ikke tillatt her."
msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr "Dette felte må være det samme som i '%s' feltet."
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr "Vennligst skriv inn noe i minst et felt."
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke."
#: core/validators.py:279
#: core/validators.py:277
#, 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"
#: core/validators.py:291
#: core/validators.py:289
#, 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"
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr "Like verdier er ikke tillatt."
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr "Denne verdien må være 'power' av %s."
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr "Vennligst skriv inn et godkjent desimal tall."
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1126,7 +1130,7 @@ msgid_plural ""
msgstr[0] "Skriv inn et desimal tall med maksimum %s total antall tall."
msgstr[1] "Skriv inn et desimal tall med maksimum %s total antall tall."
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1134,32 +1138,32 @@ msgid_plural ""
msgstr[0] "Skriv inn et desimal tall med maksimum %s tall bak komma. "
msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. "
#: core/validators.py:359
#: core/validators.py:357
#, 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?"
#: core/validators.py:360
#: core/validators.py:358
#, 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?"
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr "Formatet i dette feltet er feil."
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr "Dette feltet er feil."
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Klarte ikke å motta noe fra %s."
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@ -1167,7 +1171,7 @@ msgstr ""
"Tnternettadressen %(url)s returnerte en ikke godkjent Content-Type '%"
"(contenttype)s'."
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1176,7 +1180,7 @@ msgstr ""
"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linja starer med \"%(start)"
"s\".)"
#: core/validators.py:463
#: core/validators.py:461
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1185,7 +1189,7 @@ msgstr ""
"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linja starter "
"med \"%(start)s\".)"
#: core/validators.py:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1194,7 +1198,7 @@ msgstr ""
"\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linja starter "
"med \"%(start)s\".)"
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1203,7 +1207,7 @@ msgstr ""
"\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linja starter med "
"\"%(start)s\".)"
#: core/validators.py:477
#: core/validators.py:475
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1212,7 +1216,7 @@ msgstr ""
"En tag på linje %(line)s mangler en av de påbydte tillegga. (linja starter "
"med \"%(start)s\".)"
#: core/validators.py:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: 2005-10-11 09:12GMT-3\n"
"Last-Translator: João Paulo Farias <jpaulofarias@gmail.com>\n"
"Language-Team: Português do Brasil <pt-br@li.org>\n"
@ -16,38 +16,112 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "hora da ação"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id do objeto"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "repr do objeto"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "flag de ação"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "alterar mensagem"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "entrada de log"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "entradas de log"
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "Clique para alterar"
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "Adicionar"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Modificar"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "Modificar"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Alterar senha"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -74,112 +148,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "Clique para alterar"
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "Adicionar"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Modificar"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "Modificar"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Alterar senha"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -249,7 +217,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr "URL"
@ -261,35 +229,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Adicionar"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Site de administração do Django"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Modificar"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Você não tem permissão para edição."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Ações Recentes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Minhas Ações"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nenhuma disponível"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administração do Django"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -319,6 +270,40 @@ msgstr ""
"Houve um erro. Este foi reportado aos administradores do site através d e-"
"mail e deve ser consertado em breve. Obrigado pela compreensão."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Página não encontrada"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Desculpe, mas a página requisitada não pode ser encontrada."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Adicionar"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Modificar"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Você não tem permissão para edição."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Ações Recentes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Minhas Ações"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nenhuma disponível"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -348,14 +333,6 @@ msgstr ""
"Este objeto não tem um histórico de alterações. Ele provavelmente não foi "
"adicionado por este site de administração."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Site de administração do Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administração do Django"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Usuário:"
@ -368,32 +345,17 @@ msgstr "Senha:"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "Você <a href=\"/password_reset/\"esqueceu a senha</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Página não encontrada"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bem vindo,"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Desculpe, mas a página requisitada não pode ser encontrada."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Alterar senha"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Encerrar sessão"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -419,17 +381,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "Sim, tenho certeza"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bem vindo,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Alterar senha"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Encerrar sessão"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -566,6 +534,38 @@ msgstr "Obrigado por usar nosso site!"
msgid "The %(site_name)s team"
msgstr "Time do %(site_name)s"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "hora da ação"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id do objeto"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "repr do objeto"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "flag de ação"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "alterar mensagem"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "entrada de log"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "entradas de log"
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr "Segunda Feira"
@ -670,56 +670,56 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dez."
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr "nome do domínio"
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr "nome para exibição"
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr "site"
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr "sites"
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr "etiqueta"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "nome:"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr "pacote"
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr "pacotes"
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr "nome do módulo python"
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr "tipo de conteúdo"
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr "tipos de conteúdo"
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr "redirecionar de"
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
@ -727,11 +727,11 @@ msgstr ""
"Deve conter um caminho absoluto, excluindo o nome de domínio. Exemplo: '/"
"eventos/busca/'."
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr "redirecionar para"
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
@ -739,36 +739,36 @@ msgstr ""
"Deve conter um caminho absoluto (como acima) ou uma URL completa, começando "
"com 'http://'."
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr "redirecionar"
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr "redirecionamentos"
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final."
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr "título"
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr "conteúdo"
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr "habilitar comentários"
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr "nome do modelo"
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
@ -776,39 +776,39 @@ msgstr ""
"Exemplo: 'flatfiles/contact_page'. Se não for informado, será utilizado "
"'flatfiles/default'."
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr "é obrigatório registrar"
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr "Se estiver marcado, apenas usuários conectados poderão ver a página."
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr "página plana"
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr "páginas planas"
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr "chave da sessão"
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr "dados da sessão"
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr "data de expiração"
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr "sessão"
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr "sessões"
@ -957,71 +957,75 @@ msgstr "Sérvio"
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "Deve conter apenas letras, números e sublinhados (_)."
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "Deve conter apenas letras, números, sublinhados (_) e barras (/)."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr "Letras em maiúsculo não são permitidas aqui."
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr "Letras em minúsculo não são permitidas aqui."
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr "Informe apenas dígitos separados por vírgulas."
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Informe endereços de email válidos separados por vírgulas."
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr "Informe um endereço IP válido."
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr "Valores em branco não são permitidos."
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr "Caracteres não numéricos não são permitidos."
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr "Este valor não pode conter apenas dígitos."
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr "Informe um número inteiro."
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr "Apenas caracteres do alfabeto são permitidos aqui."
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Informe uma data válida no formato AAAA-MM-DD."
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr "Informe uma hora válida no formato HH:MM."
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM."
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr "Informe um endereço de email válido."
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@ -1029,27 +1033,27 @@ msgstr ""
"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está "
"corrompido."
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "A URL %s não aponta para um imagem válida."
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Números de telefone deves estar no formato XXX-XXX-XXXX.\"%s\" é inválido."
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "A URL %s não aponta para um vídeo QuickTime válido."
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr "Uma URL válida é exigida."
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1058,69 +1062,69 @@ msgstr ""
"HTML válido é exigido. Estes são os erros específicos:\n"
"%s"
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formado: %s"
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr "URL inválida: %s"
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr "A URL %s é um link quebrado."
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr "Informe uma abreviação válida de nome de um estado dos EUA."
#: core/validators.py:226
#: core/validators.py:224
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Lave sua boca! A palavra %s não é permitida aqui."
msgstr[1] "Lave sua boca! As palavras %s não são permitidas aqui."
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr "Este campo deve ser igual ao campo '%s'."
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr "Informe algo em pelo menos um campo."
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr "Informe ambos os campos ou deixe ambos vazios."
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s."
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s."
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr "Valores duplicados não são permitidos."
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr "Este valor deve ser uma potência de %s."
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr "Informe um número decimal."
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1128,7 +1132,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1136,30 +1140,30 @@ msgid_plural ""
msgstr[0] "Informe um número decimal com no máximo %s casa decimal."
msgstr[1] "Informe um número decimal com no máximo %s casas decimais."
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes."
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Verifique se o arquivo enviado tem no máximo %s bytes."
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr "O formato deste campo está errado."
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr "Este campo é inválido."
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Não foi possível receber dados de %s."
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@ -1167,7 +1171,7 @@ msgstr ""
"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type "
"inválido."
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1176,7 +1180,7 @@ msgstr ""
"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%"
"(start)s\".)"
#: core/validators.py:463
#: core/validators.py:461
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1185,7 +1189,7 @@ msgstr ""
"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha "
"começa com \"%(start)s\".)"
#: core/validators.py:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1194,7 +1198,7 @@ msgstr ""
"\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com "
"\"%(start)s\".)"
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1203,7 +1207,7 @@ msgstr ""
"\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%"
"(start)s\".)"
#: core/validators.py:477
#: core/validators.py:475
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1212,7 +1216,7 @@ msgstr ""
"Uma tag na linha %(line)s está não apresenta um ou mais atributos exigidos."
"(Linha começa com \"%(start)s\".)"
#: core/validators.py:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: 2005-10-05 00:00\n"
"Last-Translator: Dmitry Sorokin <ds@@dial.com.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,39 +15,112 @@ msgstr ""
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/models/admin.py:6
#, fuzzy
msgid "action time"
msgstr "äÁÔÁ/×ÒÅÍÑ"
#: contrib/admin/models/admin.py:9
msgid "object id"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/models/admin.py:10
msgid "object repr"
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/models/admin.py:11
msgid "action flag"
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/models/admin.py:12
msgid "change message"
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "ýÅÌËÎÉÔÅ ÄÌÑ ÉÚÍÅÎÅÎÉÑ"
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/models/admin.py:15
msgid "log entry"
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/models/admin.py:16
msgid "log entries"
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "äÏÂÁ×ÉÔØ"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "éÚÍÅÎÉÔØ"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "éÚÍÅÎÉÔØ"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -74,112 +147,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, fuzzy, python-format
msgid "Select %s to change"
msgstr "ýÅÌËÎÉÔÅ ÄÌÑ ÉÚÍÅÎÅÎÉÑ"
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "äÏÂÁ×ÉÔØ"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "éÚÍÅÎÉÔØ"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "éÚÍÅÎÉÔØ"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -247,7 +214,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr ""
@ -259,35 +226,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "äÏÂÁ×ÉÔØ"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "áÄÍÉÎÉÓÔÒÁÔÉ×ÎÙÊ ÓÁÊÔ Django"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "éÚÍÅÎÉÔØ"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÒÁ× ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "ðÏÓÌÅÄÎÉÅ äÅÊÓÔ×ÉÑ"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "íÏÉ äÅÊÓÔ×ÉÑ"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "îÅÄÏÓÔÕÐÎÏ"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "áÄÍÉÎÉÓÔÒÉÒÏ×ÁÎÉÅ Django"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -317,6 +267,40 @@ msgstr ""
"ðÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ. ïÔÞÅÔ Ï ÏÛÉÂËÅ ÏÔÐÒÁ×ÌÅÎ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁÍ ÓÁÊÔÁ ÐÏ e-mailÉ "
"ÏÎÁ ÄÏÌÖÎÁ ÂÙÔØ ×ÓËÏÒÅ ÉÓÐÒÁ×ÌÅÎÁ. âÌÁÇÏÄÁÒÉÍ ×ÁÓ ÎÁ ÔÅÒÐÅÎÉÅ É ÐÏÍÏÝØ."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "óÔÒÁÎÉÃÁ ÎÅ ÎÁÊÄÅÎÁ"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "ë ÓÏÖÁÌÅÎÉÀ, ÚÁÐÒÁÛÉ×ÁÅÍÁÑ ×ÁÍÉ ÓÔÒÁÎÉÃÁ ÎÅ ÎÁÊÄÅÎÁ."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "äÏÂÁ×ÉÔØ"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "éÚÍÅÎÉÔØ"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÒÁ× ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "ðÏÓÌÅÄÎÉÅ äÅÊÓÔ×ÉÑ"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "íÏÉ äÅÊÓÔ×ÉÑ"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "îÅÄÏÓÔÕÐÎÏ"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -346,14 +330,6 @@ msgstr ""
"äÁÎÎÙÊ ÏÂØÅËÔ ÎÅ ÉÍÅÅÔ ÉÓÔÏÒÉÉ ÉÚÍÅÎÅÎÉÑ. ÷ÏÚÍÏÖÎÏ ÏÎ ÎÅ ÂÙÌ ÄÏÂÁ×ÌÅÎ ÞÅÒÅÚ "
"ÄÁÎÎÙÊ ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÙÊ ÓÁÊÔ."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "áÄÍÉÎÉÓÔÒÁÔÉ×ÎÙÊ ÓÁÊÔ Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "áÄÍÉÎÉÓÔÒÉÒÏ×ÁÎÉÅ Django"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "éÍÑ:"
@ -366,32 +342,17 @@ msgstr "
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "÷Ù <a href=\"/password_reset/\">ÚÁÂÙÌÉ ÐÁÒÏÌØ</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "óÔÒÁÎÉÃÁ ÎÅ ÎÁÊÄÅÎÁ"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
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/base.html:23
msgid "Change password"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "÷ÙÈÏÄ"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -417,17 +378,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "äÁ, Ñ Õ×ÅÒÅÎ"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "äÏÂÒÏ ÐÏÖÁÌÏ×ÁÔØ,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "÷ÙÈÏÄ"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -563,6 +530,39 @@ msgstr "
msgid "The %(site_name)s team"
msgstr "ëÏÍÁÎÄÁ ÓÁÊÔÁ di %(site_name)s"
#: contrib/admin/models/admin.py:6
#, fuzzy
msgid "action time"
msgstr "äÁÔÁ/×ÒÅÍÑ"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr ""
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr ""
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr ""
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr ""
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr ""
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr ""
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
@ -667,139 +667,139 @@ msgstr ""
msgid "Dec."
msgstr ""
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr ""
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr ""
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr ""
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr ""
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "éÍÑ:"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr ""
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr ""
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr ""
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr ""
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr ""
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr ""
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr ""
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr ""
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr ""
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr ""
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr ""
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr ""
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr ""
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr ""
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr ""
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr ""
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr ""
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr ""
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr ""
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr ""
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr ""
@ -945,167 +945,171 @@ msgstr ""
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "úÎÁÞÅÎÉÅ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÔÏÌØËÏ ÂÕË×Ù, ÃÉÆÒÙ É ÐÏÄÞÅÒËÉ×ÁÎÉÑ."
#: core/validators.py:62
#: core/validators.py:63
#, fuzzy
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "úÎÁÞÅÎÉÅ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÔÏÌØËÏ ÂÕË×Ù, ÃÉÆÒÙ É ÐÏÄÞÅÒËÉ×ÁÎÉÑ."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
#: core/validators.py:135
#, fuzzy
msgid "Enter a valid e-mail address."
msgstr "E-mail ÁÄÒÅÓ:"
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#: core/validators.py:224
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1113,7 +1117,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1121,71 +1125,71 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#: core/validators.py:461
#, 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:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#: core/validators.py:475
#, 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:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django Serbian (latin) translation v1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
"PO-Revision-Date: 2005-11-03 00:28+0100\n"
"Last-Translator: Petar Marić <petar.maric@gmail.com>\n"
"Language-Team: Nesh <nesh@studioquatro.co.yu> & Petar <petar.maric@gmail."
@ -17,38 +17,112 @@ msgstr ""
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: ../../../../\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "Datum/vreme akcije"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id objekta"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "opis objekta"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "akcija"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "opis promene"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "unos u dnevnik izmena"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "unosi u dnevnik izmena"
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "Dodaj"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Izmena"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "Izmena"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Izmeni lozinku"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -75,112 +149,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "Dodaj"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "Izmena"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "Izmena"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "Izmeni lozinku"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -252,7 +220,7 @@ msgstr ""
# nesh: ovo se valjda ne prevodi
# petar: ne prevodi se
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr ""
@ -264,35 +232,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Dodaj"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django administracija sajta"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Izmena"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Nemate prava da vršite izmene."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Skorije akcije"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Moje akcije"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nema dostupnih"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django administracija"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -322,6 +273,40 @@ msgstr ""
"Dogodila se greška koja je prijavljena administratorima i biće popravljena "
"uskoro. Hvala Vam na strpljenju."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Strana nije pronađena"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Tražena strana ne postoji."
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "Dodaj"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Izmena"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Nemate prava da vršite izmene."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Skorije akcije"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Moje akcije"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nema dostupnih"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -351,14 +336,6 @@ msgstr ""
"Ovaj objekat nema istoriju promena. Najverovatnije nije dodat korišćenjem "
"administracije sajta."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django administracija sajta"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django administracija"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Korisničko ime:"
@ -371,33 +348,17 @@ msgstr "Lozinka:"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "Da li ste <a href=\"/password_reset/\">zaboravili Vašu lozinku?</a>?"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Strana nije pronađena"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Dobrodošli,"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Tražena strana ne postoji."
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Izmeni lozinku"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Odjavi se"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -422,17 +383,24 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "Da, siguran sam"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Dobrodošli,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Izmeni lozinku"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Odjavi se"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -569,6 +537,38 @@ msgstr "Hvala Vam na poseti!"
msgid "The %(site_name)s team"
msgstr "%(site_name)s tim"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "Datum/vreme akcije"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "id objekta"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "opis objekta"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "akcija"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "opis promene"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "unos u dnevnik izmena"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "unosi u dnevnik izmena"
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr "Ponedeljak"
@ -673,55 +673,55 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dec."
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr "ime domena"
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr "naziv"
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr "sajt"
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr "sajtovi"
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "ime"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr ""
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr ""
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr "ime python modula"
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr "tip sadržaja"
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr "tipovi sadržaja"
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr "redirekcija od"
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
@ -729,11 +729,11 @@ msgstr ""
"Ovde treba upisati apsolutnu putanju bez imena domena. Primer: '/events/"
"search/'."
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr "redirekcija na"
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
@ -741,38 +741,38 @@ msgstr ""
"Ovo može biti apsolutna putanja (kao gore) ili puni URL koji počinje sa "
"'http://'."
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr "redirekcija"
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr "redirekcije"
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Primer: '/about/contact/'. Proverite da li ste uneli početnu i kranju kosu "
"crtu."
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr "naslov"
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr "sadržaj"
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr "omogućite komentare"
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr "ime templejta"
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
@ -780,41 +780,41 @@ msgstr ""
"Primer: 'flatfiles/contact-page'. Ako nije dato sistem će koristiti "
"'flatfiles/default'."
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr "samo za registrovane korisnike"
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"Ako izaberete ovu opciju samo prijavljeni korisnici će imati pristup datoj "
"strani."
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr "statična strana"
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr "statične strane"
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr "ključ sesije"
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr "podaci sesije"
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr "datum prestanka važenja sesije"
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr "sesija"
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr "sesije"
@ -957,73 +957,77 @@ msgstr "Srpski"
msgid "Simplified Chinese"
msgstr ""
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
# nesh: Ovo je opis za stari SlugField
#: core/validators.py:58
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "Ovo polje može sadržati samo slova, brojeve i donju crtu (_)."
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
"Ovo polje može sadržati samo slova, brojeve, donju crtu (_) i kose crte."
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr "Velika slova ovde nisu dozvoljena."
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr "Mala slova ovde nisu dozvoljena."
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr "Unesite samo brojeve razdvojene zarezima."
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Unesite ispravne e-mail adrese razdvojene zarezima."
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr "Unesite ispravnu IP adresu."
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr "Prazne vrednosti ovde nisu dozvoljene."
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr "Ovde možete uneti samo brojeve."
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr "Podatak se ne može sastojati samo od brojeva."
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr "Unesite celi broj."
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr "Ovde možete koristiti samo slova."
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Unesite ispravan datum u YYYY-MM-DD formatu."
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr "Unesite ispravno vreme u HH:MM formatu."
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Unesite ispravan datum i vreme u YYYY-MM-DD HH:MM formatu."
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr "Unesite ispravnu e-mail adresu."
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@ -1031,27 +1035,27 @@ msgstr ""
"Pošaljite ispravnu sliku. Fajl koji ste poslali ili nije slika ili je sam "
"fajl oštećen."
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL %s ne pokazuje na ispravnu sliku"
# nesh: tel. brojevi su u američkom formatu, ovo se ionako neće koristiti u i18n delu
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL %s ne pokazuje na ispravni QuickTime video fajl."
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr "Unesite ispravan URL."
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1060,27 +1064,27 @@ msgstr ""
"Unesite ispravan HTML. Greške su:\n"
"%s"
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr "Neispravan XML: %s"
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr "Neispravan URL: %s"
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL %s je neispravan link."
# nesh: Ni ovo nije interesantno za i18n
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#: core/validators.py:224
#, 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."
@ -1088,43 +1092,43 @@ msgstr[0] "Pripazi na jezik! %s reč nije ovde dozvoljena."
msgstr[1] "Pripazi na jezik! %s reči nisu ovde dozvoljene."
msgstr[2] "Pripazi na jezik! %s reči nisu ovde dozvoljene."
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr "Ovo polje mora biti jednako sa poljem '%s'."
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr "Morate popuniti barem jedno polje."
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr "Popunite oba polja ili oba ostavite prazna."
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Ovo polje mora biti uneto ako polje %(field)s ima vrednost %(value)s"
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Ovo polje mora biti uneto ako polje %(field)s nema vrednost %(value)s"
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr "Duple vrednosti nisu dozvoljene."
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr "Vrednost mora biti stepena %s."
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr "Unesite ispravan decimalni broj."
#: core/validators.py:346
#: core/validators.py:344
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1133,7 +1137,7 @@ msgstr[0] "Unesite ispravan decimalni broj sa %s cifrom."
msgstr[1] "Unesite ispravan decimalni broj sa %s cifre."
msgstr[2] "Unesite ispravan decimalni broj sa %s cifara."
#: core/validators.py:349
#: core/validators.py:347
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1142,37 +1146,37 @@ msgstr[0] "Unesite decimalni broj sa najviše %s decimalnim mestom."
msgstr[1] "Unesite decimalni broj sa najviše %s decimalna mesta."
msgstr[2] "Unesite decimalni broj sa najviše %s decimalnih mesta."
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Veličina fajla mora biti najmanje %s bajtova."
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Veličina fajla mora biti najviše %s bajtova."
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr "Pogrešan format polja."
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr "Neispravno polje."
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Ništa nije moglo da se skine sa URL-a %s."
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"Sa URL-a %(url)s se vratio pogrešan Content-Type header '%(contenttype)s'."
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1181,7 +1185,7 @@ msgstr ""
"Zatvorite nezatvoren tag \"%(tag)s\" iz reda %(line)s. (Red počinje sa \"%"
"(start)s\".)"
#: core/validators.py:463
#: core/validators.py:461
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1190,7 +1194,7 @@ msgstr ""
"Tekst koji počinje u redu %(line)s nije dozvoljen u ovom kontekstu. (Red "
"počinje sa \"%(start)s\".)"
#: core/validators.py:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1199,7 +1203,7 @@ msgstr ""
"Atribut \"%(attr)s\" u red %(line)s je neispravan. (Red počinje sa \"%(start)"
"s\".)"
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1207,7 +1211,7 @@ msgid ""
msgstr ""
"Tag \"<%(tag)s>\" u redu %(line)s je neispravan. (Red počinje \"%(start)s\".)"
#: core/validators.py:477
#: core/validators.py:475
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1216,7 +1220,7 @@ msgstr ""
"Tag-u u redu %(line)s nedostaje jedan ili više atributa. (Red počinje sa \"%"
"(start)s\".)"
#: core/validators.py:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: django v1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-04 18:22+0100\n"
"POT-Creation-Date: 2005-11-08 15:05+0000\n"
"PO-Revision-Date: 2005-10-30 15:46+0800\n"
"Last-Translator: limodou <limodou@gmail.com>\n"
"Language-Team: Simplified Chinese <limodou@gmail.com>\n"
@ -18,38 +18,112 @@ msgstr ""
"X-Poedit-Country: CHINA\n"
"X-Poedit-SourceCharset: utf-8\n"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "动作时间"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "对象id"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "对象表示"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "动作标志"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "修改消息"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "日志记录"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "日志记录"
#: contrib/admin/templatetags/admin_list.py:256
msgid "All dates"
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:570
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:575 contrib/admin/views/main.py:651
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:583 contrib/admin/views/main.py:660
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:600
#, fuzzy, python-format
msgid "Add %s"
msgstr "增加"
#: contrib/admin/views/main.py:616
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:616 contrib/admin/views/main.py:618
#: contrib/admin/views/main.py:620
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:618
#, fuzzy, python-format
msgid "Changed %s."
msgstr "修改"
#: contrib/admin/views/main.py:620
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:623
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:648
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:657
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:695
#, fuzzy, python-format
msgid "Change %s"
msgstr "修改"
#: contrib/admin/views/main.py:775
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:780
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:809
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:812
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:827
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "修改口令"
#: contrib/admin/views/decorators.py:22
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
@ -76,112 +150,6 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
#: contrib/admin/views/main.py:128 contrib/admin/views/main.py:167
#: contrib/admin/views/main.py:187
#, python-format
msgid "<h3>By %s:</h3><ul>\n"
msgstr ""
#: contrib/admin/views/main.py:210
#, python-format
msgid "Select %s"
msgstr ""
#: contrib/admin/views/main.py:211
#, python-format
msgid "Select %s to change"
msgstr ""
#: contrib/admin/views/main.py:567
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
#: contrib/admin/views/main.py:572 contrib/admin/views/main.py:648
msgid "You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:580 contrib/admin/views/main.py:657
#, python-format
msgid "You may add another %s below."
msgstr ""
#: contrib/admin/views/main.py:597
#, fuzzy, python-format
msgid "Add %s"
msgstr "增加"
#: contrib/admin/views/main.py:613
#, python-format
msgid "Added %s."
msgstr ""
#: contrib/admin/views/main.py:613 contrib/admin/views/main.py:615
#: contrib/admin/views/main.py:617
msgid "and"
msgstr ""
#: contrib/admin/views/main.py:615
#, fuzzy, python-format
msgid "Changed %s."
msgstr "修改"
#: contrib/admin/views/main.py:617
#, python-format
msgid "Deleted %s."
msgstr ""
#: contrib/admin/views/main.py:620
msgid "No fields changed."
msgstr ""
#: contrib/admin/views/main.py:645
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
#: contrib/admin/views/main.py:654
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
#: contrib/admin/views/main.py:692
#, fuzzy, python-format
msgid "Change %s"
msgstr "修改"
#: contrib/admin/views/main.py:772
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
#: contrib/admin/views/main.py:777
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
#: contrib/admin/views/main.py:806
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
#: contrib/admin/views/main.py:809
msgid "Are you sure?"
msgstr ""
#: contrib/admin/views/main.py:824
#, fuzzy, python-format
msgid "Change history: %s"
msgstr "修改口令"
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:271
#: contrib/admin/views/doc.py:273 contrib/admin/views/doc.py:278
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:281
@ -251,7 +219,7 @@ msgstr ""
msgid "Time"
msgstr ""
#: contrib/admin/views/doc.py:284 models/core.py:81
#: contrib/admin/views/doc.py:284 models/core.py:87
msgid "URL"
msgstr ""
@ -263,35 +231,18 @@ msgstr ""
msgid "XML text"
msgstr ""
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "增加"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django管理站点"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "修改"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "你无权修改任何东西。"
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "最近动作"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "我的动作"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "无可用的"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django管理员"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/admin/base.html:29
#: contrib/admin/templates/admin/change_form.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@ -321,6 +272,40 @@ msgstr ""
"存在一个错误。它已经通过电子邮件被报告给站点管理员了,并且应该很快被改正。谢"
"谢你的关心。"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "页面没有找到"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "很报歉,请求页面无法找到。"
#: contrib/admin/templates/admin/index.html:27
#: contrib/admin/templates/admin/change_form.html:14
msgid "Add"
msgstr "增加"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "修改"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "你无权修改任何东西。"
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "最近动作"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "我的动作"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "无可用的"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:19
msgid "History"
@ -348,14 +333,6 @@ msgid ""
"admin site."
msgstr "此对象没有修改历史。可能不能通过这个管理站点来增加。"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django管理站点"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django管理员"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "用户名:"
@ -368,32 +345,17 @@ msgstr "口令:"
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "<a href=\"/password_reset/\">忘记你的密码</a>"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "页面没有找到"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
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/base.html:23
msgid "Change password"
msgstr "修改口令"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "注销"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
@ -417,17 +379,23 @@ msgstr ""
msgid "Yes, I'm sure"
msgstr "是的,我确定"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "欢迎,"
#: contrib/admin/templates/admin/change_form.html:20
msgid "View on site"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "修改口令"
#: contrib/admin/templates/admin/change_form.html:28
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] ""
msgstr[1] ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "注销"
#: contrib/admin/templates/admin/change_form.html:45
msgid "Ordering"
msgstr ""
#: contrib/admin/templates/admin/change_form.html:48
msgid "Order:"
msgstr ""
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@ -563,6 +531,38 @@ msgstr "感谢使用我们的站点!"
msgid "The %(site_name)s team"
msgstr "%(site_name)s 小组"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "动作时间"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "对象id"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "对象表示"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "动作标志"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "修改消息"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "日志记录"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "日志记录"
#: contrib/admin/templatetags/admin_list.py:260
msgid "All dates"
msgstr ""
#: utils/dates.py:6
msgid "Monday"
msgstr "星期一"
@ -667,139 +667,139 @@ msgstr "十一月"
msgid "Dec."
msgstr "十二月"
#: models/core.py:5
#: models/core.py:7
msgid "domain name"
msgstr "域名"
#: models/core.py:6
#: models/core.py:8
msgid "display name"
msgstr "显示名"
#: models/core.py:8
#: models/core.py:10
msgid "site"
msgstr "站点"
#: models/core.py:9
#: models/core.py:11
msgid "sites"
msgstr "站点"
#: models/core.py:22
#: models/core.py:28
msgid "label"
msgstr "标签"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "名称"
#: models/core.py:25
#: models/core.py:31
msgid "package"
msgstr "包"
#: models/core.py:26
#: models/core.py:32
msgid "packages"
msgstr "包"
#: models/core.py:36
#: models/core.py:42
msgid "python module name"
msgstr "python模块名"
#: models/core.py:38
#: models/core.py:44
msgid "content type"
msgstr "内容类型"
#: models/core.py:39
#: models/core.py:45
msgid "content types"
msgstr "内容类型"
#: models/core.py:62
#: models/core.py:68
msgid "redirect from"
msgstr "重定向自"
#: models/core.py:63
#: models/core.py:69
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr "应该是一个绝对路径,不包括域名。例如:'/events/search/'。"
#: models/core.py:64
#: models/core.py:70
msgid "redirect to"
msgstr "重定向到"
#: models/core.py:65
#: models/core.py:71
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr "可以是绝对路径(同上)或以'http://'开始的全URL。"
#: models/core.py:67
#: models/core.py:73
msgid "redirect"
msgstr "重定向"
#: models/core.py:68
#: models/core.py:74
msgid "redirects"
msgstr "重定向"
#: models/core.py:82
#: models/core.py:88
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr "例如:'/about/contact/'。请确保前导和结尾的除号。"
#: models/core.py:83
#: models/core.py:89
msgid "title"
msgstr "标题"
#: models/core.py:84
#: models/core.py:90
msgid "content"
msgstr "内容"
#: models/core.py:85
#: models/core.py:91
msgid "enable comments"
msgstr "允许评论"
#: models/core.py:86
#: models/core.py:92
msgid "template name"
msgstr "模板名称"
#: models/core.py:87
#: models/core.py:93
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"例如:'flatfiles/contact_page'。如果未提供,系统将使用'flatfiles/default'。"
#: models/core.py:88
#: models/core.py:94
msgid "registration required"
msgstr "请先注册"
#: models/core.py:88
#: models/core.py:94
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr "如果被选中,仅登录用户才可以查看此页。"
#: models/core.py:92
#: models/core.py:98
msgid "flat page"
msgstr "简单页面"
#: models/core.py:93
#: models/core.py:99
msgid "flat pages"
msgstr "简单页面"
#: models/core.py:114
#: models/core.py:117
msgid "session key"
msgstr "session键字"
#: models/core.py:115
#: models/core.py:118
msgid "session data"
msgstr "session数据"
#: models/core.py:116
#: models/core.py:119
msgid "expire date"
msgstr "过期日期"
#: models/core.py:118
#: models/core.py:121
msgid "session"
msgstr ""
#: models/core.py:119
#: models/core.py:122
msgid "sessions"
msgstr ""
@ -943,96 +943,100 @@ msgstr "塞尔维亚语"
msgid "Simplified Chinese"
msgstr ""
#: core/validators.py:58
#: conf/global_settings.py:49
msgid "Slovak"
msgstr ""
#: core/validators.py:59
msgid "This value must contain only letters, numbers and underscores."
msgstr "此值只能包含字母、数字和下划线。"
#: core/validators.py:62
#: core/validators.py:63
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "此值只能包含字母、数字、下划线和斜线。"
#: core/validators.py:70
#: core/validators.py:71
msgid "Uppercase letters are not allowed here."
msgstr "这里不允许大写字母。"
#: core/validators.py:74
#: core/validators.py:75
msgid "Lowercase letters are not allowed here."
msgstr "这里不允许小写字母。"
#: core/validators.py:81
#: core/validators.py:82
msgid "Enter only digits separated by commas."
msgstr "只能输入用逗号分隔的数字。"
#: core/validators.py:93
#: core/validators.py:94
msgid "Enter valid e-mail addresses separated by commas."
msgstr "输入用逗号分隔的有效邮件地址。"
#: core/validators.py:100
#: core/validators.py:98
msgid "Please enter a valid IP address."
msgstr "请输入一个有效的IP地址。"
#: core/validators.py:104
#: core/validators.py:102
msgid "Empty values are not allowed here."
msgstr "这里不允许输入空值。"
#: core/validators.py:108
#: core/validators.py:106
msgid "Non-numeric characters aren't allowed here."
msgstr "这里不允许非数字字符。"
#: core/validators.py:112
#: core/validators.py:110
msgid "This value can't be comprised solely of digits."
msgstr "此值不能全部由数字组成。"
#: core/validators.py:117
#: core/validators.py:115
msgid "Enter a whole number."
msgstr "输入整数。"
#: core/validators.py:121
#: core/validators.py:119
msgid "Only alphabetical characters are allowed here."
msgstr "这里只允许字母。"
#: core/validators.py:125
#: core/validators.py:123
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "输入一个 YYYY-MM-DD 格式的有效日期。"
#: core/validators.py:129
#: core/validators.py:127
msgid "Enter a valid time in HH:MM format."
msgstr "输入一个 HH:MM 格式的有效时间。"
#: core/validators.py:133
#: core/validators.py:131
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "输入一个 YYYY-MM-DD HH:MM 格式的有效日期/时间。"
#: core/validators.py:137
#: core/validators.py:135
msgid "Enter a valid e-mail address."
msgstr "输入一个有效的邮件地址。"
#: core/validators.py:149
#: core/validators.py:147
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "上传一个有效的图片。您所上传的文件或者不是图片或是一个破坏的图片。"
#: core/validators.py:156
#: core/validators.py:154
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL %s 指向的不是一个有效的图片。"
#: core/validators.py:160
#: core/validators.py:158
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "电话号码必须为 XXX-XXX-XXXX 格式。\"%s\"是无效的。"
#: core/validators.py:168
#: core/validators.py:166
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL %s 指向的不是一个有效的 QuickTime 视频。"
#: core/validators.py:172
#: core/validators.py:170
msgid "A valid URL is required."
msgstr "需要是一个有效的URL。"
#: core/validators.py:186
#: core/validators.py:184
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1041,69 +1045,69 @@ msgstr ""
"需要有效的HTML。详细的错误是\n"
"%s"
#: core/validators.py:193
#: core/validators.py:191
#, python-format
msgid "Badly formed XML: %s"
msgstr "格式错误的 XML: %s"
#: core/validators.py:203
#: core/validators.py:201
#, python-format
msgid "Invalid URL: %s"
msgstr "无效 URL: %s"
#: core/validators.py:205
#: core/validators.py:203
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL %s 是一个断开的链接。"
#: core/validators.py:211
#: core/validators.py:209
msgid "Enter a valid U.S. state abbreviation."
msgstr "输入一个有效的 U.S. 州缩写。"
#: core/validators.py:226
#: core/validators.py:224
#, fuzzy, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "小心你的嘴!%s 不允许在这里出现。"
msgstr[1] "小心你的嘴!%s 不允许在这里出现。"
#: core/validators.py:233
#: core/validators.py:231
#, python-format
msgid "This field must match the '%s' field."
msgstr "这个字段必须与 '%s' 字段相匹配。"
#: core/validators.py:252
#: core/validators.py:250
msgid "Please enter something for at least one field."
msgstr "请至少在一个字段上输入些什么。"
#: core/validators.py:261 core/validators.py:272
#: core/validators.py:259 core/validators.py:270
msgid "Please enter both fields or leave them both empty."
msgstr "请要么两个字段都输入或者两个字段都空着。"
#: core/validators.py:279
#: core/validators.py:277
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "如果 %(field)s 是 %(value)s 时这个字段必须给出"
#: core/validators.py:291
#: core/validators.py:289
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "如果 %(field)s 不是 %(value)s 时这个字段必须给出"
#: core/validators.py:310
#: core/validators.py:308
msgid "Duplicate values are not allowed."
msgstr "重复值不允许。"
#: core/validators.py:333
#: core/validators.py:331
#, python-format
msgid "This value must be a power of %s."
msgstr "这个值必须是 %s 的乘方。"
#: core/validators.py:344
#: core/validators.py:342
msgid "Please enter a valid decimal number."
msgstr "请输入一个有效的小数。"
#: core/validators.py:346
#: core/validators.py:344
#, fuzzy, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1111,7 +1115,7 @@ msgid_plural ""
msgstr[0] "请输入一个有效的小数,最多 %s 个数字。"
msgstr[1] "请输入一个有效的小数,最多 %s 个数字。"
#: core/validators.py:349
#: core/validators.py:347
#, fuzzy, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1119,36 +1123,36 @@ msgid_plural ""
msgstr[0] "请输入一个有效的小数,最多 %s 个小数位。"
msgstr[1] "请输入一个有效的小数,最多 %s 个小数位。"
#: core/validators.py:359
#: core/validators.py:357
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "请确保你上传的文件至少 %s 字节大。"
#: core/validators.py:360
#: core/validators.py:358
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "请确保你上传的文件至多 %s 字节大。"
#: core/validators.py:373
#: core/validators.py:371
msgid "The format for this field is wrong."
msgstr "这个字段的格式不正确。"
#: core/validators.py:388
#: core/validators.py:386
msgid "This field is invalid."
msgstr "这个字段无效。"
#: core/validators.py:423
#: core/validators.py:421
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "不能从 %s 得到任何东西。"
#: core/validators.py:426
#: core/validators.py:424
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "URL %(url)s 返回了无效的 Content-Type 头 '%(contenttype)s'。"
#: core/validators.py:459
#: core/validators.py:457
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1156,7 +1160,7 @@ msgid ""
msgstr ""
"请关闭未关闭的 %(tag)s 标签从第 %(line)s 行。(行开始于 \"%(start)s\"。)"
#: core/validators.py:463
#: core/validators.py:461
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1164,7 +1168,7 @@ msgid ""
msgstr ""
"在 %(line)s 行开始的一些文本不允许在那个上下文中。(行开始于 \"%(start)s\"。)"
#: core/validators.py:468
#: core/validators.py:466
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1172,7 +1176,7 @@ msgid ""
msgstr ""
"在 %(line)s 行的\"%(attr)s\"不是一个有效的属性。(行开始于 \"%(start)s\"。)"
#: core/validators.py:473
#: core/validators.py:471
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1180,7 +1184,7 @@ msgid ""
msgstr ""
"在 %(line)s 行的\"<%(tag)s>\"不是一个有效的标签。(行开始于 \"%(start)s\"。)"
#: core/validators.py:477
#: core/validators.py:475
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1188,7 +1192,7 @@ msgid ""
msgstr ""
"在行 %(line)s 的标签少了一个或多个必须的属性。(行开始于 \"%(start)s\"。)"
#: core/validators.py:482
#: core/validators.py:480
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "

View File

@ -7,7 +7,7 @@ function URLify(s, num_chars) {
"with"];
r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
s = s.replace(r, '');
s = s.replace(/[^\w\s-]/g, ''); // remove unneeded chars
s = s.replace(/[^-A-Z0-9\s]/gi, ''); // remove unneeded chars
s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
s = s.replace(/\s+/g, '-'); // convert spaces to hyphens
s = s.toLowerCase(); // convert to lowercase

View File

@ -2,7 +2,7 @@
{% trans "You're receiving this e-mail because you requested a password reset" %}
{% trans "for your user account at %(site_name)s" %}.
{% trans "Your new password is: %(new_password)s" %}
{% blocktrans %}Your new password is: {{ new_password }}{% endblocktrans %}
{% trans "Feel free to change this password by going to this page:" %}
@ -12,4 +12,4 @@ http://{{ domain }}/password_change/
{% trans "Thanks for using our site!" %}
{% trans "The %(site_name)s team" %}
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}

View File

@ -4,6 +4,8 @@ from django.contrib.admin.views.main import MAX_SHOW_ALL_ALLOWED, DEFAULT_RESULT
ORDER_VAR, ORDER_TYPE_VAR, PAGE_VAR , SEARCH_VAR , IS_POPUP_VAR, EMPTY_CHANGELIST_VALUE, \
MONTHS
from django.settings import DATE_FORMAT, TIME_FORMAT, DATETIME_FORMAT
from django.core import meta
from django.utils.text import capfirst
from django.utils.html import strip_tags, escape
@ -165,13 +167,15 @@ def items_for_result(cl, result):
result_repr = getattr(result, 'get_%s' % f.name)()
else:
result_repr = EMPTY_CHANGELIST_VALUE
# Dates are special: They're formatted in a certain way.
elif isinstance(f, meta.DateField):
# Dates and times are special: They're formatted in a certain way.
elif isinstance(f, meta.DateField) or isinstance(f, meta.TimeField):
if field_val:
if isinstance(f, meta.DateTimeField):
result_repr = dateformat.format(field_val, 'N j, Y, P')
result_repr = capfirst(dateformat.format(field_val, DATETIME_FORMAT))
elif isinstance(f, meta.TimeField):
result_repr = capfirst(dateformat.time_format(field_val, TIME_FORMAT))
else:
result_repr = dateformat.format(field_val, 'N j, Y')
result_repr = capfirst(dateformat.format(field_val, DATE_FORMAT))
else:
result_repr = EMPTY_CHANGELIST_VALUE
row_class = ' class="nowrap"'

View File

@ -356,6 +356,9 @@ class ChangeList(object):
lookup_order_field = '%s.%s' % (f.rel.to.db_table, rel_ordering)
# Use select_related if one of the list_display options is a field with a
# relationship.
if lookup_opts.admin.list_select_related:
lookup_params['select_related'] = True
else:
for field_name in lookup_opts.admin.list_display:
try:
f = lookup_opts.get_field(field_name)

View File

@ -1723,7 +1723,7 @@ def manipulator_save(opts, klass, add, change, self, new_data):
for f in related.opts.fields:
if child_follow.get(f.name, None):
if isinstance(f, FileField) and rel_new_data.get(f.name, False):
f.save_file(rel_new_data, new_rel_obj, change and old_rel_obj or None, change, rel=True)
f.save_file(rel_new_data, new_rel_obj, change and old_rel_obj or None, old_rel_obj is not None, rel=True)
# Calculate whether any fields have changed.
if change:

View File

@ -899,7 +899,7 @@ class FieldSet(object):
class Admin:
def __init__(self, fields=None, js=None, list_display=None, list_filter=None, date_hierarchy=None,
save_as=False, ordering=None, search_fields=None, save_on_top=False):
save_as=False, ordering=None, search_fields=None, save_on_top=False, list_select_related=False):
self.fields = fields
self.js = js or []
self.list_display = list_display or ['__repr__']
@ -908,6 +908,7 @@ class Admin:
self.save_as, self.ordering = save_as, ordering
self.search_fields = search_fields or []
self.save_on_top = save_on_top
self.list_select_related = list_select_related
def get_field_sets(self, opts):
if self.fields is None:

View File

@ -406,15 +406,12 @@ else:
class TokenParser:
"""
You need to subclass this class and implement the
top method to parse your template line. When instantiating
the parser, you pass in the line from the django template
parser.
Subclass this and implement the top() method to parse a template line. When
instantiating the parser, pass in the line from the Django template parser.
If your tag needs to know what tag name it was called with,
you find it in the tagname instance variable of the parser.
The parser's "tagname" instance-variable stores the name of the tag that
the filter was called with.
"""
def __init__(self, subject):
self.subject = subject
self.pointer = 0
@ -422,31 +419,21 @@ class TokenParser:
self.tagname = self.tag()
def top(self):
"""
You need to overload this method to do the actual parsing
and return the result.
"""
"Overload this method to do the actual parsing and return the result."
raise NotImplemented
def more(self):
"""
This returns True if there is more stuff in the tag.
"""
"Returns True if there is more stuff in the tag."
return self.pointer < len(self.subject)
def back(self):
"""
This method undos the last microparser. This can be
used for lookahead and backtracking.
"""
"Undoes the last microparser. Use this for lookahead and backtracking."
if not len(self.backout):
raise TemplateSyntaxError, "back called without some previous parsing"
self.pointer = self.backout.pop()
def tag(self):
"""
This microparser just returns the next tag from the line.
"""
"A microparser that just returns the next tag from the line."
subject = self.subject
i = self.pointer
if i >= len(subject):
@ -462,21 +449,18 @@ class TokenParser:
return s
def value(self):
"""
This microparser parses for a value - some string constant or
variable name.
"""
"A microparser that parses for a value: some string constant or variable name."
subject = self.subject
i = self.pointer
if i >= len(subject):
raise TemplateSyntaxError, "searching for value expected another value, found end of string: %s" % subject
raise TemplateSyntaxError, "Searching for value. Expected another value but found end of string: %s" % subject
if subject[i] in ('"', "'"):
p = i
i += 1
while i < len(subject) and subject[i] != subject[p]:
i += 1
if i >= len(subject):
raise TemplateSyntaxError, "searching for value, unexpected end of string in column %d: %s" % subject
raise TemplateSyntaxError, "Searching for value. Unexpected end of string in column %d: %s" % subject
i += 1
res = subject[p:i]
while i < len(subject) and subject[i] in (' ', '\t'):
@ -496,7 +480,8 @@ class TokenParser:
return s
class FilterParser:
"""Parse a variable token and its optional filters (all as a single string),
"""
Parses a variable token and its optional filters (all as a single string),
and return a list of tuples of the filter name and arguments.
Sample:
>>> token = 'variable|default:"Default value"|date:"Y-m-d"'
@ -516,8 +501,8 @@ class FilterParser:
self.filters = []
self.current_filter_name = None
self.current_filter_arg = None
# First read the variable part - decide on wether we need
# to parse a string or a variable by peeking into the stream
# First read the variable part. Decide whether we need to parse a
# string or a variable by peeking into the stream.
if self.peek_char() in ('_', '"', "'"):
self.var = self.read_constant_string_token()
else:
@ -548,8 +533,10 @@ class FilterParser:
self.current = None
def read_constant_string_token(self):
"""Read a constant string that must be delimited by either "
or ' characters. The string is returned with it's delimiters."""
"""
Reads a constant string that must be delimited by either " or '
characters. The string is returned with its delimiters.
"""
val = ''
qchar = None
i18n = False
@ -579,8 +566,10 @@ class FilterParser:
return val
def read_alphanumeric_token(self):
"""Read a variable name or filter name, which are continuous strings of
alphanumeric characters + the underscore"""
"""
Reads a variable name or filter name, which are continuous strings of
alphanumeric characters + the underscore.
"""
var = ''
while 1:
self.next_char()

View File

@ -2,10 +2,7 @@
from django.core.template import Node, NodeList, Template, Context, resolve_variable, resolve_variable_with_filters, get_filters_from_token, registered_filters
from django.core.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, register_tag
from django.utils import translation
import sys
import re
class CommentNode(Node):
def render(self, context):
@ -532,12 +529,10 @@ def do_if(parser, token):
{% endif %}
{% if not athlete_list or coach_list %}
There are no athletes or there are some coaches (OK, so
writing English translations of boolean logic sounds
stupid; it's not my fault).
There are no athletes, or there are some coaches.
{% endif %}
For simplicity, ``if`` tags do not allow ``and`` clauses; use nested ``if``
For simplicity, ``if`` tags do not allow ``and`` clauses. Use nested ``if``
tags instead::
{% if athlete_list %}

View File

@ -17,9 +17,10 @@ alnumurl_re = re.compile(r'^[\w/]+$')
ansi_date_re = re.compile('^%s$' % _datere)
ansi_time_re = re.compile('^%s$' % _timere)
ansi_datetime_re = re.compile('^%s %s$' % (_datere, _timere))
email_re = re.compile(r'^[-\w.+]+@\w[\w.-]+$')
# From http://www.twilightsoul.com/Default.aspx?tabid=134
email_re = re.compile(r'^((([\t\x20]*[!#-\'\*\+\-/-9=\?A-Z\^-~]+[\t\x20]*|"[\x01-\x09\x0B\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]*")+)?[\t\x20]*<([\t\x20]*[!#-\'\*\+\-/-9=\?A-Z\^-~]+(\.[!#-\'\*\+\-/-9=\?A-Z\^-~]+)*|"[\x01-\x09\x0B\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]*")@(([a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,}|\[(([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\])>[\t\x20]*|([\t\x20]*[!#-\'\*\+\-/-9=\?A-Z\^-~]+(\.[!#-\'\*\+\-/-9=\?A-Z\^-~]+)*|"[\x01-\x09\x0B\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]*")@(([a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,}|\[(([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\]))$')
integer_re = re.compile(r'^-?\d+$')
ip4_re = re.compile(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$')
ip4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$')
phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE)
slug_re = re.compile(r'^[-\w]+$')
url_re = re.compile(r'^http://\S+$')
@ -93,11 +94,8 @@ def isCommaSeparatedEmailList(field_data, all_data):
raise ValidationError, _("Enter valid e-mail addresses separated by commas.")
def isValidIPAddress4(field_data, all_data):
if ip4_re.search(field_data):
valid_parts = [el for el in field_data.split('.') if 0 <= int(el) <= 255]
if len(valid_parts) == 4:
return
raise validators.ValidationError, _("Please enter a valid IP address.")
if not ip4_re.search(field_data):
raise ValidationError, _("Please enter a valid IP address.")
def isNotEmpty(field_data, all_data):
if field_data.strip() == '':

View File

@ -11,15 +11,14 @@ class CommonMiddleware:
- Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS
- URL rewriting: based on the APPEND_SLASH and PREPEND_WWW settings,
this middleware will -- shocking, isn't it -- append missing slashes
and/or prepend missing "www."s.
- URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings,
this middleware appends missing slashes and/or prepends missing "www."s.
- ETags: if the USE_ETAGS setting is set, ETags will be calculated from
- ETags: If the USE_ETAGS setting is set, ETags will be calculated from
the entire page content and Not Modified responses will be returned
appropriately.
- Flat files: for 404 responses, a flat file matching the given path
- Flat files: For 404 responses, a flat file matching the given path
will be looked up and used if found.
"""

View File

@ -1,3 +1,5 @@
import base64, md5, random, sys
import cPickle as pickle
from django.core import meta, validators
from django.utils.translation import gettext_lazy as _
@ -9,6 +11,10 @@ class Site(meta.Model):
verbose_name_plural = _('sites')
db_table = 'sites'
ordering = ('domain',)
admin = meta.Admin(
list_display = ('domain', 'name'),
search_fields = ('domain', 'name'),
)
def __repr__(self):
return self.domain
@ -107,9 +113,6 @@ class FlatFile(meta.Model):
def get_absolute_url(self):
return self.url
import base64, md5, random, sys
import cPickle as pickle
class Session(meta.Model):
session_key = meta.CharField(_('session key'), maxlength=40, primary_key=True)
session_data = meta.TextField(_('session data'))
@ -132,7 +135,12 @@ class Session(meta.Model):
if md5.new(pickled + SECRET_KEY).hexdigest() != tamper_check:
from django.core.exceptions import SuspiciousOperation
raise SuspiciousOperation, "User tampered with session cookie."
try:
return pickle.loads(pickled)
# Unpickling can cause a variety of exceptions. If something happens,
# just return an empty dictionary (an empty session).
except:
return {}
def _module_encode(session_dict):
"Returns the given session dictionary pickled and encoded as a string."

View File

@ -13,7 +13,7 @@ Usage:
from django.utils.dates import MONTHS, MONTHS_AP, WEEKDAYS
from django.utils.tzinfo import LocalTimezone
from calendar import isleap
from calendar import isleap, monthrange
import re, time
re_formatchars = re.compile(r'(?<!\\)([aABdDfFgGhHiIjlLmMnNOPrsStTUwWyYzZ])')
@ -122,10 +122,6 @@ class DateFormat(TimeFormat):
"Month, textual, long; e.g. 'January'"
return MONTHS[self.data.month]
def I(self):
"'1' if Daylight Savings Time, '0' otherwise."
raise NotImplementedError
def I(self):
"'1' if Daylight Savings Time, '0' otherwise."
if self.timezone.dst(self.data):
@ -185,7 +181,7 @@ class DateFormat(TimeFormat):
def t(self):
"Number of days in the given month; i.e. '28' to '31'"
raise NotImplementedError
return '%02d' % monthrange(self.data.year, self.data.month)[1]
def T(self):
"Time zone of this machine; e.g. 'EST' or 'MDT'"

View File

@ -4,24 +4,17 @@ def curry(*args, **kwargs):
return _curried
def lazy(func, *resultclasses):
"""
lazy turns any callable passed in into a lazy evaluated callable.
you need to give result classes or types - at least one is needed
so that the automatic forcing of the lazy evaluation code is
triggered. Results are not memoized - the function is evaluated
on every access.
Turns any callable into a lazy evaluated callable. You need to give result
classes or types -- at least one is needed so that the automatic forcing of
the lazy evaluation code is triggered. Results are not memoized; the
function is evaluated on every access.
"""
class __proxy__:
"""
This inner class encapsulates the code that should be evaluated
lazyly. On calling of one of the magic methods it will force
the evaluation and store the result - afterwards the result
is delivered directly. So the result is memoized.
"""
# This inner class encapsulates the code that should be evaluated
# lazily. On calling of one of the magic methods it will force
# the evaluation and store the result. Afterwards, the result
# is delivered directly. So the result is memoized.
def __init__(self, args, kw):
self.__func = func
self.__args = args
@ -33,18 +26,11 @@ def lazy(func, *resultclasses):
setattr(self, k, self.__promise__(resultclass, k, v))
def __promise__(self, klass, funcname, func):
"""
This function builds a wrapper around some magic method and
registers that magic method for the given type and methodname.
"""
# Builds a wrapper around some magic method and registers that magic
# method for the given type and method name.
def __wrapper__(*args, **kw):
"""
This wrapper function automatically triggers the evaluation of
a lazy value. It then applies the given magic method of the
result type.
"""
# Automatically triggers the evaluation of a lazy value and
# applies the given magic method of the result type.
res = self.__func(*self.__args, **self.__kw)
return self.__dispatch[type(res)][funcname](res, *args, **kw)
@ -54,12 +40,7 @@ def lazy(func, *resultclasses):
return __wrapper__
def __wrapper__(*args, **kw):
"""
This wrapper function just creates the proxy object that is returned
instead of the actual value.
"""
# Creates the proxy object, instead of the actual value.
return __proxy__(args, kw)
return __wrapper__

View File

@ -1,11 +1,8 @@
"translation helper functions"
import os
import re
import sys
import os, re, sys
import gettext as gettext_module
from cStringIO import StringIO
from django.utils.functional import lazy
try:
@ -20,22 +17,20 @@ else:
def currentThread():
return 'no threading'
# translations are cached in a dictionary for
# every language+app tuple. The active translations
# are stored by threadid to make them thread local.
# Translations are cached in a dictionary for every language+app tuple.
# The active translations are stored by threadid to make them thread local.
_translations = {}
_active = {}
# the default translation is based on the settings file
# The default translation is based on the settings file.
_default = None
# this is a cache for accept-header to translation
# object mappings to prevent the accept parser to
# run multiple times for one user
# This is a cache for accept-header to translation object mappings to prevent
# the accept parser to run multiple times for one user.
_accepted = {}
def to_locale(language):
"turn a language name (en-us) into a locale name (en_US)"
"Turns a language name (en-us) into a locale name (en_US)."
p = language.find('-')
if p >= 0:
return language[:p].lower()+'_'+language[p+1:].upper()
@ -43,7 +38,7 @@ def to_locale(language):
return language.lower()
def to_language(locale):
"turns a locale name (en_US) into a language name (en-us)"
"Turns a locale name (en_US) into a language name (en-us)."
p = locale.find('_')
if p >= 0:
return locale[:p].lower()+'-'+locale[p+1:].lower()
@ -52,16 +47,14 @@ def to_language(locale):
class DjangoTranslation(gettext_module.GNUTranslations):
"""
This class sets up the GNUTranslations context with
regard to output charset. Django uses a defined
DEFAULT_CHARSET as the output charset on Python 2.4 -
with Python 2.3, you need to use DjangoTranslation23.
This class sets up the GNUTranslations context with regard to output
charset. Django uses a defined DEFAULT_CHARSET as the output charset on
Python 2.4. With Python 2.3, use DjangoTranslation23.
"""
def __init__(self, *args, **kw):
from django.conf import settings
gettext_module.GNUTranslations.__init__(self, *args, **kw)
# starting with Python 2.4, there is a function to define
# Starting with Python 2.4, there's a function to define
# the output charset. Before 2.4, the output charset is
# identical with the translation file charset.
try:
@ -83,19 +76,15 @@ class DjangoTranslation(gettext_module.GNUTranslations):
def __repr__(self):
return "<DjangoTranslation lang:%s>" % self.__language
class DjangoTranslation23(DjangoTranslation):
"""
This is a compatibility class that is only used with Python 2.3.
The reason is, Python 2.3 doesn't support set_output_charset on
translation objects and so needs this wrapper class to make sure
that input charsets from translation files are correctly translated
to output charsets.
Compatibility class that is only used with Python 2.3.
Python 2.3 doesn't support set_output_charset on translation objects and
needs this wrapper class to make sure input charsets from translation files
are correctly translated to output charsets.
With a full switch to Python 2.4, this can be removed from the source.
"""
def gettext(self, msgid):
res = self.ugettext(msgid)
return res.encode(self.django_output_charset)
@ -106,13 +95,12 @@ class DjangoTranslation23(DjangoTranslation):
def translation(language):
"""
This function returns a translation object. app must be the fully
qualified name of the application.
Returns a translation object.
This translation object will be constructed out of multiple GNUTranslations
objects by merging their catalogs. It will construct a object for the requested
language and add a fallback to the default language, if that is different
from the requested language.
objects by merging their catalogs. It will construct a object for the
requested language and add a fallback to the default language, if it's
different from the requested language.
"""
global _translations
@ -197,49 +185,41 @@ def translation(language):
def activate(language):
"""
This function fetches the translation object for a given
tuple of application name and language and installs it as
the current translation object for the current thread.
Fetches the translation object for a given tuple of application name and
language and installs it as the current translation object for the current
thread.
"""
_active[currentThread()] = translation(language)
def deactivate():
"""
This function deinstalls the currently active translation
object so that further _ calls will resolve against the
default translation object, again.
Deinstalls the currently active translation object so that further _ calls
will resolve against the default translation object, again.
"""
global _active
if _active.has_key(currentThread()):
del _active[currentThread()]
def get_language():
"""
This function returns the currently selected language.
"""
"Returns the currently selected language."
t = _active.get(currentThread(), None)
if t is not None:
try:
return to_language(t.language())
except AttributeError:
pass
# if we don't have a real translation object, we assume
# it's the default language.
# If we don't have a real translation object, assume it's the default language.
from django.conf.settings import LANGUAGE_CODE
return LANGUAGE_CODE
def gettext(message):
"""
This function will be patched into the builtins module to
provide the _ helper function. It will use the current
thread as a discriminator to find the translation object
to use. If no current translation is activated, the
message will be run through the default translation
object.
This function will be patched into the builtins module to provide the _
helper function. It will use the current thread as a discriminator to find
the translation object to use. If no current translation is activated, the
message will be run through the default translation object.
"""
global _default, _active
t = _active.get(currentThread(), None)
if t is not None:
return t.gettext(message)
@ -250,18 +230,15 @@ def gettext(message):
def gettext_noop(message):
"""
This function is used to just mark strings for translation
but to not translate them now. This can be used to store
strings in global variables that should stay in the base
language (because they might be used externally) and will
be translated later on.
Marks strings for translation but doesn't translate them now. This can be
used to store strings in global variables that should stay in the base
language (because they might be used externally) and will be translated later.
"""
return message
def ngettext(singular, plural, number):
"""
This function returns the translation of either the singular
or plural, based on the number.
Returns the translation of either the singular or plural, based on the number.
"""
global _default, _active
@ -278,9 +255,8 @@ ngettext_lazy = lazy(ngettext, str)
def check_for_language(lang_code):
"""
This function checks wether there is a global language
file for the given language code. This is used to decide
wether a user-provided language is available.
Checks whether there is a global language file for the given language code.
This is used to decide whether a user-provided language is available.
"""
from django.conf import settings
globalpath = os.path.join(os.path.dirname(settings.__file__), 'locale')
@ -291,11 +267,9 @@ def check_for_language(lang_code):
def get_language_from_request(request):
"""
analyze the request to find what language the user
wants the system to show.
Analyzes the request to find what language the user wants the system to show.
"""
global _accepted
from django.conf import settings
globalpath = os.path.join(os.path.dirname(settings.__file__), 'locale')
@ -338,7 +312,7 @@ def get_language_from_request(request):
# filename, because otherwise we might incorrectly
# report de_DE if we only have de available, but
# did find de_DE because of language normalization
lang = langfile[len(globalpath):].split('/')[1]
lang = langfile[len(globalpath):].split(os.path.sep)[1]
_accepted[accept] = lang
return lang
@ -346,17 +320,16 @@ def get_language_from_request(request):
def install():
"""
This installs the gettext function as the default
translation function under the name _.
Installs the gettext function as the default translation function under
the name _.
"""
__builtins__['_'] = gettext
dot_re = re.compile(r'\S')
def blankout(src, char):
"""
This is used in the templateize function and changes every
non-whitespace character to the given char.
Changes every non-whitespace character to the given char.
Used in the templateize function.
"""
return dot_re.sub(char, src)
@ -368,9 +341,9 @@ constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
def templateize(src):
from django.core.template import Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK
"""
This function turns a django template into something that is
understood by xgettext. It does so by translating the django
translation tags into standard gettext function invocations.
Turns a Django template into something that is understood by xgettext. It
does so by translating the Django translation tags into standard gettext
function invocations.
"""
out = StringIO()
intrans = False
@ -400,7 +373,7 @@ def templateize(src):
elif pluralmatch:
inplural = True
else:
raise SyntaxError, "translation blocks must not include other block tags: %s" % t.contents
raise SyntaxError, "Translation blocks must not include other block tags: %s" % t.contents
elif t.token_type == TOKEN_VAR:
if inplural:
plural.append('%%(%s)s' % t.contents)
@ -444,4 +417,3 @@ def templateize(src):
else:
out.write(blankout(t.contents, 'X'))
return out.getvalue()

View File

@ -11,11 +11,11 @@ def serve(request, path, document_root=None, show_indexes=False):
"""
Serve static files below a given point in the directory structure.
To use, put a URL pattern like::
To use, put a URL pattern such as::
(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root' : '/path/to/my/files/'})
in your URL conf; you must provide the ``document_root`` param. You may
in your URLconf. You must provide the ``document_root`` param. You may
also set ``show_indexes`` to ``True`` if you'd like to serve a basic index
of the directory. This index view will use the template hardcoded below,
but if you'd like to override it, you can create a template called

View File

@ -88,6 +88,13 @@ install [modelmodule modelmodule ...]
Executes the equivalent of ``sqlall`` for the given model module(s).
installperms [modelmodule modelmodule ...]
------------------------------------------
Installs any admin permissions for the given model module(s) that aren't
already installed in the database. Outputs a message telling how many
permissions were added, if any.
runserver [optional port number, or ipaddr:port]
------------------------------------------------

556
docs/i18n.txt Normal file
View File

@ -0,0 +1,556 @@
====================
Internationalization
====================
Django has full support for internationalization of text in code and templates.
Here's how it works.
Overview
========
The goal of internationalization is to allow a single Web application to offer
its content and functionality in multiple languages.
You, the Django developer, can accomplish this goal by adding a minimal amount
of hooks to your Python code and templates. These hooks are called
**translation strings**. They tell Django: "This text should be translated into
the end user's language, if a translation for this text is available in that
language."
Django takes care of using these hooks to translate Web apps, on the fly,
according to users' language preferences.
Essentially, Django does two things:
* It lets developers and template authors specify which parts of their apps
should be translatable.
* It uses these hooks to translate Web apps for particular users according
to their language preferences.
How to internationalize your app: in three steps
------------------------------------------------
1. Embed translation strings in your Python code and templates.
2. Get translations for those strings, in whichever languages you want to
support.
3. Activate the locale middleware in your Django settings.
.. admonition:: Behind the scenes
Django's translation machinery uses the standard ``gettext`` module that
comes with Python.
How to specify translation strings
==================================
Translation strings specify "This text should be translated." These strings can
appear in your Python code and templates. It's your responsibility to mark
translatable strings; the system can only translate strings it knows about.
In Python code
--------------
Standard translation
~~~~~~~~~~~~~~~~~~~~
Specify a translation string by using the function ``_()``. (Yes, the name of
the function is the "underscore" character.) This function is available
globally in any Python module; you don't have to import it.
In this example, the text ``"Welcome to my site."`` is marked as a translation
string::
def my_view(request):
output = _("Welcome to my site.")
return HttpResponse(output)
The function ``django.utils.translation.gettext()`` is identical to ``_()``.
This example is identical to the previous one::
from django.utils.translation import gettext
def my_view(request):
output = gettext("Welcome to my site.")
return HttpResponse(output)
Translation works on computed values. This example is identical to the previous
two::
def my_view(request):
words = ['Welcome', 'to', 'my', 'site.']
output = _(' '.join(words))
return HttpResponse(output)
Translation works on variables. Again, here's an identical example::
def my_view(request):
sentence = 'Welcome to my site.'
output = _(sentence)
return HttpResponse(output)
(The caveat with using variables or computed values, as in the previous two
examples, is that Django's translation-string-detecting utility,
``make-messages.py``, won't be able to find these strings. More on
``make-messages`` later.)
The strings you pass to ``_()`` or ``gettext()`` can take placeholders,
specified with Python's standard named-string interpolation syntax. Example::
def my_view(request, n):
output = _('%(name)s is my name.') % {'name': n}
return HttpResponse(output)
This technique lets language-specific translations reorder the placeholder
text. For example, an English translation may be ``"Adrian is my name."``,
while a Spanish translation may be ``"Me llamo Adrian."`` -- with the
placeholder (the name) placed after the translated text instead of before it.
For this reason, you should use named-string interpolation (e.g., ``%(name)s``)
instead of positional interpolation (e.g., ``%s`` or ``%d``). If you used
positional interpolation, translations wouldn't be able to reorder placeholder
text.
Marking strings as no-op
~~~~~~~~~~~~~~~~~~~~~~~~
Use the function ``django.utils.translation.gettext_noop()`` to mark a string
as a translation string without translating it. The string is later translated
from a variable.
Use this if you have constant strings that should be stored in the source
language because they are exchanged over systems or users -- such as strings in
a database -- but should be translated at the last possible point in time, such
as when the string is presented to the user.
Lazy translation
~~~~~~~~~~~~~~~~
Use the function ``django.utils.translation.gettext_lazy()`` to translate
strings lazily -- when the value is accessed rather than when the
``gettext_lazy()`` function is called.
For example, to translate a model's ``help_text``, do the following::
from django.utils.translation import gettext_lazy
class MyThing(meta.Model):
name = meta.CharField(help_text=gettext_lazy('This is the help text'))
In this example, ``gettext_lazy()`` stores a lazy reference to the string --
not the actual translation. The translation itself will be done when the string
is used in a string context, such as template rendering on the Django admin site.
If you don't like the verbose name ``gettext_lazy``, you can just alias it as
``_`` (underscore), like so::
from django.utils.translation import gettext_lazy as _
class MyThing(meta.Model):
name = meta.CharField(help_text=_('This is the help text'))
Always use lazy translations in `Django models`_. And it's a good idea to add
translations for the field names and table names, too. This means writing
explicit ``verbose_name`` and ``verbose_name_plural`` options in the ``META``
class, though::
from django.utils.translation import gettext_lazy as _
class MyThing(meta.Model):
name = meta.CharField(_('name'), help_text=_('This is the help text'))
class META:
verbose_name = _('my thing')
verbose_name_plural = _('mythings')
.. _Django models: http://www.djangoproject.com/documentation/model_api/
Pluralization
~~~~~~~~~~~~~
Use the function ``django.utils.translation.ngettext()`` to specify pluralized
messages. Example::
from django.utils.translation import ngettext
def hello_world(request, count):
page = ngettext('there is %(count)d object', 'there are %(count)d objects', count) % {
'count': count,
}
return HttpResponse(page)
``ngettext`` takes three arguments: the singular translation string, the plural
translation string and the number of objects (which is passed to the
translation languages as the ``count`` variable).
In template code
----------------
Using translations in `Django templates`_ uses two template tags and a slightly
different syntax than in Python code. To give your template access to these
tags, put ``{% load i18n %}`` toward the top of your template.
The ``{% trans %}`` template tag translates a constant string or a variable
content::
<title>{% trans "This is the title." %}</title>
If you only want to mark a value for translation, but translate it later from a
variable, use the ``noop`` option::
<title>{% trans "value" noop %}</title>
It's not possible to use template variables in ``{% trans %}`` -- only constant
strings, in single or double quotes, are allowed. If your translations require
variables (placeholders), use ``{% blocktrans %}``. Example::
{% blocktrans %}This will have {{ value }} inside.{% endblocktrans %}
To translate a template expression -- say, using template filters -- you need
to bind the expression to a local variable for use within the translation
block::
{% blocktrans with value|filter as myvar %}
This will have {{ myvar }} inside.
{% endblocktrans %}
To pluralize, specify both the singular and plural forms with the
``{% plural %}`` tag, which appears within ``{% blocktrans %}`` and
``{% endblocktrans %}``. Example::
{% blocktrans count list|counted as counter %}
There is only one {{ name }} object.
{% plural %}
There are {{ counter }} {{ name }} objects.
{% endblocktrans %}
Internally, all block and inline translations use the appropriate
``gettext`` / ``ngettext`` call.
Each ``DjangoContext`` has access to two translation-specific variables:
* ``LANGUAGES`` is a list of tuples in which the first element is the
language code and the second is the language name (in that language).
* ``LANGUAGE_CODE`` is the current user's preferred language, as a string.
Example: ``en-us``. (See "How language preference is discovered", below.)
If you don't use the ``DjangoContext`` extension, you can get those values with
two tags::
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
These tags also require a ``{% load i18n %}``.
Translation hooks are also available within any template block tag that accepts
constant strings. In those cases, just use ``_()`` syntax to specify a
translation string. Example::
{% some_special_tag _("Page not found") value|yesno:_("yes,no") %}
In this case, both the tag and the filter will see the already-translated
string, so they don't need to be aware of translations.
.. _Django templates: http://www.djangoproject.com/documentation/templates_python/
How to create language files
============================
Once you've tagged your strings for later translation, you need to write (or
obtain) the language translations themselves. Here's how that works.
Message files
-------------
The first step is to create a **message file** for a new language. A message
file is a plain-text file, representing a single language, that contains all
available translation strings and how they should be represented in the given
language. Message files have a ``.po`` file extension.
Django comes with a tool, ``bin/make-messages.py``, that automates the creation
and upkeep of these files.
To create or update a message file, run this command::
bin/make-messages.py -l de
...where ``de`` is the language code for the message file you want to create.
The language code, in this case, is in locale format. For example, it's
``pt_BR`` for Brazilian and ``de_AT`` for Austrian German.
The script should be run from one of three places:
* The root ``django`` directory (not a Subversion checkout, but the one
that is linked-to via ``$PYTHONPATH`` or is located somewhere on that
path).
* The root directory of your Django project.
* The root directory of your Django app.
The script runs over the entire Django source tree and pulls out all strings
marked for translation. It creates (or updates) a message file in the directory
``conf/locale``. In the ``de`` example, the file will be
``conf/locale/de/LC_MESSAGES/django.po``.
.. admonition:: No gettext?
If you don't have the ``gettext`` utilities installed, ``make-messages.py``
will create empty files. If that's the case, either install the ``gettext``
utilities or just copy the English message file
(``conf/locale/en/LC_MESSAGES/django.po``) and use it as a starting point;
it's just an empty translation file.
The format of ``.po`` files is straightforward. Each ``.po`` file contains a
small bit of metadata, such as the translation maintainer's contact
information, but the bulk of the file is a list of **messages** -- simple
mappings between translation strings and the actual translated text for the
particular language.
For example, if your Django app contained a translation string for the text
``"Welcome to my site."``, like so::
_("Welcome to my site.")
...then ``make-messages.py`` will have created a ``.po`` file containing the
following snippet -- a message::
#: path/to/python/module.py:23
msgid "Welcome to my site."
msgstr ""
A quick explanation:
* ``msgid`` is the translation string, which appears in the source. Don't
change it.
* ``msgstr`` is where you put the language-specific translation. It starts
out empty, so it's your responsibility to change it. Make sure you keep
the quotes around your translation.
* As a convenience, each message includes the filename and line number
from which the translation string was gleaned.
Long messages are a special case. There, the first string directly after the
``msgstr`` (or ``msgid``) is an empty string. Then the content itself will be
written over the next few lines as one string per line. Those strings are
directlyconcatenated. Don't forget trailing spaces within the strings;
otherwise, they'll be tacked together without whitespace!
.. admonition:: Mind your charset
When creating a ``.po`` file with your favorite text editor, first edit
the charset line (search for ``"CHARSET"``) and set it to the charset
you'll be using to edit the content. Generally, utf-8 should work for most
languages, but ``gettext`` should handle any charset you throw at it.
To reexamine all source code and templates for new translation strings and
update all message files for **all** languages, run this::
make-messages.py -a
Compiling message files
-----------------------
After you create your message file -- and each time you make changes to it --
you'll need to compile it into a more efficient form, for use by ``gettext``.
Do this with the ``bin/compile-messages.py`` utility.
This tool runs over all available ``.po`` files and creates ``.mo`` files,
which are binary files optimized for use by ``gettext``. In the same directory
from which you ran ``make-messages.py``, run ``compile-messages.py`` like
this::
bin/compile-messages.py
That's it. Your translations are ready for use.
.. admonition:: A note to translators
If you've created a translation in a language Django doesn't yet support,
please let us know! We'll add it to the global list of available languages
in the global Django settings (``settings.LANGUAGES``).
How Django discovers language preference
========================================
Once you've prepared your translations -- or, if you just want to use the
translations that come with Django -- you'll just need to activate translation
for your app.
Behind the scenes, Django has a very flexible model of deciding which language
should be used -- installation-wide, for a particular user, or both.
To set an installation-wide language preference, set ``LANGUAGE_CODE`` in your
`settings file`_. Django uses this language as the default translation -- the
final attempt if no other translator finds a translation.
If all you want to do is run Django with your native language, and a language
file is available for your language, all you need to do is set
``LANGUAGE_CODE``.
If you want to let each individual user specify which language he or she
prefers, use ``LocaleMiddleware``. ``LocaleMiddleware`` enables language
selection based on data from the request. It customizes content for each user.
To use ``LocaleMiddleware``, add ``'django.middleware.locale.LocaleMiddleware'``
to your ``MIDDLEWARE_CLASSES`` setting. Because middleware order matters, you
should follow these guidelines:
* Make sure it's one of the first middlewares installed.
* It should come after ``SessionMiddleware``, because ``LocaleMiddleware``
makes use of session data.
* If you use ``CacheMiddleware``, put ``LocaleMiddleware`` after it.
For example, your ``MIDDLEWARE_CLASSES`` might look like this::
MIDDLEWARE_CLASSES = (
'django.middleware.sessions.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)
(For more on middleware, see the `middleware documentation`_.)
``LocaleMiddleware`` tries to determine the user's language preference by
following this algorithm:
* First, it looks for a ``django_language`` key in the the current user's
`session`_.
* Failing that, it looks for a cookie called ``django_language``.
* Failing that, it looks at the ``Accept-Language`` HTTP header. This
header is sent by your browser and tells the server which language(s) you
prefer, in order by priority. Django tries each language in the header
until it finds one with available translations.
* Failing that, it uses the global ``LANGUAGE_CODE`` setting.
Notes:
* In each of these places, the language preference is expected to be in the
standard language format, as a string. For example, Brazilian is
``pt-br``.
* If a base language is available but the sublanguage specified is not,
Django uses the base language. For example, if a user specifies ``de-at``
(Austrian German) but Django only has ``de`` available, Django uses
``de``.
Once ``LocaleMiddleware`` determines the user's preference, it makes this
preference available as ``request.LANGUAGE_CODE`` for each `request object`_.
Feel free to read this value in your view code. Here's a simple example::
def hello_world(request, count):
if request.LANGUAGE_CODE == 'de-at':
return HttpResponse("You prefer to read Austrian German.")
else:
return HttpResponse("You prefer to read another language.")
Note that, with static (middleware-less) translation, the language is in
``settings.LANGUAGE_CODE``, while with dynamic (middleware) translation, it's
in ``request.LANGUAGE_CODE``.
.. _settings file: http://www.djangoproject.com/documentation/settings/
.. _middleware documentation: http://www.djangoproject.com/documentation/middleware/
.. _session: http://www.djangoproject.com/documentation/sessions/
.. _request object: http://www.djangoproject.com/documentation/request_response/#httprequest-objects
The ``set_language`` redirect view
==================================
As a convenience, Django comes with a view, ``django.views.i18n.set_language``,
that sets a user's language preference and redirects back to the previous page.
Activate this view by adding the following line to your URLconf::
(r'^i18n/', include('django.conf.urls.i18n')),
(Note that this example makes the view available at ``/i18n/setlang/``.)
The view expects to be called via the ``GET`` method, with a ``language``
parameter set in the query string. If session support is enabled, the view
saves the language choice in the user's session. Otherwise, it saves the
language choice in a ``django_language`` cookie.
After setting the language choice, Django redirects the user, following this
algorithm:
* Django looks for a ``next`` parameter in the query string.
* If that doesn't exist, or is empty, Django tries the URL in the
``Referer`` header.
* If that's empty -- say, if a user's browser suppresses that header --
then the user will be redirected to ``/`` (the site root) as a fallback.
Here's example HTML template code::
<form action="/i18n/setlang/" method="get">
<input name="next" type="hidden" value="/next/page/" />
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
Using translations in your own projects
=======================================
Django looks for translations by following this algorithm:
* First, it looks for a ``locale`` directory in the application directory
of the view that's being called. If it finds a translation for the
selected language, the translation will be installed.
* Next, it looks for a ``locale`` directory in the project directory. If it
finds a translation, the translation will be installed.
* Finally, it checks the base translation in ``django/conf/locale``.
This way, you can write applications that include their own translations, and
you can override base translations in your project path. Or, you can just build
a big project out of several apps and put all translations into one big project
message file. The choice is yours.
All message file repositories are structured the same way. They are:
* ``$APPPATH/locale/<language>/LC_MESSAGES/django.(po|mo)``
* ``$PROJECTPATH/locale/<language>/LC_MESSAGES/django.(po|mo)``
* All paths listed in ``LOCALE_PATHS`` in your settings file are
searched in that order for ``<language>/LC_MESSAGES/django.(po|mo)``
* ``$PYTHONPATH/django/conf/locale/<language>/LC_MESSAGES/django.(po|mo)``
To create message files, you use the same ``make-messages.py`` tool as with the
Django message files. You only need to be in the right place -- in the directory
where either the ``conf/locale`` (in case of the source tree) or the ``locale/``
(in case of app messages or project messages) directory are located. And you
use the same ``compile-messages.py`` to produce the binary ``django.mo`` files that
are used by ``gettext``.
Application message files are a bit complicated to discover -- they need the
``LocaleMiddleware``. If you don't use the middleware, only the Django message
files and project message files will be processed.
Finally, you should give some thought to the structure of your translation
files. If your applications need to be delivered to other users and will
be used in other projects, you might want to use app-specific translations.
But using app-specific translations and project translations could produce
weird problems with ``make-messages``: ``make-messages`` will traverse all
directories below the current path and so might put message IDs into the
project message file that are already in application message files.
The easiest way out is to store applications that are not part of the project
(and so carry their own translations) outside the project tree. That way,
``make-messages`` on the project level will only translate strings that are
connected to your explicit project and not strings that are distributed
independently.
Specialities of Django translation
==================================
If you know ``gettext``, you might note these specialities in the way Django
does translation:
* The string domain is always ``django``. The string domain is used to
differentiate between different programs that store their data in a
common message-file library (usually ``/usr/share/locale/``). In Django's
case, there are Django-specific locale libraries, so the domain itself
isn't used. We could store app message files with different names and put
them, say, in the project library, but we decided against this. With
message files in the application tree, apps can be distributed more
easily.
* Django only uses ``gettext`` and ``gettext_noop``. That's because Django
always uses ``DEFAULT_CHARSET`` strings internally. There isn't much use
in using ``ugettext``, because you'll always need to produce utf-8
anyway.
* Django doesn't use ``xgettext`` alone. It uses Python wrappers around
``xgettext`` and ``msgfmt``. That's mostly for convenience.

View File

@ -15,7 +15,7 @@ mod_python is similar to mod_perl -- it embeds Python within Apache and loads
Python code into memory when the server starts. Code stays in memory throughout
the life of an Apache process, which leads to significant performance gains
over other server arrangements. Make sure you have Apache installed, with the
mod_python module activated.
mod_python module activated. Django requires Apache 2.x and mod_python 3.x.
See `How to use Django with mod_python`_ for information on how to configure
mod_python once you have it installed.

View File

@ -244,7 +244,7 @@ Here are all available field types:
``EmailField``
A ``CharField`` that checks that the value is a valid e-mail address.
(Currently, this is a loose test.) This doesn't accept ``maxlength``.
This doesn't accept ``maxlength``.
``FileField``
A file-upload field.
@ -387,7 +387,10 @@ Here are all available field types:
meta.SlugField(prepopulate_from=("pre_name", "name"))
The admin represents this as an ``<input type="text">`` (a single-line input).
``prepopulate_from`` doesn't accept DateTimeFields.
The admin represents ``SlugField`` as an ``<input type="text">`` (a
single-line input).
``SmallIntegerField``
Like an ``IntegerField``, but only allows values under a certain
@ -897,6 +900,14 @@ object, which takes the following parameters. All are optional.
(This example also has ``search_fields`` defined; see below).
``list_select_related``
Either ``True`` or ``False``. Default is ``False``. If ``True``, the admin
change list page will use the ``select_related`` database-API parameter in
its query that retrieves the list of items.
Note that Django will use ``select_related``, regardless of this setting,
if one of the ``list_display`` fields is a ``ForeignKey``.
``ordering``
A list or tuple (see the `META options`_, above) that gives a
different ordering for the admin change list. If this isn't given, the

View File

@ -2,7 +2,7 @@
How to use Django with mod_python
=================================
`Apache`_ with `mod_python`_ currently is the preferred setup for using Django
Apache_ with `mod_python`_ currently is the preferred setup for using Django
on a production server.
mod_python is similar to `mod_perl`_ : It embeds Python within Apache and loads
@ -10,6 +10,8 @@ Python code into memory when the server starts. Code stays in memory throughout
the life of an Apache process, which leads to significant performance gains over
other server arrangements.
Django requires Apache 2.x and mod_python 3.x.
.. _Apache: http://httpd.apache.org/
.. _mod_python: http://www.modpython.org/
.. _mod_perl: http://perl.apache.org/
@ -110,12 +112,11 @@ revoke your Django privileges.
Serving media files
===================
Django doesn't serve media files itself. It'd be inefficient to flow media
files through a (relatively) complex framework when much, much more well-tuned
solutions are better.
Django doesn't serve media files itself; it leaves that job to whichever Web
server you choose.
We recommend using a separate Web server for serving media. Here are some good
choices:
We recommend using a separate Web server -- i.e., one that's not also running
Django -- for serving media. Here are some good choices:
* lighttpd_
* TUX_
@ -129,11 +130,49 @@ particular part of the site::
SetHandler None
</Location>
Just change ``Location`` to the root URL of your media files.
Just change ``Location`` to the root URL of your media files. You can also use
``<LocationMatch>`` to match a regular expression.
This example sets up Django at the site root but explicitly disables Django for
the ``media`` subdirectory and any URL that ends with ``.jpg``, ``.gif`` or
``.png``::
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myproject.settings
</Location>
<Location "media">
SetHandler None
</Location>
<LocationMatch "\.(jpg|gif|png)$">
SetHandler None
</Location>
Note that the Django development server automagically serves admin media files,
but this is not the case when you use any other server arrangement.
.. _lighttpd: http://www.lighttpd.net/
.. _TUX: http://en.wikipedia.org/wiki/TUX_web_server
.. _Apache: http://httpd.apache.org/
Serving the admin files
=======================
Note that the Django development server automagically serves admin media files,
but this is not the case when you use any other server arrangement. You're
responsible for setting up Apache, or whichever media server you're using, to
serve the admin files.
The admin files live in (``django/contrib/admin/media``) of the Django
distribution.
Here are two recommended approaches:
1. Create a symbolic link to the admin media files from within your
document root. This way, all of your Django-related files -- code
**and** templates -- stay in one place, and you'll still be able to
``svn update`` your code to get the latest admin templates, if they
change.
2. Or, copy the admin media files so that they live within your document
root.

View File

@ -258,6 +258,32 @@ Default: ``''`` (Empty string)
The username to use when connecting to the database. Not used with SQLite.
DATE_FORMAT
-----------
Default: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``)
The default formatting to use for date fields on Django admin change-list
pages -- and, possibly, by other parts of the system. See
`allowed date format strings`_.
See also DATETIME_FORMAT and TIME_FORMAT.
.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now
DATETIME_FORMAT
---------------
Default: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``)
The default formatting to use for datetime fields on Django admin change-list
pages -- and, possibly, by other parts of the system. See
`allowed date format strings`_.
See also DATE_FORMAT and TIME_FORMAT.
.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now
DEBUG
-----
@ -355,12 +381,13 @@ See http://www.thaiopensource.com/relaxng/jing.html .
LANGUAGE_CODE
-------------
Default: ``'en'``
Default: ``'en-us'``
A string representing the language code for this installation. This should
be in locale format, that's 'en_US' for us-english. If you want to send
out the language in your HTML code, use the LANGUAGE_CODE attribute of the
request, instead, as the chosen language will depend on the browsers settings.
A string representing the language code for this installation. This should be
in standard language format. For example, U.S. English is ``"en-us"``. See the
`internationalization docs`_.
.. _internationalization docs: http://www.djangoproject.com/documentation/i18n/
MANAGERS
--------
@ -481,6 +508,19 @@ Default: ``('django.core.template.loaders.filesystem.load_template_source',)``
A tuple of callables (as strings) that know how to import templates from
various sources. See the `template documentation`_.
TIME_FORMAT
-----------
Default: ``'P'`` (e.g. ``4 p.m.``)
The default formatting to use for time fields on Django admin change-list
pages -- and, possibly, by other parts of the system. See
`allowed date format strings`_.
See also DATE_FORMAT and DATETIME_FORMAT.
.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now
TIME_ZONE
---------

View File

@ -10,8 +10,8 @@ or CheetahTemplate_, you should feel right at home with Django's templates.
.. _Smarty: http://smarty.php.net/
.. _CheetahTemplate: http://www.cheetahtemplate.org/
What's a template?
==================
Templates
=========
A template is simply a text file. All Django templates, by convention, have
".html" extensions, but they can generate any text-based format (HTML, XML,
@ -48,8 +48,8 @@ explained later in this document.::
JavaScript and CSV. You can use the template language for any text-based
format.
What's a variable?
==================
Variables
=========
Variables look like this: ``{{ variable }}``. When the template engine
encounters a variable, it evaluates that variable and replaces it with the
@ -78,8 +78,8 @@ are available in a given template.
You can modify variables for display by using **filters**.
What's a filter?
================
Filters
=======
Filters look like this: ``{{ name|lower }}``. This displays the value of the
``{{ name }}`` variable after being filtered through the ``lower`` filter,
@ -95,8 +95,8 @@ Certain filters take arguments. A filter argument looks like this:
The `Built-in filter reference`_ below describes all the built-in filters.
What's a tag?
=============
Tags
====
Tags look like this: ``{% tag %}``. Tags are more complex than variables: Some
create text in the output, some control flow by performing loops or logic, and
@ -289,18 +289,23 @@ available, and what they do.
Built-in tag reference
----------------------
``block``
Define a block that can be overridden by child templates. See `Template
inheritance`_ for more information.
block
~~~~~
Define a block that can be overridden by child templates. See
`Template inheritance`_ for more information.
comment
~~~~~~~
``comment``
Ignore everything between ``{% comment %}`` and ``{% endcomment %}``
``cycle``
cycle
~~~~~
Cycle among the given strings each time this tag is encountered.
Within a loop, cycles among the given strings each time through
the loop::
Within a loop, cycles among the given strings each time through the loop::
{% for o in some_list %}
<tr class="{% cycle row1,row2 %}">
@ -318,11 +323,15 @@ Built-in tag reference
You can use any number of values, separated by commas. Make sure not to put
spaces between the values -- only commas.
``debug``
debug
~~~~~
Output a whole load of debugging information, including the current context and
imported modules.
``extends``
extends
~~~~~~~
Signal that this template extends a parent template.
This tag may be used in two ways: ``{% extends "base" %}`` (with quotes) uses
@ -332,7 +341,9 @@ Built-in tag reference
See `Template inheritance`_ for more information.
``filter``
filter
~~~~~~
Filter the contents of the variable through variable filters.
Filters can also be piped through each other, and they can have arguments --
@ -344,7 +355,9 @@ Built-in tag reference
This text will be HTML-escaped, and will appear in all lowercase.
{% endfilter %}
``firstof``
firstof
~~~~~~~
Outputs the first variable passed that is not False. Outputs nothing if all the
passed variables are False.
@ -362,9 +375,9 @@ Built-in tag reference
{{ var3 }}
{% endif %}{% endif %}{% endif %}
but obviously much cleaner!
for
~~~
``for``
Loop over each item in an array. For example, to display a list of athletes
given ``athlete_list``::
@ -393,7 +406,9 @@ Built-in tag reference
current one
========================== ================================================
``if``
if
~~
The ``{% if %}`` tag evaluates a variable, and if that variable is "true" (i.e.
exists, is not empty, and is not a false boolean value) the contents of the
block are output::
@ -437,7 +452,9 @@ Built-in tag reference
{% endif %}
{% endif %}
``ifchanged``
ifchanged
~~~~~~~~~
Check if a value has changed from the last iteration of a loop.
The 'ifchanged' block tag is used within a loop. It checks its own rendered
@ -451,7 +468,9 @@ Built-in tag reference
<a href="{{ day|date:"M/d"|lower }}/">{{ day|date:"j" }}</a>
{% endfor %}
``ifequal``
ifequal
~~~~~~~
Output the contents of the block if the two arguments equal each other.
Example::
@ -468,15 +487,21 @@ Built-in tag reference
...
{% endifequal %}
``ifnotequal``
ifnotequal
~~~~~~~~~~
Just like ``ifequal``, except it tests that the two arguments are not equal.
``load``
load
~~~~
Load a custom template tag set.
See `Custom tag and filter libraries`_ for more information.
``now``
now
~~~
Display the date, formatted according to the given string.
Uses the same format as PHP's ``date()`` function (http://php.net/date)
@ -484,9 +509,9 @@ Built-in tag reference
Available format strings:
================ ====================================== =====================
================ ======================================== =====================
Format character Description Example output
================ ====================================== =====================
================ ======================================== =====================
a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'``
this is slightly different than PHP's
output, because this includes periods
@ -527,7 +552,7 @@ Built-in tag reference
s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'``
S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'``
month, 2 characters.
t Not implemented.
t Number of days in the given month. ``28`` to ``31``
T Time zone of this machine. ``'EST'``, ``'MDT'``
U Not implemented.
w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday)
@ -541,7 +566,7 @@ Built-in tag reference
offset for timezones west of UTC is
always negative, and for those east of
UTC is always positive.
================ ====================================== =====================
================ ======================================== =====================
Example::
@ -556,7 +581,9 @@ Built-in tag reference
(Displays "It is the 4th of September" %}
``regroup``
regroup
~~~~~~~
Regroup a list of alike objects by a common attribute.
This complex tag is best illustrated by use of an example: say that ``people``
@ -599,7 +626,9 @@ Built-in tag reference
{% regroup people|dictsort:"gender" by gender as grouped %}
``ssi``
ssi
~~~
Output the contents of a given file into the page.
Like a simple "include" tag, ``{% ssi %}`` includes the contents of another
@ -618,8 +647,10 @@ Built-in tag reference
.. _ALLOWED_INCLUDE_ROOTS: http://www.djangoproject.com/documentation/settings/#allowed-include-roots
``templatetag``
Output one of the bits used to compose template tags.
templatetag
~~~~~~~~~~~
Output one of the syntax characters used to compose template tags.
Since the template system has no concept of "escaping", to display one of the
bits used in template tags, you must use the ``{% templatetag %}`` tag.
@ -635,7 +666,9 @@ Built-in tag reference
``closevariable`` ``}}``
================== =======
``widthratio``
widthratio
~~~~~~~~~~
For creating bar charts and such, this tag calculates the ratio of a given value
to a maximum value, and then applies that ratio to a constant.
@ -650,154 +683,241 @@ Built-in tag reference
Built-in filter reference
-------------------------
``add``
add
~~~
Adds the arg to the value.
``addslashes``
addslashes
~~~~~~~~~~
Adds slashes. Useful for passing strings to JavaScript, for example.
``capfirst``
capfirst
~~~~~~~~
Capitalizes the first character of the value.
``center``
center
~~~~~~
Centers the value in a field of a given width.
``cut``
cut
~~~
Removes all values of arg from the given string.
``date``
date
~~~~
Formats a date according to the given format (same as the ``now`` tag).
``default``
default
~~~~~~~
If value is unavailable, use given default.
``default_if_none``
default_if_none
~~~~~~~~~~~~~~~
If value is ``None``, use given default.
``dictsort``
dictsort
~~~~~~~~
Takes a list of dicts, returns that list sorted by the property given in the
argument.
``dictsortreversed``
Takes a list of dicts, returns that list sorted in reverse order by the property
given in the argument.
dictsortreversed
~~~~~~~~~~~~~~~~
Takes a list of dicts, returns that list sorted in reverse order by the
property given in the argument.
divisibleby
~~~~~~~~~~~
``divisibleby``
Returns true if the value is divisible by the argument.
``escape``
Escapes a string's HTML.
escape
~~~~~~
Escapes a string's HTML. Specifically, it makes these replacements:
* ``"&"`` to ``"&amp;"``
* ``<`` to ``"&lt;"``
* ``>`` to ``"&gt;"``
* ``'"'`` (double quote) to ``"&quot;"``
filesizeformat
~~~~~~~~~~~~~~
``filesizeformat``
Format the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB, 102
bytes, etc).
``first``
first
~~~~~
Returns the first item in a list.
``fix_ampersands``
fix_ampersands
~~~~~~~~~~~~~~
Replaces ampersands with ``&amp;`` entities.
``floatformat``
Displays a floating point number as 34.2 (with one decimal places) - but
only if there's a point to be displayed.
floatformat
Displays a floating point number as 34.2 (with one decimal places) -- but only
if there's a point to be displayed.
get_digit
~~~~~~~~~
``get_digit``
Given a whole number, returns the requested digit of it, where 1 is the
right-most digit, 2 is the second-right-most digit, etc. Returns the
original value for invalid input (if input or argument is not an integer,
or if argument is less than 1). Otherwise, output is always an integer.
right-most digit, 2 is the second-right-most digit, etc. Returns the original
value for invalid input (if input or argument is not an integer, or if argument
is less than 1). Otherwise, output is always an integer.
join
~~~~
``join``
Joins a list with a string, like Python's ``str.join(list)``.
``length``
length
~~~~~~
Returns the length of the value. Useful for lists.
``length_is``
length_is
~~~~~~~~~
Returns a boolean of whether the value's length is the argument.
``linebreaks``
linebreaks
~~~~~~~~~~
Converts newlines into <p> and <br />s.
``linebreaksbr``
linebreaksbr
~~~~~~~~~~~~
Converts newlines into <br />s.
``linenumbers``
linenumbers
~~~~~~~~~~~
Displays text with line numbers.
``ljust``
ljust
~~~~~
Left-aligns the value in a field of a given width.
**Argument:** field size
``lower``
lower
~~~~~
Converts a string into all lowercase.
``make_list``
make_list
~~~~~~~~~
Returns the value turned into a list. For an integer, it's a list of
digits. For a string, it's a list of characters.
``phone2numeric``
Takes a phone number and converts it in to its numerical equivalent.
phone2numeric
~~~~~~~~~~~~~
Converts a phone number to its numerical equivalent.
pluralize
~~~~~~~~~
``pluralize``
Returns 's' if the value is not 1, for '1 vote' vs. '2 votes'.
``pprint``
pprint
~~~~~~
A wrapper around pprint.pprint -- for debugging, really.
``random``
random
~~~~~~
Returns a random item from the list.
``removetags``
removetags
~~~~~~~~~~
Removes a space separated list of [X]HTML tags from the output.
``rjust``
rjust
~~~~~
Right-aligns the value in a field of a given width.
**Argument:** field size
``slice``
slice
~~~~~
Returns a slice of the list.
Uses the same syntax as Python's list slicing; see
Uses the same syntax as Python's list slicing. See
http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice
for an introduction.
Example: ``{{ some_list|slice:":2" }}``
``slugify``
Converts to lowercase, removes non-word characters (alphanumerics and
underscores) and converts spaces to hyphens. Also strips leading and
trailing whitespace.
slugify
~~~~~~~
Converts to lowercase, removes non-word characters (alphanumerics and
underscores) and converts spaces to hyphens. Also strips leading and trailing
whitespace.
stringformat
~~~~~~~~~~~~
``stringformat``
Formats the variable according to the argument, a string formatting specifier.
This specifier uses Python string formating syntax, with the exception that
the leading "%" is dropped.
See http://docs.python.org/lib/typesseq-strings.html for documentation
of Python string formatting
See http://docs.python.org/lib/typesseq-strings.html for documentation of
Python string formatting
striptags
~~~~~~~~~
``striptags``
Strips all [X]HTML tags.
``time``
time
~~~~
Formats a time according to the given format (same as the ``now`` tag).
``timesince``
timesince
~~~~~~~~~
Formats a date as the time since that date (i.e. "4 days, 6 hours").
``title``
title
~~~~~
Converts a string into titlecase.
``truncatewords``
truncatewords
~~~~~~~~~~~~~
Truncates a string after a certain number of words.
**Argument:** Number of words to truncate after
``unordered_list``
unordered_list
~~~~~~~~~~~~~~
Recursively takes a self-nested list and returns an HTML unordered list --
WITHOUT opening and closing <ul> tags.
@ -817,30 +937,43 @@ Built-in filter reference
</ul>
</li>
``upper``
upper
~~~~~
Converts a string into all uppercase.
``urlencode``
urlencode
~~~~~~~~~
Escapes a value for use in a URL.
``urlize``
urlize
~~~~~~
Converts URLs in plain text into clickable links.
``urlizetrunc``
Converts URLs into clickable links, truncating URLs to the given character
limit.
urlizetrunc
~~~~~~~~~~~
Converts URLs into clickable links, truncating URLs to the given character limit.
**Argument:** Length to truncate URLs to
``wordcount``
wordcount
~~~~~~~~~
Returns the number of words.
``wordwrap``
wordwrap
~~~~~~~~
Wraps words at specified line length.
**Argument:** number of words at which to wrap the text
``yesno``
yesno
~~~~~
Given a string mapping values for true, false and (optionally) None,
returns one of those strings according to the value:

View File

@ -611,7 +611,7 @@ Registering the tag
Finally, use a ``register_tag`` call, as in ``register_filter`` above. Example::
from django.core import template
template.register_tag('cycle', do_cycle)
template.register_tag('current_time', do_current_time)
``register_tag`` takes two arguments:

View File

@ -1,438 +0,0 @@
======================
How to do translations
======================
Django has support for internationalization of program strings and template
content. Translations use the ``gettext`` library to produce strings in several
languages. Here's an overview of how translation works with Django.
The goal of this document is to explain how to use translations in projects,
how to add translations to Django patches and how to update and create
translation files.
Using translations in Python
============================
The translation machinery in Django uses the standard ``gettext`` module that
comes with Python. Django uses in its own functions and classes, but it uses
standard ``gettext`` machinery under the hood.
To translate strings in your code, use one of the ``gettext`` helper functions.
There are essentially two ways to use them:
* Use the ``_()`` function, which is available globally. This function
translates any string value.
* Use ``django.utils.translation`` and import ``gettext`` or
``gettext_noop`` from there. ``gettext`` is identical to ``_()``.
Note one important thing about translations: The system can only translate
strings it knows about. That means you have to mark strings for translation.
This is done either by calling ``_()``, ``gettext()`` or ``gettext_noop()`` on
string constants. You can translate variable values or computed values, but the
system needs to know those strings beforehand.
The usual method is to build your strings using string interpolation and using
the ``gettext`` functions to do the actual translation. Example::
def hello_world(request, name, site):
page = _('Hello %(name)s, welcome to %(site)s!') % {
'name': name,
'site': site,
}
return HttpResponse(page)
This short snippet shows one important thing: You shouldn't use positional
string interpolation (e.g., ``%s`` or ``%d``). Use the named string
interpolation (e.g., ``%(name)s``), instead. Do this because other languages
might require reordering of text.
The other two helper functions are similar::
from django.utils.translation import gettext
def hello_world(request, name, site):
page = gettext('Hello %(name)s, welcome to %(site)s!') % {
'name': name,
'site': site,
}
return HttpResponse(page)
The difference here is that ``gettext`` is explicitly imported.
Two important helper functions are available: ``gettext`` and ``gettext_noop``.
* ``gettext`` is just like ``_()`` -- it translates its argument.
* ``gettext_noop`` is different. It marks a string for inclusion into the
message file but doesn't do translation. Instead, the string is later
translated from a variable. Use this if you have constant strings that
should be stored in the source language because they are exchanged over
systems or users -- such as strings in a database -- but should be
translated at the last possible point in time, such as when the string is
presented to the user.
One function, ``django.utils.translation.gettext_lazy()``, isn't available in
the standard ``gettext`` module. Use it for lazily translated strings, such as
messages in Django models that are stored internally and translated on access
-- but not translated on storage, as that would only take the default language
into account.
For example, to translate a model's ``help_text``, do the following::
from django.utils.translation import gettext_lazy
class MyThing(meta.Model):
name = meta.CharField(help_text=gettext_lazy('This is the help text'))
In this example, ``gettext_lazy()`` stores a lazy reference to the string --
not the actual translation. The translation itself will be done when the string
is used in a string context, such as template rendering on the Django admin site.
If you don't like the verbose name ``gettext_lazy``, you can just alias it as
``_``, like so::
from django.utils.translation import gettext_lazy as _
class MyThing(meta.Model):
name = meta.CharField(help_text=_('This is the help text'))
Always use lazy translations in Django models. And it's a good idea to add
translations for the field names and table names, too. This means writing
explicit ``verbose_name`` and ``verbose_name_plural`` options in the ``META``
class, though::
from django.utils.translation import gettext_lazy as _
class MyThing(meta.Model):
name = meta.CharField(_('name'), help_text=_('This is the help text'))
class META:
verbose_name = _('my thing')
verbose_name_plural = _('mythings')
A standard problem with translations is pluralization of strings. Use
``ngettext`` to solve this problem. Example::
def hello_world(request, count):
from django.utils.translation import ngettext
page = ngettext('there is %(count)d object', 'there are %(count)d objects', count) % {
'count': count,
}
return HttpResponse(page)
Using translations in templates
===============================
Using translations in Django templates uses two template tags and a slightly
different syntax than standard gettext. The ``{% trans %}`` template tag
translates a constant string or a variable content::
<title>{% trans 'This is the title.' %}</title>
If you only want to mark some value for translation, but translate it
later from a variable, use the ``noop`` option::
<input name="field" value="{% trans "value" noop %}"/>
It is not possible to use variables in this constant string. If you
have variables you need to put in your translations, you have to use the
``{% blocktrans %}`` tag::
{% blocktrans %}This will have {{ value }} inside{% endblocktrans %}
If your expressions are more complex (like you need to have filters applied),
you need to bind them to local variables for the translation block::
{% blocktrans with value|filter as variable %}
This will have {{ value }} inside
{% endblocktrans %}
The last variant is the pluralization form: you need to specify both the singular
and plural sentence with intersparsed variables like this::
{% blocktrans count list|counted as counter %}
There is only one {{ name }} object.
{% plural %}
There are {{ counter }} {{ name }} objects.
{% endblocktrans %}
Internally all block translations and inline translations are translated into
the actual gettext/ngettext call.
Each ``DjangoContext`` has access to two translation-specific variables:
* ``LANGUAGES`` is a list of tuples in which the first element is the
language code and the second is the language name (in that language).
* ``LANGUAGE_CODE`` is the current user's preferred language, as a string.
Example: ``en-us``. (See "How language preference is discovered", below.)
If you don't use the ``DjangoContext`` extension, you can get those values with
two tags::
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
All tags live in the ``i18n`` tag library, so you need to specify
``{% load i18n %}`` in the head of your template to make use of them.
There are some places where you will encounter constant strings in your template code.
One is filter arguments, the other are normal string constants for tags. If you need to
translate those, you can use the ``_("....")`` syntax::
{% some_special_tag _("Page not found") value|yesno:_("yes,no") %}
In this case both the filter and the tag will see the already translated string, so they
don't need to be aware of translations. And both strings will be pulled out of the templates
for translation and stored in the .po files.
The ``setlang`` redirect view
-----------------------------
Django comes with a view, ``django.views.i18n.set_language`` that sets a user's
language preference and redirects back to the previous page. For example, put
this HTML code in your template::
<form action="/i18n/setlang/" method="POST">
<input name="next" type="hidden" value="/next/page/" />
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
When a user submits the form, his chosen language will be saved in a cookie,
and he'll be redirected either to the URL specified in the ``next`` field, or,
if ``next`` is empty, to the URL in the ``Referer`` header. If the ``Referer``
is blank -- say, if a user's browser suppresses that header -- then the user
will be redirected to ``/`` (the site root) as a fallback.
Activate the ``setlang`` redirect view by adding the following line to your
URLconf::
(r'^i18n/', include('django.conf.urls.i18n'),
Note that this example makes the view available at ``/i18n/setlang/``.
How language preference is discovered
=====================================
Django has a very flexible model of deciding which language should be used --
installation-wide, for a particular user, or both.
To set an installation-wide language preference, set ``LANGUAGE_CODE`` in your
settings file. Django uses this language as the default translation -- the
final attempt if no other translator finds a translation.
If all you want to do is run Django with your native language, and a language
file is available for your language, all you need to do is set
``LANGUAGE_CODE``.
If you want to let each individual user specify which language he or she
prefers, use ``LocaleMiddleware``. ``LocaleMiddleware`` enables language
selection based on data from the request. It lets each user have his or her own
setting.
To use ``LocaleMiddleware``, add ``'django.middleware.locale.LocaleMiddleware'``
to your ``MIDDLEWARE_CLASSES`` setting. Because middleware order matters, you
should follow these guidelines:
* Make sure it's one of the first middlewares installed.
* It should come after ``SessionMiddleware``, because ``LocaleMiddleware``
makes use of session data.
For example, your ``MIDDLEWARE_CLASSES`` might look like this::
MIDDLEWARE_CLASSES = (
'django.middleware.sessions.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)
``LocaleMiddleware`` tries to determine the user's language preference by
following this algorithm:
* First, it looks for a ``django_language`` key in the the current user's
session.
* Failing that, it looks for a cookie called ``django_language``.
* Failing that, it looks at the ``Accept-Language`` HTTP header. This
header is sent by your browser and tells the server which language(s) you
prefer, in order by priority. Django tries each language in the header
until it finds one with available translations.
* Failing that, it uses the global ``LANGUAGE_CODE`` setting.
Notes:
* In each of these places, the language preference is expected to be in the
standard language format, as a string. For example, Brazilian is
``pt-br``.
* If a base language is available but the sublanguage specified is not,
Django uses the base language. For example, if a user specifies ``de-at``
(Austrian German) but Django only has ``de`` available, Django uses
``de``.
Once ``LocaleMiddleware`` determines the user's preference, it makes this
preference available as ``request.LANGUAGE_CODE`` for each `request object`_.
Feel free to read this value in your view code. Here's a simple example::
def hello_world(request, count):
if request.LANGUAGE_CODE == 'de-at':
return HttpResponse("You prefer to read Austrian German.")
else:
return HttpResponse("You prefer to read another language.")
Note that, with static (middleware-less) translation, the language is in
``settings.LANGUAGE_CODE``, while with dynamic (middleware) translation, it's
in ``request.LANGUAGE_CODE``.
.. _request object: http://www.djangoproject.com/documentation/request_response/#httprequest-objects
Creating language files
=======================
So, you've tagged all of your strings for later translation. But you need to
write the translations themselves.
They need to be in a format grokable by ``gettext``. You need to update them.
You may need to create new ones for new languages. This section shows you how
to do it.
Creating message files
----------------------
The first step is to create a message file for a new language. Django comes
with a tool, ``make-messages.py``, that automates this.
To run it on the Django source tree, navigate to the ``django`` directory
itself -- not a Subversion check out, but the one linked to via ``$PYTHONPATH``
or located somewhere on that path.
Then run this command::
bin/make-messages.py -l de
...where ``de`` is the language code for the message file you want to create.
This script runs over the entire Django source tree and pulls out all strings
marked for translation, creating or updating the language's message file.
When it's done, it will have created (or updated) a message file under the
directory ``conf/locale``. In this example, the file will be
``conf/locale/de/LC_MESSAGES/django.po``.
If you don't have the ``gettext`` utilities installed, ``make-messages.py``
will create empty files. If that's the case, either install the ``gettext``
utilities or just copy the English message file
(``conf/locale/en/LC_MESSAGES/django.po``) and use it as a starting point; it's
just an empty translation file.
Once you've created the ``.po`` file, edit the file with your favorite text
editor. First, edit the charset line (search for ``"CHARSET"``) and set it to
the charset you'll be using to edit the content. Then, proceed to write your
translations.
The language code for storage is in locale format -- so it's ``pt_BR`` for
Brazilian and ``de_AT`` for Austrian German.
Every message in the message file is in the same format:
* One line is the msgid. This is the actual string in the source. Don't
change it.
* The other line is msgstr. This is the translation. It starts out empty.
You change it.
Long messages are a special case. There, the first string directly after the
msgstr (or msgid) is an empty string. Then the content itself will be written
over the next few lines as one string per line. Those strings are directly
concatenated. Don't forget trailing spaces within the strings; otherwise,
they'll be tacked together without whitespace!
Compiling message files
-----------------------
After you create your message file, you'll need to transform it into a more
efficient form to be read by ``gettext``. Do this with the
``compile-messages.py`` utility. This tool runs over all available ``.po``
files and creates ``.mo`` files. Run it like this::
bin/compile-messages.py
That's it. You made your first translation. Now, if you configure your browser
to request your language, Django apps will use your language preference.
Another thing: Please submit the name of your newly-created language in that
native language, so we can add it to the global list of available languages
that is mirrored in ``settings.LANGUAGES`` (and the ``LANGUAGES`` template
variable).
Using translations in your own projects
=======================================
Of course, your own projects should make use of translations. Django makes this
simple, because it looks for message files in several locations.
Django looks for translations by following this algorithm:
* First, it looks for a ``locale`` directory in the application directory
of the view that's being called. If it finds a translation for the
selected language, the translation will be installed.
* Next, it looks for a ``locale`` directory in the project directory. If it
finds a translation, the translation will be installed.
* Finally, it checks the base translation in ``django/conf/locale``.
This way, you can write applications that include their own translations, and
you can override base translations in your project path if you want to do that.
Or, you can just build a big project out of several apps and put all
translations into one big project message file. The choice is yours.
All message file repositories are structured the same way. They are:
* ``$APPPATH/locale/<language>/LC_MESSAGES/django.(po|mo)``
* ``$PROJECTPATH/locale/<language>/LC_MESSAGES/django.(po|mo)``
* all paths listed in ``LOCALE_PATHS`` in your settings file are
searched in that order for ``<language>/LC_MESSAGES/django.(po|mo)``
* ``$PYTHONPATH/django/conf/locale/<language>/LC_MESSAGES/django.(po|mo)``
To create message files, you use the same ``make-messages.py`` tool as with the
Django message files. You only need to be in the right place -- in the directory
where either the ``conf/locale`` (in case of the source tree) or the ``locale/``
(in case of app messages or project messages) directory are located. And you
use the same ``compile-messages.py`` to produce the binary ``django.mo`` files that
are used by ``gettext``.
Application message files are a bit complicated to discover -- they need the
``LocaleMiddleware``. If you don't use the middleware, only the Django message
files and project message files will be processed.
Finally, you should give some thought to the structure of your translation
files. If your applications need to be delivered to other users and will
be used in other projects, you might want to use app-specific translations.
But using app-specific translations and project translations could produce
weird problems with ``make-messages``: ``make-messages`` will traverse all directories
below the current path and so might put message IDs into the project
message file that are already in application message files.
The easiest way out is to store applications that are not part of the project
(and so carry their own translations) outside the project tree. That way,
``make-messages`` on the project level will only translate strings that are
connected to your explicit project and not strings that are distributed
independently.
Specialities of Django translation
==================================
If you know ``gettext``, you might note these specialities in the way Django
does translation:
* The string domain is always ``django``. The string domain is used to
differentiate between different programs that store their data in a
common messagefile library (usually ``/usr/share/locale/``). In Django's
case, there are Django-specific locale libraries, so the domain itself
isn't used. We could store app message files with different names and put
them, say, in the project library, but we decided against this. With
message files in the application tree, apps can be distributed more
easily.
* Django only uses ``gettext`` and ``gettext_noop``. That's because Django
always uses ``DEFAULT_CHARSET`` strings internally. There isn't much use
in using ``ugettext``, because you'll always need to produce utf-8
anyway.
* Django doesn't use ``xgettext`` alone. It uses Python wrappers around
``xgettext`` and ``msgfmt``. That's mostly for convenience.

View File

@ -317,7 +317,7 @@ def run_tests(verbosity=0, standalone=False):
print "Template test: %s -- FAILED. Expected %r, got %r" % (name, vals[2], output)
failed_tests.append(name)
loader.template_source_loaders = old_template_loaders
deactivate()
if failed_tests and not standalone:
msg = "Template tests %s failed." % failed_tests
if not verbosity: