# translation of djangojs.po to catalan
# This file is distributed under the same license as the Django package.
msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-06-04 21:59+0200\n"
"PO-Revision-Date: 2008-03-25 18:54+0100\n"
"Last-Translator: Django Catalan Group <django-cat@googlegroups.com>\n"
"Language-Team: Catalan <ca@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: VIM 7.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: .\contrib\admin\media\js\SelectFilter2.js.py:37
#, perl-format
msgid "Available %s"
msgstr "%s Disponibles"

#: .\contrib\admin\media\js\SelectFilter2.js.py:45
msgid "Choose all"
msgstr "Seleccionar tots"

#: .\contrib\admin\media\js\SelectFilter2.js.py:50
msgid "Add"
msgstr "Afegir"

#: .\contrib\admin\media\js\SelectFilter2.js.py:52
msgid "Remove"
msgstr "Eliminar"

#: .\contrib\admin\media\js\SelectFilter2.js.py:57
#, perl-format
msgid "Chosen %s"
msgstr "%s Escollits"

#: .\contrib\admin\media\js\SelectFilter2.js.py:58
msgid "Select your choice(s) and click "
msgstr "Faci les seves seleccions i faci click a"

#: .\contrib\admin\media\js\SelectFilter2.js.py:63
msgid "Clear all"
msgstr "Deseleccionar tots"

#: .\contrib\admin\media\js\actions.js.py:18
#: .\contrib\admin\media\js\actions.min.js.py:1
msgid "%(sel)s of %(cnt)s selected"
msgid_plural "%(sel)s of %(cnt)s selected"
msgstr[0] "%(sel)s de %(cnt)s seleccionat"
msgstr[1] "%(sel)s of %(cnt)s seleccionats"

#: .\contrib\admin\media\js\actions.js.py:109
#: .\contrib\admin\media\js\actions.min.js.py:5
msgid ""
"You have unsaved changes on individual editable fields. If you run an "
"action, your unsaved changes will be lost."
msgstr ""
"Teniu canvis sense desar a camps editables individuals. Si executeu "
"una acció, es perdran aquests canvis no desats."

#: .\contrib\admin\media\js\actions.js.py:121
#: .\contrib\admin\media\js\actions.min.js.py:6
msgid ""
"You have selected an action, but you haven't saved your changes to "
"individual fields yet. Please click OK to save. You'll need to re-run the "
"action."
msgstr ""
"Heu seleccionat una acció, però encara no heu desat els vostres canvis a "
"camps individuals. Si us plau premeu OK per desar. Haureu de tornar a "
"executar l'acció."

#: .\contrib\admin\media\js\actions.js.py:123
#: .\contrib\admin\media\js\actions.min.js.py:6
msgid ""
"You have selected an action, and you haven't made any changes on individual "
"fields. You're probably looking for the Go button rather than the Save "
"button."
msgstr ""
"Heu seleccionat una acció i no heu fet cap canvi a camps individuals. "
"Probablement esteu cercant el botó 'Anar' enlloc de 'Desar'."

#: .\contrib\admin\media\js\calendar.js.py:24
#: .\contrib\admin\media\js\dateparse.js.py:32
msgid ""
"January February March April May June July August September October November "
"December"
msgstr ""
"Gener Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre "
"Desembre"

#: .\contrib\admin\media\js\calendar.js.py:25
msgid "S M T W T F S"
msgstr "dg dl dt dc dj dv ds"

#: .\contrib\admin\media\js\collapse.js.py:9
#: .\contrib\admin\media\js\collapse.js.py:21
#: .\contrib\admin\media\js\collapse.min.js.py:1
msgid "Show"
msgstr "Mostrar"

#: .\contrib\admin\media\js\collapse.js.py:16
#: .\contrib\admin\media\js\collapse.min.js.py:1
msgid "Hide"
msgstr "Ocultar"

#: .\contrib\admin\media\js\dateparse.js.py:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:48
#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:83
msgid "Now"
msgstr "Ara"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:52
msgid "Clock"
msgstr "Rellotge"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:79
msgid "Choose a time"
msgstr "Esculli una hora"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:84
msgid "Midnight"
msgstr "Mitjanit"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:85
msgid "6 a.m."
msgstr "6 a.m."

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:86
msgid "Noon"
msgstr "Migdia"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:90
#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:187
msgid "Cancel"
msgstr "Cancel·lar"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:132
#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:181
msgid "Today"
msgstr "Avui"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:136
msgid "Calendar"
msgstr "Calendari"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:179
msgid "Yesterday"
msgstr "Ahir"

#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:183
msgid "Tomorrow"
msgstr "Demà"
