def linktool_welcome(request):
user = authenticate(request=request)
if user is None:
- return HttpResponseForbidden('You are not allowed here.')
+ return HttpResponseForbidden(_('You are not allowed here.'))
else:
login(request, user)
_role = request.GET['role']
extrole = request.session['clew-role']
assert extrole == 'INSTR'
assert request.user.can_create_sites(), \
- 'Sorry, but you are not allowed to create sites.'
+ _('Sorry, but you are not allowed to create sites.')
extsite = ExternalSiteInfo(request)
extgroups = callhook('external_memberships', request.user.username)
desk = models.ServiceDesk.default()
def linktool_associate(request):
site = models.Site.objects.get(pk=request.GET['site'])
assert site in request.user.sites(role='INSTR'), \
- 'Not an instructor on this site! Cannot copy.'
+ _('You are not an instructor on this site; you cannot copy it.')
assert request.user.can_create_sites(), \
- 'Sorry, but you are not allowed to create sites.'
+ _('Sorry, but you are not allowed to create sites.')
today = date.today()
assert site.term.midpoint() >= today, \
- 'Sorry, but you cannot associate to such an old site.'
+ _('Sorry, but you cannot make an association to such an old site.')
extsite = request.session['clew-site']
extrole = request.session['clew-role']
assert extrole == 'INSTR', \
- 'Sorry, you are not an instructor on this Sakai site.'
+ _('Sorry, you are not an instructor on this Sakai site.')
group = models.Group.objects.create(
site = site,
external_id = extsite)
def linktool_copy_old(request):
oldsite = models.Site.objects.get(pk=request.GET['site'])
assert oldsite in request.user.sites(role='INSTR'), \
- 'Not an instructor on this site! Cannot copy.'
+ _('You are not an instructor on this site; you cannot copy it.')
assert request.user.can_create_sites(), \
- 'Sorry, but you are not allowed to create sites.'
+ _('Sorry, but you are not allowed to create sites.')
extsite = request.session['clew-site']
extrole = request.session['clew-role']
assert extrole == 'INSTR', \
- 'Sorry, you are not an instructor on this Sakai site.'
+ _('Sorry, you are not an instructor on this Sakai site.')
extgroups = callhook('external_memberships', request.user.username)
extsite = [d for d in extgroups if d['group'] == extsite][0]
dueinfo = time.strftime(settings.DUE_FORMAT,earliestdue)
callno = callnum
- alldisplay = callnum + ' (Available)'
+ alldisplay = callnum + _(' (Available)')
if circs and isinstance(circs, list):
- alldisplay = '%s (DUE: %s)' % (callnum, time.strftime(settings.DUE_FORMAT,duetime))
+ _duetime = time.strftime(settings.DUE_FORMAT,duetime)
+ alldisplay = _('%(callnum)s (DUE: %(_duetime)s)') % locals()
alldues.append(alldisplay)
def url_to_marcxml(url):
# this is a hack. Given a opac Title Details url, return marcxml.
- assert support.BASE, 'no EG BASE. Did you call support.initialize()?'
+ assert support.BASE, _('no EG BASE. Did you call support.initialize()?')
if url.startswith(support.BASE):
if 'feed/bookbag' in url:
#eg http://concat.ca/opac/extras/feed/bookbag/marcxml-full/60
#no pass on these, updates are too critical to ever be out of sync
except urllib2.URLError, exc:
- print("Could not open URL to read IDL: %s", exc.code)
+ print(_("Could not open URL to read IDL: %s"), exc.code)
except IOError, exc:
- print("Could not write IDL to file: %s", exc.code)
+ print(_("Could not write IDL to file: %s"), exc.code)
# parse the IDL
parser.set_IDL(idlfile)
msgstr ""
"Project-Id-Version: Syrup Reserves 0.1\n"
"Report-Msgid-Bugs-To: Graham Fawcett <graham.fawcett@gmail.com>\n"
-"POT-Creation-Date: 2011-03-28 21:49-0400\n"
+"POT-Creation-Date: 2011-03-28 23:08-0400\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"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: 0.9.4\n"
+#: integration/uwindsor.py:214
+msgid " (Available)"
+msgstr ""
+
+#: integration/uwindsor.py:218
+#, python-format
+msgid "%(callnum)s (DUE: %(_duetime)s)"
+msgstr ""
+
+#: integration/linktool/app.py:20
+msgid "You are not allowed here."
+msgstr ""
+
+#: integration/linktool/app.py:81 integration/linktool/app.py:105
+#: integration/linktool/app.py:128
+msgid "Sorry, but you are not allowed to create sites."
+msgstr ""
+
+#: integration/linktool/app.py:103 integration/linktool/app.py:126
+msgid "You are not an instructor on this site; you cannot copy it."
+msgstr ""
+
+#: integration/linktool/app.py:108
+msgid "Sorry, but you cannot make an association to such an old site."
+msgstr ""
+
+#: integration/linktool/app.py:113 integration/linktool/app.py:133
+msgid "Sorry, you are not an instructor on this Sakai site."
+msgstr ""
+
#: integration/linktool/templates/associate.xhtml:14
msgid "No associated reserves items."
msgstr ""
"Please choose from the list below:"
msgstr ""
+#: libsystems/evergreen/item_status.py:19
+msgid "no EG BASE. Did you call support.initialize()?"
+msgstr ""
+
+#: libsystems/evergreen/startup.py:39
+#, python-format
+msgid "Could not open URL to read IDL: %s"
+msgstr ""
+
+#: libsystems/evergreen/startup.py:42
+#, python-format
+msgid "Could not write IDL to file: %s"
+msgstr ""
+
#: syrup/models.py:133
msgid "ILS patron ID"
msgstr ""
msgstr ""
#: syrup/models.py:251
+msgid "CLOSE"
+msgstr ""
+
+#: syrup/models.py:251
msgid "Accessible only to course-site owners"
msgstr ""
+#: syrup/models.py:282
+msgid "The end-term cannot begin before the start-term."
+msgstr ""
+
+#: syrup/models.py:430
+#, python-format
+msgid "Cannot determine access level for user %s in site %s"
+msgstr ""
+
+#: syrup/models.py:507
+msgid "(internal)"
+msgstr ""
+
#: syrup/models.py:518
msgid "Instructor"
msgstr ""
msgid "MARCXML"
msgstr ""
+#: syrup/models.py:633
+msgid "unknown"
+msgstr ""
+
+#: syrup/models.py:634
+msgid "fair dealing"
+msgstr ""
+
+#: syrup/models.py:635
+msgid "permission granted"
+msgstr ""
+
+#: syrup/models.py:636
+msgid "licensed content"
+msgstr ""
+
+#: syrup/models.py:637
+msgid "available to students"
+msgstr ""
+
#: syrup/models.py:646
msgid "Normal"
msgstr ""
msgid "The page you requested could not be found"
msgstr ""
+#: syrup/views/_generics.py:53
+msgid "Cannot be blank."
+msgstr ""
+
#: syrup/views/admin.py:17 templates/courses.xhtml:1
#: templates/admin/index.xhtml:24
msgid "Courses"
msgstr ""
#: syrup/views/admin.py:60
-msgid "start must precede finish"
+msgid "The term's start must precede its finish."
msgstr ""
#: syrup/views/admin.py:87
msgid "Configs"
msgstr ""
+#. I18N: a 'hook' in this context is a locally-defined function.
+#: syrup/views/admin.py:124 syrup/views/admin.py:141
+#, python-format
+msgid "Sorry, cannot perform this operation at this time: hook %r not found."
+msgstr ""
+
+#: syrup/views/admin.py:134
+msgid "Courses and departments updated."
+msgstr ""
+
+#: syrup/views/admin.py:152
+msgid "Terms updated."
+msgstr ""
+
+#: syrup/views/admin.py:173
+msgid "No user was selected."
+msgstr ""
+
+#: syrup/views/admin.py:176
+#, python-format
+msgid "Staff user added: %s [%s]."
+msgstr ""
+
#: syrup/views/auth.py:24
msgid "Invalid username or password. Please try again."
msgstr ""
msgid "Courses with Materials in %s"
msgstr ""
+#: syrup/views/items.py:47
+msgid "Items of this type are not downloadable."
+msgstr ""
+
#: syrup/views/items.py:76 syrup/views/items.py:238 syrup/views/items.py:266
msgid "You can only add items to headings!"
msgstr ""
msgid "Sorry, only HEADINGs, URLs and ELECs can be added right now."
msgstr ""
+#: syrup/views/items.py:165
+msgid "The title and/or URL are missing."
+msgstr ""
+
+#: syrup/views/items.py:316 syrup/views/items.py:329
+msgid "Untitled"
+msgstr ""
+
#: syrup/views/items.py:395
msgid "Unable to update"
msgstr ""
msgid "You cannot make an item a descendant of itself!"
msgstr ""
+#: syrup/views/sites.py:16
+msgid "The end-term precedes the start-term."
+msgstr ""
+
#: syrup/views/sites.py:34
msgid "You are not allowed to create sites."
msgstr ""
msgid "Instructors only: this site is closed."
msgstr ""
+#: syrup/views/sites.py:104
+msgid "Changes saved."
+msgstr ""
+
+#: syrup/views/sites.py:110
+#, python-format
+msgid "Security level changed to \"%s\"."
+msgstr ""
+
+#: syrup/views/sites.py:126
+#, python-format
+msgid "%s has been added as a member (role: %s)."
+msgstr ""
+
+#: syrup/views/sites.py:131
+#, python-format
+msgid "%s: role changed to %s."
+msgstr ""
+
+#: syrup/views/sites.py:145
+msgid "No group code or section number provided."
+msgstr ""
+
+#: syrup/views/sites.py:150
+#, python-format
+msgid "Group %s added."
+msgstr ""
+
#: syrup/views/sites.py:202
msgid "You cannot join this site."
msgstr ""
msgstr ""
#: templates/open_sites.xhtml:19 templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_delete_confirm.xhtml:28
#: templates/item/item_metadata.xhtml:46
msgid "Title"
msgstr[1] ""
#: templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "Author"
msgstr ""
msgstr ""
#: templates/item/common_metadata.xhtml:21
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_metadata.xhtml:50
msgid "Publisher"
msgstr ""
msgstr[0] ""
msgstr[1] ""
-#: templates/item/item_add_cat_search.xhtml:54
+#: templates/item/item_add_cat_search.xhtml:55
#, python-format
msgid "Previous %(count)s"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:58
+#: templates/item/item_add_cat_search.xhtml:59
#, python-format
msgid "Next %(count)s"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "PubDate"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:73
+#: templates/item/item_add_cat_search.xhtml:74
msgid "details"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:74
+#: templates/item/item_add_cat_search.xhtml:75
msgid "Electronic resource."
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:75
+#: templates/item/item_add_cat_search.xhtml:76
msgid "view"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:85
+#: templates/item/item_add_cat_search.xhtml:86
msgid "Pick this item"
msgstr ""
"Project-Id-Version: Syrup Reserves 0.1\n"
"Report-Msgid-Bugs-To: Graham Fawcett <graham.fawcett@gmail.com>\n"
"POT-Creation-Date: 2011-03-28 20:22+0400\n"
-"PO-Revision-Date: 2011-03-28 21:49-0400\n"
+"PO-Revision-Date: 2011-03-28 23:08-0400\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: en_CA <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
+#: integration/uwindsor.py:214
+msgid " (Available)"
+msgstr ""
+
+#: integration/uwindsor.py:218
+#, python-format
+msgid "%(callnum)s (DUE: %(_duetime)s)"
+msgstr ""
+
+#: integration/linktool/app.py:20
+msgid "You are not allowed here."
+msgstr ""
+
+#: integration/linktool/app.py:81 integration/linktool/app.py:105
+#: integration/linktool/app.py:128
+msgid "Sorry, but you are not allowed to create sites."
+msgstr ""
+
+#: integration/linktool/app.py:103 integration/linktool/app.py:126
+msgid "You are not an instructor on this site; you cannot copy it."
+msgstr ""
+
+#: integration/linktool/app.py:108
+msgid "Sorry, but you cannot make an association to such an old site."
+msgstr ""
+
+#: integration/linktool/app.py:113 integration/linktool/app.py:133
+msgid "Sorry, you are not an instructor on this Sakai site."
+msgstr ""
+
#: integration/linktool/templates/associate.xhtml:14
msgid "No associated reserves items."
msgstr ""
"Please choose from the list below:"
msgstr ""
+#: libsystems/evergreen/item_status.py:19
+msgid "no EG BASE. Did you call support.initialize()?"
+msgstr ""
+
+#: libsystems/evergreen/startup.py:39
+#, python-format
+msgid "Could not open URL to read IDL: %s"
+msgstr ""
+
+#: libsystems/evergreen/startup.py:42
+#, python-format
+msgid "Could not write IDL to file: %s"
+msgstr ""
+
#: syrup/models.py:133
msgid "ILS patron ID"
msgstr ""
msgstr ""
#: syrup/models.py:251
+msgid "CLOSE"
+msgstr ""
+
+#: syrup/models.py:251
msgid "Accessible only to course-site owners"
msgstr ""
+#: syrup/models.py:282
+msgid "The end-term cannot begin before the start-term."
+msgstr ""
+
+#: syrup/models.py:430
+#, python-format
+msgid "Cannot determine access level for user %s in site %s"
+msgstr ""
+
+#: syrup/models.py:507
+msgid "(internal)"
+msgstr ""
+
#: syrup/models.py:518
msgid "Instructor"
msgstr ""
msgid "MARCXML"
msgstr ""
+#: syrup/models.py:633
+msgid "unknown"
+msgstr ""
+
+#: syrup/models.py:634
+msgid "fair dealing"
+msgstr ""
+
+#: syrup/models.py:635
+msgid "permission granted"
+msgstr ""
+
+#: syrup/models.py:636
+msgid "licensed content"
+msgstr ""
+
+#: syrup/models.py:637
+msgid "available to students"
+msgstr ""
+
#: syrup/models.py:646
msgid "Normal"
msgstr ""
msgid "The page you requested could not be found"
msgstr ""
+#: syrup/views/_generics.py:53
+msgid "Cannot be blank."
+msgstr ""
+
#: syrup/views/admin.py:17 templates/courses.xhtml:1
#: templates/admin/index.xhtml:24
msgid "Courses"
msgstr ""
#: syrup/views/admin.py:60
-msgid "start must precede finish"
+msgid "The term's start must precede its finish."
msgstr ""
#: syrup/views/admin.py:87
msgid "Configs"
msgstr ""
+#. I18N: a 'hook' in this context is a locally-defined function.
+#: syrup/views/admin.py:124 syrup/views/admin.py:141
+#, python-format
+msgid "Sorry, cannot perform this operation at this time: hook %r not found."
+msgstr ""
+
+#: syrup/views/admin.py:134
+msgid "Courses and departments updated."
+msgstr ""
+
+#: syrup/views/admin.py:152
+msgid "Terms updated."
+msgstr ""
+
+#: syrup/views/admin.py:173
+msgid "No user was selected."
+msgstr ""
+
+#: syrup/views/admin.py:176
+#, python-format
+msgid "Staff user added: %s [%s]."
+msgstr ""
+
#: syrup/views/auth.py:24
msgid "Invalid username or password. Please try again."
msgstr ""
msgid "Courses with Materials in %s"
msgstr ""
+#: syrup/views/items.py:47
+msgid "Items of this type are not downloadable."
+msgstr ""
+
#: syrup/views/items.py:76 syrup/views/items.py:238 syrup/views/items.py:266
msgid "You can only add items to headings!"
msgstr ""
msgid "Sorry, only HEADINGs, URLs and ELECs can be added right now."
msgstr ""
+#: syrup/views/items.py:165
+msgid "The title and/or URL are missing."
+msgstr ""
+
+#: syrup/views/items.py:316 syrup/views/items.py:329
+msgid "Untitled"
+msgstr ""
+
#: syrup/views/items.py:395
msgid "Unable to update"
msgstr ""
msgid "You cannot make an item a descendant of itself!"
msgstr ""
+#: syrup/views/sites.py:16
+msgid "The end-term precedes the start-term."
+msgstr ""
+
#: syrup/views/sites.py:34
msgid "You are not allowed to create sites."
msgstr ""
msgid "Instructors only: this site is closed."
msgstr ""
+#: syrup/views/sites.py:104
+msgid "Changes saved."
+msgstr ""
+
+#: syrup/views/sites.py:110
+#, python-format
+msgid "Security level changed to \"%s\"."
+msgstr ""
+
+#: syrup/views/sites.py:126
+#, python-format
+msgid "%s has been added as a member (role: %s)."
+msgstr ""
+
+#: syrup/views/sites.py:131
+#, python-format
+msgid "%s: role changed to %s."
+msgstr ""
+
+#: syrup/views/sites.py:145
+msgid "No group code or section number provided."
+msgstr ""
+
+#: syrup/views/sites.py:150
+#, python-format
+msgid "Group %s added."
+msgstr ""
+
#: syrup/views/sites.py:202
msgid "You cannot join this site."
msgstr ""
msgstr ""
#: templates/open_sites.xhtml:19 templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_delete_confirm.xhtml:28
#: templates/item/item_metadata.xhtml:46
msgid "Title"
msgstr[1] ""
#: templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "Author"
msgstr ""
msgstr ""
#: templates/item/common_metadata.xhtml:21
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_metadata.xhtml:50
msgid "Publisher"
msgstr ""
msgstr[0] ""
msgstr[1] ""
-#: templates/item/item_add_cat_search.xhtml:54
+#: templates/item/item_add_cat_search.xhtml:55
#, python-format
msgid "Previous %(count)s"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:58
+#: templates/item/item_add_cat_search.xhtml:59
#, python-format
msgid "Next %(count)s"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "PubDate"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:73
+#: templates/item/item_add_cat_search.xhtml:74
msgid "details"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:74
+#: templates/item/item_add_cat_search.xhtml:75
msgid "Electronic resource."
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:75
+#: templates/item/item_add_cat_search.xhtml:76
msgid "view"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:85
+#: templates/item/item_add_cat_search.xhtml:86
msgid "Pick this item"
msgstr ""
"Project-Id-Version: Syrup Reserves 0.1\n"
"Report-Msgid-Bugs-To: Graham Fawcett <graham.fawcett@gmail.com>\n"
"POT-Creation-Date: 2011-03-28 20:22+0400\n"
-"PO-Revision-Date: 2011-03-28 21:49-0400\n"
+"PO-Revision-Date: 2011-03-28 23:08-0400\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: eo <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Generated-By: Babel 0.9.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+#: integration/uwindsor.py:214
+msgid " (Available)"
+msgstr " (avAIlAblE)"
+
+#: integration/uwindsor.py:218
+#, python-format
+msgid "%(callnum)s (DUE: %(_duetime)s)"
+msgstr "%(callnum)s (Due: %(_duetime)s)"
+
+#: integration/linktool/app.py:20
+msgid "You are not allowed here."
+msgstr "YOU ArE nOt AllOwEd hErE."
+
+#: integration/linktool/app.py:81 integration/linktool/app.py:105
+#: integration/linktool/app.py:128
+msgid "Sorry, but you are not allowed to create sites."
+msgstr "SOrry, bUt yOU ArE nOt AllOwEd tO crEAtE sItEs."
+
+#: integration/linktool/app.py:103 integration/linktool/app.py:126
+msgid "You are not an instructor on this site; you cannot copy it."
+msgstr "YOU ArE nOt An InstrUctOr On thIs sItE; yOU cAnnOt cOpy It."
+
+#: integration/linktool/app.py:108
+msgid "Sorry, but you cannot make an association to such an old site."
+msgstr "SOrry, bUt yOU cAnnOt mAkE An AssOcIAtIOn tO sUch An Old sItE."
+
+#: integration/linktool/app.py:113 integration/linktool/app.py:133
+msgid "Sorry, you are not an instructor on this Sakai site."
+msgstr "SOrry, yOU ArE nOt An InstrUctOr On thIs SAkAI sItE."
+
#: integration/linktool/templates/associate.xhtml:14
msgid "No associated reserves items."
msgstr "NO AssOcIAtEd rEsErvEs ItEms."
"ThErE Is mOrE thAn OnE sEt Of rEsErvEs mAtErIAls rElAtEd tO thIs sItE. "
"PlEAsE chOOsE frOm thE lIst bElOw:"
+#: libsystems/evergreen/item_status.py:19
+msgid "no EG BASE. Did you call support.initialize()?"
+msgstr "nO eG BaSe. DId yOU cAll sUppOrt.InItIAlIzE()?"
+
+#: libsystems/evergreen/startup.py:39
+#, python-format
+msgid "Could not open URL to read IDL: %s"
+msgstr "COUld nOt OpEn uRL tO rEAd iDL: %s"
+
+#: libsystems/evergreen/startup.py:42
+#, python-format
+msgid "Could not write IDL to file: %s"
+msgstr "COUld nOt wrItE iDL tO fIlE: %s"
+
#: syrup/models.py:133
msgid "ILS patron ID"
msgstr "iLS pAtrOn iD"
msgstr "accEssIblE tO cOUrsE-sItE mEmbErs"
#: syrup/models.py:251
+msgid "CLOSE"
+msgstr "CLoSe"
+
+#: syrup/models.py:251
msgid "Accessible only to course-site owners"
msgstr "accEssIblE Only tO cOUrsE-sItE OwnErs"
+#: syrup/models.py:282
+msgid "The end-term cannot begin before the start-term."
+msgstr "ThE End-tErm cAnnOt bEgIn bEfOrE thE stArt-tErm."
+
+#: syrup/models.py:430
+#, python-format
+msgid "Cannot determine access level for user %s in site %s"
+msgstr "CAnnOt dEtErmInE AccEss lEvEl fOr UsEr %s In sItE %s"
+
+#: syrup/models.py:507
+msgid "(internal)"
+msgstr "(IntErnAl)"
+
#: syrup/models.py:518
msgid "Instructor"
msgstr "instrUctOr"
msgid "MARCXML"
msgstr "MaRCXML"
+#: syrup/models.py:633
+msgid "unknown"
+msgstr "UnknOwn"
+
+#: syrup/models.py:634
+msgid "fair dealing"
+msgstr "fAIr dEAlIng"
+
+#: syrup/models.py:635
+msgid "permission granted"
+msgstr "pErmIssIOn grAntEd"
+
+#: syrup/models.py:636
+msgid "licensed content"
+msgstr "lIcEnsEd cOntEnt"
+
+#: syrup/models.py:637
+msgid "available to students"
+msgstr "AvAIlAblE tO stUdEnts"
+
#: syrup/models.py:646
msgid "Normal"
msgstr "NOrmAl"
msgid "The page you requested could not be found"
msgstr "ThE pAgE yOU rEqUEstEd cOUld nOt bE fOUnd"
+#: syrup/views/_generics.py:53
+msgid "Cannot be blank."
+msgstr "CAnnOt bE blAnk."
+
#: syrup/views/admin.py:17 templates/courses.xhtml:1
#: templates/admin/index.xhtml:24
msgid "Courses"
msgstr "TErms"
#: syrup/views/admin.py:60
-msgid "start must precede finish"
-msgstr "stArt mUst prEcEdE fInIsh"
+msgid "The term's start must precede its finish."
+msgstr "ThE tErm's stArt mUst prEcEdE Its fInIsh."
#: syrup/views/admin.py:87
msgid "Targets"
msgid "Configs"
msgstr "COnfIgs"
+#. I18N: a 'hook' in this context is a locally-defined function.
+#: syrup/views/admin.py:124 syrup/views/admin.py:141
+#, python-format
+msgid "Sorry, cannot perform this operation at this time: hook %r not found."
+msgstr "SOrry, cAnnOt pErfOrm thIs OpErAtIOn At thIs tImE: hOOk %r nOt fOUnd."
+
+#: syrup/views/admin.py:134
+msgid "Courses and departments updated."
+msgstr "COUrsEs And dEpArtmEnts UpdAtEd."
+
+#: syrup/views/admin.py:152
+msgid "Terms updated."
+msgstr "TErms UpdAtEd."
+
+#: syrup/views/admin.py:173
+msgid "No user was selected."
+msgstr "NO UsEr wAs sElEctEd."
+
+#: syrup/views/admin.py:176
+#, python-format
+msgid "Staff user added: %s [%s]."
+msgstr "StAff UsEr AddEd: %s [%s]."
+
#: syrup/views/auth.py:24
msgid "Invalid username or password. Please try again."
msgstr "invAlId UsErnAmE Or pAsswOrd. PlEAsE try AgAIn."
msgid "Courses with Materials in %s"
msgstr "COUrsEs wIth MAtErIAls In %s"
+#: syrup/views/items.py:47
+msgid "Items of this type are not downloadable."
+msgstr "itEms Of thIs typE ArE nOt dOwnlOAdAblE."
+
#: syrup/views/items.py:76 syrup/views/items.py:238 syrup/views/items.py:266
msgid "You can only add items to headings!"
msgstr "YOU cAn Only Add ItEms tO hEAdIngs!"
msgid "Sorry, only HEADINGs, URLs and ELECs can be added right now."
msgstr "SOrry, Only HeaDiNGs, uRLs And eLeCs cAn bE AddEd rIght nOw."
+#: syrup/views/items.py:165
+msgid "The title and/or URL are missing."
+msgstr "ThE tItlE And/Or uRL ArE mIssIng."
+
+#: syrup/views/items.py:316 syrup/views/items.py:329
+msgid "Untitled"
+msgstr "untItlEd"
+
#: syrup/views/items.py:395
msgid "Unable to update"
msgstr "unAblE tO UpdAtE"
msgid "You cannot make an item a descendant of itself!"
msgstr "YOU cAnnOt mAkE An ItEm A dEscEndAnt Of ItsElf!"
+#: syrup/views/sites.py:16
+msgid "The end-term precedes the start-term."
+msgstr "ThE End-tErm prEcEdEs thE stArt-tErm."
+
#: syrup/views/sites.py:34
msgid "You are not allowed to create sites."
msgstr "YOU ArE nOt AllOwEd tO crEAtE sItEs."
msgid "Instructors only: this site is closed."
msgstr "instrUctOrs Only: thIs sItE Is clOsEd."
+#: syrup/views/sites.py:104
+msgid "Changes saved."
+msgstr "ChAngEs sAvEd."
+
+#: syrup/views/sites.py:110
+#, python-format
+msgid "Security level changed to \"%s\"."
+msgstr "SEcUrIty lEvEl chAngEd tO \"%s\"."
+
+#: syrup/views/sites.py:126
+#, python-format
+msgid "%s has been added as a member (role: %s)."
+msgstr "%s hAs bEEn AddEd As A mEmbEr (rOlE: %s)."
+
+#: syrup/views/sites.py:131
+#, python-format
+msgid "%s: role changed to %s."
+msgstr "%s: rOlE chAngEd tO %s."
+
+#: syrup/views/sites.py:145
+msgid "No group code or section number provided."
+msgstr "NO grOUp cOdE Or sEctIOn nUmbEr prOvIdEd."
+
+#: syrup/views/sites.py:150
+#, python-format
+msgid "Group %s added."
+msgstr "GrOUp %s AddEd."
+
#: syrup/views/sites.py:202
msgid "You cannot join this site."
msgstr "YOU cAnnOt jOIn thIs sItE."
msgstr "TErm"
#: templates/open_sites.xhtml:19 templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_delete_confirm.xhtml:28
#: templates/item/item_metadata.xhtml:46
msgid "Title"
msgstr[1] "FOUnd %(num)s mAtchEs."
#: templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "Author"
msgstr "aUthOr"
msgstr "aUthOr #%(num)s"
#: templates/item/common_metadata.xhtml:21
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_metadata.xhtml:50
msgid "Publisher"
msgstr "PUblIshEr"
msgstr[0] "%(first)s rEsUlt."
msgstr[1] "%(first)s–%(last)s Of %(total)s rEsUlts."
-#: templates/item/item_add_cat_search.xhtml:54
+#: templates/item/item_add_cat_search.xhtml:55
#, python-format
msgid "Previous %(count)s"
msgstr "PrEvIOUs %(count)s"
-#: templates/item/item_add_cat_search.xhtml:58
+#: templates/item/item_add_cat_search.xhtml:59
#, python-format
msgid "Next %(count)s"
msgstr "NExt %(count)s"
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "PubDate"
msgstr "PUbDAtE"
-#: templates/item/item_add_cat_search.xhtml:73
+#: templates/item/item_add_cat_search.xhtml:74
msgid "details"
msgstr "dEtAIls"
-#: templates/item/item_add_cat_search.xhtml:74
+#: templates/item/item_add_cat_search.xhtml:75
msgid "Electronic resource."
msgstr "elEctrOnIc rEsOUrcE."
-#: templates/item/item_add_cat_search.xhtml:75
+#: templates/item/item_add_cat_search.xhtml:76
msgid "view"
msgstr "vIEw"
-#: templates/item/item_add_cat_search.xhtml:85
+#: templates/item/item_add_cat_search.xhtml:86
msgid "Pick this item"
msgstr "PIck thIs ItEm"
"Project-Id-Version: Syrup Reserves 0.1\n"
"Report-Msgid-Bugs-To: Graham Fawcett <graham.fawcett@gmail.com>\n"
"POT-Creation-Date: 2011-03-28 20:22+0400\n"
-"PO-Revision-Date: 2011-03-28 21:49-0400\n"
+"PO-Revision-Date: 2011-03-28 23:08-0400\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: fr_CA <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
+#: integration/uwindsor.py:214
+msgid " (Available)"
+msgstr ""
+
+#: integration/uwindsor.py:218
+#, python-format
+msgid "%(callnum)s (DUE: %(_duetime)s)"
+msgstr ""
+
+#: integration/linktool/app.py:20
+msgid "You are not allowed here."
+msgstr ""
+
+#: integration/linktool/app.py:81 integration/linktool/app.py:105
+#: integration/linktool/app.py:128
+msgid "Sorry, but you are not allowed to create sites."
+msgstr ""
+
+#: integration/linktool/app.py:103 integration/linktool/app.py:126
+msgid "You are not an instructor on this site; you cannot copy it."
+msgstr ""
+
+#: integration/linktool/app.py:108
+msgid "Sorry, but you cannot make an association to such an old site."
+msgstr ""
+
+#: integration/linktool/app.py:113 integration/linktool/app.py:133
+msgid "Sorry, you are not an instructor on this Sakai site."
+msgstr ""
+
#: integration/linktool/templates/associate.xhtml:14
msgid "No associated reserves items."
msgstr ""
"Please choose from the list below:"
msgstr ""
+#: libsystems/evergreen/item_status.py:19
+msgid "no EG BASE. Did you call support.initialize()?"
+msgstr ""
+
+#: libsystems/evergreen/startup.py:39
+#, python-format
+msgid "Could not open URL to read IDL: %s"
+msgstr ""
+
+#: libsystems/evergreen/startup.py:42
+#, python-format
+msgid "Could not write IDL to file: %s"
+msgstr ""
+
#: syrup/models.py:133
msgid "ILS patron ID"
msgstr ""
msgstr ""
#: syrup/models.py:251
+msgid "CLOSE"
+msgstr ""
+
+#: syrup/models.py:251
msgid "Accessible only to course-site owners"
msgstr ""
+#: syrup/models.py:282
+msgid "The end-term cannot begin before the start-term."
+msgstr ""
+
+#: syrup/models.py:430
+#, python-format
+msgid "Cannot determine access level for user %s in site %s"
+msgstr ""
+
+#: syrup/models.py:507
+msgid "(internal)"
+msgstr ""
+
#: syrup/models.py:518
msgid "Instructor"
msgstr ""
msgid "MARCXML"
msgstr ""
+#: syrup/models.py:633
+msgid "unknown"
+msgstr ""
+
+#: syrup/models.py:634
+msgid "fair dealing"
+msgstr ""
+
+#: syrup/models.py:635
+msgid "permission granted"
+msgstr ""
+
+#: syrup/models.py:636
+msgid "licensed content"
+msgstr ""
+
+#: syrup/models.py:637
+msgid "available to students"
+msgstr ""
+
#: syrup/models.py:646
msgid "Normal"
msgstr ""
msgid "The page you requested could not be found"
msgstr ""
+#: syrup/views/_generics.py:53
+msgid "Cannot be blank."
+msgstr ""
+
#: syrup/views/admin.py:17 templates/courses.xhtml:1
#: templates/admin/index.xhtml:24
msgid "Courses"
msgstr ""
#: syrup/views/admin.py:60
-msgid "start must precede finish"
+msgid "The term's start must precede its finish."
msgstr ""
#: syrup/views/admin.py:87
msgid "Configs"
msgstr ""
+#. I18N: a 'hook' in this context is a locally-defined function.
+#: syrup/views/admin.py:124 syrup/views/admin.py:141
+#, python-format
+msgid "Sorry, cannot perform this operation at this time: hook %r not found."
+msgstr ""
+
+#: syrup/views/admin.py:134
+msgid "Courses and departments updated."
+msgstr ""
+
+#: syrup/views/admin.py:152
+msgid "Terms updated."
+msgstr ""
+
+#: syrup/views/admin.py:173
+msgid "No user was selected."
+msgstr ""
+
+#: syrup/views/admin.py:176
+#, python-format
+msgid "Staff user added: %s [%s]."
+msgstr ""
+
#: syrup/views/auth.py:24
msgid "Invalid username or password. Please try again."
msgstr ""
msgid "Courses with Materials in %s"
msgstr ""
+#: syrup/views/items.py:47
+msgid "Items of this type are not downloadable."
+msgstr ""
+
#: syrup/views/items.py:76 syrup/views/items.py:238 syrup/views/items.py:266
msgid "You can only add items to headings!"
msgstr ""
msgid "Sorry, only HEADINGs, URLs and ELECs can be added right now."
msgstr ""
+#: syrup/views/items.py:165
+msgid "The title and/or URL are missing."
+msgstr ""
+
+#: syrup/views/items.py:316 syrup/views/items.py:329
+msgid "Untitled"
+msgstr ""
+
#: syrup/views/items.py:395
msgid "Unable to update"
msgstr ""
msgid "You cannot make an item a descendant of itself!"
msgstr ""
+#: syrup/views/sites.py:16
+msgid "The end-term precedes the start-term."
+msgstr ""
+
#: syrup/views/sites.py:34
msgid "You are not allowed to create sites."
msgstr ""
msgid "Instructors only: this site is closed."
msgstr ""
+#: syrup/views/sites.py:104
+msgid "Changes saved."
+msgstr ""
+
+#: syrup/views/sites.py:110
+#, python-format
+msgid "Security level changed to \"%s\"."
+msgstr ""
+
+#: syrup/views/sites.py:126
+#, python-format
+msgid "%s has been added as a member (role: %s)."
+msgstr ""
+
+#: syrup/views/sites.py:131
+#, python-format
+msgid "%s: role changed to %s."
+msgstr ""
+
+#: syrup/views/sites.py:145
+msgid "No group code or section number provided."
+msgstr ""
+
+#: syrup/views/sites.py:150
+#, python-format
+msgid "Group %s added."
+msgstr ""
+
#: syrup/views/sites.py:202
msgid "You cannot join this site."
msgstr ""
msgstr ""
#: templates/open_sites.xhtml:19 templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_delete_confirm.xhtml:28
#: templates/item/item_metadata.xhtml:46
msgid "Title"
msgstr[1] ""
#: templates/search_results.xhtml:35
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "Author"
msgstr ""
msgstr ""
#: templates/item/common_metadata.xhtml:21
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
#: templates/item/item_metadata.xhtml:50
msgid "Publisher"
msgstr ""
msgstr[0] ""
msgstr[1] ""
-#: templates/item/item_add_cat_search.xhtml:54
+#: templates/item/item_add_cat_search.xhtml:55
#, python-format
msgid "Previous %(count)s"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:58
+#: templates/item/item_add_cat_search.xhtml:59
#, python-format
msgid "Next %(count)s"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:65
+#: templates/item/item_add_cat_search.xhtml:66
msgid "PubDate"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:73
+#: templates/item/item_add_cat_search.xhtml:74
msgid "details"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:74
+#: templates/item/item_add_cat_search.xhtml:75
msgid "Electronic resource."
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:75
+#: templates/item/item_add_cat_search.xhtml:76
msgid "view"
msgstr ""
-#: templates/item/item_add_cat_search.xhtml:85
+#: templates/item/item_add_cat_search.xhtml:86
msgid "Pick this item"
msgstr ""
os.system(('pybabel extract '
'-F babel.cfg '
'--omit-header '
+ '-c I18N '
'-o %(POTFILE)s .'
) % vars())
('LOGIN', _('Accessible to all logged-in users')),
('RESTR', _('Accessible to all logged-in users, but only course-site members can read electronic documents.')),
('MEMBR', _('Accessible to course-site members')),
- ('CLOSE', _('Accessible only to course-site owners'))]
+ (_('CLOSE'), _('Accessible only to course-site owners'))]
ACCESS_DEFAULT = getattr(settings, 'SITE_DEFAULT_ACCESS_LEVEL', 'ANON')
assert ACCESS_DEFAULT in [x[0] for x in ACCESS_CHOICES]
def save(self, *args, **kwargs):
# Assert that the term-order is logical.
assert self.start_term.start <= self.end_term.start, \
- 'The end-term cannot begin before the start-term.'
+ _('The end-term cannot begin before the start-term.')
# Ensure there is always an internal Group.
super(Site, self).save(*args, **kwargs)
internal, just_created = Group.objects.get_or_create(
elif level == u'MEMBR':
return True
else:
- raise Exception('Cannot determine access level '
- 'for user %s in site %s' % (user, self))
+ raise Exception(_('Cannot determine access level '
+ 'for user %s in site %s') % (user, self))
def allows_downloads_to(self, user):
"""
def __unicode__(self):
return u"Group('%s', '%s')" % (self.site,
- self.external_id or '(internal)')
+ self.external_id or _('(internal)'))
class Membership(BaseModel):
# As per discussion with Art Rhyno and Joan Dalton, Leddy Library.
COPYRIGHT_STATUS_CHOICES = [
- ('UK', 'unknown'),
- ('FD', 'fair dealing'),
- ('PG', 'permission granted'),
- ('LC', 'licensed content'),
- ('AV', 'available to students'),
+ ('UK', _('unknown')),
+ ('FD', _('fair dealing')),
+ ('PG', _('permission granted')),
+ ('LC', _('licensed content')),
+ ('AV', _('available to students')),
]
copyright_status = m.CharField(max_length=2,
def clean(self):
v = self.cleaned_data.get(fieldname) or ''
if not v.strip():
- raise ValidationError('Cannot be blank.')
+ raise ValidationError(_('Cannot be blank.'))
return v.strip()
return clean
cd = self.cleaned_data
s, f = cd.get('start'), cd.get('finish')
if (s and f) and s >= f:
- raise ValidationError, _('start must precede finish')
+ raise ValidationError, _('The term\'s start must precede its finish.')
return cd
admin_terms = generic_handler(TermForm, decorator=admin_only)
if catalogue is None:
return HttpResponse(
- 'Sorry, cannot perform this operation at this time: '
- 'hook %r not found.' % HOOKNAME)
+ # I18N: a 'hook' in this context is a locally-defined function.
+ _('Sorry, cannot perform this operation at this time: '
+ 'hook %r not found.') % HOOKNAME)
else:
for deptname, ccode, cname in catalogue:
if not (deptname.strip() and ccode.strip() and cname.strip()):
name=deptname, defaults={'service_desk': desk})
models.Course.objects.get_or_create(
code=ccode, defaults={'department': dept, 'name': cname})
- return simple_message('Courses and departments updated.', '')
+ return simple_message(_('Courses and departments updated.'), '')
def admin_update_terms(request):
HOOKNAME = 'term_catalogue'
catalogue = callhook(HOOKNAME)
if catalogue is None:
return HttpResponse(
- 'Sorry, cannot perform this operation at this time: '
- 'hook %r not found.' % HOOKNAME)
+ _('Sorry, cannot perform this operation at this time: '
+ 'hook %r not found.') % HOOKNAME)
else:
for tcode, tname, start, finish in catalogue:
tcode = tcode.strip(); tname = tname.strip()
models.Term.objects.get_or_create(
code = tcode,
defaults = dict(name=tname, start=start, finish=finish))
- return simple_message('Terms updated.', '')
+ return simple_message(_('Terms updated.'\), '')
@admin_only
def admin_staff_add(request):
user.save()
if not userid:
- message = 'No user selected.'
+ message = _('No user was selected.')
message_continue = False
else:
- message = 'Staff user added: %s [%s].' % (user.get_full_name(), user.username)
+ message = _('Staff user added: %s [%s].') % (user.get_full_name(), user.username)
return g.render('admin/staff_add.xhtml', **locals())
assert request.method == 'POST'
item = get_object_or_404(models.Item, pk=item_id, site__id=site_id)
if item.item_type != 'ELEC':
- return HttpResponseNotFound('Items of this type are not downloadable.')
+ return HttpResponseNotFound(_('Items of this type are not downloadable.'))
else:
# we don't actually need the declaration object for anything; we just
# need to ensure one exists.
publisher = clean('publisher')
published = clean('published')
if not (title and url):
- raise Exception('Missing title and/or URL.')
+ raise Exception(_('The title and/or URL are missing.'))
else:
item = models.Item(
site=site,
if bibid > 0:
item = site.item_set.create(parent_heading=parent_item,
- title=dublin.get('dc:title','Untitled'),
+ title=dublin.get('dc:title',_('Untitled')),
author=dublin.get('dc:creator'),
publisher=dublin.get('dc:publisher',''),
published=pubdate,
**dct)
else:
item = site.item_set.create(parent_heading=parent_item,
- title=dublin.get('dc:title','Untitled'),
+ title=dublin.get('dc:title',_('Untitled')),
author=dublin.get('dc:creator'),
publisher=dublin.get('dc:publisher',''),
published=pubdate,
cd = self.cleaned_data
if cd['start_term'].start > cd['end_term'].start:
raise ValidationError(
- 'The end-term precedes the start-term.')
+ _('The end-term precedes the start-term.'))
return cd['end_term']
def __init__(self, *args, **kwargs):
return g.render('edit_site_permissions.xhtml', **locals())
else:
POST = request.POST
- message = 'Changes saved.' # default
+ message = _('Changes saved.') # default
message_iserror = False
if 'action_access_level' in POST:
access = POST.get('access')
site.access = access
- message = 'Security level changed: "%s"' % dict(choices)[access]
+ message = _('Security level changed to "%s".') % dict(choices)[access]
elif 'action_add_member' in POST:
userid = request.POST.get('userid')
mbr, created = models.Membership.objects.get_or_create(
group=group, user=user, defaults=dict(role=role))
if created:
- message = '%s has been added as a member (role: %s).' % (
+ message = _('%s has been added as a member (role: %s).') % (
user.get_full_name() or user.username, mbr.get_role_display())
else:
mbr.role = role
mbr.save()
- message = '%s: role changed to %s.' % (
+ message = _('%s: role changed to %s.') % (
user.get_full_name() or user.username,
mbr.get_role_display())
groupcode = POST.get('groupcode','').strip()
if not groupcode:
- message = 'No group code or section number provided.'
+ message = _('No group code or section number provided.')
message_iserror = True
else:
group, created = models.Group.objects.get_or_create(
site=site, external_id=groupcode)
- message = 'Group %s added.' % groupcode
+ message = _('Group %s added.') % groupcode
site.save()
return g.render('edit_site_permissions.xhtml', **locals())