Merged i18n branch into the trunk! Fixes #65, and perhaps some others. NB: this means that the i18n branch is now obsolete and will be made read-only.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1068 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jacob Kaplan-Moss 2005-11-04 04:59:46 +00:00
parent cb45fd0ae2
commit 5cf8f68423
60 changed files with 12449 additions and 186 deletions

24
django/bin/compile-messages.py Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/python
import os
import sys
import getopt
basedir = None
if os.path.isdir(os.path.join('conf', 'locale')):
basedir = os.path.abspath(os.path.join('conf', 'locale'))
elif os.path.isdir('locale'):
basedir = os.path.abspath('locale')
else:
print "this script should be run from the django svn tree or your project or app tree"
sys.exit(1)
for (dirpath, dirnames, filenames) in os.walk(basedir):
for file in filenames:
if file.endswith('.po'):
sys.stderr.write('processing file %s in %s\n' % (file, dirpath))
pf = os.path.splitext(os.path.join(dirpath, file))[0]
cmd = 'msgfmt -o %s.mo %s.po' % (pf, pf)
os.system(cmd)

View File

@ -3,6 +3,14 @@ from django.core import management
from optparse import OptionParser
import os, sys
# switch to english, because django-admin creates database content
# like permissions, and those shouldn't contain any translations
try:
from django.utils import translation
translation.activate('en-us')
except:
pass
ACTION_MAPPING = {
'adminindex': management.get_admin_index,
'createsuperuser': management.createsuperuser,
@ -129,3 +137,4 @@ def main():
if __name__ == "__main__":
main()

89
django/bin/make-messages.py Executable file
View File

@ -0,0 +1,89 @@
#!/usr/bin/python
import re
import os
import sys
import getopt
from django.utils.translation import templateize
localedir = None
if os.path.isdir(os.path.join('conf', 'locale')):
localedir = os.path.abspath(os.path.join('conf', 'locale'))
elif os.path.isdir('locale'):
localedir = os.path.abspath('locale')
else:
print "this script should be run from the django svn tree or your project or app tree"
sys.exit(1)
(opts, args) = getopt.getopt(sys.argv[1:], 'l:d:va')
lang = None
domain = 'django'
verbose = False
all = False
for o, v in opts:
if o == '-l':
lang = v
elif o == '-d':
domain = v
elif o == '-v':
verbose = True
elif o == '-a':
all = True
if (lang is None and not all) or domain is None:
print "usage: make-messages.py -l <language>"
print " or: make-messages.py -a"
sys.exit(1)
languages = []
if lang is not None:
languages.append(lang)
elif all:
languages = [el for el in os.listdir(localedir) if not el.startswith('.')]
for lang in languages:
print "processing language", lang
basedir = os.path.join(localedir, lang, 'LC_MESSAGES')
if not os.path.isdir(basedir):
os.makedirs(basedir)
pofile = os.path.join(basedir, '%s.po' % domain)
potfile = os.path.join(basedir, '%s.pot' % domain)
if os.path.exists(potfile):
os.unlink(potfile)
for (dirpath, dirnames, filenames) in os.walk("."):
for file in filenames:
if file.endswith('.py') or file.endswith('.html'):
thefile = file
if file.endswith('.html'):
src = open(os.path.join(dirpath, file), "rb").read()
open(os.path.join(dirpath, '%s.py' % file), "wb").write(templateize(src))
thefile = '%s.py' % file
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()
if thefile != file:
old = '#: '+os.path.join(dirpath, thefile)[2:]
new = '#: '+os.path.join(dirpath, file)[2:]
msgs = msgs.replace(old, new)
if msgs:
open(potfile, 'ab').write(msgs)
if thefile != file:
os.unlink(os.path.join(dirpath, thefile))
msgs = os.popen('msguniq %s' % potfile, 'r').read()
open(potfile, 'w').write(msgs)
if os.path.exists(pofile):
msgs = os.popen('msgmerge %s %s' % (pofile, potfile), 'r').read()
open(pofile, 'wb').write(msgs)
os.unlink(potfile)

View File

@ -1,6 +1,8 @@
# Default Django settings. Override these with settings in the module
# pointed-to by the DJANGO_SETTINGS_MODULE environment variable.
from django.utils.translation import gettext_lazy as _
####################
# CORE #
####################
@ -28,6 +30,23 @@ TIME_ZONE = 'America/Chicago'
# http://blogs.law.harvard.edu/tech/stories/storyReader$15
LANGUAGE_CODE = 'en-us'
# Languages we provide translations for out of the base. The
# language name should be the utf-8 encoded local name for the
# language.
LANGUAGES = (
('cs', _('Czech')),
('de', _('German')),
('en', _('English')),
('es', _('Spanish')),
('fr', _('French')),
('gl', _('Galician')),
('it', _('Italian')),
('pt-br', _('Brazilian')),
('ru', _('Russian')),
('sr', _('Serbian')),
('zh-cn', _('Traditional Chinese')),
)
# Not-necessarily-technical managers of the site. They get broken link
# notifications and other various e-mails.
MANAGERS = ADMINS

Binary file not shown.

View File

@ -0,0 +1,978 @@
# Translation of django.po to Czech
# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the DJANGO package.
# Radek Svarz <translate@svarz.cz>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\n"
"PO-Revision-Date: 2005-10-31 19:42+0100\n"
"Last-Translator: Radek Svarz <translate@svarz.cz>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Domů"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Historie"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Datum/čas"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Uživatel"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Akce"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "Plné datum s časem"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes "
"administrátorské rozhraní."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django správa webu"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django správa"
#: contrib/admin/templates/admin/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Chyba serveru (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Chyba serveru (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Chyba serveru <em>(500)</em>"
#: contrib/admin/templates/admin/500.html:10
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
"Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a "
"měla by být brzy odstraněna. Děkujeme za trpělivost."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Stránka nenalezena"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Je nám líto, ale vyžádaná stránka nebyla nalezena."
#: contrib/admin/templates/admin/index.html:27
msgid "Add"
msgstr "Přidat"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Změnit"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Nemáte oprávnění nic měnit."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Poslední akce"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Mé akce"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Nic"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Uživatelské jméno:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Heslo:"
#: contrib/admin/templates/admin/login.html:20
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "<a href=\"/password_reset/\">Zapomněl(a) jste své heslo?</a>"
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
msgstr "Přihlášení"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Vítejte,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Změnit heslo"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Odhlásit se"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Mazání %(object_name)s '%(object)s' by vyústilo v mazání souvisejících "
"objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny "
"následující související položky budou smazány:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Ano, jsem si jist"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Změna hesla"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Změna hesla byla úspěšná"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Vaše heslo bylo změněno."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Obnovení hesla"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo "
"obnovíme a zašleme Vám e-mailem nové."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "E-mailová adresa:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Obnovit mé heslo"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Děkujeme Vám za Váš strávený čas na našich webových stránkách."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Přihlašte se znova"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Obnovení hesla bylo úspěšné"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) "
"byste ji dostat během okamžiku."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové "
"heslo, takže můžeme ověřit, že jste ho napsal(a) správně."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Staré heslo:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nové heslo:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Potvrdit heslo:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Změnit mé heslo:"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Dostal(a) jste tento e-mail, protože jste požádal(a) o obnovení hesla"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "pro Váš uživatelský účet na %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "Vaše nové heslo je: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Můžete změnit toto heslo na následující stránce: "
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Vaše uživatelské jméno, pro případ, že jste zapomněl(a):"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Děkujeme za používání našeho webu!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr "Tým %(site_name)s"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "čas akce"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "object id"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "object repr"
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "příznak akce"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "zpráva změny"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "log záznam"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "log záznamy"
#: utils/dates.py:6
msgid "Monday"
msgstr "Pondělí"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "Úterý"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "Středa"
#: utils/dates.py:6
msgid "Thursday"
msgstr "Čtvrtek"
#: utils/dates.py:6
msgid "Friday"
msgstr "Pátek"
#: utils/dates.py:7
msgid "Saturday"
msgstr "Sobota"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Neděle"
#: utils/dates.py:14
msgid "January"
msgstr "Leden"
#: utils/dates.py:14
msgid "February"
msgstr "Únor"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "Březen"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "Duben"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "Květen"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "Červen"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "Červenec"
#: utils/dates.py:15
msgid "August"
msgstr "Srpen"
#: utils/dates.py:15
msgid "September"
msgstr "Září"
#: utils/dates.py:15
msgid "October"
msgstr "Říjen"
#: utils/dates.py:15
msgid "November"
msgstr "Listopad"
#: utils/dates.py:16
msgid "December"
msgstr "Prosinec"
#: utils/dates.py:27
msgid "Jan."
msgstr "Led."
#: utils/dates.py:27
msgid "Feb."
msgstr "Ún."
#: utils/dates.py:28
msgid "Aug."
msgstr "Srp."
#: utils/dates.py:28
msgid "Sept."
msgstr "Zář."
#: utils/dates.py:28
msgid "Oct."
msgstr "Říj."
#: utils/dates.py:28
msgid "Nov."
msgstr "List."
#: utils/dates.py:28
msgid "Dec."
msgstr "Pros."
#: models/core.py:5
msgid "domain name"
msgstr "jméno domény"
#: models/core.py:6
msgid "display name"
msgstr "zobrazené jméno"
#: models/core.py:8
msgid "site"
msgstr "web"
#: models/core.py:9
msgid "sites"
msgstr "weby"
#: models/core.py:22
msgid "label"
msgstr "nadpis"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "jméno"
#: models/core.py:25
msgid "package"
msgstr "balík"
#: models/core.py:26
msgid "packages"
msgstr "balíky"
#: models/core.py:36
msgid "python module name"
msgstr "jméno modulu Pythonu"
#: models/core.py:38
msgid "content type"
msgstr "typ obsahu"
#: models/core.py:39
msgid "content types"
msgstr "typy obsahu"
#: models/core.py:62
msgid "redirect from"
msgstr "přesměrovat z"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
"Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'."
#: models/core.py:64
msgid "redirect to"
msgstr "přesměrovat na"
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na "
"'http://'."
#: models/core.py:67
msgid "redirect"
msgstr "přesměrovat"
#: models/core.py:68
msgid "redirects"
msgstr "přesměrování"
#: models/core.py:81
msgid "URL"
msgstr "URL"
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka."
#: models/core.py:83
msgid "title"
msgstr "titulek"
#: models/core.py:84
msgid "content"
msgstr "obsah"
#: models/core.py:85
msgid "enable comments"
msgstr "povolit komentáře"
#: models/core.py:86
msgid "template name"
msgstr "jméno šablony"
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém "
"použije 'flatfiles/default'."
#: models/core.py:88
msgid "registration required"
msgstr "nutná registrace"
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto "
"stránku."
#: models/core.py:92
#, fuzzy
msgid "flat page"
msgstr "plochá strana"
#: models/core.py:93
#, fuzzy
msgid "flat pages"
msgstr "ploché stránky"
#: models/core.py:114
msgid "session key"
msgstr "klíč sezení"
#: models/core.py:115
msgid "session data"
msgstr "data sezení"
#: models/core.py:116
msgid "expire date"
msgstr "datum expirace"
#: models/core.py:118
msgid "session"
msgstr "sezení"
#: models/core.py:119
msgid "sessions"
msgstr "sezení"
#: models/auth.py:8
msgid "codename"
msgstr "codename"
#: models/auth.py:10
msgid "Permission"
msgstr "Oprávnění"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "Oprávnění"
#: models/auth.py:22
msgid "Group"
msgstr "Skupina"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "Skupiny"
#: models/auth.py:33
msgid "username"
msgstr "uživatelské jméno"
#: models/auth.py:34
msgid "first name"
msgstr "křestní jméno"
#: models/auth.py:35
msgid "last name"
msgstr "příjmení"
#: models/auth.py:36
msgid "e-mail address"
msgstr "e-mailová adresa"
#: models/auth.py:37
msgid "password"
msgstr "heslo"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "Použije se MD5 hash -- ne čisté heslo."
#: models/auth.py:38
#, fuzzy
msgid "staff status"
msgstr "stav pracovníků"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr "Rozhodne, zda se může uživatel přihlásit do správy webu."
#: models/auth.py:39
msgid "active"
msgstr "aktivní"
#: models/auth.py:40
msgid "superuser status"
msgstr "stav superuživatel"
#: models/auth.py:41
msgid "last login"
msgstr "poslední přihlášení"
#: models/auth.py:42
msgid "date joined"
msgstr "datum zaregistrování"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro "
"každou skupinu, ve které je."
#: models/auth.py:48
msgid "Users"
msgstr "Uživatelé"
#: models/auth.py:57
msgid "Personal info"
msgstr "Osobní informace"
#: models/auth.py:59
msgid "Important dates"
msgstr "Důležitá data"
#: models/auth.py:182
msgid "Message"
msgstr "Zpráva"
#: conf/global_settings.py:37
msgid "Czech"
msgstr "Česky"
#: conf/global_settings.py:38
msgid "German"
msgstr "Německy"
#: conf/global_settings.py:39
msgid "English"
msgstr "Anglicky"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "Španělsky"
#: conf/global_settings.py:41
msgid "French"
msgstr "Francouzsky"
#: conf/global_settings.py:42
#, fuzzy
msgid "Galician"
msgstr "Galicijský"
#: conf/global_settings.py:43
msgid "Italian"
msgstr "Italsky"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "Brazilsky"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "Rusky"
#: conf/global_settings.py:46
#, fuzzy
msgid "Serbian"
msgstr "Srbsky"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka."
#: core/validators.py:62
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
"Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka."
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr "Velká písmena zde nejsou povolená."
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "Malá písmena zde nejsou povolená."
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "Vložte pouze cifry oddělené čárkami."
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Vložte platné e-mailové adresy oddělené čárkami."
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr "Prosíme, zadejte platnou IP adresu."
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "Zde nejsou povolené prázdné hodnoty."
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "Znaky, které nejsou čísla, nejsou zde povoleny."
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "Tato hodnota nemůže být složená pouze z cifer."
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "Vložte celé číslo."
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Zde jsou povoleny pouze alfanumerické znaky."
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Vložte platné datum ve formátu RRRR-MM-DD."
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "Vložte platný čas ve formátu HH:MM."
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM."
#: core/validators.py:137
msgid "Enter a valid e-mail address."
msgstr "Vložte platnou e-mailovou adresu."
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl "
"obrázek, nebo byl porušen."
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL %s neukazuje na platný obrázek."
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "Telefonní čísla musí být ve formátu XXX-XXX-XXXX. \"%s\" není platné."
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL %s neodkazuje na platné video ve formátu QuickTime."
#: core/validators.py:172
msgid "A valid URL is required."
msgstr "Je vyžadováno platné URL."
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"Je vyžadováno platné HTML. Konkrétní chyby jsou:\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "Špatně formované XML: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "Neplatné URL: %s"
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr "Odkaz na URL %s je rozbitý."
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr "Vložte platnou zkraku U.S. státu."
#: core/validators.py:226
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Mluvte slušně! Slovo %s zde není přípustné."
msgstr[1] "Mluvte slušně! Slova %s zde nejsou přípustná."
#: core/validators.py:233
#, python-format
msgid "This field must match the '%s' field."
msgstr "Toto pole se musí shodovat s polem '%s'."
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr "Prosíme, vložte něco alespoň pro jedno pole."
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná."
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Toto pole musí být vyplněno, když %(field)s má %(value)s"
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Toto pole musí být vyplněno, když %(field)s nemá %(value)s"
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr "Duplikátní hodnoty nejsou povolené."
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr "Tato hodnota musí být mocninou %s."
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr "Prosíme, vložte platné číslo."
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem."
msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
"Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem."
msgstr[1] ""
"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou "
"celkem."
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Ujistěte se, že posílaný soubor je velký nejméně %s bytů."
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Ujistěte se, že posílaný soubor je velký nejvíce %s bytů."
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr "Formát pro toto pole je špatný."
#: core/validators.py:388
msgid "This field is invalid."
msgstr "Toto pole není platné."
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Nemohl jsem získat nic z %s."
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "URL %(url)s vrátilo neplatnou hlavičku Content-Type '%(contenttype)s'."
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s "
"\"%(start)s\".)"
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. "
"(Řádka začíná s \"%(start)s\".)"
#: core/validators.py:468
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%"
"(start)s\".)"
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%"
"(start)s\".)"
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. "
"(Řádka začíná s \"%(start)s\".)"
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s "
"\"%(start)s\".)"
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr "Oddělte více identifikátorů čárkami."
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné "
"položky."

Binary file not shown.

View File

@ -0,0 +1,984 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\n"
"PO-Revision-Date: 2005-10-08 00:03+0200\n"
"Last-Translator: Georg Bauer <gb@bofh.ms>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Start"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Geschichte"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Datum/Zeit"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Benutzer"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Aktion"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht "
"über diese Verwaltungsseiten angelegt."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django Systemverwaltung"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django Verwaltung"
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
msgstr "Serverfehler"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Serverfehler (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Serverfehler <em>(500)</em>"
#: 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 ""
"Es hat einen Fehler gegeben. Dieser Fehler wurde an die Serververwalter per "
"eMail weitergegeben und sollte bald behoben sein. Vielen Dank für Ihr "
"Verständnis."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Seite nicht gefunden"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr ""
"Es tut uns leid, aber die angeforderte Seite kann nicht gefunden werden."
#: contrib/admin/templates/admin/index.html:27
msgid "Add"
msgstr "Zufügen"
#: contrib/admin/templates/admin/index.html:33
msgid "Change"
msgstr "Ändern"
#: contrib/admin/templates/admin/index.html:43
msgid "You don't have permission to edit anything."
msgstr "Sie haben keine Berechtigung irgendwas zu ändern."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Kürzliche Aktionen"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "Meine Aktionen"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Keine vorhanden"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Benutzername:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Passwort:"
#: contrib/admin/templates/admin/login.html:20
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "Haben Sie <a href=\"/password_reset/\">ihr Passwort vergessen</a>?"
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
msgstr "Anmelden"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Willkommen,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Passwort ändern"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Abmelden"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Die Löschung des %(object_name)s '%(object)s' hätte die Löschung von "
"abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die "
"folgenden abhängigen Daten zu löschen:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Sind Sie sicher, das Sie %(object_name)s \"%(object)s\" löschen wollen? Es "
"werden zusätzlich die folgenden abhängigen Daten mit gelöscht:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Ja, ich bin sicher"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Kennwort ändern"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Erfolgreiche Kennwortänderung"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Ihr Kennwort wurde geändert."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Kennwort zurücksetzen"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Sie haben Ihr Kennwort vergessen? Geben Sie bitte Ihre eMail-Adresse ein und "
"wir setzen das Kennwort auf einen neuen Wert und schicken den per eMail an "
"Sie raus."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "eMail-Adresse:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Mein Kennwort zurücksetzen"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Danke, dass Sie eine Weile bei uns waren."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Neu anmelden"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Erfolgreich Kennwort zurückgesetzt"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Wir haben Ihnen ein neues Kennwort per eMail zugeschickt an die Adresse, die "
"Sie uns gegeben haben. Es sollte in Kürze ankommen."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Kennwort und darunter "
"dann zweimal (um sicherzustellen, das Sie es korrekt eingegeben haben) das "
"neue Kennwort ein."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "altes Kennwort:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "neues Kennwort:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Kennwortwiederholung:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Mein Kennwort ändern"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Sie erhalten diese Mail, weil Sie ein neues Kennwort"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "für ihren Benutzer bei %(site_name)s angefordert haben."
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "Ihr neues Kennwort ist: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Sie können das Kennwort auf folgender Seite ändern:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Ihr Benutzername, falls Sie ihn vergessen haben:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Vielen Dank, das Sie unsere Seiten benutzen!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr "Das Team von %(site_name)s"
#: contrib/admin/models/admin.py:6
msgid "action time"
msgstr "Zeit der Aktion"
#: contrib/admin/models/admin.py:9
msgid "object id"
msgstr "Objekt ID"
#: contrib/admin/models/admin.py:10
msgid "object repr"
msgstr "Objekt Darst."
#: contrib/admin/models/admin.py:11
msgid "action flag"
msgstr "Aktionskennzeichen"
#: contrib/admin/models/admin.py:12
msgid "change message"
msgstr "Änderungsmeldung"
#: contrib/admin/models/admin.py:15
msgid "log entry"
msgstr "Logeintrag"
#: contrib/admin/models/admin.py:16
msgid "log entries"
msgstr "Logeinträge"
#: utils/dates.py:6
msgid "Monday"
msgstr "Montag"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "Dienstag"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "Mittwoch"
#: utils/dates.py:6
msgid "Thursday"
msgstr "Donnerstag"
#: utils/dates.py:6
msgid "Friday"
msgstr "Freitag"
#: utils/dates.py:7
msgid "Saturday"
msgstr "Samstag"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Sonntag"
#: utils/dates.py:14
msgid "January"
msgstr "Januar"
#: utils/dates.py:14
msgid "February"
msgstr "Februa"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "März"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "April"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "Mai"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "Juni"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "Juli"
#: utils/dates.py:15
msgid "August"
msgstr "August"
#: utils/dates.py:15
msgid "September"
msgstr "September"
#: utils/dates.py:15
msgid "October"
msgstr "Oktober"
#: utils/dates.py:15
msgid "November"
msgstr "November"
#: utils/dates.py:16
msgid "December"
msgstr "Dezember"
#: utils/dates.py:27
msgid "Jan."
msgstr "Jan."
#: utils/dates.py:27
msgid "Feb."
msgstr "Feb."
#: utils/dates.py:28
msgid "Aug."
msgstr "Aug."
#: utils/dates.py:28
msgid "Sept."
msgstr "Sept."
#: utils/dates.py:28
msgid "Oct."
msgstr "Okt."
#: utils/dates.py:28
msgid "Nov."
msgstr "Nov."
#: utils/dates.py:28
msgid "Dec."
msgstr "Dez."
#: models/core.py:5
msgid "domain name"
msgstr "Domainname"
#: models/core.py:6
msgid "display name"
msgstr "Anzeigename"
#: models/core.py:8
msgid "site"
msgstr "Website"
#: models/core.py:9
msgid "sites"
msgstr "Websites"
#: models/core.py:22
msgid "label"
msgstr "Label"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "Name"
#: models/core.py:25
msgid "package"
msgstr "Paket"
#: models/core.py:26
msgid "packages"
msgstr "Pakete"
#: models/core.py:36
msgid "python module name"
msgstr "Python Modulname"
#: models/core.py:38
msgid "content type"
msgstr "Inhaltstyp"
#: models/core.py:39
msgid "content types"
msgstr "Inhaltstypen"
#: models/core.py:62
msgid "redirect from"
msgstr "Umleitung von"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/"
"events/search/'."
#: models/core.py:64
msgid "redirect to"
msgstr "Umleitung zu"
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Hier mus entweder ein absoluter Pfad oder eine komplette URL mit http:// am "
"Anfang stehen."
#: models/core.py:67
msgid "redirect"
msgstr "Umleitung"
#: models/core.py:68
msgid "redirects"
msgstr "Umleitungen"
#: models/core.py:81
msgid "URL"
msgstr "URL"
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen."
#: models/core.py:83
msgid "title"
msgstr "Titel"
#: models/core.py:84
msgid "content"
msgstr "Inhalt"
#: models/core.py:85
msgid "enable comments"
msgstr "Kommentare aktivieren"
#: models/core.py:86
msgid "template name"
msgstr "Name der Vorlage"
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"Beispiel: 'flatfiles/contact_page'. Wenn dieses Feld nicht gefüllt ist, wird "
"'flatfiles/default' als Standard gewählt."
#: models/core.py:88
msgid "registration required"
msgstr "Registrierung erforderlich"
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"Wenn hier ein Haken ist, können nur angemeldete Benutzer diese Seite sehen."
#: models/core.py:92
msgid "flat page"
msgstr "Webseite"
#: models/core.py:93
msgid "flat pages"
msgstr "Webseiten"
#: models/core.py:114
msgid "session key"
msgstr "Sitzungs-ID"
#: models/core.py:115
msgid "session data"
msgstr "Sitzungsdaten"
#: models/core.py:116
msgid "expire date"
msgstr "Ablaufdatum"
#: models/core.py:118
msgid "session"
msgstr "Sitzung"
#: models/core.py:119
msgid "sessions"
msgstr "Sitzungen"
#: models/auth.py:8
msgid "codename"
msgstr "Codename"
#: models/auth.py:10
msgid "Permission"
msgstr "Berechtigung"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "Berechtigungen"
#: models/auth.py:22
msgid "Group"
msgstr "Gruppe"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "Gruppen"
#: models/auth.py:33
msgid "username"
msgstr "Benutzername"
#: models/auth.py:34
msgid "first name"
msgstr "Vorname"
#: models/auth.py:35
msgid "last name"
msgstr "Nachname"
#: models/auth.py:36
msgid "e-mail address"
msgstr "eMail-Adresse"
#: models/auth.py:37
msgid "password"
msgstr "Passwort"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "Nicht das Passwort selber eintragen, sondern dessen MD5 signatur."
#: models/auth.py:38
msgid "staff status"
msgstr "Administrator"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr ""
"Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann."
#: models/auth.py:39
msgid "active"
msgstr "Aktiv"
#: models/auth.py:40
msgid "superuser status"
msgstr "Hauptadmin."
#: models/auth.py:41
msgid "last login"
msgstr "letzte Anmeldung"
#: models/auth.py:42
msgid "date joined"
msgstr "Mitglied seit"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch "
"alle Rechte, die seine zugewiesenen Gruppen haben."
#: models/auth.py:48
msgid "Users"
msgstr "Benutzer"
#: models/auth.py:57
msgid "Personal info"
msgstr "Persönliche Infos"
#: models/auth.py:59
msgid "Important dates"
msgstr "Wichtige Daten"
#: models/auth.py:182
msgid "Message"
msgstr "Mitteilung"
#: conf/global_settings.py:37
msgid "Czech"
msgstr "Tschechisch"
#: conf/global_settings.py:38
msgid "German"
msgstr "Deutsch"
#: conf/global_settings.py:39
msgid "English"
msgstr "Englisch"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "Spanisch"
#: conf/global_settings.py:41
msgid "French"
msgstr "Französisch"
#: conf/global_settings.py:42
msgid "Galician"
msgstr "Galicisch"
#: conf/global_settings.py:43
msgid "Italian"
msgstr "Italienisch"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "Brasilianisch"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "Russisch"
#: conf/global_settings.py:46
msgid "Serbian"
msgstr "Serbisch"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "Der Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
#: core/validators.py:62
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
"Der Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche "
"enthalten."
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr "Großbuchstaben sind hier nicht erlaubt."
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "Kleinbuchstaben sind hier nicht erlaubt."
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt."
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Bitte mit Komma getrennte, gültige eMail-Adressen eingeben."
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr "Bitte eine gültige IP-Adresse eingeben."
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "Dieses Feld darf nicht leer sein."
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt."
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen."
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "Bitte eine ganze Zahl eingeben."
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Nur alphabetische Zeichen sind hier erlaubt."
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben."
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben."
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
"Bitte eine gültige Datum+Zeit Angabe im Format JJJJ-MM-TT SS:MM eingeben."
#: core/validators.py:137
msgid "Enter a valid e-mail address."
msgstr "Bitte eine gültige eMail-Adresse eingeben"
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild "
"oder ist defekt."
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "Die URL %s zeigt nicht auf ein gültiges Bild."
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Telefonnummern müssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungültig."
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime video."
#: core/validators.py:172
msgid "A valid URL is required."
msgstr "Eine gültige URL ist hier verlangt."
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"Bitte gültiges HTML eingeben. Fehler sind:\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "Ungültiges XML: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "Ungültige URL: %s"
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr "Die URL %s funktioniert nicht."
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben."
#: core/validators.py:226
#, 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] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!"
#: core/validators.py:233
#, python-format
msgid "This field must match the '%s' field."
msgstr "Dieses Feld muss zum Feld '%s' passen."
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr "Bitte mindestens eins der Felder ausfüllen."
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen."
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
"Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat."
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
"Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist."
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr "Doppelte Werte sind hier nicht erlaubt."
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr "Dieser Wert muss eine Potenz von %s sein."
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr "Bitte eine gültige Dezimalzahl eingeben."
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben."
msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben."
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben."
msgstr[1] ""
"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben."
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
"Bitte sicherstellen, daß die hochgeladene Datei mindestens %s Bytes gross "
"ist."
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
"Bitte sicherstellen, daß die hochgeladene Datei maximal %s Bytes gross ist."
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr "Das Format für dieses Feld ist falsch."
#: core/validators.py:388
msgid "This field is invalid."
msgstr "Dieses Feld ist ungültig."
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Konnte nichts von %s empfangen."
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'."
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile "
"beginnt mit \"%(start)s\"."
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile "
"beginnt mit \"%(start)s\"."
#: core/validators.py:468
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit "
"\"%(start)s\"."
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s"
"\"."
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die "
"Zeile beginnt mit \"%(start)s\"."
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile "
"beginnt mit \"%(start)s\"."
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr "Mehrere IDs können mit Komma getrennt werden."
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
" Um mehr als eine Selektion zu treffen, \"Control\" oder auf dem Mac "
"\"Command\" beim Klicken gedrückt halten."

Binary file not shown.

View File

@ -0,0 +1,927 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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/object_history.html:5
msgid "History"
msgstr ""
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr ""
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr ""
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr ""
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "N j, Y, P"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr ""
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr ""
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
msgstr ""
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr ""
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <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
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/login.html:15
msgid "Username:"
msgstr ""
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr ""
#: contrib/admin/templates/admin/login.html:20
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr ""
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr ""
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr ""
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr ""
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr ""
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr ""
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr ""
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr ""
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr ""
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr ""
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr ""
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr ""
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr ""
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr ""
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr ""
#: contrib/admin/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 ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
#: utils/dates.py:6
msgid "Tuesday"
msgstr ""
#: utils/dates.py:6
msgid "Wednesday"
msgstr ""
#: utils/dates.py:6
msgid "Thursday"
msgstr ""
#: utils/dates.py:6
msgid "Friday"
msgstr ""
#: utils/dates.py:7
msgid "Saturday"
msgstr ""
#: utils/dates.py:7
msgid "Sunday"
msgstr ""
#: utils/dates.py:14
msgid "January"
msgstr ""
#: utils/dates.py:14
msgid "February"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr ""
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr ""
#: utils/dates.py:15
msgid "August"
msgstr ""
#: utils/dates.py:15
msgid "September"
msgstr ""
#: utils/dates.py:15
msgid "October"
msgstr ""
#: utils/dates.py:15
msgid "November"
msgstr ""
#: utils/dates.py:16
msgid "December"
msgstr ""
#: utils/dates.py:27
msgid "Jan."
msgstr ""
#: utils/dates.py:27
msgid "Feb."
msgstr ""
#: utils/dates.py:28
msgid "Aug."
msgstr ""
#: utils/dates.py:28
msgid "Sept."
msgstr ""
#: utils/dates.py:28
msgid "Oct."
msgstr ""
#: utils/dates.py:28
msgid "Nov."
msgstr ""
#: utils/dates.py:28
msgid "Dec."
msgstr ""
#: models/core.py:5
msgid "domain name"
msgstr ""
#: models/core.py:6
msgid "display name"
msgstr ""
#: models/core.py:8
msgid "site"
msgstr ""
#: models/core.py:9
msgid "sites"
msgstr ""
#: models/core.py:22
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr ""
#: models/core.py:25
msgid "package"
msgstr ""
#: models/core.py:26
msgid "packages"
msgstr ""
#: models/core.py:36
msgid "python module name"
msgstr ""
#: models/core.py:38
msgid "content type"
msgstr ""
#: models/core.py:39
msgid "content types"
msgstr ""
#: models/core.py:62
msgid "redirect from"
msgstr ""
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
msgid "redirect to"
msgstr ""
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
msgid "redirect"
msgstr ""
#: models/core.py:68
msgid "redirects"
msgstr ""
#: models/core.py:81
msgid "URL"
msgstr ""
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
msgid "title"
msgstr ""
#: models/core.py:84
msgid "content"
msgstr ""
#: models/core.py:85
msgid "enable comments"
msgstr ""
#: models/core.py:86
msgid "template name"
msgstr ""
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
msgid "registration required"
msgstr ""
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
msgid "flat page"
msgstr ""
#: models/core.py:93
msgid "flat pages"
msgstr ""
#: models/core.py:114
msgid "session key"
msgstr ""
#: models/core.py:115
msgid "session data"
msgstr ""
#: models/core.py:116
msgid "expire date"
msgstr ""
#: models/core.py:118
msgid "session"
msgstr ""
#: models/core.py:119
msgid "sessions"
msgstr ""
#: models/auth.py:8
msgid "codename"
msgstr ""
#: models/auth.py:10
msgid "Permission"
msgstr ""
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr ""
#: models/auth.py:22
msgid "Group"
msgstr ""
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr ""
#: models/auth.py:33
msgid "username"
msgstr ""
#: models/auth.py:34
msgid "first name"
msgstr ""
#: models/auth.py:35
msgid "last name"
msgstr ""
#: models/auth.py:36
msgid "e-mail address"
msgstr ""
#: models/auth.py:37
msgid "password"
msgstr ""
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr ""
#: models/auth.py:38
msgid "staff status"
msgstr ""
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr ""
#: models/auth.py:39
msgid "active"
msgstr ""
#: models/auth.py:40
msgid "superuser status"
msgstr ""
#: models/auth.py:41
msgid "last login"
msgstr ""
#: models/auth.py:42
msgid "date joined"
msgstr ""
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
#: models/auth.py:48
msgid "Users"
msgstr ""
#: models/auth.py:57
msgid "Personal info"
msgstr ""
#: models/auth.py:59
msgid "Important dates"
msgstr ""
#: models/auth.py:182
msgid "Message"
msgstr ""
#: conf/global_settings.py:37
msgid "Czech"
msgstr ""
#: conf/global_settings.py:38
msgid "German"
msgstr ""
#: conf/global_settings.py:39
msgid "English"
msgstr ""
#: conf/global_settings.py:40
msgid "Spanish"
msgstr ""
#: conf/global_settings.py:41
msgid "French"
msgstr ""
#: conf/global_settings.py:42
msgid "Galician"
msgstr ""
#: conf/global_settings.py:43
msgid "Italian"
msgstr ""
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr ""
#: conf/global_settings.py:45
msgid "Russian"
msgstr ""
#: conf/global_settings.py:46
msgid "Serbian"
msgstr ""
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr ""
#: core/validators.py:62
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
msgid "Enter a valid e-mail address."
msgstr ""
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#, 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
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#, 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
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr ""
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,959 @@
# translation of django.po to Español
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
# Ricardo Javier Cárdenes Medina <ricardo.cardenes@gmail.com>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\n"
"PO-Revision-Date: 2005-10-04 20:59GMT\n"
"Last-Translator: Ricardo Javier Cárdenes Medina <ricardo.cardenes@gmail."
"com>\n"
"Language-Team: Español <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.10.2\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Inicio"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Histórico"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Fecha/hora"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Usuario"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Acción"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"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/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Error del servidor (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Error del servidor (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Error de servidor <em>(500)</em>"
#: 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 ""
"Ha ocurrido un error. Se ha informado a los administradores del sitio "
"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
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/login.html:15
msgid "Username:"
msgstr "Usuario:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Clave:"
#: contrib/admin/templates/admin/login.html:20
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/login.html:24
msgid "Log in"
msgstr "Registrarse"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bienvenido,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambiar clave"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Terminar"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Eliminar el %(object_name)s '%(object)s' provocaría la eliminación de "
"objetos relacionados, pero su cuenta no tiene permiso para borrar los "
"siguientes tipos de objetos:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"¿Está seguro de que quiere borrar los %(object_name)s \"%(object)s\"? Se "
"borrarán los siguientes objetos relacionados:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Sí, estoy seguro"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Cambiar clave"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Cambio de clave con éxito"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Su clave ha cambiado."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Recuperar clave"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"¿Ha olvidado su clave? Introduzca su dirección de correo, y crearemos una "
"nueva que le enviaremos por correo."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "Dirección de correo:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Recuperar mi clave"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Registrarse de nuevo"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Recuperación de clave con éxito"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería "
"recibirla en breve."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Por favor, introduzca su clave antigua, por seguridad, y después introduzca "
"la nueva clave dos veces para verificar que la ha escrito correctamente."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Clave antigua:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Clave nueva:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Confirme clave:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Cambiar mi clave"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Recibe este mensaje debido a que solicitó recuperar la clave"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "de su cuenta de usuario en %(site_name)s."
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "Su nueva clave es: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Puede cambiarla accediendo a esta página:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "¡Gracias por usar nuestro sitio!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
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 ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
#: utils/dates.py:6
msgid "Tuesday"
msgstr ""
#: utils/dates.py:6
msgid "Wednesday"
msgstr ""
#: utils/dates.py:6
msgid "Thursday"
msgstr ""
#: utils/dates.py:6
msgid "Friday"
msgstr ""
#: utils/dates.py:7
msgid "Saturday"
msgstr ""
#: utils/dates.py:7
msgid "Sunday"
msgstr ""
#: utils/dates.py:14
msgid "January"
msgstr ""
#: utils/dates.py:14
msgid "February"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr ""
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr ""
#: utils/dates.py:15
msgid "August"
msgstr ""
#: utils/dates.py:15
msgid "September"
msgstr ""
#: utils/dates.py:15
msgid "October"
msgstr ""
#: utils/dates.py:15
msgid "November"
msgstr ""
#: utils/dates.py:16
msgid "December"
msgstr ""
#: utils/dates.py:27
msgid "Jan."
msgstr ""
#: utils/dates.py:27
msgid "Feb."
msgstr ""
#: utils/dates.py:28
msgid "Aug."
msgstr ""
#: utils/dates.py:28
msgid "Sept."
msgstr ""
#: utils/dates.py:28
msgid "Oct."
msgstr ""
#: utils/dates.py:28
msgid "Nov."
msgstr ""
#: utils/dates.py:28
msgid "Dec."
msgstr ""
#: models/core.py:5
msgid "domain name"
msgstr ""
#: models/core.py:6
msgid "display name"
msgstr ""
#: models/core.py:8
msgid "site"
msgstr ""
#: models/core.py:9
msgid "sites"
msgstr ""
#: models/core.py:22
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "Usuario:"
#: models/core.py:25
msgid "package"
msgstr ""
#: models/core.py:26
msgid "packages"
msgstr ""
#: models/core.py:36
msgid "python module name"
msgstr ""
#: models/core.py:38
msgid "content type"
msgstr ""
#: models/core.py:39
msgid "content types"
msgstr ""
#: models/core.py:62
msgid "redirect from"
msgstr ""
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
msgid "redirect to"
msgstr ""
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
msgid "redirect"
msgstr ""
#: models/core.py:68
msgid "redirects"
msgstr ""
#: models/core.py:81
msgid "URL"
msgstr ""
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
msgid "title"
msgstr ""
#: models/core.py:84
msgid "content"
msgstr ""
#: models/core.py:85
msgid "enable comments"
msgstr ""
#: models/core.py:86
msgid "template name"
msgstr ""
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
msgid "registration required"
msgstr ""
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
msgid "flat page"
msgstr ""
#: models/core.py:93
msgid "flat pages"
msgstr ""
#: models/core.py:114
msgid "session key"
msgstr ""
#: models/core.py:115
msgid "session data"
msgstr ""
#: models/core.py:116
msgid "expire date"
msgstr ""
#: models/core.py:118
msgid "session"
msgstr ""
#: models/core.py:119
msgid "sessions"
msgstr ""
#: models/auth.py:8
msgid "codename"
msgstr ""
#: models/auth.py:10
msgid "Permission"
msgstr ""
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr ""
#: models/auth.py:22
msgid "Group"
msgstr ""
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr ""
#: models/auth.py:33
#, fuzzy
msgid "username"
msgstr "Usuario:"
#: models/auth.py:34
msgid "first name"
msgstr ""
#: models/auth.py:35
msgid "last name"
msgstr ""
#: models/auth.py:36
#, fuzzy
msgid "e-mail address"
msgstr "Dirección de correo:"
#: models/auth.py:37
#, fuzzy
msgid "password"
msgstr "Clave:"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr ""
#: models/auth.py:38
msgid "staff status"
msgstr ""
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr ""
#: models/auth.py:39
msgid "active"
msgstr ""
#: models/auth.py:40
msgid "superuser status"
msgstr ""
#: models/auth.py:41
msgid "last login"
msgstr ""
#: models/auth.py:42
msgid "date joined"
msgstr ""
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
#: models/auth.py:48
#, fuzzy
msgid "Users"
msgstr "Usuario"
#: models/auth.py:57
msgid "Personal info"
msgstr ""
#: models/auth.py:59
msgid "Important dates"
msgstr ""
#: models/auth.py:182
msgid "Message"
msgstr ""
#: conf/global_settings.py:37
msgid "Czech"
msgstr ""
#: conf/global_settings.py:38
msgid "German"
msgstr ""
#: conf/global_settings.py:39
msgid "English"
msgstr ""
#: conf/global_settings.py:40
msgid "Spanish"
msgstr ""
#: conf/global_settings.py:41
msgid "French"
msgstr ""
#: conf/global_settings.py:42
msgid "Galician"
msgstr ""
#: conf/global_settings.py:43
msgid "Italian"
msgstr ""
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr ""
#: conf/global_settings.py:45
msgid "Russian"
msgstr ""
#: conf/global_settings.py:46
msgid "Serbian"
msgstr ""
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
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
#, 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
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
#, fuzzy
msgid "Enter a valid e-mail address."
msgstr "Dirección de correo:"
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#, 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
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#, 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
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr ""
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
#~ msgid "Server error <em>(500)</em>"
#~ msgstr "Error del servidor <em>(500)</em>"
#~ msgid "Click to change"
#~ msgstr "Cambie para modificar"

Binary file not shown.

View File

@ -0,0 +1,995 @@
# translation of django.po to french
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
# Laurent Rahuel <laurent.rahuel@gmail.com>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Accueil"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Historique"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Date/Heure"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Utilisateur"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Action"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été "
"ajouté au moyen de ce site d'administration."
#: contrib/admin/templates/admin/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/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Erreur du serveur (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Erreur du serveur (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Erreur du serveur <em>(500)</em>"
#: 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 ""
"Une erreur est survenue. Elle a été transmise par courriel aux "
"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
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/login.html:15
msgid "Username:"
msgstr "Nom d'utilisateur"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Mot de passe"
#: contrib/admin/templates/admin/login.html:20
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/login.html:24
msgid "Log in"
msgstr "Connectez vous"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bienvenue,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Modifier votre mot de passe"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Déconnection"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Supprimer %(object_name)s '%(object)s' provoquerait la suppression des "
"objets qui lui sont liés mais votre compte ne possède pas la permission de "
"supprimer les types d'objets suivants:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Êtes vous certain de vouloir supprimer %(object_name)s \"%(object)s\"? Tous "
"les éléments liés suivants seront supprimés:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Oui, je suis certain"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Modification de votre mot de passe"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Mot de passe modifié avec succés"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Votre mot de passe a été modifié."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Réinitialisation de votre mot de passe"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Mot de passe perdu ? Saisissez votre adresse de courriel ci-dessous et nous "
"annulerons votre mot de passe actuel avant de vous en faire parvenir un "
"nouveau par courriel."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "Courriel:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Réinitialiser mon mot de passe"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Merci pour le temps que vous avez accordé au site aujourd'hui."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Connectez vous à nouveau"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Mot de passe réinitialisé avec succés"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Nous vous avons envoyé par courriel un nouveau mot de passe. Vous devriez le "
"recevoir rapidement."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Pour des raisons de sécurité, veuillez entrer votre ancien mot de passe puis "
"saisissez deux fois votre nouveau mot de passe afin que nous puissions "
"vérifier que vous l'avez tapé correctement."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Ancien mot de passe:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nouveau mot de passe:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Confirmation de votre nouveau mot de passe"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Modifier mon mot de passe"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr ""
"Vous recevez ce courriel car vous avez demandé un changement de mot de passe"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "pour votre compte du site %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "Votre nouveau mot de passe est: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Vous pouvez modifier ce mot de passe à l'adresse suivante:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Votre nom d'utilisateur, en cas d'oubli:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Merci d'utiliser notre site!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
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"
#: utils/dates.py:6
msgid "Monday"
msgstr "Lundi"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "Mardi"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "Mercredi"
#: utils/dates.py:6
msgid "Thursday"
msgstr "Jeudi"
#: utils/dates.py:6
msgid "Friday"
msgstr "Vendredi"
#: utils/dates.py:7
msgid "Saturday"
msgstr "Samedi"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Dimanche"
#: utils/dates.py:14
msgid "January"
msgstr "Janvier"
#: utils/dates.py:14
msgid "February"
msgstr "Février"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "Mars"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "Avril"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "Mai"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "Juin"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "Juillet"
#: utils/dates.py:15
msgid "August"
msgstr "Aôut"
#: utils/dates.py:15
msgid "September"
msgstr "Septembre"
#: utils/dates.py:15
msgid "October"
msgstr "Octobre"
#: utils/dates.py:15
msgid "November"
msgstr "Novembre"
#: utils/dates.py:16
msgid "December"
msgstr "Décembre"
#: utils/dates.py:27
msgid "Jan."
msgstr "Jan."
#: utils/dates.py:27
msgid "Feb."
msgstr "Fév."
#: utils/dates.py:28
msgid "Aug."
msgstr "Aôut"
#: utils/dates.py:28
msgid "Sept."
msgstr "Sept."
#: utils/dates.py:28
msgid "Oct."
msgstr "Oct."
#: utils/dates.py:28
msgid "Nov."
msgstr "Nov."
#: utils/dates.py:28
msgid "Dec."
msgstr "Déc."
#: models/core.py:5
msgid "domain name"
msgstr "nom de domaine"
#: models/core.py:6
msgid "display name"
msgstr "nom à afficher"
#: models/core.py:8
msgid "site"
msgstr "site"
#: models/core.py:9
msgid "sites"
msgstr "sites"
#: models/core.py:22
msgid "label"
msgstr "intitulé"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "nom"
#: models/core.py:25
msgid "package"
msgstr "paquetage"
#: models/core.py:26
msgid "packages"
msgstr "paquetages"
#: models/core.py:36
msgid "python module name"
msgstr "nom du module python"
#: models/core.py:38
msgid "content type"
msgstr "type de contenu"
#: models/core.py:39
msgid "content types"
msgstr "types de contenu"
#: models/core.py:62
msgid "redirect from"
msgstr "redirigé depuis"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/events/"
"search/'."
#: models/core.py:64
msgid "redirect to"
msgstr "redirigé vers"
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète "
"débutant par 'http://'."
#: models/core.py:67
msgid "redirect"
msgstr "redirection"
#: models/core.py:68
msgid "redirects"
msgstr "redirections"
#: models/core.py:81
msgid "URL"
msgstr "URL"
#: models/core.py:82
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
msgid "title"
msgstr "titre"
#: models/core.py:84
msgid "content"
msgstr "contenu"
#: models/core.py:85
msgid "enable comments"
msgstr "autoriser les commentaires"
#: models/core.py:86
msgid "template name"
msgstr "nom du template"
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera "
"'flatfiles/default'."
#: models/core.py:88
msgid "registration required"
msgstr "enregistrement requis"
#: models/core.py:88
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
msgid "flat page"
msgstr "page à plat"
#: models/core.py:93
msgid "flat pages"
msgstr "pages à plat"
#: models/core.py:114
msgid "session key"
msgstr "clé de session"
#: models/core.py:115
msgid "session data"
msgstr "donnée de session"
#: models/core.py:116
msgid "expire date"
msgstr "date d'expiration"
#: models/core.py:118
msgid "session"
msgstr "session"
#: models/core.py:119
msgid "sessions"
msgstr "sessions"
#: models/auth.py:8
msgid "codename"
msgstr "nom de code"
#: models/auth.py:10
msgid "Permission"
msgstr "Permission"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "Permissions"
#: models/auth.py:22
msgid "Group"
msgstr "Groupe"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "Groupes"
#: models/auth.py:33
msgid "username"
msgstr "nom d'utilisateur"
#: models/auth.py:34
msgid "first name"
msgstr "prénom"
#: models/auth.py:35
msgid "last name"
msgstr "nom"
#: models/auth.py:36
msgid "e-mail address"
msgstr "courriel"
#: models/auth.py:37
msgid "password"
msgstr "mot de passe"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "Utilisez une chaine cryptée MD5 -- pas un mot de passe en clair."
#: models/auth.py:38
msgid "staff status"
msgstr "statut staff"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration."
#: models/auth.py:39
msgid "active"
msgstr "actif"
#: models/auth.py:40
msgid "superuser status"
msgstr "statut superuser"
#: models/auth.py:41
msgid "last login"
msgstr "dernière connection"
#: models/auth.py:42
msgid "date joined"
msgstr "date d'inscription"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"En plus des permissions qui lui sont manuellement assignées, cet utilisateur "
"recevra aussi toutes les permissions de tous les groupes auquels il "
"appartient. "
#: models/auth.py:48
msgid "Users"
msgstr "Utilisateurs"
#: models/auth.py:57
msgid "Personal info"
msgstr "Information personnelle"
#: models/auth.py:59
msgid "Important dates"
msgstr "Dates importantes"
#: models/auth.py:182
msgid "Message"
msgstr "Message"
#: conf/global_settings.py:37
msgid "Czech"
msgstr "Tchèque"
#: conf/global_settings.py:38
msgid "German"
msgstr "Allemand"
#: conf/global_settings.py:39
msgid "English"
msgstr "Anglais"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "Espagnol"
#: conf/global_settings.py:41
msgid "French"
msgstr "Français"
#: conf/global_settings.py:42
msgid "Galician"
msgstr "Galicien"
#: conf/global_settings.py:43
#, fuzzy
msgid "Italian"
msgstr "Italien"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "Brésilien"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "Russe"
#: conf/global_settings.py:46
#, fuzzy
msgid "Serbian"
msgstr "Serbe"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
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
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
msgid "Uppercase letters are not allowed here."
msgstr "Les lettres majuscules ne sont pas autorisées ici."
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "Les lettres minuscules ne sont pas autorisées ici."
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "Seulement des chiffres ([0-9]), séparés par des virgules."
#: core/validators.py:93
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
msgid "Please enter a valid IP address."
msgstr "Entrez une adresse IP valide."
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "Vous ne pouvez pas laisser ce champ vide."
#: core/validators.py:108
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
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
msgid "Enter a whole number."
msgstr "Entrez un nombre entier."
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Seules les lettres de l'alphabet sont autorisées ici."
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Entrez une date valide au format AAAA-MM-JJ."
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "Entrez une heure valide au format HH:MM."
#: core/validators.py:133
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
msgid "Enter a valid e-mail address."
msgstr "Entrez une adresse de courriel valide."
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une "
"image ou bien est une image corrompue."
#: core/validators.py:156
#, 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
#, 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
#, 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
msgid "A valid URL is required."
msgstr "Une URL valide est requise."
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"Du HTML valide est requis. Les erreurs spécifiques sont:\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formé: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "URL invalide: %s"
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr "L'URL %s est un lien cassé."
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr "Entrez une abréviation d'état américain valide."
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr "Ce champ doit correspondre au champ '%s'."
#: core/validators.py:252
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
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
#, 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
#, 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
msgid "Duplicate values are not allowed."
msgstr "Des valeurs identiques ne sont pas autorisées."
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr "Cette valeur doit être une puissance de %s."
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr "S'il vous plaît, saisissez un nombre décimal valide."
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
"S'il vous plaît, saisissez un nombre décimal valide avec au plus %s chiffre."
msgstr[1] ""
"S'il vous plaît, saisissez un nombre décimal valide avec au plus %s chiffres."
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
"S'il vous plaît, saisissez un nombre décimal valide avec au plus %s décimale"
msgstr[1] ""
"S'il vous plaît, saisissez un nombre décimal valide avec au plus %s décimales"
#: core/validators.py:359
#, 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
#, 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
msgid "The format for this field is wrong."
msgstr "Le format de ce champ est mauvais."
#: core/validators.py:388
msgid "This field is invalid."
msgstr "Ce champ est invalide."
#: core/validators.py:423
#, 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
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est "
"pas valide."
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Veuillez fermer le tag %(tag)s de la ligne %(line)s. (La ligne débutant par "
"\"%(start)s\".)"
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. "
"(Ligne débutant par \"%(start)s\".)"
#: core/validators.py:468
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant "
"par \"%(start)s\".)"
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%"
"(start)s\".)"
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. "
"(Ligne débutant par \"%(start)s\".)"
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. "
"(Ligne débutant par \"%(start)s\".)"
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr "Séparez les ID par des virgules."
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Maintenez \"Control\", or \"Command\" sur un Mac, pour en sélectionner plus "
"d'une."
#~ msgid "Messages"
#~ msgstr "Messages"

Binary file not shown.

View File

@ -0,0 +1,955 @@
# Translation of django.po to Galego
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Afonso Fernández Nogueira <fonzzo.django@gmail.com>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\n"
"PO-Revision-Date: 2005-10-16 14:29+0100\n"
"Last-Translator: Afonso Fernández Nogueira <fonzzo.django@gmail.com>\n"
"Language-Team: Galego\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Galician\n"
"X-Poedit-SourceCharset: utf-8\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Inicio"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Histórico"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Data/hora"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Usuario"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Acción"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"Este obxecto non ten histórico de cambios. Posibelmente non se creou usando "
"este sitio de administración."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Administración de sitio Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Administración de Django"
#: contrib/admin/templates/admin/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Erro do servidor (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Erro do servidor (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Erro do servidor <em>(500)</em>"
#: contrib/admin/templates/admin/500.html:10
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
"Houbo un erro. Xa se informou aos administradores do sitio por correo "
"electrónico e debería quedar arranxado pronto. Grazas pola súa paciencia."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
msgstr "Páxina non atopada"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
msgstr "Sentímolo, pero non se atopou a páxina solicitada."
#: contrib/admin/templates/admin/index.html:27
msgid "Add"
msgstr "Engadir"
#: 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 "Non ten permiso para editar nada."
#: contrib/admin/templates/admin/index.html:51
msgid "Recent Actions"
msgstr "Accións recentes"
#: contrib/admin/templates/admin/index.html:52
msgid "My Actions"
msgstr "As miñas accións"
#: contrib/admin/templates/admin/index.html:56
msgid "None available"
msgstr "Ningunha dispoñíbel"
#: contrib/admin/templates/admin/login.html:15
msgid "Username:"
msgstr "Usuario:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Contrasinal:"
#: contrib/admin/templates/admin/login.html:20
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "<a href=\"/password_reset/\">Esqueceu o contrasinal</a>?"
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
msgstr "Entrar"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Benvido,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambiar contrasinal"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Saír"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Borrar o %(object_name)s '%(object)s' resultaría na eliminación de obxectos "
"relacionados, pero a súa conta non ten permiso para borrar os seguintes "
"tipos de obxectos:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Seguro que quere borrar o %(object_name)s \"%(object)s\"? Eliminaranse os "
"seguintes obxectos relacionados:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Si, estou seguro"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Cambiar o contrasinal"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "O seu contrasinal cambiouse correctamente."
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Cambiouse o seu contrasinal."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Recuperar o contrasinal"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Esqueceu o contrasinal? Introduza o seu enderezo de correo electrónico "
"embaixo e enviarémoslle un novo contrasinal."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "Enderezo de correo electrónico:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Recuperar o meu contrasinal"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Grazas polo tempo que dedicou ao sitio web."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Entrar de novo"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "O contrasinal foi recuperado correctamente"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Acabamos de enviarlle un novo contrasinal ao enderezo de correo indicado. "
"Debería recibilo en breve."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Por razóns de seguridade, introduza o contrasinal actual. Despois introduza "
"dúas veces o contrasinal para verificarmos que o escribiu correctamente."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Contrasinal actual:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Contrasinal novo:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Confirmar contrasinal:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Cambiar o contrasinal"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Recibe esta mensaxe porque solicitou recuperar o contrasinal"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "para a súa conta de usuario en %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "O seu novo contrasinal é: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Pode cambiar este contrasinal visitando esta páxina:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "No caso de que o esquecese, o seu nome de usuario é:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Grazas por usar o noso sitio web!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr "O equipo de %(site_name)s"
#: contrib/admin/models/admin.py:6
#, fuzzy
msgid "action time"
msgstr "Data/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 ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
#: utils/dates.py:6
msgid "Tuesday"
msgstr ""
#: utils/dates.py:6
msgid "Wednesday"
msgstr ""
#: utils/dates.py:6
msgid "Thursday"
msgstr ""
#: utils/dates.py:6
msgid "Friday"
msgstr ""
#: utils/dates.py:7
msgid "Saturday"
msgstr ""
#: utils/dates.py:7
msgid "Sunday"
msgstr ""
#: utils/dates.py:14
msgid "January"
msgstr ""
#: utils/dates.py:14
msgid "February"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr ""
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr ""
#: utils/dates.py:15
msgid "August"
msgstr ""
#: utils/dates.py:15
msgid "September"
msgstr ""
#: utils/dates.py:15
msgid "October"
msgstr ""
#: utils/dates.py:15
msgid "November"
msgstr ""
#: utils/dates.py:16
msgid "December"
msgstr ""
#: utils/dates.py:27
msgid "Jan."
msgstr ""
#: utils/dates.py:27
msgid "Feb."
msgstr ""
#: utils/dates.py:28
msgid "Aug."
msgstr ""
#: utils/dates.py:28
msgid "Sept."
msgstr ""
#: utils/dates.py:28
msgid "Oct."
msgstr ""
#: utils/dates.py:28
msgid "Nov."
msgstr ""
#: utils/dates.py:28
msgid "Dec."
msgstr ""
#: models/core.py:5
msgid "domain name"
msgstr ""
#: models/core.py:6
msgid "display name"
msgstr ""
#: models/core.py:8
msgid "site"
msgstr ""
#: models/core.py:9
msgid "sites"
msgstr ""
#: models/core.py:22
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "Usuario:"
#: models/core.py:25
msgid "package"
msgstr ""
#: models/core.py:26
msgid "packages"
msgstr ""
#: models/core.py:36
msgid "python module name"
msgstr ""
#: models/core.py:38
msgid "content type"
msgstr ""
#: models/core.py:39
msgid "content types"
msgstr ""
#: models/core.py:62
msgid "redirect from"
msgstr ""
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
msgid "redirect to"
msgstr ""
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
msgid "redirect"
msgstr ""
#: models/core.py:68
msgid "redirects"
msgstr ""
#: models/core.py:81
msgid "URL"
msgstr ""
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
msgid "title"
msgstr ""
#: models/core.py:84
msgid "content"
msgstr ""
#: models/core.py:85
msgid "enable comments"
msgstr ""
#: models/core.py:86
msgid "template name"
msgstr ""
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
msgid "registration required"
msgstr ""
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
msgid "flat page"
msgstr ""
#: models/core.py:93
msgid "flat pages"
msgstr ""
#: models/core.py:114
msgid "session key"
msgstr ""
#: models/core.py:115
msgid "session data"
msgstr ""
#: models/core.py:116
msgid "expire date"
msgstr ""
#: models/core.py:118
msgid "session"
msgstr ""
#: models/core.py:119
msgid "sessions"
msgstr ""
#: models/auth.py:8
msgid "codename"
msgstr ""
#: models/auth.py:10
msgid "Permission"
msgstr ""
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr ""
#: models/auth.py:22
msgid "Group"
msgstr ""
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr ""
#: models/auth.py:33
#, fuzzy
msgid "username"
msgstr "Usuario:"
#: models/auth.py:34
msgid "first name"
msgstr ""
#: models/auth.py:35
msgid "last name"
msgstr ""
#: models/auth.py:36
#, fuzzy
msgid "e-mail address"
msgstr "Enderezo de correo electrónico:"
#: models/auth.py:37
#, fuzzy
msgid "password"
msgstr "Contrasinal:"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr ""
#: models/auth.py:38
msgid "staff status"
msgstr ""
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr ""
#: models/auth.py:39
msgid "active"
msgstr ""
#: models/auth.py:40
msgid "superuser status"
msgstr ""
#: models/auth.py:41
msgid "last login"
msgstr ""
#: models/auth.py:42
msgid "date joined"
msgstr ""
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
#: models/auth.py:48
#, fuzzy
msgid "Users"
msgstr "Usuario"
#: models/auth.py:57
msgid "Personal info"
msgstr ""
#: models/auth.py:59
msgid "Important dates"
msgstr ""
#: models/auth.py:182
msgid "Message"
msgstr ""
#: conf/global_settings.py:37
msgid "Czech"
msgstr ""
#: conf/global_settings.py:38
msgid "German"
msgstr ""
#: conf/global_settings.py:39
msgid "English"
msgstr ""
#: conf/global_settings.py:40
msgid "Spanish"
msgstr ""
#: conf/global_settings.py:41
msgid "French"
msgstr ""
#: conf/global_settings.py:42
msgid "Galician"
msgstr ""
#: conf/global_settings.py:43
msgid "Italian"
msgstr ""
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr ""
#: conf/global_settings.py:45
msgid "Russian"
msgstr ""
#: conf/global_settings.py:46
msgid "Serbian"
msgstr ""
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "Este valor soamente pode conter letras, números e guións baixos (_)."
#: core/validators.py:62
#, fuzzy
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "Este valor soamente pode conter letras, números e guións baixos (_)."
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
#, fuzzy
msgid "Enter a valid e-mail address."
msgstr "Enderezo de correo electrónico:"
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#, 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
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#, 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
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr ""
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
#~ msgid "Click to change"
#~ msgstr "Faga clic para modificar"

Binary file not shown.

View File

@ -0,0 +1,981 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Pagina iniziale"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Storia"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Data/ora"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Utente"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Azione"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "Data/ora"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"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/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Errore del server (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Errore del server (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Errore del Server <em>(500)</em>"
#: 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 ""
"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
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/login.html:15
msgid "Username:"
msgstr "Nome utente:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Password:"
#: contrib/admin/templates/admin/login.html:20
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/login.html:24
msgid "Log in"
msgstr "Accedi"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Benvenuto,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Cambia la password"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Esci"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"La rimozione di %(object_name)s '%(object)s' causerebbe la cancellazione "
"degli oggetti relazionati, ma il tuo account non ha i permessi per rimuovere "
"i seguenti tipi di oggetti:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Sei sicuro di voler rimuovere %(object_name)s \"%(object)s\"? I seguenti "
"oggetti relazionati saranno rimossi:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Sì, sono sicuro"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Cambia la password"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "La password è stata cambiata con successo"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "La tua password è stata cambiata."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Resetta la password"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Hai dimenticato la tua password? Inserisci il tuo indirizzo e-mail qui "
"sotto, la tua password sarà resettata e te ne verrà spedita una nuova."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "Indirizzo e-mail:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Resetta la mia password"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Grazie per aver speso il tuo tempo prezioso con questo sito."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Accedi di nuovo"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Password resettata con successo"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Ti abbiamo inviato la nuova password all'indirizzo e-mail da te selezionato. "
"Dovresti riceverla a breve."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Inserisci la tua vecchia password, per ragioni di sicurezza, e poi la tua "
"nuova password due volte per verificare che tu l'abbia scritta correttamente."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Vecchia password:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nuova password:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Conferma password:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Cambia la mia password"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr ""
"Hai ricevuto questa e-mail perché hai richesto di resettare la password"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "per il tuo account utente su %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "La tua nuova password è: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Puoi cambiare la tua password su questa pagina:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Il tuo nome utente, in caso tu l'abbia dimenticato:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Ti ringraziamo per l'utilizzo del nostro sito!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
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"
#: utils/dates.py:6
msgid "Monday"
msgstr "Lunedì"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "Martedì"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "Mercoledì"
#: utils/dates.py:6
msgid "Thursday"
msgstr "Giovedì"
#: utils/dates.py:6
msgid "Friday"
msgstr "Venerdì"
#: utils/dates.py:7
msgid "Saturday"
msgstr "Sabato"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Domenica"
#: utils/dates.py:14
msgid "January"
msgstr "Gennaio"
#: utils/dates.py:14
msgid "February"
msgstr "Febbraio"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "Marzo"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "Aprile"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "Maggio"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "Giugno"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "Luglio"
#: utils/dates.py:15
msgid "August"
msgstr "Agosto"
#: utils/dates.py:15
msgid "September"
msgstr "Settembre"
#: utils/dates.py:15
msgid "October"
msgstr "Ottobre"
#: utils/dates.py:15
msgid "November"
msgstr "Novembre"
#: utils/dates.py:16
msgid "December"
msgstr "Dicembre"
#: utils/dates.py:27
msgid "Jan."
msgstr "Gen."
#: utils/dates.py:27
msgid "Feb."
msgstr "Feb."
#: utils/dates.py:28
msgid "Aug."
msgstr "Ago."
#: utils/dates.py:28
msgid "Sept."
msgstr "Set."
#: utils/dates.py:28
msgid "Oct."
msgstr "Ott."
#: utils/dates.py:28
msgid "Nov."
msgstr "Nov."
#: utils/dates.py:28
msgid "Dec."
msgstr "Dic."
#: models/core.py:5
msgid "domain name"
msgstr "nome a dominio"
#: models/core.py:6
msgid "display name"
msgstr "nome visualizzato"
#: models/core.py:8
msgid "site"
msgstr "sito"
#: models/core.py:9
msgid "sites"
msgstr "siti"
#: models/core.py:22
msgid "label"
msgstr "etichetta"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "nome"
#: models/core.py:25
msgid "package"
msgstr "pacchetto"
#: models/core.py:26
msgid "packages"
msgstr "pacchetti"
#: models/core.py:36
msgid "python module name"
msgstr "nome del modulo python"
#: models/core.py:38
msgid "content type"
msgstr "tipo di contenuto"
#: models/core.py:39
msgid "content types"
msgstr "tipo di contenuti"
#: models/core.py:62
msgid "redirect from"
msgstr "redirigi da"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
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
msgid "redirect to"
msgstr "redirigi verso"
#: models/core.py:65
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
msgid "redirect"
msgstr "redirigi"
#: models/core.py:68
msgid "redirects"
msgstr "redirezioni"
#: models/core.py:81
msgid "URL"
msgstr "URL"
#: models/core.py:82
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
msgid "title"
msgstr "titolo"
#: models/core.py:84
msgid "content"
msgstr "contenuto"
#: models/core.py:85
msgid "enable comments"
msgstr "abilita commenti"
#: models/core.py:86
msgid "template name"
msgstr "nome modello"
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"Esempio: 'flatfiles/contact_page'. Se non specificato, il sistema userà "
"'flatfiles/default'."
#: models/core.py:88
msgid "registration required"
msgstr "registrazione obbligatoria"
#: models/core.py:88
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
msgid "flat page"
msgstr "pagina statica"
#: models/core.py:93
msgid "flat pages"
msgstr "pagine statiche"
#: models/core.py:114
msgid "session key"
msgstr "chiave di sessione"
#: models/core.py:115
msgid "session data"
msgstr "dati di sessione"
#: models/core.py:116
msgid "expire date"
msgstr "data di scadenza"
#: models/core.py:118
msgid "session"
msgstr "sessione"
#: models/core.py:119
msgid "sessions"
msgstr "sessioni"
#: models/auth.py:8
msgid "codename"
msgstr "nome in codice"
#: models/auth.py:10
msgid "Permission"
msgstr "Permesso"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "Permessi"
#: models/auth.py:22
msgid "Group"
msgstr "Gruppo"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "Gruppi"
#: models/auth.py:33
msgid "username"
msgstr "nome utente"
#: models/auth.py:34
msgid "first name"
msgstr "nome"
#: models/auth.py:35
msgid "last name"
msgstr "cognome"
#: models/auth.py:36
msgid "e-mail address"
msgstr "indirizzo e-mail"
#: models/auth.py:37
msgid "password"
msgstr "password"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "Usare il codice di controllo MD5 -- non la password."
#: models/auth.py:38
msgid "staff status"
msgstr "amministratore"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr "Autorizza l'utente ad accedere a questo sito di amministrazione."
#: models/auth.py:39
msgid "active"
msgstr "attivo"
#: models/auth.py:40
msgid "superuser status"
msgstr "stato superutente"
#: models/auth.py:41
msgid "last login"
msgstr "ultimo accesso"
#: models/auth.py:42
msgid "date joined"
msgstr "iscritto da"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"In aggiunta ai permessi assegnati manualmente, l'utente riceverà anche tutti "
"i permessi assegnati ad ogni gruppo cui appartiene."
#: models/auth.py:48
msgid "Users"
msgstr "Utenti"
#: models/auth.py:57
msgid "Personal info"
msgstr "Informazioni personali"
#: models/auth.py:59
msgid "Important dates"
msgstr "Date importanti"
#: models/auth.py:182
msgid "Message"
msgstr "Messaggio"
#: conf/global_settings.py:37
msgid "Czech"
msgstr ""
#: conf/global_settings.py:38
msgid "German"
msgstr "Tedesco"
#: conf/global_settings.py:39
msgid "English"
msgstr "Inglese"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "Spagnolo"
#: conf/global_settings.py:41
msgid "French"
msgstr "Francese"
#: conf/global_settings.py:42
msgid "Galician"
msgstr "Galiziano"
#: conf/global_settings.py:43
msgid "Italian"
msgstr "Italiano"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "Brasiliano"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "Russo"
#: conf/global_settings.py:46
#, fuzzy
msgid "Serbian"
msgstr "Serbo"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "Sono ammesse solo lettere, numeri e sottolineature ('_')."
#: core/validators.py:62
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "Sono ammesse solo lettere, numeri, sottolineature ('_') e barre ('/')."
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr "Non sono ammesse lettere maiuscole."
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "Non sono ammesse lettere minuscole."
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "Inserire solo numeri separati da virgole."
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Inserire indirizzi e-mail validi separati da virgole."
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr "Inserire un indirizzo IP valido."
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "E' necessario inserire un valore."
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "Sono ammessi soltanto caratteri alfabetici."
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "Il valore non può essere composto solo da cifre."
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "Inserire un numero."
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Sono ammessi solo caratteri alfabetici."
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Inserire un data valida in formato YYYY-MM-DD."
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "Inserire un orario valido in formato HH:MM."
#: core/validators.py:133
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
msgid "Enter a valid e-mail address."
msgstr "Inserire un indirizzo e-mail valido."
#: core/validators.py:149
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
#, 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
#, 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
#, 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
msgid "A valid URL is required."
msgstr "Inserire un URL valido."
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"E' richiesto HTML valido. Gli errori sono i seguenti:\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML malformato: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "URL non valida: %s"
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr "L'URL %s è un link rotto."
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr "Inserire un nome di stato americano abbreviato valido."
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr "Questo campo deve corrispondere al campo '%s'."
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr "Inserire almeno un campo."
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti."
#: core/validators.py:279
#, 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
#, 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
msgid "Duplicate values are not allowed."
msgstr "Non sono ammessi valori duplicati."
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr "Il valore deve essere una potenza di %s."
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr "Inserire un numero decimale valido."
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "Inserire un numero decimale con non più di %s cifre totali."
msgstr[1] ""
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "Inserire un decimale con non più di %s cifre decimali."
msgstr[1] ""
#: core/validators.py:359
#, 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
#, 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
msgid "The format for this field is wrong."
msgstr "Formato del file non valido."
#: core/validators.py:388
msgid "This field is invalid."
msgstr "Il campo non è valido."
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Impossibile recuperare alcunchè da %s."
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"L'URL %(url)s restituisce un Content-Type header non valido '%(contenttype)"
"s'."
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Il tag %(tag)s alla linea %(line)s non è chiuso. (La linea comincia con \"%"
"(start)s\".)"
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
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
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"%(attr)s\" alla linea %(line)s è un attributo invalido. (La linea comincia "
"con \"%(start)s\".)"
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"<%(tag)s>\" alla linea %(line)s tag non valido. (La linea comincia con \"%"
"(start)s\".)"
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Un tag alla linea %(line)s manca di uno o più attributi richiesti. (La linea "
"comincia con \"%(start)s\".)"
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"L'attributo \"%(attr)s\" alla linea %(line)s ha un valore non valido. (La "
"linea comincia con \"%(start)s\".)"
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr " Separa ID multipli con virgole."
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr " Premi \"Control\", o \"Command\" su Mac, per selezionarne più di uno."
#~ msgid "Itialian"
#~ msgstr "Italiano"
#~ msgid "Server error <em>(500)</em>"
#~ msgstr "Errore del server <em>(500)</em>"
#~ msgid "Click to change"
#~ msgstr "Clicca per cambiare"

Binary file not shown.

View File

@ -0,0 +1,981 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Início"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Histórico"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Data/hora"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Usuário"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Ação"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
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/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Erro no servidor (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Erro no servidor (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Erro no Servidor <em>(500)</em>"
#: 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 ""
"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
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/login.html:15
msgid "Username:"
msgstr "Usuário:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Senha:"
#: contrib/admin/templates/admin/login.html:20
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/login.html:24
msgid "Log in"
msgstr "Acessar"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Bem vindo,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Alterar senha"
#: 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
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"A remoção de '%(object)s' %(object_name)s pode resultar na remoção de "
"objetos relacionados, mas sua conta não tem a permissão para remoção dos "
"seguintes tipos de objetos:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Você tem certeza que quer remover o \"%(object)s\" %(object_name)s? Todos os "
"seguintes itens relacionados serão removidos:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Sim, tenho certeza"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Alterar senha"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Senha alterada com sucesso"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Sua senha foi alterada."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Reinicializar senha"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Esqueceu a senha? Digite seu e-mail abaixo e nós iremos enviar uma nova "
"senha para você."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "Endereço de e-mail:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Reinicializar minha senha"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Obrigado por visitar nosso Web site hoje."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Acessar novamente"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Senha inicializada com sucesso"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Nós enviamos uma nova senha para o e-mail que você informou. Você deve estar "
"recebendo uma mensagem em breve."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Por favor, informe sua senha antiga, por segurança, e então informe sua nova "
"senha duas vezes para que possamos verificar que se ela está correta."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Senha antiga:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nova senha:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Confirme a senha:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Alterar minha senha"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Você está recebendo este e-mail porque você pediu uma nova senha"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "para sua conta em %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "Sua nova senha é: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Sinta-se livre para alterar esta senha visitando esta página:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Seu nome de usuário, caso tenha esquecido:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Obrigado por usar nosso site!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr "Time do %(site_name)s"
#: 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"
#: utils/dates.py:6
msgid "Monday"
msgstr "Segunda Feira"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "Terça Feira"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "Quarta Feira"
#: utils/dates.py:6
msgid "Thursday"
msgstr "Quinta Feira"
#: utils/dates.py:6
msgid "Friday"
msgstr "Sexta Feira"
#: utils/dates.py:7
msgid "Saturday"
msgstr "Sábado"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Domingo"
#: utils/dates.py:14
msgid "January"
msgstr "Janeiro"
#: utils/dates.py:14
msgid "February"
msgstr "Fevereiro"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "Março"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "Abril"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "Maio"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "Junho"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "Julho"
#: utils/dates.py:15
msgid "August"
msgstr "Agosto"
#: utils/dates.py:15
msgid "September"
msgstr "Setembro"
#: utils/dates.py:15
msgid "October"
msgstr "Outubro"
#: utils/dates.py:15
msgid "November"
msgstr "Novembro"
#: utils/dates.py:16
msgid "December"
msgstr "Dezembro"
#: utils/dates.py:27
msgid "Jan."
msgstr "Jan."
#: utils/dates.py:27
msgid "Feb."
msgstr "Fev."
#: utils/dates.py:28
msgid "Aug."
msgstr "Ago."
#: utils/dates.py:28
msgid "Sept."
msgstr "Set."
#: utils/dates.py:28
msgid "Oct."
msgstr "Out."
#: utils/dates.py:28
msgid "Nov."
msgstr "Nov."
#: utils/dates.py:28
msgid "Dec."
msgstr "Dez."
#: models/core.py:5
msgid "domain name"
msgstr "nome do domínio"
#: models/core.py:6
msgid "display name"
msgstr "nome para exibição"
#: models/core.py:8
msgid "site"
msgstr "site"
#: models/core.py:9
msgid "sites"
msgstr "sites"
#: models/core.py:22
msgid "label"
msgstr "etiqueta"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "nome:"
#: models/core.py:25
msgid "package"
msgstr "pacote"
#: models/core.py:26
msgid "packages"
msgstr "pacotes"
#: models/core.py:36
msgid "python module name"
msgstr "nome do módulo python"
#: models/core.py:38
msgid "content type"
msgstr "tipo de conteúdo"
#: models/core.py:39
msgid "content types"
msgstr "tipos de conteúdo"
#: models/core.py:62
msgid "redirect from"
msgstr "redirecionar de"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
"Deve conter um caminho absoluto, excluindo o nome de domínio. Exemplo: '/"
"eventos/busca/'."
#: models/core.py:64
msgid "redirect to"
msgstr "redirecionar para"
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Deve conter um caminho absoluto (como acima) ou uma URL completa, começando "
"com 'http://'."
#: models/core.py:67
msgid "redirect"
msgstr "redirecionar"
#: models/core.py:68
msgid "redirects"
msgstr "redirecionamentos"
#: models/core.py:81
msgid "URL"
msgstr "URL"
#: models/core.py:82
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
msgid "title"
msgstr "título"
#: models/core.py:84
msgid "content"
msgstr "conteúdo"
#: models/core.py:85
msgid "enable comments"
msgstr "habilitar comentários"
#: models/core.py:86
msgid "template name"
msgstr "nome do modelo"
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"Exemplo: 'flatfiles/contact_page'. Se não for informado, será utilizado "
"'flatfiles/default'."
#: models/core.py:88
msgid "registration required"
msgstr "é obrigatório registrar"
#: models/core.py:88
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
msgid "flat page"
msgstr "página plana"
#: models/core.py:93
msgid "flat pages"
msgstr "páginas planas"
#: models/core.py:114
msgid "session key"
msgstr "chave da sessão"
#: models/core.py:115
msgid "session data"
msgstr "dados da sessão"
#: models/core.py:116
msgid "expire date"
msgstr "data de expiração"
#: models/core.py:118
msgid "session"
msgstr "sessão"
#: models/core.py:119
msgid "sessions"
msgstr "sessões"
#: models/auth.py:8
msgid "codename"
msgstr "nome código"
#: models/auth.py:10
msgid "Permission"
msgstr "Permissão"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "Permissões"
#: models/auth.py:22
msgid "Group"
msgstr "Grupo"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "Grupos"
#: models/auth.py:33
#, fuzzy
msgid "username"
msgstr "usuário"
#: models/auth.py:34
msgid "first name"
msgstr "primeiro nome"
#: models/auth.py:35
msgid "last name"
msgstr "último nome"
#: models/auth.py:36
#, fuzzy
msgid "e-mail address"
msgstr "endereço de e-mail:"
#: models/auth.py:37
#, fuzzy
msgid "password"
msgstr "senha"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "Usar um código MD5 -- não o texto da senha."
#: models/auth.py:38
msgid "staff status"
msgstr "status da equipe"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr "Informa se o usuário pode acessar este site de administração."
#: models/auth.py:39
msgid "active"
msgstr "ativar"
#: models/auth.py:40
msgid "superuser status"
msgstr "status de superusuário"
#: models/auth.py:41
msgid "last login"
msgstr "último login"
#: models/auth.py:42
msgid "date joined"
msgstr "data de registro"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"Em adição às permissões atribuídas manualmente, este usuário também terá "
"todas as permissões dadas a cada grupo que participar."
#: models/auth.py:48
#, fuzzy
msgid "Users"
msgstr "Usuários"
#: models/auth.py:57
msgid "Personal info"
msgstr "Informações pessoais"
#: models/auth.py:59
msgid "Important dates"
msgstr "Datas importantes"
#: models/auth.py:182
msgid "Message"
msgstr "Mensagem"
#: conf/global_settings.py:37
msgid "Czech"
msgstr "Tcheco"
#: conf/global_settings.py:38
msgid "German"
msgstr "Alemão"
#: conf/global_settings.py:39
msgid "English"
msgstr "Inglês"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "Espanhol"
#: conf/global_settings.py:41
msgid "French"
msgstr "Francês"
#: conf/global_settings.py:42
msgid "Galician"
msgstr "Galiciano"
#: conf/global_settings.py:43
msgid "Italian"
msgstr "Italiano"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "Brazileiro"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "Russo"
#: conf/global_settings.py:46
#, fuzzy
msgid "Serbian"
msgstr "Sérvio"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "Deve conter apenas letras, números e sublinhados (_)."
#: core/validators.py:62
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
msgid "Uppercase letters are not allowed here."
msgstr "Letras em maiúsculo não são permitidas aqui."
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "Letras em minúsculo não são permitidas aqui."
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "Informe apenas dígitos separados por vírgulas."
#: core/validators.py:93
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
msgid "Please enter a valid IP address."
msgstr "Informe um endereço IP válido."
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "Valores em branco não são permitidos."
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "Caracteres não numéricos não são permitidos."
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "Este valor não pode conter apenas dígitos."
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "Informe um número inteiro."
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Apenas caracteres do alfabeto são permitidos aqui."
#: core/validators.py:125
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
msgid "Enter a valid time in HH:MM format."
msgstr "Informe uma hora válida no formato HH:MM."
#: core/validators.py:133
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
msgid "Enter a valid e-mail address."
msgstr "Informe um endereço de email válido."
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está "
"corrompido."
#: core/validators.py:156
#, 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
#, 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
#, 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
msgid "A valid URL is required."
msgstr "Uma URL válida é exigida."
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"HTML válido é exigido. Estes são os erros específicos:\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formado: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "URL inválida: %s"
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr "A URL %s é um link quebrado."
#: core/validators.py:211
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
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr "Este campo deve ser igual ao campo '%s'."
#: core/validators.py:252
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
msgid "Please enter both fields or leave them both empty."
msgstr "Informe ambos os campos ou deixe ambos vazios."
#: core/validators.py:279
#, 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
#, 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
msgid "Duplicate values are not allowed."
msgstr "Valores duplicados não são permitidos."
#: core/validators.py:333
#, 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
msgid "Please enter a valid decimal number."
msgstr "Informe um número decimal."
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "Informe um número decimal com no máximo %s casa decimal."
msgstr[1] "Informe um número decimal com no máximo %s casas decimais."
#: core/validators.py:359
#, 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
#, 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
msgid "The format for this field is wrong."
msgstr "O formato deste campo está errado."
#: core/validators.py:388
msgid "This field is invalid."
msgstr "Este campo é inválido."
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Não foi possível receber dados de %s."
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type "
"inválido."
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%"
"(start)s\".)"
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha "
"começa com \"%(start)s\".)"
#: core/validators.py:468
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com "
"\"%(start)s\".)"
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%"
"(start)s\".)"
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Uma tag na linha %(line)s está não apresenta um ou mais atributos exigidos."
"(Linha começa com \"%(start)s\".)"
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (Linha "
"começa com \"%(start)s\".)"
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr " Separe IDs múltiplos com vírgulas."
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
" Mantenha pressionado \"Control\", ou \"Command\" num Mac para selecionar "
"mais de uma opção."
#~ msgid "Click to change"
#~ msgstr "Clique para alterar"

Binary file not shown.

View File

@ -0,0 +1,956 @@
# Translation of django.po to russian.
# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Dmitry Sorokin <ds@dial.com.ru>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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/object_history.html:5
msgid "History"
msgstr "éÓÔÏÒÉÑ"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "äÁÔÁ/×ÒÅÍÑ"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "ðÏÌØÚÏ×ÁÔÅÌØ"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "äÅÊÓÔ×ÉÅ"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
"äÁÎÎÙÊ ÏÂØÅËÔ ÎÅ ÉÍÅÅÔ ÉÓÔÏÒÉÉ ÉÚÍÅÎÅÎÉÑ. ÷ÏÚÍÏÖÎÏ ÏÎ ÎÅ ÂÙÌ ÄÏÂÁ×ÌÅÎ ÞÅÒÅÚ "
"ÄÁÎÎÙÊ ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÙÊ ÓÁÊÔ."
#: 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/500.html:4
#, fuzzy
msgid "Server error"
msgstr "ïÛÉÂËÁ ÓÅÒ×ÅÒÁ (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "ïÛÉÂËÁ ÓÅÒ×ÅÒÁ (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "ïÛÉÂËÁ ÓÅÒ×ÅÒÁ <em>(500)</em>"
#: 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 ""
"ðÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ. ïÔÞÅÔ Ï ÏÛÉÂËÅ ÏÔÐÒÁ×ÌÅÎ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁÍ ÓÁÊÔÁ ÐÏ 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
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/login.html:15
msgid "Username:"
msgstr "éÍÑ:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "ðÁÒÏÌØ:"
#: contrib/admin/templates/admin/login.html:20
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "÷Ù <a href=\"/password_reset/\">ÚÁÂÙÌÉ ÐÁÒÏÌØ</a>?"
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
msgstr "÷ÈÏÄ"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "äÏÂÒÏ ÐÏÖÁÌÏ×ÁÔØ,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "÷ÙÈÏÄ"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"õÄÁÌÅÎÉÅ ÏÂØÅËÔÁ %(object_name)s '%(object)s' ÐÒÉ×ÅÄÅÔ Ë ÕÄÁÌÅÎÉÀ ÚÁ×ÉÓÉÍÙÈ "
"ÎÏ, ÐÒÅÄÏÓÔÁ×ÌÅÎÎÙÈ ×ÁÍ ÐÒÁ× ÎÅÄÏÓÔÁÔÏÞÎÏ ÄÌÑ ÕÄÁÌÅÎÉÑ ÓÌÅÄÕÀÝÉÈÔÉÐÏ× "
"ÏÂßÅËÔÏ×:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"÷Ù Õ×ÅÒÅÎÙ, ÞÔÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ %(object_name)s \"%(object)s\"? ÷ÓÅ "
"ÓÌÅÄÕÀÝÉÅÏÂßÅËÔÙ ÔÁËÖÅ ÂÕÄÕÔ ÕÄÁÌÅÎÙ:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "äÁ, Ñ Õ×ÅÒÅÎ"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "La password è stata cambiata con successo"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "÷ÁÛ ÐÁÒÏÌØ ÂÙÌ ÉÚÍÅÎÅÎ."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "óÂÒÏÓ ÐÁÒÏÌÑ"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"úÁÂÙÌÉ ÐÁÒÏÌØ? ÷×ÅÄÉÔÅ ×ÁÛ e-mail ÁÄÒÅÓ ÎÉÖÅ É ÍÙ ÏÞÉÓÔÉÍ ×ÁÛ ÓÔÁÒÙÊ ÐÁÒÏÌØ, "
"É ×ÙÛÌÅÍ ×ÁÍ ÐÏ e-mail ÎÏ×ÙÊ."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "E-mail ÁÄÒÅÓ:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "ïÞÉÓÔËÁ ÐÁÒÏÌÑ"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "âÌÁÇÏÄÁÒÉÍ ÚÁ ÐÒÏ×ÅÄÅÎÎÏÅ ×ÁÍÉ ÓÅÇÏÄÎÑ ×ÒÅÍÑ ÎÁ ÜÔÏÍ ÓÁÊÔÅ."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "ðÏ×ÔÏÒÎÙÊ ×ÈÏÄ"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "õÓÐÅÛÎÁÑ ÏÞÉÓÔËÁ ÐÁÒÏÌÑ"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"íÙ ÏÔÐÒÁ×ÉÌÉ ÎÏ×ÙÊ ÐÁÒÏÌØ ÐÏ ÕËÁÚÁÎÎÏÍÕ ×ÁÍÉ ÁÄÒÅÓÕ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ. ÷Ù "
"ÄÏÌÖÎÙ ÐÏÌÕÞÉÔØ ÅÇÏ ÏÞÅÎØ ÂÙÓÔÒÏ."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"÷ ÃÅÌÑÈ ÂÅÚÏÐÁÓÎÏÓÔÉ, ÐÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ×ÁÛ ÓÔÁÒÙÊ ÐÁÒÏÌØ, ÚÁÔÅÍ - ÎÏ×ÙÊ "
"ÐÁÒÏÌØ Ä×ÁÖÄÙ, Ó ÔÅÍ, ÞÔÏÂÙ ÍÙ ÍÏÇÌÉ ÕÂÅÄÉÔØÓÑ × ÐÒÁ×ÉÌØÎÏÓÔÉ ÎÁÐÉÓÁÎÉÑ."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "óÔÁÒÙÊ ÐÁÒÏÌØ:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "îÏ×ÙÊ ÐÁÒÏÌØ:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "ðÏÄÔ×ÅÒÄÉÔÅ ÐÁÒÏÌØ:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "éÚÍÅÎÅÎÉÅ ÐÁÒÏÌÑ"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "÷Ù ÐÏÌÕÞÉÌÉ ÜÔÏ ÓÏÏÂÝÅÎÉÅ ÐÏÔÏÍÕ ÞÔÏ ÂÙÌÁ ÚÁÐÒÏÛÅÎÁ ÏÞÉÓÔËÁ ÐÁÒÏÌÑ"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "ÄÌÑ ×ÁÛÅÇÏ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÁËËÁÕÎÔÁ ÎÁ %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "÷ÁÛ ÎÏ×ÙÊ ÐÁÒÏÌØ: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "÷Ù ×ÓÅÇÄÁ ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÜÔÏÔ ÐÁÒÏÌØ ÐÅÒÅÊÄÑ ÎÁ ÓÔÒÁÎÉÃÕ:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "÷ÁÛÅ ÉÍÑ, ÎÁ ÓÌÕÞÁÊ ÅÓÌÉ ×Ù ÅÇÏ ÚÁÂÙÌÉ:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "óÐÁÓÉÂÏ ÚÁ ÐÏÓÅÝÅÎÉÅ ÎÁÛÅÇÏ ÓÁÊÔÁ!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr "ëÏÍÁÎÄÁ ÓÁÊÔÁ 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 ""
#: utils/dates.py:6
msgid "Monday"
msgstr ""
#: utils/dates.py:6
msgid "Tuesday"
msgstr ""
#: utils/dates.py:6
msgid "Wednesday"
msgstr ""
#: utils/dates.py:6
msgid "Thursday"
msgstr ""
#: utils/dates.py:6
msgid "Friday"
msgstr ""
#: utils/dates.py:7
msgid "Saturday"
msgstr ""
#: utils/dates.py:7
msgid "Sunday"
msgstr ""
#: utils/dates.py:14
msgid "January"
msgstr ""
#: utils/dates.py:14
msgid "February"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr ""
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr ""
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr ""
#: utils/dates.py:15
msgid "August"
msgstr ""
#: utils/dates.py:15
msgid "September"
msgstr ""
#: utils/dates.py:15
msgid "October"
msgstr ""
#: utils/dates.py:15
msgid "November"
msgstr ""
#: utils/dates.py:16
msgid "December"
msgstr ""
#: utils/dates.py:27
msgid "Jan."
msgstr ""
#: utils/dates.py:27
msgid "Feb."
msgstr ""
#: utils/dates.py:28
msgid "Aug."
msgstr ""
#: utils/dates.py:28
msgid "Sept."
msgstr ""
#: utils/dates.py:28
msgid "Oct."
msgstr ""
#: utils/dates.py:28
msgid "Nov."
msgstr ""
#: utils/dates.py:28
msgid "Dec."
msgstr ""
#: models/core.py:5
msgid "domain name"
msgstr ""
#: models/core.py:6
msgid "display name"
msgstr ""
#: models/core.py:8
msgid "site"
msgstr ""
#: models/core.py:9
msgid "sites"
msgstr ""
#: models/core.py:22
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
#, fuzzy
msgid "name"
msgstr "éÍÑ:"
#: models/core.py:25
msgid "package"
msgstr ""
#: models/core.py:26
msgid "packages"
msgstr ""
#: models/core.py:36
msgid "python module name"
msgstr ""
#: models/core.py:38
msgid "content type"
msgstr ""
#: models/core.py:39
msgid "content types"
msgstr ""
#: models/core.py:62
msgid "redirect from"
msgstr ""
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
#: models/core.py:64
msgid "redirect to"
msgstr ""
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
#: models/core.py:67
msgid "redirect"
msgstr ""
#: models/core.py:68
msgid "redirects"
msgstr ""
#: models/core.py:81
msgid "URL"
msgstr ""
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
#: models/core.py:83
msgid "title"
msgstr ""
#: models/core.py:84
msgid "content"
msgstr ""
#: models/core.py:85
msgid "enable comments"
msgstr ""
#: models/core.py:86
msgid "template name"
msgstr ""
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
#: models/core.py:88
msgid "registration required"
msgstr ""
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
#: models/core.py:92
msgid "flat page"
msgstr ""
#: models/core.py:93
msgid "flat pages"
msgstr ""
#: models/core.py:114
msgid "session key"
msgstr ""
#: models/core.py:115
msgid "session data"
msgstr ""
#: models/core.py:116
msgid "expire date"
msgstr ""
#: models/core.py:118
msgid "session"
msgstr ""
#: models/core.py:119
msgid "sessions"
msgstr ""
#: models/auth.py:8
msgid "codename"
msgstr ""
#: models/auth.py:10
msgid "Permission"
msgstr ""
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr ""
#: models/auth.py:22
msgid "Group"
msgstr ""
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr ""
#: models/auth.py:33
#, fuzzy
msgid "username"
msgstr "éÍÑ:"
#: models/auth.py:34
msgid "first name"
msgstr ""
#: models/auth.py:35
msgid "last name"
msgstr ""
#: models/auth.py:36
#, fuzzy
msgid "e-mail address"
msgstr "E-mail ÁÄÒÅÓ:"
#: models/auth.py:37
#, fuzzy
msgid "password"
msgstr "ðÁÒÏÌØ:"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr ""
#: models/auth.py:38
msgid "staff status"
msgstr ""
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr ""
#: models/auth.py:39
msgid "active"
msgstr ""
#: models/auth.py:40
msgid "superuser status"
msgstr ""
#: models/auth.py:41
msgid "last login"
msgstr ""
#: models/auth.py:42
msgid "date joined"
msgstr ""
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
#: models/auth.py:48
#, fuzzy
msgid "Users"
msgstr "ðÏÌØÚÏ×ÁÔÅÌØ"
#: models/auth.py:57
msgid "Personal info"
msgstr ""
#: models/auth.py:59
msgid "Important dates"
msgstr ""
#: models/auth.py:182
msgid "Message"
msgstr ""
#: conf/global_settings.py:37
msgid "Czech"
msgstr ""
#: conf/global_settings.py:38
msgid "German"
msgstr ""
#: conf/global_settings.py:39
msgid "English"
msgstr ""
#: conf/global_settings.py:40
msgid "Spanish"
msgstr ""
#: conf/global_settings.py:41
msgid "French"
msgstr ""
#: conf/global_settings.py:42
msgid "Galician"
msgstr ""
#: conf/global_settings.py:43
msgid "Italian"
msgstr ""
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr ""
#: conf/global_settings.py:45
msgid "Russian"
msgstr ""
#: conf/global_settings.py:46
msgid "Serbian"
msgstr ""
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "úÎÁÞÅÎÉÅ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÔÏÌØËÏ ÂÕË×Ù, ÃÉÆÒÙ É ÐÏÄÞÅÒËÉ×ÁÎÉÑ."
#: core/validators.py:62
#, fuzzy
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "úÎÁÞÅÎÉÅ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÔÏÌØËÏ ÂÕË×Ù, ÃÉÆÒÙ É ÐÏÄÞÅÒËÉ×ÁÎÉÑ."
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr ""
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr ""
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr ""
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr ""
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr ""
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr ""
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr ""
#: core/validators.py:117
msgid "Enter a whole number."
msgstr ""
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr ""
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr ""
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
#: core/validators.py:137
#, fuzzy
msgid "Enter a valid e-mail address."
msgstr "E-mail ÁÄÒÅÓ:"
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
#: core/validators.py:172
msgid "A valid URL is required."
msgstr ""
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr ""
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr ""
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr ""
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr ""
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr ""
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr ""
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:349
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
msgstr[1] ""
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr ""
#: core/validators.py:388
msgid "This field is invalid."
msgstr ""
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
#: core/validators.py:426
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
#: core/validators.py:459
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
#: core/validators.py:463
#, 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
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
#: core/validators.py:477
#, 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
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr ""
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
#~ msgid "Server error <em>(500)</em>"
#~ msgstr "ïÛÉÂËÁ ÓÅÒ×ÅÒÁ <em>(500)</em>"
#~ msgid "Click to change"
#~ msgstr "ýÅÌËÎÉÔÅ ÄÌÑ ÉÚÍÅÎÅÎÉÑ"

Binary file not shown.

View File

@ -0,0 +1,981 @@
msgid ""
msgstr ""
"Project-Id-Version: Django Serbian (latin) translation v1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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."
"com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Poedit-Language: Serbian\n"
"X-Poedit-Country: YUGOSLAVIA\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: ../../../../\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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 "Početna strana"
#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Istorija"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "Datum/vreme"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "Korisnik"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "Akcija"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
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/500.html:4
#, fuzzy
msgid "Server error"
msgstr "Greška na serveru (500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "Greška na serveru (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "Greška na serveru <em>(500)</em>"
#: 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 ""
"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
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/login.html:15
msgid "Username:"
msgstr "Korisničko ime:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "Lozinka:"
#: contrib/admin/templates/admin/login.html:20
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/login.html:24
msgid "Log in"
msgstr "Prijavi se"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "Dobrodošli,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "Izmeni lozinku"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "Odjavi se"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Brisanjem %(object_name)s '%(object)s' došlo bi do brisanja dodatnih "
"podataka, ali nemate prava da brišete sledeće tipove podataka:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"Da li ste sigurni da želite da obrišete %(object_name)s \"%(object)s\"? Biće "
"obrisani i sledeći pridruženi objekti:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "Da, siguran sam"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Izmena lozinke"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Lozinka je uspešno izmenjena"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Vaša lozinka je izmenjena."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "Resetovanje lozinke"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"Zaboravili ste svoju lozinku? Unesite vašu e-mail adresu i dobićete novu "
"lozinku na dati e-mail."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "E-mail adresa:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "Resetuj moju lozinku"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Hvala Vam na poseti."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "Prijavi se ponovo"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Vaša lozinka je uspešno resetovana"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"Nova lozinka poslata vam je na zadatu e-mail adresu. E-mail bi trebao da "
"stigne u narednih nekoliko minuta."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Unesite staru lozinku, nakon toga unesite novu lozinku dva puta, radi "
"provere ispravnosti unosa."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Stara lozinka:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nova lozinka:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Potvrdite novu lozinku:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Izmeni moju lozinku"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Primili ste ovaj e-mail jer ste tražili resetovanje lozinke"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "za vaš korisnički nalog na %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "Vaša nova lozinka je: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "Lozinku možete izmeniti na sledećoj strani:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "Vaše korisničko ime, u slučaju da ste zaboravili:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "Hvala Vam na poseti!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
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"
#: utils/dates.py:6
msgid "Monday"
msgstr "Ponedeljak"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "Utorak"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "Sreda"
#: utils/dates.py:6
msgid "Thursday"
msgstr "Četvrtak"
#: utils/dates.py:6
msgid "Friday"
msgstr "Petak"
#: utils/dates.py:7
msgid "Saturday"
msgstr "Subota"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Nedelja"
#: utils/dates.py:14
msgid "January"
msgstr "Januar"
#: utils/dates.py:14
msgid "February"
msgstr "Februar"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "Mart"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "April"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "Maj"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "Jun"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "Jul"
#: utils/dates.py:15
msgid "August"
msgstr "Avgust"
#: utils/dates.py:15
msgid "September"
msgstr "Septembar"
#: utils/dates.py:15
msgid "October"
msgstr "Oktobar"
#: utils/dates.py:15
msgid "November"
msgstr "Novembar"
#: utils/dates.py:16
msgid "December"
msgstr "Decembar"
#: utils/dates.py:27
msgid "Jan."
msgstr "Jan."
#: utils/dates.py:27
msgid "Feb."
msgstr "Feb."
#: utils/dates.py:28
msgid "Aug."
msgstr "Avg."
#: utils/dates.py:28
msgid "Sept."
msgstr "Sept."
#: utils/dates.py:28
msgid "Oct."
msgstr "Okt."
#: utils/dates.py:28
msgid "Nov."
msgstr "Nov."
#: utils/dates.py:28
msgid "Dec."
msgstr "Dec."
#: models/core.py:5
msgid "domain name"
msgstr "ime domena"
#: models/core.py:6
msgid "display name"
msgstr "naziv"
#: models/core.py:8
msgid "site"
msgstr "sajt"
#: models/core.py:9
msgid "sites"
msgstr "sajtovi"
#: models/core.py:22
msgid "label"
msgstr ""
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "ime"
#: models/core.py:25
msgid "package"
msgstr ""
#: models/core.py:26
msgid "packages"
msgstr ""
#: models/core.py:36
msgid "python module name"
msgstr "ime python modula"
#: models/core.py:38
msgid "content type"
msgstr "tip sadržaja"
#: models/core.py:39
msgid "content types"
msgstr "tipovi sadržaja"
#: models/core.py:62
msgid "redirect from"
msgstr "redirekcija od"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
"Ovde treba upisati apsolutnu putanju bez imena domena. Primer: '/events/"
"search/'."
#: models/core.py:64
msgid "redirect to"
msgstr "redirekcija na"
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Ovo može biti apsolutna putanja (kao gore) ili puni URL koji počinje sa "
"'http://'."
#: models/core.py:67
msgid "redirect"
msgstr "redirekcija"
#: models/core.py:68
msgid "redirects"
msgstr "redirekcije"
# nesh: ovo se valjda ne prevodi
# petar: ne prevodi se
#: models/core.py:81
msgid "URL"
msgstr ""
#: models/core.py:82
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
msgid "title"
msgstr "naslov"
#: models/core.py:84
msgid "content"
msgstr "sadržaj"
#: models/core.py:85
msgid "enable comments"
msgstr "omogućite komentare"
#: models/core.py:86
msgid "template name"
msgstr "ime templejta"
#: models/core.py:87
msgid ""
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
"use 'flatfiles/default'."
msgstr ""
"Primer: 'flatfiles/contact-page'. Ako nije dato sistem će koristiti "
"'flatfiles/default'."
#: models/core.py:88
msgid "registration required"
msgstr "samo za registrovane korisnike"
#: models/core.py:88
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
msgid "flat page"
msgstr "statična strana"
#: models/core.py:93
msgid "flat pages"
msgstr "statične strane"
#: models/core.py:114
msgid "session key"
msgstr "ključ sesije"
#: models/core.py:115
msgid "session data"
msgstr "podaci sesije"
#: models/core.py:116
msgid "expire date"
msgstr "datum prestanka važenja sesije"
#: models/core.py:118
msgid "session"
msgstr "sesija"
#: models/core.py:119
msgid "sessions"
msgstr "sesije"
#: models/auth.py:8
msgid "codename"
msgstr ""
#: models/auth.py:10
msgid "Permission"
msgstr "Pravo"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "Prava"
#: models/auth.py:22
msgid "Group"
msgstr "Grupa"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "Grupe"
#: models/auth.py:33
msgid "username"
msgstr "korisničko ime"
#: models/auth.py:34
msgid "first name"
msgstr "ime"
#: models/auth.py:35
msgid "last name"
msgstr "prezime"
#: models/auth.py:36
msgid "e-mail address"
msgstr "e-mail adresa"
#: models/auth.py:37
msgid "password"
msgstr "lozinka"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "Unesite MD5 hash šifre -- ne unosite sam tekst šifre."
#: models/auth.py:38
msgid "staff status"
msgstr "dozvoli pristup administraciji sajta"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr "Određuje da li će korisnik imati pristup administratorskom delu sajta."
#: models/auth.py:39
msgid "active"
msgstr "aktivan"
#: models/auth.py:40
msgid "superuser status"
msgstr "da li je korisnik administrator"
#: models/auth.py:41
msgid "last login"
msgstr "vreme poslednje posete"
#: models/auth.py:42
msgid "date joined"
msgstr "datum otvaranja naloga"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"Uz ručno dodata prava, korisnik će dobiti sva prava iz grupa kojima pripada."
#: models/auth.py:48
msgid "Users"
msgstr "Korisnici"
#: models/auth.py:57
msgid "Personal info"
msgstr "Lične informacije"
#: models/auth.py:59
msgid "Important dates"
msgstr "Važni datumi"
#: models/auth.py:182
msgid "Message"
msgstr "Poruka"
#: conf/global_settings.py:37
msgid "Czech"
msgstr "Češki"
#: conf/global_settings.py:38
msgid "German"
msgstr "Nemački"
#: conf/global_settings.py:39
msgid "English"
msgstr "Engleski"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "Španski"
#: conf/global_settings.py:41
msgid "French"
msgstr "Francuski"
#: conf/global_settings.py:42
msgid "Galician"
msgstr ""
#: conf/global_settings.py:43
msgid "Italian"
msgstr "Italijanski"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "Brazilski"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "Ruski"
#: conf/global_settings.py:46
msgid "Serbian"
msgstr "Srpski"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
# nesh: Ovo je opis za stari SlugField
#: core/validators.py:58
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
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
msgid "Uppercase letters are not allowed here."
msgstr "Velika slova ovde nisu dozvoljena."
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "Mala slova ovde nisu dozvoljena."
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "Unesite samo brojeve razdvojene zarezima."
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Unesite ispravne e-mail adrese razdvojene zarezima."
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr "Unesite ispravnu IP adresu."
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "Prazne vrednosti ovde nisu dozvoljene."
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "Ovde možete uneti samo brojeve."
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "Podatak se ne može sastojati samo od brojeva."
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "Unesite celi broj."
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Ovde možete koristiti samo slova."
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Unesite ispravan datum u YYYY-MM-DD formatu."
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "Unesite ispravno vreme u HH:MM formatu."
#: core/validators.py:133
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
msgid "Enter a valid e-mail address."
msgstr "Unesite ispravnu e-mail adresu."
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Pošaljite ispravnu sliku. Fajl koji ste poslali ili nije slika ili je sam "
"fajl oštećen."
#: core/validators.py:156
#, 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
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
#: core/validators.py:168
#, 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
msgid "A valid URL is required."
msgstr "Unesite ispravan URL."
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"Unesite ispravan HTML. Greške su:\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "Neispravan XML: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "Neispravan URL: %s"
#: core/validators.py:205
#, 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
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
#: core/validators.py:226
#, 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] "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
#, python-format
msgid "This field must match the '%s' field."
msgstr "Ovo polje mora biti jednako sa poljem '%s'."
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr "Morate popuniti barem jedno polje."
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr "Popunite oba polja ili oba ostavite prazna."
#: core/validators.py:279
#, 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
#, 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
msgid "Duplicate values are not allowed."
msgstr "Duple vrednosti nisu dozvoljene."
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr "Vrednost mora biti stepena %s."
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr "Unesite ispravan decimalni broj."
#: core/validators.py:346
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "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
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "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
#, 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
#, 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
msgid "The format for this field is wrong."
msgstr "Pogrešan format polja."
#: core/validators.py:388
msgid "This field is invalid."
msgstr "Neispravno polje."
#: core/validators.py:423
#, 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
#, 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
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Zatvorite nezatvoren tag \"%(tag)s\" iz reda %(line)s. (Red počinje sa \"%"
"(start)s\".)"
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Tekst koji počinje u redu %(line)s nije dozvoljen u ovom kontekstu. (Red "
"počinje sa \"%(start)s\".)"
#: core/validators.py:468
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"Atribut \"%(attr)s\" u red %(line)s je neispravan. (Red počinje sa \"%(start)"
"s\".)"
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"Tag \"<%(tag)s>\" u redu %(line)s je neispravan. (Red počinje \"%(start)s\".)"
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Tag-u u redu %(line)s nedostaje jedan ili više atributa. (Red počinje sa \"%"
"(start)s\".)"
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Atribut \"%(attr)s\" u redu %(line)s ima neispravnu vrednost. (Red počinje "
"sa \"%(start)s\".)"
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr " Odvojite višestruke ID-ove zarezima."
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
" Koristite \"Ctrl\" (PC) ili \"Jabuku\" (Mek) da bi ste selektovali više "
"stavki."

Binary file not shown.

View File

@ -0,0 +1,951 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: django v1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-11-03 12:26+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Chinese\n"
"X-Poedit-Country: CHINA\n"
"X-Poedit-SourceCharset: utf-8\n"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: 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/object_history.html:5
msgid "History"
msgstr "历史"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
msgstr "日期/时间"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
msgid "User"
msgstr "用户"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
msgstr "动作"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
msgstr "N j, Y, P"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr "此对象没有修改历史。可能不能通过这个管理站点来增加。"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
msgstr "Django管理站点"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
msgstr "Django管理员"
#: contrib/admin/templates/admin/500.html:4
#, fuzzy
msgid "Server error"
msgstr "服务器错误(500)"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
msgstr "服务器错误(500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
msgstr "服务器错误 <em>(500)</em>"
#: 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
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/login.html:15
msgid "Username:"
msgstr "用户名:"
#: contrib/admin/templates/admin/login.html:18
msgid "Password:"
msgstr "口令:"
#: contrib/admin/templates/admin/login.html:20
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
msgstr "<a href=\"/password_reset/\">忘记你的密码</a>"
#: contrib/admin/templates/admin/login.html:24
msgid "Log in"
msgstr "登录"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
msgstr "欢迎,"
#: contrib/admin/templates/admin/base.html:23
msgid "Change password"
msgstr "修改口令"
#: contrib/admin/templates/admin/base.html:23
msgid "Log out"
msgstr "注销"
#: contrib/admin/templates/admin/delete_confirmation.html:7
#, fuzzy, python-format
msgid ""
"Deleting the %(object_name)s '%(object)s' would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"删除 %(object_name)s '%(object)s' 会导致删除相关的对象,但你的帐号无权删除下"
"列类型的对象:"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
"the following related items will be deleted:"
msgstr ""
"你确信相要删除 %(object_name)s \"%(object)s\"?所有相关的项目都将被删除:"
#: contrib/admin/templates/admin/delete_confirmation.html:18
msgid "Yes, I'm sure"
msgstr "是的,我确定"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "口令修改"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "口令修改成功"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "你的口令已经被修改。"
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
msgstr "口令重设"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
"忘记你的口令?在下面输入你的邮箱地址,我们将重设你的口令并且将新的口令通过邮"
"件发送给你。"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
msgstr "邮箱地址:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
msgstr "重设我的口令"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
msgstr "感谢今天在本网站花费了您的一些宝贵时间。"
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
msgstr "重新登录"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "口令重设成功"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
"我们已经按你所提交的邮箱地址发送了一个新的口令给你。你应该很会收到这封邮件。"
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"请输入你的旧口令,为了安全起见,接着要输入你的新口令两遍,这样我们可以校验你"
"输入的是否正确。"
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "旧口令:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "新口令:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "确认口令:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "修改我的口令"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "你所收到的这封邮件是由于你请求了口令重设"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "在 %(site_name)s 你的用户帐号"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
msgstr "你的新口令是: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr "到这个页面可以自由地修改口令:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
msgstr "你的用户名,一旦你忘记了:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
msgstr "感谢使用我们的站点!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
msgstr "%(site_name)s 小组"
#: contrib/admin/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 "日志记录"
#: utils/dates.py:6
msgid "Monday"
msgstr "星期一"
#: utils/dates.py:6
msgid "Tuesday"
msgstr "星期二"
#: utils/dates.py:6
msgid "Wednesday"
msgstr "星期三"
#: utils/dates.py:6
msgid "Thursday"
msgstr "星期四"
#: utils/dates.py:6
msgid "Friday"
msgstr "星期五"
#: utils/dates.py:7
msgid "Saturday"
msgstr "星期六"
#: utils/dates.py:7
msgid "Sunday"
msgstr "星期日"
#: utils/dates.py:14
msgid "January"
msgstr "一月"
#: utils/dates.py:14
msgid "February"
msgstr "二月"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
msgstr "三月"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
msgstr "四月"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
msgstr "五月"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
msgstr "六月"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
msgstr "七月"
#: utils/dates.py:15
msgid "August"
msgstr "八月"
#: utils/dates.py:15
msgid "September"
msgstr "九月"
#: utils/dates.py:15
msgid "October"
msgstr "十月"
#: utils/dates.py:15
msgid "November"
msgstr "十一月"
#: utils/dates.py:16
msgid "December"
msgstr "十二月"
#: utils/dates.py:27
msgid "Jan."
msgstr "一月"
#: utils/dates.py:27
msgid "Feb."
msgstr "二月"
#: utils/dates.py:28
msgid "Aug."
msgstr "八月"
#: utils/dates.py:28
msgid "Sept."
msgstr "九月"
#: utils/dates.py:28
msgid "Oct."
msgstr "十月"
#: utils/dates.py:28
msgid "Nov."
msgstr "十一月"
#: utils/dates.py:28
msgid "Dec."
msgstr "十二月"
#: models/core.py:5
msgid "domain name"
msgstr "域名"
#: models/core.py:6
msgid "display name"
msgstr "显示名"
#: models/core.py:8
msgid "site"
msgstr "站点"
#: models/core.py:9
msgid "sites"
msgstr "站点"
#: models/core.py:22
msgid "label"
msgstr "标签"
#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19
msgid "name"
msgstr "名称"
#: models/core.py:25
msgid "package"
msgstr "包"
#: models/core.py:26
msgid "packages"
msgstr "包"
#: models/core.py:36
msgid "python module name"
msgstr "python模块名"
#: models/core.py:38
msgid "content type"
msgstr "内容类型"
#: models/core.py:39
msgid "content types"
msgstr "内容类型"
#: models/core.py:62
msgid "redirect from"
msgstr "重定向自"
#: models/core.py:63
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr "应该是一个绝对路径,不包括域名。例如:'/events/search/'。"
#: models/core.py:64
msgid "redirect to"
msgstr "重定向到"
#: models/core.py:65
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr "可以是绝对路径(同上)或以'http://'开始的全URL。"
#: models/core.py:67
msgid "redirect"
msgstr "重定向"
#: models/core.py:68
msgid "redirects"
msgstr "重定向"
#: models/core.py:81
msgid "URL"
msgstr ""
#: models/core.py:82
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr "例如:'/about/contact/'。请确保前导和结尾的除号。"
#: models/core.py:83
msgid "title"
msgstr "标题"
#: models/core.py:84
msgid "content"
msgstr "内容"
#: models/core.py:85
msgid "enable comments"
msgstr "允许评论"
#: models/core.py:86
msgid "template name"
msgstr "模板名称"
#: models/core.py:87
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
msgid "registration required"
msgstr "请先注册"
#: models/core.py:88
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr "如果被选中,仅登录用户才可以查看此页。"
#: models/core.py:92
msgid "flat page"
msgstr "简单页面"
#: models/core.py:93
msgid "flat pages"
msgstr "简单页面"
#: models/core.py:114
msgid "session key"
msgstr "session键字"
#: models/core.py:115
msgid "session data"
msgstr "session数据"
#: models/core.py:116
msgid "expire date"
msgstr "过期日期"
#: models/core.py:118
msgid "session"
msgstr ""
#: models/core.py:119
msgid "sessions"
msgstr ""
#: models/auth.py:8
msgid "codename"
msgstr "代码名称"
#: models/auth.py:10
msgid "Permission"
msgstr "许可"
#: models/auth.py:11 models/auth.py:58
msgid "Permissions"
msgstr "许可"
#: models/auth.py:22
msgid "Group"
msgstr "组"
#: models/auth.py:23 models/auth.py:60
msgid "Groups"
msgstr "组"
#: models/auth.py:33
msgid "username"
msgstr "用户名"
#: models/auth.py:34
msgid "first name"
msgstr "名字"
#: models/auth.py:35
msgid "last name"
msgstr "姓"
#: models/auth.py:36
msgid "e-mail address"
msgstr "邮件地址"
#: models/auth.py:37
msgid "password"
msgstr "口令"
#: models/auth.py:37
msgid "Use an MD5 hash -- not the raw password."
msgstr "使用MD5的哈希值 -- 不是原始的口令。"
#: models/auth.py:38
msgid "staff status"
msgstr "人员状态"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
msgstr "指定是否用户可以登录到这个管理站点。"
#: models/auth.py:39
msgid "active"
msgstr "活动"
#: models/auth.py:40
msgid "superuser status"
msgstr "超级用户状态"
#: models/auth.py:41
msgid "last login"
msgstr "上次登录"
#: models/auth.py:42
msgid "date joined"
msgstr "加入日期"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"除了手动设置权限以外,用户也会从他(她)所在的小组获得所赋组小组的所有权限。"
#: models/auth.py:48
msgid "Users"
msgstr "用户"
#: models/auth.py:57
msgid "Personal info"
msgstr "个人信息"
#: models/auth.py:59
msgid "Important dates"
msgstr "重要日期"
#: models/auth.py:182
msgid "Message"
msgstr "消息"
#: conf/global_settings.py:37
msgid "Czech"
msgstr "捷克语"
#: conf/global_settings.py:38
msgid "German"
msgstr "德语"
#: conf/global_settings.py:39
msgid "English"
msgstr "英语"
#: conf/global_settings.py:40
msgid "Spanish"
msgstr "西斑牙语"
#: conf/global_settings.py:41
msgid "French"
msgstr "法语"
#: conf/global_settings.py:42
msgid "Galician"
msgstr "加利西亚语"
#: conf/global_settings.py:43
msgid "Italian"
msgstr "意大利语"
#: conf/global_settings.py:44
msgid "Brazilian"
msgstr "巴西语"
#: conf/global_settings.py:45
msgid "Russian"
msgstr "俄语"
#: conf/global_settings.py:46
#, fuzzy
msgid "Serbian"
msgstr "塞尔维亚语"
#: conf/global_settings.py:47
msgid "Traditional Chinese"
msgstr ""
#: core/validators.py:58
msgid "This value must contain only letters, numbers and underscores."
msgstr "此值只能包含字母、数字和下划线。"
#: core/validators.py:62
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr "此值只能包含字母、数字、下划线和斜线。"
#: core/validators.py:70
msgid "Uppercase letters are not allowed here."
msgstr "这里不允许大写字母。"
#: core/validators.py:74
msgid "Lowercase letters are not allowed here."
msgstr "这里不允许小写字母。"
#: core/validators.py:81
msgid "Enter only digits separated by commas."
msgstr "只能输入用逗号分隔的数字。"
#: core/validators.py:93
msgid "Enter valid e-mail addresses separated by commas."
msgstr "输入用逗号分隔的有效邮件地址。"
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr "请输入一个有效的IP地址。"
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "这里不允许输入空值。"
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "这里不允许非数字字符。"
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "此值不能全部由数字组成。"
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "输入整数。"
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "这里只允许字母。"
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "输入一个 YYYY-MM-DD 格式的有效日期。"
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "输入一个 HH:MM 格式的有效时间。"
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "输入一个 YYYY-MM-DD HH:MM 格式的有效日期/时间。"
#: core/validators.py:137
msgid "Enter a valid e-mail address."
msgstr "输入一个有效的邮件地址。"
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "上传一个有效的图片。您所上传的文件或者不是图片或是一个破坏的图片。"
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL %s 指向的不是一个有效的图片。"
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "电话号码必须为 XXX-XXX-XXXX 格式。\"%s\"是无效的。"
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL %s 指向的不是一个有效的 QuickTime 视频。"
#: core/validators.py:172
msgid "A valid URL is required."
msgstr "需要是一个有效的URL。"
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
"需要有效的HTML。详细的错误是\n"
"%s"
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "格式错误的 XML: %s"
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "无效 URL: %s"
#: core/validators.py:205
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL %s 是一个断开的链接。"
#: core/validators.py:211
msgid "Enter a valid U.S. state abbreviation."
msgstr "输入一个有效的 U.S. 州缩写。"
#: core/validators.py:226
#, 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
#, python-format
msgid "This field must match the '%s' field."
msgstr "这个字段必须与 '%s' 字段相匹配。"
#: core/validators.py:252
msgid "Please enter something for at least one field."
msgstr "请至少在一个字段上输入些什么。"
#: core/validators.py:261 core/validators.py:272
msgid "Please enter both fields or leave them both empty."
msgstr "请要么两个字段都输入或者两个字段都空着。"
#: core/validators.py:279
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "如果 %(field)s 是 %(value)s 时这个字段必须给出"
#: core/validators.py:291
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "如果 %(field)s 不是 %(value)s 时这个字段必须给出"
#: core/validators.py:310
msgid "Duplicate values are not allowed."
msgstr "重复值不允许。"
#: core/validators.py:333
#, python-format
msgid "This value must be a power of %s."
msgstr "这个值必须是 %s 的乘方。"
#: core/validators.py:344
msgid "Please enter a valid decimal number."
msgstr "请输入一个有效的小数。"
#: core/validators.py:346
#, fuzzy, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "请输入一个有效的小数,最多 %s 个数字。"
msgstr[1] "请输入一个有效的小数,最多 %s 个数字。"
#: core/validators.py:349
#, fuzzy, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "请输入一个有效的小数,最多 %s 个小数位。"
msgstr[1] "请输入一个有效的小数,最多 %s 个小数位。"
#: core/validators.py:359
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "请确保你上传的文件至少 %s 字节大。"
#: core/validators.py:360
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "请确保你上传的文件至多 %s 字节大。"
#: core/validators.py:373
msgid "The format for this field is wrong."
msgstr "这个字段的格式不正确。"
#: core/validators.py:388
msgid "This field is invalid."
msgstr "这个字段无效。"
#: core/validators.py:423
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "不能从 %s 得到任何东西。"
#: core/validators.py:426
#, 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
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"请关闭未关闭的 %(tag)s 标签从第 %(line)s 行。(行开始于 \"%(start)s\"。)"
#: core/validators.py:463
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"在 %(line)s 行开始的一些文本不允许在那个上下文中。(行开始于 \"%(start)s\"。)"
#: core/validators.py:468
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"在 %(line)s 行的\"%(attr)s\"不是一个有效的属性。(行开始于 \"%(start)s\"。)"
#: core/validators.py:473
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"在 %(line)s 行的\"<%(tag)s>\"不是一个有效的标签。(行开始于 \"%(start)s\"。)"
#: core/validators.py:477
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"在行 %(line)s 的标签少了一个或多个必须的属性。(行开始于 \"%(start)s\"。)"
#: core/validators.py:482
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"在行 %(line)s 的\"%(attr)s\"属性有一个无效的值。(行开始于 \"%(start)s\"。)"
#: core/meta/fields.py:95
msgid " Separate multiple IDs with commas."
msgstr " 用逗号分隔多个ID。"
#: core/meta/fields.py:98
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr " 按下 \"Control\"或者在Mac上按 \"Command\" 来选择一个或多个值。"

View File

@ -55,3 +55,10 @@ for k in dir(me):
if not k.startswith('_') and k != 'me' and k != k.upper():
delattr(me, k)
del me, k
# as the last step, install the translation machinery and
# remove the module again to not clutter the namespace.
from django.utils import translation
translation.install()
del translation

5
django/conf/urls/i18n.py Normal file
View File

@ -0,0 +1,5 @@
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^setlang/$', 'django.views.i18n.set_language'),
)

View File

@ -1,17 +1,19 @@
from django.core import meta
from django.models import auth, core
from django.utils.translation import gettext_lazy as _
class LogEntry(meta.Model):
action_time = meta.DateTimeField(auto_now=True)
action_time = meta.DateTimeField(_('action time'), auto_now=True)
user = meta.ForeignKey(auth.User)
content_type = meta.ForeignKey(core.ContentType, blank=True, null=True)
object_id = meta.TextField(blank=True, null=True)
object_repr = meta.CharField(maxlength=200)
action_flag = meta.PositiveSmallIntegerField()
change_message = meta.TextField(blank=True)
object_id = meta.TextField(_('object id'), blank=True, null=True)
object_repr = meta.CharField(_('object repr'), maxlength=200)
action_flag = meta.PositiveSmallIntegerField(_('action flag'))
change_message = meta.TextField(_('change message'), blank=True)
class META:
module_name = 'log'
verbose_name_plural = 'log entries'
verbose_name = _('log entry')
verbose_name_plural = _('log entries')
db_table = 'django_admin_log'
ordering = ('-action_time',)
module_constants = {

View File

@ -1,11 +1,12 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block title %}Page not found{% endblock %}
{% block title %}{% trans 'Page not found' %}{% endblock %}
{% block content %}
<h2>Page not found</h2>
<h2>{% trans 'Page not found' %}</h2>
<p>We're sorry, but the requested page could not be found.</p>
<p>{% trans "We're sorry, but the requested page could not be found." %}</p>
{% endblock %}

View File

@ -1,11 +1,12 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; Server error</div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans "Home" %}</a> &rsaquo; {% trans "Server error" %}</div>{% endblock %}
{% block title %}Server error (500){% endblock %}
{% block title %}{% trans 'Server error (500)' %}{% endblock %}
{% block content %}
<h1>Server Error <em>(500)</em></h1>
<p>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.</p>
<h1>{% trans 'Server Error <em>(500)</em>' %}</h1>
<p>{% trans "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." %}</p>
{% endblock %}

View File

@ -1,11 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE }}" xml:lang="{{ LANGUAGE_CODE }}">
<head>
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/base.css{% endblock %}" />
{% block extrastyle %}{% endblock %}
{% block extrahead %}{% endblock %}
</head>
{% load i18n %}
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
@ -19,13 +20,13 @@
{% block branding %}{% endblock %}
</div>
{% if not user.is_anonymous %}
<div id="user-tools">Welcome, <strong>{% if user.first_name %}{{ user.first_name }}{% else %}{{ user.username }}{% endif %}</strong>. <br />{% block userlinks %}<a href="/admin/password_change/">Change password</a> / <a href="/admin/logout/">Log out</a>{% endblock %}</div>
<div id="user-tools">{% trans 'Welcome,' %} <strong>{% if user.first_name %}{{ user.first_name }}{% else %}{{ user.username }}{% endif %}</strong>. <br />{% block userlinks %}<a href="/admin/password_change/">{% trans 'Change password' %}</a> / <a href="/admin/logout/">{% trans 'Log out' %}</a>{% endblock %}</div>
{% endif %}
{% block nav-global %}{% endblock %}
<br class="clear" />
</div>
<!-- END Header -->
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">Home</a>{% if title %} &rsaquo; {{ title }}{% endif %}</div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans 'Home' %}</a>{% if title %} &rsaquo; {{ title }}{% endif %}</div>{% endblock %}
{% endif %}
{% if messages %}

View File

@ -1,9 +1,10 @@
{% extends "admin/base" %}
{% load i18n %}
{% block title %}{{ title }} | Django site admin{% endblock %}
{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %}
{% block branding %}
<h1 id="site-name">Django administration</h1>
<h1 id="site-name">{% trans 'Django administration' %}</h1>
<h2 id="site-url"><a href="http://www.example.com/">example.com</a></h2>
{% endblock %}

View File

@ -1,20 +1,21 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block content %}
{% if perms_lacking %}
<p>Deleting the {{ object_name }} "{{ object }}" would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:</p>
<p>{% blocktrans %}Deleting the {{ object_name }} '{{ object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p>
<ul>
{% for obj in perms_lacking %}
<li>{{ obj }}</li>
{% endfor %}
</ul>
{% else %}
<p>Are you sure you want to delete the {{ object_name }} "{{ object }}"? All of the following related items will be deleted:</p>
<p>{% blocktrans %}Are you sure you want to delete the {{ object_name }} "{{ object }}"? All of the following related items will be deleted:{% endblocktrans %}</p>
<ul>{{ deleted_objects|unordered_list }}</ul>
<form action="" method="post">
<input type="hidden" name="post" value="yes" />
<input type="submit" value="Yes, I'm sure" />
<input type="submit" value="{% trans "Yes, I'm sure" %}" />
</form>
{% endif %}

View File

@ -1,4 +1,5 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}dashboard{% endblock %}
@ -23,13 +24,13 @@
{% endif %}
{% if model.perms.add %}
<td class="x50"><a href="{{ model.admin_url }}add/" class="addlink">Add</a></td>
<td class="x50"><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td>
{% else %}
<td class="x50">&nbsp;</td>
{% endif %}
{% if model.perms.change %}
<td class="x75"><a href="{{ model.admin_url }}" class="changelink">Change</a></td>
<td class="x75"><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
{% else %}
<td class="x75">&nbsp;</td>
{% endif %}
@ -39,7 +40,7 @@
</div>
{% endfor %}
{% else %}
<p>You don't have permission to edit anything.</p>
<p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}
</div>
{% endblock %}
@ -47,12 +48,12 @@
{% block sidebar %}
<div id="content-related">
<div class="module" id="recent-actions-module">
<h2>Recent Actions</h2>
<h3>My Actions</h3>
<h2>{% trans 'Recent Actions' %}</h2>
<h3>{% trans 'My Actions' %}</h3>
{% load log %}
{% get_admin_log 10 as admin_log for_user user %}
{% if not admin_log %}
<p>None available</p>
<p>{% trans 'None available' %}</p>
{% else %}
<ul class="actionlist">
{% for entry in admin_log %}

View File

@ -1,4 +1,5 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}{% endblock %}
@ -11,16 +12,16 @@
<form action="{{ app_path }}" method="post">
<p class="aligned">
<label for="id_username">Username:</label> <input type="text" name="username" id="id_username" />
<label for="id_username">{% trans 'Username:' %}</label> <input type="text" name="username" id="id_username" />
</p>
<p class="aligned">
<label for="id_password">Password:</label> <input type="password" name="password" id="id_password" />
<label for="id_password">{% trans 'Password:' %}</label> <input type="password" name="password" id="id_password" />
<input type="hidden" name="this_is_the_login_form" value="1" />
<input type="hidden" name="post_data" value="{{ post_data }}" />{% comment %} <span class="help">Have you <a href="/password_reset/">forgotten your password</a>?</span>{% endcomment %}
<input type="hidden" name="post_data" value="{{ post_data }}" />{% comment %} <span class="help">{% trans 'Have you <a href="/password_reset/">forgotten your password</a>?' %}</span>{% endcomment %}
</p>
<div class="aligned ">
<label>&nbsp;</label><input type="submit" value="Log in" />
<label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
</div>
</form>

View File

@ -1,7 +1,8 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}
<div class="breadcrumbs"><a href="../../../../">Home</a> &rsaquo; <a href="../../">{{ module_name }}</a> &rsaquo; <a href="../">{{ object|truncatewords:"18" }}</a> &rsaquo; History</div>
<div class="breadcrumbs"><a href="../../../../">{% trans 'Home' %}</a> &rsaquo; <a href="../../">{{ module_name }}</a> &rsaquo; <a href="../">{{ object|truncatewords:"18" }}</a> &rsaquo; {% trans 'History' %}</div>
{% endblock %}
{% block content %}
@ -14,15 +15,15 @@
<table id="change-history">
<thead>
<tr>
<th>Date/time</th>
<th>User</th>
<th>Action</th>
<th>{% trans 'Date/time' %}</th>
<th>{% trans 'User' %}</th>
<th>{% trans 'Action' %}</th>
</tr>
</thead>
<tbody>
{% for action in action_list %}
<tr>
<th>{{ action.action_time|date:"N j, Y, P" }}</th>
<th>{{ action.action_time|date:_("DATE_WITH_TIME_FULL") }}</th>
<td>{{ action.get_user.username }}{% if action.get_user.first_name %} ({{ action.get_user.first_name }} {{ action.get_user.last_name }}){% endif %}</td>
<td>{{ action.change_message}}</td>
</tr>
@ -32,7 +33,7 @@
{% else %}
<p>This object doesn't have a change history. It probably wasn't added via this admin site.</p>
<p>{% trans "This object doesn't have a change history. It probably wasn't added via this admin site." %}</p>
{% endif %}

View File

@ -1,11 +1,12 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a></div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a></div>{% endblock %}
{% block content %}
<p>Thanks for spending some quality time with the Web site today.</p>
<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
<p><a href="../">Log in again</a></p>
<p><a href="../">{% trans 'Log in again' %}</a></p>
{% endblock %}

View File

@ -1,13 +1,14 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password change</div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}</div>{% endblock %}
{% block title %}Password change successful{% endblock %}
{% block title %}{% trans 'Password change successful' %}{% endblock %}
{% block content %}
<h1>Password change successful</h1>
<h1>{% trans 'Password change successful' %}</h1>
<p>Your password was changed.</p>
<p>{% trans 'Your password was changed.' %}</p>
{% endblock %}

View File

@ -1,25 +1,26 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password change</div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}</div>{% endblock %}
{% block title %}Password change{% endblock %}
{% block title %}{% trans 'Password change' %}{% endblock %}
{% block content %}
<h1>Password change</h1>
<h1>{% trans 'Password change' %}</h1>
<p>Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly.</p>
<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
<form action="" method="post">
{% if form.old_password.errors %}{{ form.old_password.html_error_list }}{% endif %}
<p class="aligned wide"><label for="id_old_password">Old password:</label>{{ form.old_password }}</p>
<p class="aligned wide"><label for="id_old_password">{% trans 'Old password:' %}</label>{{ form.old_password }}</p>
{% if form.new_password1.errors %}{{ form.new_password1.html_error_list }}{% endif %}
<p class="aligned wide"><label for="id_new_password1">New password:</label>{{ form.new_password1 }}</p>
<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
{% if form.new_password2.errors %}{{ form.new_password2.html_error_list }}{% endif %}
<p class="aligned wide"><label for="id_new_password2">Confirm password:</label>{{ form.new_password2 }}</p>
<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
<p><input type="submit" value="Change my password" /></p>
<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
</form>
{% endblock %}

View File

@ -1,13 +1,14 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password reset</div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
{% block title %}Password reset successful{% endblock %}
{% block title %}{% trans 'Password reset successful' %}{% endblock %}
{% block content %}
<h1>Password reset successful</h1>
<h1>{% trans 'Password reset successful' %}</h1>
<p>We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly.</p>
<p>{% trans "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." %}</p>
{% endblock %}

View File

@ -1,14 +1,15 @@
You're receiving this e-mail because you requested a password reset
for your user account at {{ site_name }}.
{% load i18n %}
{% trans "You're receiving this e-mail because you requested a password reset" %}
{% trans "for your user account at %(site_name)s" %}.
Your new password is: {{ new_password }}
{% trans "Your new password is: %(new_password)s" %}
Feel free to change this password by going to this page:
{% trans "Feel free to change this password by going to this page:" %}
http://{{ domain }}/password_change/
Your username, in case you've forgotten, is {{ user.username }}
{% trans "Your username, in case you've forgotten:" %} {{ user.username }}
Thanks for using our site!
{% trans "Thanks for using our site!" %}
The {{ site_name }} team
{% trans "The %(site_name)s team" %}

View File

@ -1,18 +1,19 @@
{% extends "admin/base_site" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password reset</div>{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
{% block title %}Password reset{% endblock %}
{% block title %}{% trans "Password reset" %}{% endblock %}
{% block content %}
<h1>Password reset</h1>
<h1>{% trans "Password reset") }}</h1>
<p>Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you.</p>
<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." %}</p>
<form action="" method="post">
{% if form.email.errors %}{{ form.email.html_error_list }}{% endif %}
<p><label for="id_email">E-mail address:</label> {{ form.email }} <input type="submit" value="Reset my password" /></p>
<p><label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }} <input type="submit" value="{% trans 'Reset my password' %}" /></p>
</form>
{% endblock %}

View File

@ -33,6 +33,12 @@ class DjangoContext(Context):
self['user'] = request.user
self['messages'] = request.user.get_and_delete_messages()
self['perms'] = PermWrapper(request.user)
from django.conf import settings
self['LANGUAGES'] = settings.LANGUAGES
if hasattr(request, 'LANGUAGE_CODE'):
self['LANGUAGE_CODE'] = request.LANGUAGE_CODE
else:
self['LANGUAGE_CODE'] = settings.LANGUAGE_CODE
if DEBUG and request.META.get('REMOTE_ADDR') in INTERNAL_IPS:
self['debug'] = True
from django.core import db

View File

@ -1,8 +1,9 @@
from django.conf import settings
from django.core import formfields, validators
from django.core.exceptions import ObjectDoesNotExist
from django.utils.functional import curry
from django.utils.functional import curry, lazy
from django.utils.text import capfirst
from django.utils.translation import gettext_lazy
import datetime, os
# Random entropy string used by "default" param.
@ -26,6 +27,16 @@ prep_for_like_query = lambda x: str(x).replace("%", "\%").replace("_", "\_")
# returns the <ul> class for a given radio_admin value
get_ul_class = lambda x: 'radiolist%s' % ((x == HORIZONTAL) and ' inline' or '')
def string_concat(*strings):
""""
lazy variant of string concatenation, needed for translations that are
constructed from multiple parts. Handles lazy strings and non-strings by
first turning all arguments to strings, before joining them.
"""
return ''.join([str(el) for el in strings])
string_concat = lazy(string_concat, str)
def manipulator_valid_rel_key(f, self, field_data, all_data):
"Validates that the value is a valid foreign key"
mod = f.rel.to.get_model_module()
@ -80,9 +91,11 @@ class Field(object):
self.db_column = db_column
if rel and isinstance(rel, ManyToMany):
if rel.raw_id_admin:
self.help_text += ' Separate multiple IDs with commas.'
self.help_text = string_concat(self.help_text,
gettext_lazy(' Separate multiple IDs with commas.'))
else:
self.help_text += ' Hold down "Control", or "Command" on a Mac, to select more than one.'
self.help_text = string_concat(self.help_text,
gettext_lazy(' Hold down "Control", or "Command" on a Mac, to select more than one.'))
# Set db_index to True if the field has a relationship and doesn't explicitly set db_index.
if db_index is None:

View File

@ -234,6 +234,97 @@ class Parser:
def delete_first_token(self):
del self.tokens[0]
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.
If your tag needs to know what tag name it was called with,
you find it in the tagname instance variable of the parser.
"""
def __init__(self, subject):
self.subject = subject
self.pointer = 0
self.backout = []
self.tagname = self.tag()
def top(self):
"""
You need to 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.
"""
return self.pointer < len(self.subject)
def back(self):
"""
This method undos the last microparser. This can be
used 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.
"""
subject = self.subject
i = self.pointer
if i >= len(subject):
raise TemplateSyntaxError, "expected another tag, found end of string: %s" % subject
p = i
while i < len(subject) and subject[i] not in (' ', '\t'):
i += 1
s = subject[p:i]
while i < len(subject) and subject[i] in (' ', '\t'):
i += 1
self.backout.append(self.pointer)
self.pointer = i
return s
def value(self):
"""
This microparser 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
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
i += 1
res = subject[p:i]
while i < len(subject) and subject[i] in (' ', '\t'):
i += 1
self.backout.append(self.pointer)
self.pointer = i
return res
else:
p = i
while i < len(subject) and subject[i] not in (' ', '\t'):
i += 1
s = subject[p:i]
while i < len(subject) and subject[i] in (' ', '\t'):
i += 1
self.backout.append(self.pointer)
self.pointer = i
return s
class FilterParser:
"""Parse a variable token and its optional filters (all as a single string),
and return a list of tuples of the filter name and arguments.
@ -255,8 +346,12 @@ class FilterParser:
self.filters = []
self.current_filter_name = None
self.current_filter_arg = None
# First read the variable part
self.var = self.read_alphanumeric_token()
# First read the variable part - decide on wether 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:
self.var = self.read_alphanumeric_token()
if not self.var:
raise TemplateSyntaxError, "Could not read variable name: '%s'" % self.s
if self.var.find(VARIABLE_ATTRIBUTE_SEPARATOR + '_') > -1 or self.var[0] == '_':
@ -269,6 +364,12 @@ class FilterParser:
# We have a filter separator; start reading the filters
self.read_filters()
def peek_char(self):
try:
return self.s[self.i+1]
except IndexError:
return None
def next_char(self):
self.i = self.i + 1
try:
@ -276,6 +377,37 @@ class FilterParser:
except IndexError:
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."""
val = ''
qchar = None
i18n = False
self.next_char()
if self.current == '_':
i18n = True
self.next_char()
if self.current != '(':
raise TemplateSyntaxError, "Bad character (expecting '(') '%s'" % self.current
self.next_char()
if not self.current in ('"', "'"):
raise TemplateSyntaxError, "Bad character (expecting '\"' or ''') '%s'" % self.current
qchar = self.current
val += qchar
while 1:
self.next_char()
if self.current == qchar:
break
val += self.current
val += self.current
self.next_char()
if i18n:
if self.current != ')':
raise TemplateSyntaxError, "Bad character (expecting ')') '%s'" % self.current
self.next_char()
val = qchar+_(val.strip(qchar))+qchar
return val
def read_alphanumeric_token(self):
"""Read a variable name or filter name, which are continuous strings of
alphanumeric characters + the underscore"""
@ -318,8 +450,15 @@ class FilterParser:
return (self.current_filter_name, self.current_filter_arg)
def read_arg(self):
# First read a "
# First read a " or a _("
self.next_char()
translated = False
if self.current == '_':
self.next_char()
if self.current != '(':
raise TemplateSyntaxError, "Bad character (expecting '(') '%s'" % self.current
translated = True
self.next_char()
if self.current != '"':
raise TemplateSyntaxError, "Bad character (expecting '\"') '%s'" % self.current
self.escaped = False
@ -346,6 +485,11 @@ class FilterParser:
arg += self.current
# self.current must now be '"'
self.next_char()
if translated:
if self.current != ')':
raise TemplateSyntaxError, "Bad character (expecting ')') '%s'" % self.current
self.next_char()
arg = _(arg)
return arg
def get_filters_from_token(token):

View File

@ -2,7 +2,10 @@
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):

View File

@ -25,6 +25,7 @@ slug_re = re.compile(r'^[-\w]+$')
url_re = re.compile(r'^http://\S+$')
from django.conf.settings import JING_PATH
from django.utils.translation import gettext_lazy, ngettext
class ValidationError(Exception):
def __init__(self, message):
@ -54,11 +55,11 @@ class CriticalValidationError(Exception):
def isAlphaNumeric(field_data, all_data):
if not alnum_re.search(field_data):
raise ValidationError, "This value must contain only letters, numbers and underscores."
raise ValidationError, _("This value must contain only letters, numbers and underscores.")
def isAlphaNumericURL(field_data, all_data):
if not alnumurl_re.search(field_data):
raise ValidationError, "This value must contain only letters, numbers, underscores or slashes."
raise ValidationError, _("This value must contain only letters, numbers, underscores and slashes.")
def isSlug(field_data, all_data):
if not slug_re.search(field_data):
@ -66,18 +67,18 @@ def isSlug(field_data, all_data):
def isLowerCase(field_data, all_data):
if field_data.lower() != field_data:
raise ValidationError, "Uppercase letters are not allowed here."
raise ValidationError, _("Uppercase letters are not allowed here.")
def isUpperCase(field_data, all_data):
if field_data.upper() != field_data:
raise ValidationError, "Lowercase letters are not allowed here."
raise ValidationError, _("Lowercase letters are not allowed here.")
def isCommaSeparatedIntegerList(field_data, all_data):
for supposed_int in field_data.split(','):
try:
int(supposed_int)
except ValueError:
raise ValidationError, "Enter only digits separated by commas."
raise ValidationError, _("Enter only digits separated by commas.")
def isCommaSeparatedEmailList(field_data, all_data):
"""
@ -89,51 +90,51 @@ def isCommaSeparatedEmailList(field_data, all_data):
try:
isValidEmail(supposed_email.strip(), '')
except ValidationError:
raise ValidationError, "Enter valid e-mail addresses separated by commas."
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."
raise validators.ValidationError, _("Please enter a valid IP address.")
def isNotEmpty(field_data, all_data):
if field_data.strip() == '':
raise ValidationError, "Empty values are not allowed here."
raise ValidationError, _("Empty values are not allowed here.")
def isOnlyDigits(field_data, all_data):
if not field_data.isdigit():
raise ValidationError, "Non-numeric characters aren't allowed here."
raise ValidationError, _("Non-numeric characters aren't allowed here.")
def isNotOnlyDigits(field_data, all_data):
if field_data.isdigit():
raise ValidationError, "This value can't be comprised solely of digits."
raise ValidationError, _("This value can't be comprised solely of digits.")
def isInteger(field_data, all_data):
# This differs from isOnlyDigits because this accepts the negative sign
if not integer_re.search(field_data):
raise ValidationError, "Enter a whole number."
raise ValidationError, _("Enter a whole number.")
def isOnlyLetters(field_data, all_data):
if not field_data.isalpha():
raise ValidationError, "Only alphabetical characters are allowed here."
raise ValidationError, _("Only alphabetical characters are allowed here.")
def isValidANSIDate(field_data, all_data):
if not ansi_date_re.search(field_data):
raise ValidationError, 'Enter a valid date in YYYY-MM-DD format.'
raise ValidationError, _('Enter a valid date in YYYY-MM-DD format.')
def isValidANSITime(field_data, all_data):
if not ansi_time_re.search(field_data):
raise ValidationError, 'Enter a valid time in HH:MM format.'
raise ValidationError, _('Enter a valid time in HH:MM format.')
def isValidANSIDatetime(field_data, all_data):
if not ansi_datetime_re.search(field_data):
raise ValidationError, 'Enter a valid date/time in YYYY-MM-DD HH:MM format.'
raise ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM format.')
def isValidEmail(field_data, all_data):
if not email_re.search(field_data):
raise ValidationError, 'Enter a valid e-mail address.'
raise ValidationError, _('Enter a valid e-mail address.')
def isValidImage(field_data, all_data):
"""
@ -145,18 +146,18 @@ def isValidImage(field_data, all_data):
try:
Image.open(StringIO(field_data['content']))
except IOError: # Python Imaging Library doesn't recognize it as an image
raise ValidationError, "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
raise ValidationError, _("Upload a valid image. The file you uploaded was either not an image or a corrupted image.")
def isValidImageURL(field_data, all_data):
uc = URLMimeTypeCheck(('image/jpeg', 'image/gif', 'image/png'))
try:
uc(field_data, all_data)
except URLMimeTypeCheck.InvalidContentType:
raise ValidationError, "The URL %s does not point to a valid image." % field_data
raise ValidationError, _("The URL %s does not point to a valid image.") % field_data
def isValidPhone(field_data, all_data):
if not phone_re.search(field_data):
raise ValidationError, 'Phone numbers must be in XXX-XXX-XXXX format. "%s" is invalid.' % field_data
raise ValidationError, _('Phone numbers must be in XXX-XXX-XXXX format. "%s" is invalid.') % field_data
def isValidQuicktimeVideoURL(field_data, all_data):
"Checks that the given URL is a video that can be played by QuickTime (qt, mpeg)"
@ -164,11 +165,11 @@ def isValidQuicktimeVideoURL(field_data, all_data):
try:
uc(field_data, all_data)
except URLMimeTypeCheck.InvalidContentType:
raise ValidationError, "The URL %s does not point to a valid QuickTime video." % field_data
raise ValidationError, _("The URL %s does not point to a valid QuickTime video.") % field_data
def isValidURL(field_data, all_data):
if not url_re.search(field_data):
raise ValidationError, "A valid URL is required."
raise ValidationError, _("A valid URL is required.")
def isValidHTML(field_data, all_data):
import urllib, urllib2
@ -182,14 +183,14 @@ def isValidHTML(field_data, all_data):
return
from xml.dom.minidom import parseString
error_messages = [e.firstChild.wholeText for e in parseString(u.read()).getElementsByTagName('messages')[0].getElementsByTagName('msg')]
raise ValidationError, "Valid HTML is required. Specific errors are:\n%s" % "\n".join(error_messages)
raise ValidationError, _("Valid HTML is required. Specific errors are:\n%s") % "\n".join(error_messages)
def isWellFormedXml(field_data, all_data):
from xml.dom.minidom import parseString
try:
parseString(field_data)
except Exception, e: # Naked except because we're not sure what will be thrown
raise ValidationError, "Badly formed XML: %s" % str(e)
raise ValidationError, _("Badly formed XML: %s") % str(e)
def isWellFormedXmlFragment(field_data, all_data):
isWellFormedXml('<root>%s</root>' % field_data, all_data)
@ -199,15 +200,15 @@ def isExistingURL(field_data, all_data):
try:
u = urllib2.urlopen(field_data)
except ValueError:
raise ValidationError, "Invalid URL: %s" % field_data
raise ValidationError, _("Invalid URL: %s") % field_data
except: # urllib2.HTTPError, urllib2.URLError, httplib.InvalidURL, etc.
raise ValidationError, "The URL %s is a broken link." % field_data
raise ValidationError, _("The URL %s is a broken link.") % field_data
def isValidUSState(field_data, all_data):
"Checks that the given string is a valid two-letter U.S. state abbreviation"
states = ['AA', 'AE', 'AK', 'AL', 'AP', 'AR', 'AS', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'FM', 'GA', 'GU', 'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MH', 'MI', 'MN', 'MO', 'MP', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'PR', 'PW', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VA', 'VI', 'VT', 'WA', 'WI', 'WV', 'WY']
if field_data.upper() not in states:
raise ValidationError, "Enter a valid U.S. state abbreviation."
raise ValidationError, _("Enter a valid U.S. state abbreviation.")
def hasNoProfanities(field_data, all_data):
"""
@ -222,15 +223,14 @@ def hasNoProfanities(field_data, all_data):
if words_seen:
from django.utils.text import get_text_list
plural = len(words_seen) > 1
raise ValidationError, "Watch your mouth! The word%s %s %s not allowed here." % \
(plural and 's' or '',
get_text_list(['"%s%s%s"' % (i[0], '-'*(len(i)-2), i[-1]) for i in words_seen], 'and'),
plural and 'are' or 'is')
raise ValidationError, ngettext("Watch your mouth! The word %s is not allowed here.",
"Watch your mouth! The words %s are not allowed here.", plural) % \
get_text_list(['"%s%s%s"' % (i[0], '-'*(len(i)-2), i[-1]) for i in words_seen], 'and')
class AlwaysMatchesOtherField:
def __init__(self, other_field_name, error_message=None):
self.other = other_field_name
self.error_message = error_message or "This field must match the '%s' field." % self.other
self.error_message = error_message or gettext_lazy("This field must match the '%s' field.") % self.other
self.always_test = True
def __call__(self, field_data, all_data):
@ -249,7 +249,7 @@ class ValidateIfOtherFieldEquals:
v(field_data, all_data)
class RequiredIfOtherFieldNotGiven:
def __init__(self, other_field_name, error_message="Please enter something for at least one field."):
def __init__(self, other_field_name, error_message=gettext_lazy("Please enter something for at least one field.")):
self.other, self.error_message = other_field_name, error_message
self.always_test = True
@ -258,7 +258,7 @@ class RequiredIfOtherFieldNotGiven:
raise ValidationError, self.error_message
class RequiredIfOtherFieldsGiven:
def __init__(self, other_field_names, error_message="Please enter both fields or leave them both empty."):
def __init__(self, other_field_names, error_message=gettext_lazy("Please enter both fields or leave them both empty.")):
self.other, self.error_message = other_field_names, error_message
self.always_test = True
@ -269,14 +269,15 @@ class RequiredIfOtherFieldsGiven:
class RequiredIfOtherFieldGiven(RequiredIfOtherFieldsGiven):
"Like RequiredIfOtherFieldsGiven, but takes a single field name instead of a list."
def __init__(self, other_field_name, error_message="Please enter both fields or leave them both empty."):
def __init__(self, other_field_name, error_message=gettext_lazy("Please enter both fields or leave them both empty.")):
RequiredIfOtherFieldsGiven.__init__(self, [other_field_name], error_message)
class RequiredIfOtherFieldEquals:
def __init__(self, other_field, other_value, error_message=None):
self.other_field = other_field
self.other_value = other_value
self.error_message = error_message or "This field must be given if %s is %s" % (other_field, other_value)
self.error_message = error_message or gettext_lazy("This field must be given if %(field)s is %(value)s") % {
'field': other_field, 'value': other_value}
self.always_test = True
def __call__(self, field_data, all_data):
@ -287,7 +288,8 @@ class RequiredIfOtherFieldDoesNotEqual:
def __init__(self, other_field, other_value, error_message=None):
self.other_field = other_field
self.other_value = other_value
self.error_message = error_message or "This field must be given if %s is not %s" % (other_field, other_value)
self.error_message = error_message or gettext_lazy("This field must be given if %(field)s is not %(value)s") % {
'field': other_field, 'value': other_value}
self.always_test = True
def __call__(self, field_data, all_data):
@ -305,7 +307,7 @@ class IsLessThanOtherField:
class UniqueAmongstFieldsWithPrefix:
def __init__(self, field_name, prefix, error_message):
self.field_name, self.prefix = field_name, prefix
self.error_message = error_message or "Duplicate values are not allowed."
self.error_message = error_message or gettext_lazy("Duplicate values are not allowed.")
def __call__(self, field_data, all_data):
for field_name, value in all_data.items():
@ -328,7 +330,7 @@ class IsAPowerOf:
from math import log
val = log(int(field_data)) / log(self.power_of)
if val != int(val):
raise ValidationError, "This value must be a power of %s." % self.power_of
raise ValidationError, _("This value must be a power of %s.") % self.power_of
class IsValidFloat:
def __init__(self, max_digits, decimal_places):
@ -339,13 +341,13 @@ class IsValidFloat:
try:
float(data)
except ValueError:
raise ValidationError, "Please enter a valid decimal number."
raise ValidationError, _("Please enter a valid decimal number.")
if len(data) > (self.max_digits + 1):
raise ValidationError, "Please enter a valid decimal number with at most %s total digit%s." % \
(self.max_digits, self.max_digits > 1 and 's' or '')
raise ValidationError, ngettext( "Please enter a valid decimal number with at most %s total digit.",
"Please enter a valid decimal number with at most %s total digits.", self.max_digits) % self.max_digits
if '.' in data and len(data.split('.')[1]) > self.decimal_places:
raise ValidationError, "Please enter a valid decimal number with at most %s decimal place%s." % \
(self.decimal_places, self.decimal_places > 1 and 's' or '')
raise ValidationError, ngettext("Please enter a valid decimal number with at most %s decimal place.",
"Please enter a valid decimal number with at most %s decimal places.", self.decimal_places) % self.decimal_places
class HasAllowableSize:
"""
@ -354,8 +356,8 @@ class HasAllowableSize:
"""
def __init__(self, min_size=None, max_size=None, min_error_message=None, max_error_message=None):
self.min_size, self.max_size = min_size, max_size
self.min_error_message = min_error_message or "Make sure your uploaded file is at least %s bytes big." % min_size
self.max_error_message = max_error_message or "Make sure your uploaded file is at most %s bytes big." % min_size
self.min_error_message = min_error_message or gettext_lazy("Make sure your uploaded file is at least %s bytes big.") % min_size
self.max_error_message = max_error_message or gettext_lazy("Make sure your uploaded file is at most %s bytes big.") % min_size
def __call__(self, field_data, all_data):
if self.min_size is not None and len(field_data['content']) < self.min_size:
@ -368,7 +370,7 @@ class MatchesRegularExpression:
Checks that the field matches the given regular-expression. The regex
should be in string format, not already compiled.
"""
def __init__(self, regexp, error_message="The format for this field is wrong."):
def __init__(self, regexp, error_message=gettext_lazy("The format for this field is wrong.")):
self.regexp = re.compile(regexp)
self.error_message = error_message
@ -383,7 +385,7 @@ class AnyValidator:
as a validation error. The message is rather unspecific, so it's best to
specify one on instantiation.
"""
def __init__(self, validator_list=[], error_message="This field is invalid."):
def __init__(self, validator_list=[], error_message=gettext_lazy("This field is invalid.")):
self.validator_list = validator_list
self.error_message = error_message
for v in validator_list:
@ -418,10 +420,11 @@ class URLMimeTypeCheck:
try:
info = urllib2.urlopen(field_data).info()
except (urllib2.HTTPError, urllib2.URLError):
raise URLMimeTypeCheck.CouldNotRetrieve, "Could not retrieve anything from %s." % field_data
raise URLMimeTypeCheck.CouldNotRetrieve, _("Could not retrieve anything from %s.") % field_data
content_type = info['content-type']
if content_type not in self.mime_type_list:
raise URLMimeTypeCheck.InvalidContentType, "The URL %s returned the invalid Content-Type header '%s'." % (field_data, content_type)
raise URLMimeTypeCheck.InvalidContentType, _("The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'.") % {
'url': field_data, 'contenttype': content_type}
class RelaxNGCompact:
"Validate against a Relax NG compact schema"
@ -453,31 +456,31 @@ class RelaxNGCompact:
# Scrape the Jing error messages to reword them more nicely.
m = re.search(r'Expected "(.*?)" to terminate element starting on line (\d+)', message)
if m:
display_errors.append('Please close the unclosed %s tag from line %s. (Line starts with "%s".)' % \
(m.group(1).replace('/', ''), m.group(2), lines[int(m.group(2)) - 1][:30]))
display_errors.append(_('Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "%(start)s".)') % \
{'tag':m.group(1).replace('/', ''), 'line':m.group(2), 'start':lines[int(m.group(2)) - 1][:30]})
continue
if message.strip() == 'text not allowed here':
display_errors.append('Some text starting on line %s is not allowed in that context. (Line starts with "%s".)' % \
(line, lines[int(line) - 1][:30]))
display_errors.append(_('Some text starting on line %(line)s is not allowed in that context. (Line starts with "%(start)s".)') % \
{'line':line, 'start':lines[int(line) - 1][:30]})
continue
m = re.search(r'\s*attribute "(.*?)" not allowed at this point; ignored', message)
if m:
display_errors.append('"%s" on line %s is an invalid attribute. (Line starts with "%s".)' % \
(m.group(1), line, lines[int(line) - 1][:30]))
display_errors.append(_('"%(attr)s" on line %(line)s is an invalid attribute. (Line starts with "%(start)s".)') % \
{'attr':m.group(1), 'line':line, 'start':lines[int(line) - 1][:30]})
continue
m = re.search(r'\s*unknown element "(.*?)"', message)
if m:
display_errors.append('"<%s>" on line %s is an invalid tag. (Line starts with "%s".)' % \
(m.group(1), line, lines[int(line) - 1][:30]))
display_errors.append(_('"<%(tag)s>" on line %(line)s is an invalid tag. (Line starts with "%(start)s".)') % \
{'tag':m.group(1), 'line':line, 'start':lines[int(line) - 1][:30]})
continue
if message.strip() == 'required attributes missing':
display_errors.append('A tag on line %s is missing one or more required attributes. (Line starts with "%s".)' % \
(line, lines[int(line) - 1][:30]))
display_errors.append(_('A tag on line %(line)s is missing one or more required attributes. (Line starts with "%(start)s".)') % \
{'line':line, 'start':lines[int(line) - 1][:30]})
continue
m = re.search(r'\s*bad value for attribute "(.*?)"', message)
if m:
display_errors.append('The "%s" attribute on line %s has an invalid value. (Line starts with "%s".)' % \
(m.group(1), line, lines[int(line) - 1][:30]))
display_errors.append(_('The "%(attr)s" attribute on line %(line)s has an invalid value. (Line starts with "%(start)s".)') % \
{'attr':m.group(1), 'line':line, 'start':lines[int(line) - 1][:30]})
continue
# Failing all those checks, use the default error message.
display_error = 'Line %s: %s [%s]' % (line, message, level.strip())

View File

@ -0,0 +1,24 @@
"this is the locale selecting middleware that will look at accept headers"
from django.utils.cache import patch_vary_headers
from django.utils import translation
class LocaleMiddleware:
"""
This is a very simple middleware that parses a request
and decides what translation object to install in the current
thread context. This allows pages to be dynamically
translated to the language the user desires (if the language
is available, of course).
"""
def process_request(self, request):
language = translation.get_language_from_request(request)
translation.activate(language)
request.LANGUAGE_CODE = translation.get_language()
def process_response(self, request, response):
patch_vary_headers(response, ('Accept-Language',))
translation.deactivate()
return response

View File

@ -1,11 +1,14 @@
from django.core import meta, validators
from django.models import core
from django.utils.translation import gettext_lazy as _
class Permission(meta.Model):
name = meta.CharField(maxlength=50)
name = meta.CharField(_('name'), maxlength=50)
package = meta.ForeignKey(core.Package, db_column='package')
codename = meta.CharField(maxlength=100)
codename = meta.CharField(_('codename'), maxlength=100)
class META:
verbose_name = _('Permission')
verbose_name_plural = _('Permissions')
unique_together = (('package', 'codename'),)
ordering = ('package', 'codename')
@ -13,9 +16,11 @@ class Permission(meta.Model):
return "%s | %s" % (self.package, self.name)
class Group(meta.Model):
name = meta.CharField(maxlength=80, unique=True)
name = meta.CharField(_('name'), maxlength=80, unique=True)
permissions = meta.ManyToManyField(Permission, blank=True, filter_interface=meta.HORIZONTAL)
class META:
verbose_name = _('Group')
verbose_name_plural = _('Groups')
ordering = ('name',)
admin = meta.Admin(
search_fields = ('name',),
@ -25,20 +30,22 @@ class Group(meta.Model):
return self.name
class User(meta.Model):
username = meta.CharField(maxlength=30, unique=True, validator_list=[validators.isAlphaNumeric])
first_name = meta.CharField(maxlength=30, blank=True)
last_name = meta.CharField(maxlength=30, blank=True)
email = meta.EmailField('e-mail address', blank=True)
password_md5 = meta.CharField('password', maxlength=32, help_text="Use an MD5 hash -- not the raw password.")
is_staff = meta.BooleanField('staff status', help_text="Designates whether the user can log into this admin site.")
is_active = meta.BooleanField('active', default=True)
is_superuser = meta.BooleanField('superuser status')
last_login = meta.DateTimeField(default=meta.LazyDate())
date_joined = meta.DateTimeField(default=meta.LazyDate())
username = meta.CharField(_('username'), maxlength=30, unique=True, validator_list=[validators.isAlphaNumeric])
first_name = meta.CharField(_('first name'), maxlength=30, blank=True)
last_name = meta.CharField(_('last name'), maxlength=30, blank=True)
email = meta.EmailField(_('e-mail address'), blank=True)
password_md5 = meta.CharField(_('password'), maxlength=32, help_text=_("Use an MD5 hash -- not the raw password."))
is_staff = meta.BooleanField(_('staff status'), help_text=_("Designates whether the user can log into this admin site."))
is_active = meta.BooleanField(_('active'), default=True)
is_superuser = meta.BooleanField(_('superuser status'))
last_login = meta.DateTimeField(_('last login'), default=meta.LazyDate())
date_joined = meta.DateTimeField(_('date joined'), default=meta.LazyDate())
groups = meta.ManyToManyField(Group, blank=True,
help_text="In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in.")
help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."))
user_permissions = meta.ManyToManyField(Permission, blank=True, filter_interface=meta.HORIZONTAL)
class META:
verbose_name = _('User')
verbose_name_plural = _('Users')
module_constants = {
'SESSION_KEY': '_auth_user_id',
}
@ -47,10 +54,10 @@ class User(meta.Model):
admin = meta.Admin(
fields = (
(None, {'fields': ('username', 'password_md5')}),
('Personal info', {'fields': ('first_name', 'last_name', 'email')}),
('Permissions', {'fields': ('is_staff', 'is_active', 'is_superuser', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
('Groups', {'fields': ('groups',)}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
(_('Permissions'), {'fields': ('is_staff', 'is_active', 'is_superuser', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
(_('Groups'), {'fields': ('groups',)}),
),
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff'),
list_filter = ('is_staff', 'is_superuser'),
@ -172,7 +179,7 @@ class User(meta.Model):
class Message(meta.Model):
user = meta.ForeignKey(User)
message = meta.TextField()
message = meta.TextField(_('Message'))
def __repr__(self):
return self.message

View File

@ -1,9 +1,12 @@
from django.core import meta, validators
from django.utils.translation import gettext_lazy as _
class Site(meta.Model):
domain = meta.CharField('domain name', maxlength=100)
name = meta.CharField('display name', maxlength=50)
domain = meta.CharField(_('domain name'), maxlength=100)
name = meta.CharField(_('display name'), maxlength=50)
class META:
verbose_name = _('site')
verbose_name_plural = _('sites')
db_table = 'sites'
ordering = ('domain',)
@ -16,9 +19,11 @@ class Site(meta.Model):
return get_object(pk=SITE_ID)
class Package(meta.Model):
label = meta.CharField(maxlength=20, primary_key=True)
name = meta.CharField(maxlength=30, unique=True)
label = meta.CharField(_('label'), maxlength=20, primary_key=True)
name = meta.CharField(_('name'), maxlength=30, unique=True)
class META:
verbose_name = _('package')
verbose_name_plural = _('packages')
db_table = 'packages'
ordering = ('name',)
@ -26,10 +31,12 @@ class Package(meta.Model):
return self.name
class ContentType(meta.Model):
name = meta.CharField(maxlength=100)
name = meta.CharField(_('name'), maxlength=100)
package = meta.ForeignKey(Package, db_column='package')
python_module_name = meta.CharField(maxlength=50)
python_module_name = meta.CharField(_('python module name'), maxlength=50)
class META:
verbose_name = _('content type')
verbose_name_plural = _('content types')
db_table = 'content_types'
ordering = ('package', 'name')
unique_together = (('package', 'python_module_name'),)
@ -52,11 +59,13 @@ class ContentType(meta.Model):
class Redirect(meta.Model):
site = meta.ForeignKey(Site, radio_admin=meta.VERTICAL)
old_path = meta.CharField('redirect from', maxlength=200, db_index=True,
help_text="This should be an absolute path, excluding the domain name. Example: '/events/search/'.")
new_path = meta.CharField('redirect to', maxlength=200, blank=True,
help_text="This can be either an absolute path (as above) or a full URL starting with 'http://'.")
old_path = meta.CharField(_('redirect from'), maxlength=200, db_index=True,
help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
new_path = meta.CharField(_('redirect to'), maxlength=200, blank=True,
help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
class META:
verbose_name = _('redirect')
verbose_name_plural = _('redirects')
db_table = 'redirects'
unique_together=(('site', 'old_path'),)
ordering = ('old_path',)
@ -69,18 +78,19 @@ class Redirect(meta.Model):
return "%s ---> %s" % (self.old_path, self.new_path)
class FlatFile(meta.Model):
url = meta.CharField('URL', maxlength=100, validator_list=[validators.isAlphaNumericURL],
help_text="Example: '/about/contact/'. Make sure to have leading and trailing slashes.")
title = meta.CharField(maxlength=200)
content = meta.TextField()
enable_comments = meta.BooleanField()
template_name = meta.CharField(maxlength=70, blank=True,
help_text="Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'.")
registration_required = meta.BooleanField(help_text="If this is checked, only logged-in users will be able to view the page.")
url = meta.CharField(_('URL'), maxlength=100, validator_list=[validators.isAlphaNumericURL],
help_text=_("Example: '/about/contact/'. Make sure to have leading and trailing slashes."))
title = meta.CharField(_('title'), maxlength=200)
content = meta.TextField(_('content'))
enable_comments = meta.BooleanField(_('enable comments'))
template_name = meta.CharField(_('template name'), maxlength=70, blank=True,
help_text=_("Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'."))
registration_required = meta.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
sites = meta.ManyToManyField(Site)
class META:
db_table = 'flatfiles'
verbose_name = 'flat page'
verbose_name = _('flat page')
verbose_name_plural = _('flat pages')
ordering = ('url',)
admin = meta.Admin(
fields = (
@ -101,10 +111,12 @@ import base64, md5, random, sys
import cPickle as pickle
class Session(meta.Model):
session_key = meta.CharField(maxlength=40, primary_key=True)
session_data = meta.TextField()
expire_date = meta.DateTimeField()
session_key = meta.CharField(_('session key'), maxlength=40, primary_key=True)
session_data = meta.TextField(_('session data'))
expire_date = meta.DateTimeField(_('expire date'))
class META:
verbose_name = _('session')
verbose_name_plural = _('sessions')
module_constants = {
'base64': base64,
'md5': md5,

217
django/templatetags/i18n.py Normal file
View File

@ -0,0 +1,217 @@
"Default tags used by the template system, available to all templates."
from django.core.template import Node, NodeList, Template, Context, resolve_variable, resolve_variable_with_filters, registered_filters
from django.core.template import TemplateSyntaxError, register_tag, TokenParser
from django.core.template import TOKEN_BLOCK, TOKEN_TEXT, TOKEN_VAR
from django.utils import translation
import sys
import re
class GetAvailableLanguagesNode(Node):
def __init__(self, variable):
self.variable = variable
def render(self, context):
from django.conf.settings import LANGUAGES
context[self.variable] = LANGUAGES
return ''
class GetCurrentLanguageNode(Node):
def __init__(self, variable):
self.variable = variable
def render(self, context):
context[self.variable] = translation.get_language()
return ''
class TranslateNode(Node):
def __init__(self, value, noop):
self.value = value
self.noop = noop
def render(self, context):
value = resolve_variable(self.value, context)
if self.noop:
return value
else:
return translation.gettext(value)
class BlockTranslateNode(Node):
def __init__(self, extra_context, singular, plural=None, countervar=None, counter=None):
self.extra_context = extra_context
self.singular = singular
self.plural = plural
self.countervar = countervar
self.counter = counter
def render_token_list(self, tokens):
result = []
for token in tokens:
if token.token_type == TOKEN_TEXT:
result.append(token.contents)
elif token.token_type == TOKEN_VAR:
result.append('%%(%s)s' % token.contents)
return ''.join(result)
def render(self, context):
context.push()
for var,val in self.extra_context.items():
context[var] = resolve_variable_with_filters(val, context)
singular = self.render_token_list(self.singular) % context
if self.plural and self.countervar and self.counter:
count = resolve_variable_with_filters(self.counter, context)
context[self.countervar] = count
plural = self.render_token_list(self.plural) % context
result = translation.ngettext(singular, plural, count) % context
else:
result = translation.gettext(singular) % context
context.pop()
return result
def do_get_available_languages(parser, token):
"""
This will store a list of available languages
in the context.
Usage is as follows::
{% get_available_languages as languages %}
{% for language in languages %}
...
{% endfor %}
This will just pull the LANGUAGES setting from
your setting file (or the default settings) and
put it into the named variable.
"""
args = token.contents.split()
if len(args) != 3 or args[1] != 'as':
raise TemplateSyntaxError, "'get_available_languages' requires 'as variable' (got %r)" % args
return GetAvailableLanguagesNode(args[2])
def do_get_current_language(parser, token):
"""
This will store the current language in
the context.
Usage is as follows::
{% get_current_language as language %}
This will fetch the currently active language and
put it's value into the ``language`` context
variable.
"""
args = token.contents.split()
if len(args) != 3 or args[1] != 'as':
raise TemplateSyntaxError, "'get_available_languages' requires 'as variable' (got %r)" % args
return GetCurrentLanguageNode(args[2])
def do_translate(parser, token):
"""
This will mark a string for translation and will
translate the string for the current language.
Usage is like this::
{% trans "this is a test" %}
This will mark the string for translation so it will
be pulled out by mark-messages.py into the .po files
and will run the string through the translation engine.
There is a second form::
{% trans "this is a test" noop %}
This will only mark for translation, but will return
the string unchanged. Use it when you need to store
values into forms that should be translated later on.
You can use variables instead of constant strings
to translate stuff you marked somewhere else::
{% trans variable %}
This will just try to translate the contents of
the variable ``variable``. Make sure that the string
in there is something that is in the .po file.
"""
class TranslateParser(TokenParser):
def top(self):
value = self.value()
if self.more():
if self.tag() == 'noop':
noop = True
else:
raise TemplateSyntaxError, "only option for 'trans' is 'noop'"
else:
noop = False
return (value, noop)
(value, noop) = TranslateParser(token.contents).top()
return TranslateNode(value, noop)
def do_block_translate(parser, token):
"""
"""
class BlockTranslateParser(TokenParser):
def top(self):
countervar = None
counter = None
extra_context = {}
while self.more():
tag = self.tag()
if tag == 'with' or tag == 'and':
value = self.value()
if self.tag() != 'as':
raise TemplateSyntaxError, "variable bindings in 'blocktrans' must be 'with value as variable'"
extra_context[self.tag()] = value
elif tag == 'count':
counter = self.value()
if self.tag() != 'as':
raise TemplateSyntaxError, "counter specification in 'blocktrans' must be 'count value as variable'"
countervar = self.tag()
else:
raise TemplateSyntaxError, "unknown subtag %s for 'blocktrans' found" % tag
return (countervar, counter, extra_context)
(countervar, counter, extra_context) = BlockTranslateParser(token.contents).top()
singular = []
plural = []
while parser.tokens:
token = parser.next_token()
if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
singular.append(token)
else:
break
if countervar and counter:
if token.contents.strip() != 'plural':
raise TemplateSyntaxError, "'blocktrans' doesn't allow other block tags inside it" % tag
while parser.tokens:
token = parser.next_token()
if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
plural.append(token)
else:
break
if token.contents.strip() != 'endblocktrans':
raise TemplateSyntaxError, "'blocktrans' doesn't allow other block tags (seen %r) inside it" % token.contents
return BlockTranslateNode(extra_context, singular, plural, countervar, counter)
register_tag('get_available_languages', do_get_available_languages)
register_tag('get_current_language', do_get_current_language)
register_tag('trans', do_translate)
register_tag('blocktrans', do_block_translate)

View File

@ -1,17 +1,19 @@
"Commonly-used date structures"
from django.utils.translation import gettext_lazy as _
WEEKDAYS = {
0:'Monday', 1:'Tuesday', 2:'Wednesday', 3:'Thursday', 4:'Friday',
5:'Saturday', 6:'Sunday'
0:_('Monday'), 1:_('Tuesday'), 2:_('Wednesday'), 3:_('Thursday'), 4:_('Friday'),
5:_('Saturday'), 6:_('Sunday')
}
WEEKDAYS_REV = {
'monday':0, 'tuesday':1, 'wednesday':2, 'thursday':3, 'friday':4,
'saturday':5, 'sunday':6
}
MONTHS = {
1:'January', 2:'February', 3:'March', 4:'April', 5:'May', 6:'June',
7:'July', 8:'August', 9:'September', 10:'October', 11:'November',
12:'December'
1:_('January'), 2:_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'),
7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'),
12:_('December')
}
MONTHS_3 = {
1:'jan', 2:'feb', 3:'mar', 4:'apr', 5:'may', 6:'jun', 7:'jul', 8:'aug',
@ -22,6 +24,6 @@ MONTHS_3_REV = {
'sep':9, 'oct':10, 'nov':11, 'dec':12
}
MONTHS_AP = { # month names in Associated Press style
1:'Jan.', 2:'Feb.', 3:'March', 4:'April', 5:'May', 6:'June', 7:'July',
8:'Aug.', 9:'Sept.', 10:'Oct.', 11:'Nov.', 12:'Dec.'
1:_('Jan.'), 2:_('Feb.'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'), 7:_('July'),
8:_('Aug.'), 9:_('Sept.'), 10:_('Oct.'), 11:_('Nov.'), 12:_('Dec.')
}

View File

@ -2,3 +2,64 @@ def curry(*args, **kwargs):
def _curried(*moreargs, **morekwargs):
return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items()))
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.
"""
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.
"""
def __init__(self, args, kw):
self.__func = func
self.__args = args
self.__kw = kw
self.__dispatch = {}
for resultclass in resultclasses:
self.__dispatch[resultclass] = {}
for (k, v) in resultclass.__dict__.items():
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.
"""
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.
"""
res = self.__func(*self.__args, **self.__kw)
return self.__dispatch[type(res)][funcname](res, *args, **kw)
if not self.__dispatch.has_key(klass):
self.__dispatch[klass] = {}
self.__dispatch[klass][funcname] = func
return __wrapper__
def __wrapper__(*args, **kw):
"""
This wrapper function just creates the proxy object that is returned
instead of the actual value.
"""
return __proxy__(args, kw)
return __wrapper__

View File

@ -55,7 +55,7 @@ def get_text_list(list_, last_word='or'):
"""
if len(list_) == 0: return ''
if len(list_) == 1: return list_[0]
return '%s %s %s' % (', '.join([i for i in list_][:-1]), last_word, list_[-1])
return '%s %s %s' % (', '.join([str(i) for i in list_][:-1]), last_word, list_[-1])
def normalize_newlines(text):
return re.sub(r'\r\n|\r|\n', '\n', text)

447
django/utils/translation.py Normal file
View File

@ -0,0 +1,447 @@
"translation helper functions"
import os
import re
import sys
import gettext as gettext_module
from cStringIO import StringIO
from django.utils.functional import lazy
try:
import threading
hasThreads = True
except ImportError:
hasThreads = False
if hasThreads:
currentThread = threading.currentThread
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 = {}
_active = {}
# 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
_accepted = {}
def to_locale(language):
"turn 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()
else:
return language.lower()
def to_language(locale):
"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()
else:
return locale.lower()
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.
"""
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
# the output charset. Before 2.4, the output charset is
# identical with the translation file charset.
try:
self.set_output_charset(settings.DEFAULT_CHARSET)
except AttributeError:
pass
self.django_output_charset = settings.DEFAULT_CHARSET
self.__language = '??'
def merge(self, other):
self._catalog.update(other._catalog)
def set_language(self, language):
self.__language = language
def language(self):
return self.__language
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.
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)
def ngettext(self, msgid1, msgid2, n):
res = self.ungettext(msgid1, msgid2, n)
return res.encode(self.django_output_charset)
def translation(language):
"""
This function returns a translation object. app must be the fully
qualified name of the application.
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.
"""
global _translations
t = _translations.get(language, None)
if t is not None:
return t
from django.conf import settings
# set up the right translation class
klass = DjangoTranslation
if sys.version_info < (2, 4):
klass = DjangoTranslation23
globalpath = os.path.join(os.path.dirname(settings.__file__), 'locale')
parts = os.environ['DJANGO_SETTINGS_MODULE'].split('.')
project = __import__(parts[0], {}, {}, [])
projectpath = os.path.join(os.path.dirname(project.__file__), 'locale')
def _fetch(lang, fallback=None):
global _translations
loc = to_locale(lang)
res = _translations.get(lang, None)
if res is not None:
return res
def _translation(path):
try:
t = gettext_module.translation('django', path, [loc], klass)
t.set_language(lang)
return t
except IOError, e:
return None
res = _translation(globalpath)
def _merge(path):
t = _translation(path)
if t is not None:
if res is None:
return t
else:
res.merge(t)
return res
if hasattr(settings, 'LOCALE_PATHS'):
for localepath in settings.LOCALE_PATHS:
if os.path.isdir(localepath):
res = _merge(localepath)
if os.path.isdir(projectpath):
res = _merge(projectpath)
for appname in settings.INSTALLED_APPS:
p = appname.rfind('.')
if p >= 0:
app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:])
else:
app = __import__(appname, {}, {}, [])
apppath = os.path.join(os.path.dirname(app.__file__), 'locale')
if os.path.isdir(apppath):
res = _merge(apppath)
if res is None:
if fallback is not None:
res = fallback
else:
return gettext_module.NullTranslations()
_translations[lang] = res
return res
default_translation = _fetch(settings.LANGUAGE_CODE)
current_translation = _fetch(language, fallback=default_translation)
return current_translation
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.
"""
_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.
"""
global _active
if _active.has_key(currentThread()):
del _active[currentThread()]
def get_language():
"""
This function 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.
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.
"""
global _default, _active
t = _active.get(currentThread(), None)
if t is not None:
return t.gettext(message)
if _default is None:
from django.conf import settings
_default = translation(settings.LANGUAGE_CODE)
return _default.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.
"""
return message
def ngettext(singular, plural, number):
"""
This function returns the translation of either the singular
or plural, based on the number.
"""
global _default, _active
t = _active.get(currentThread(), None)
if t is not None:
return t.ngettext(singular, plural, number)
if _default is None:
from django.conf import settings
_default = translation('*', settings.LANGUAGE_CODE)
return _default.ngettext(singular, plural, number)
gettext_lazy = lazy(gettext, str)
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.
"""
from django.conf import settings
globalpath = os.path.join(os.path.dirname(settings.__file__), 'locale')
if gettext_module.find('django', globalpath, [to_locale(lang_code)]) is not None:
return True
else:
return False
def get_language_from_request(request):
"""
analyze 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')
if hasattr(request, 'session'):
lang_code = request.session.get('django_language', None)
if lang_code is not None and check_for_language(lang_code):
return lang_code
lang_code = request.COOKIES.get('django_language', None)
if lang_code is not None and check_for_language(lang_code):
return lang_code
accept = request.META.get('HTTP_ACCEPT_LANGUAGE', None)
if accept is not None:
t = _accepted.get(accept, None)
if t is not None:
return t
def _parsed(el):
p = el.find(';q=')
if p >= 0:
lang = el[:p].strip()
order = int(float(el[p+3:].strip())*100)
else:
lang = el
order = 100
if lang.find('-') >= 0:
(lang, sublang) = lang.split('-')
lang = lang.lower() + '_' + sublang.upper()
return (lang, order)
langs = [_parsed(el) for el in accept.split(',')]
langs.sort(lambda a,b: -1*cmp(a[1], b[1]))
for lang, order in langs:
langfile = gettext_module.find('django', globalpath, [to_locale(lang)])
if langfile:
# reconstruct the actual language from the language
# 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]
_accepted[accept] = lang
return lang
return settings.LANGUAGE_CODE
def install():
"""
This 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.
"""
return dot_re.sub(char, src)
inline_re = re.compile(r"""^\s*trans\s+((?:".*?")|(?:'.*?'))\s*""")
block_re = re.compile(r"""^\s*blocktrans(?:\s+|$)""")
endblock_re = re.compile(r"""^\s*endblocktrans$""")
plural_re = re.compile(r"""^\s*plural$""")
constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
def templateize(src):
from django.core.template import tokenize, 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.
"""
out = StringIO()
intrans = False
inplural = False
singular = []
plural = []
for t in tokenize(src):
if intrans:
if t.token_type == TOKEN_BLOCK:
endbmatch = endblock_re.match(t.contents)
pluralmatch = plural_re.match(t.contents)
if endbmatch:
if inplural:
out.write(' ngettext(%r,%r,count) ' % (''.join(singular), ''.join(plural)))
for part in singular:
out.write(blankout(part, 'S'))
for part in plural:
out.write(blankout(part, 'P'))
else:
out.write(' gettext(%r) ' % ''.join(singular))
for part in singular:
out.write(blankout(part, 'S'))
intrans = False
inplural = False
singular = []
plural = []
elif pluralmatch:
inplural = True
else:
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)
else:
singular.append('%%(%s)s' % t.contents)
elif t.token_type == TOKEN_TEXT:
if inplural:
plural.append(t.contents)
else:
singular.append(t.contents)
else:
if t.token_type == TOKEN_BLOCK:
imatch = inline_re.match(t.contents)
bmatch = block_re.match(t.contents)
cmatches = constant_re.findall(t.contents)
if imatch:
g = imatch.group(1)
if g[0] == '"': g = g.strip('"')
elif g[0] == "'": g = g.strip("'")
out.write(' gettext(%r) ' % g)
elif bmatch:
intrans = True
inplural = False
singular = []
plural = []
elif cmatches:
for cmatch in cmatches:
out.write(' _(%s) ' % cmatch)
else:
out.write(blankout(t.contents, 'B'))
elif t.token_type == TOKEN_VAR:
parts = t.contents.split('|')
cmatch = constant_re.match(parts[0])
if cmatch:
out.write(' _(%s) ' % cmatch.group(1))
for p in parts[1:]:
if p.find(':_(') >= 0:
out.write(' %s ' % p.split(':',1)[1])
else:
out.write(blankout(p, 'F'))
else:
out.write(blankout(t.contents, 'X'))
return out.getvalue()

22
django/views/i18n.py Normal file
View File

@ -0,0 +1,22 @@
from django.utils import httpwrappers
from django.utils.translation import check_for_language
def set_language(request):
"""
Redirect to a given url while setting the chosen language in the
session or cookie. The url and the language code need to be
specified in the GET paramters.
"""
lang_code = request.GET['language']
next = request.GET.get('next', None)
if not next:
next = request.META.get('HTTP_REFERER', None)
if not next:
next = '/'
response = httpwrappers.HttpResponseRedirect(next)
if check_for_language(lang_code):
if hasattr(request, 'session'):
request.session['django_language'] = lang_code
else:
response.set_cookie('django_language', lang_code)
return response

View File

@ -355,9 +355,12 @@ See http://www.thaiopensource.com/relaxng/jing.html .
LANGUAGE_CODE
-------------
Default: ``'en-us'``
Default: ``'en'``
A string representing the language code for this installation.
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.
MANAGERS
--------

438
docs/translation.txt Normal file
View File

@ -0,0 +1,438 @@
======================
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

@ -1,5 +1,6 @@
from django.core import template
from django.core.template import loader
from django.utils.translation import activate, deactivate
# Helper objects for template tests
class SomeClass:
@ -215,6 +216,45 @@ TEMPLATE_TESTS = {
# Raise exception for custom tags used in child with {% load %} tag in parent, not in child
'exception04': ("{% extends 'inheritance17' %}{% block first %}{% echo 400 %}5678{% endblock %}", {}, template.TemplateSyntaxError),
# simple translation of a string delimited by '
'i18n01': ("{% load i18n %}{% trans 'xxxyyyxxx' %}", {}, "xxxyyyxxx"),
# simple translation of a string delimited by "
'i18n02': ('{% load i18n %}{% trans "xxxyyyxxx" %}', {}, "xxxyyyxxx"),
# simple translation of a variable
'i18n03': ('{% load i18n %}{% blocktrans %}{{ anton }}{% endblocktrans %}', {'anton': 'xxxyyyxxx'}, "xxxyyyxxx"),
# simple translation of a variable and filter
'i18n04': ('{% load i18n %}{% blocktrans with anton|lower as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'XXXYYYXXX'}, "xxxyyyxxx"),
# simple translation of a string with interpolation
'i18n05': ('{% load i18n %}{% blocktrans %}xxx{{ anton }}xxx{% endblocktrans %}', {'anton': 'yyy'}, "xxxyyyxxx"),
# simple translation of a string to german
'i18n06': ('{% load i18n %}{% trans "Page not found" %}', {'LANGUAGE_CODE': 'de'}, "Seite nicht gefunden"),
# translation of singular form
'i18n07': ('{% load i18n %}{% blocktrans count number as counter %}singular{% plural %}plural{% endblocktrans %}', {'number': 1}, "singular"),
# translation of plural form
'i18n08': ('{% load i18n %}{% blocktrans count number as counter %}singular{% plural %}plural{% endblocktrans %}', {'number': 2}, "plural"),
# simple non-translation (only marking) of a string to german
'i18n09': ('{% load i18n %}{% trans "Page not found" noop %}', {'LANGUAGE_CODE': 'de'}, "Page not found"),
# translation of a variable with a translated filter
'i18n10': ('{{ bool|yesno:_("ja,nein") }}', {'bool': True}, 'ja'),
# translation of a variable with a non-translated filter
'i18n11': ('{{ bool|yesno:"ja,nein" }}', {'bool': True}, 'ja'),
# usage of the get_available_languages tag
'i18n12': ('{% load i18n %}{% get_available_languages as langs %}{% for lang in langs %}{% ifequal lang.0 "de" %}{{ lang.0 }}{% endifequal %}{% endfor %}', {}, 'de'),
# translation of a constant string
'i18n13': ('{{ _("Page not found") }}', {'LANGUAGE_CODE': 'de'}, 'Seite nicht gefunden'),
}
def test_template_loader(template_name, template_dirs=None):
@ -233,6 +273,8 @@ def run_tests(verbosity=0, standalone=False):
tests = TEMPLATE_TESTS.items()
tests.sort()
for name, vals in tests:
if 'LANGUAGE_CODE' in vals[1]:
activate(vals[1]['LANGUAGE_CODE'])
try:
output = loader.get_template(name).render(template.Context(vals[1]))
except Exception, e:
@ -244,6 +286,8 @@ def run_tests(verbosity=0, standalone=False):
print "Template test: %s -- FAILED. Got %s, exception: %s" % (name, e.__class__, e)
failed_tests.append(name)
continue
if 'LANGUAGE_CODE' in vals[1]:
deactivate()
if output == vals[2]:
if verbosity:
print "Template test: %s -- Passed" % name