From 6b2b8e72b7c9399334550aeb16c82e6ef41e6fff Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Fri, 20 Sep 2013 09:41:21 -0400
Subject: [PATCH] Implemented "exclude facet" functionality. Progress on
 VUFIND-177.

---
 languages/en-gb.ini                           | 1547 +++++++++--------
 languages/en.ini                              |    1 +
 .../VuFind/src/VuFind/Search/Base/Params.php  |   10 +-
 .../src/VuFind/Search/Summon/Params.php       |    6 +-
 .../src/VuFind/Search/UrlQueryHelper.php      |   17 +-
 .../templates/Recommend/SideFacets.phtml      |    9 +-
 .../templates/Recommend/SideFacets.phtml      |    4 +-
 7 files changed, 809 insertions(+), 785 deletions(-)

diff --git a/languages/en-gb.ini b/languages/en-gb.ini
index e97fca18dc8..56fde0820c9 100644
--- a/languages/en-gb.ini
+++ b/languages/en-gb.ini
@@ -1,774 +1,775 @@
-; For future reference:
-;English = English
-Access = Access
-Account = Account
-Add = Add
-Add a Note = "Add a Note"
-Add Tag = "Add Tag"
-Add Tags = "Add Tags"
-Add to another list = "Add to another list"
-Add to Book Bag = "Add to Book Bag"
-Add to favorites = "Add to Favourites"
-Add your comment = "Add your comment"
-Address = Address
-add_comment_fail_blank = "Comment cannot be blank."
-add_comment_success = "Comment added."
-add_favorite_fail = "Error: Record not saved"
-add_favorite_prefix = Add
-add_favorite_suffix = "to favourites"
-add_list_fail = "Error: List not created"
-add_other_libraries = "Include articles at other libraries"
-add_search       = "Add Search Field"
-add_search_group = "Add Search Group"
-add_tag_error = "Error: Could Not Save Tags"
-add_tag_note = "Spaces will separate tags.  Use quotes for multi-word tags."
-add_tag_success = "Tags Saved"
-Advanced = Advanced
-Advanced Search = "Advanced Search"
-advSearchError_noRights    = "I'm sorry, but you don't have permission to edit that search. Perhaps your browser session has expired?"
-advSearchError_notAdvanced = "The search you have requested to edit is not an advanced search."
-advSearchError_notFound    = "The search you have requested was not found."
-adv_search_all          = "All Fields"
-adv_search_author       = Author
-adv_search_callnumber   = "Classmarks"
-adv_search_filters      = "Applied Filters"
-adv_search_isn          = ISBN/ISSN
-adv_search_journaltitle = "Journal Title"
-adv_search_label = "Search for"
-adv_search_publisher    = Publisher
-adv_search_select_all   = "select all"
-adv_search_series       = Series
-adv_search_subject      = Subject
-adv_search_title        = Title
-adv_search_toc          = "Table of Contents"
-adv_search_year         = "Year of Publication"
-All Fields = "All Fields"
-All Pages Loaded = "All Pages Loaded"
-alphabrowse_matches = "Titles"
-An error has occurred = "An error has occurred"
-AND = AND
-APA Citation = "APA Citation"
-Ask a Librarian = "Ask a Librarian"
-Audience = Audience
-Audio = Audio
-authentication_error_admin = "We cannot log you in at this time.  Please contact your system administrator for assistance."
-authentication_error_blank = "Login information cannot be blank."
-authentication_error_denied = "Credentials do not match! Access denied."
-authentication_error_invalid = "Invalid login -- please try again."
-authentication_error_loggedout = "You have logged out."
-authentication_error_technical = "We cannot log you in at this time.  Please try again later."
-Author = Author
-Author Browse = "Author Browse"
-Author Notes = "Author Notes"
-Author Results for = "Author Results for"
-Author Search Results = "Author Search Results"
-Authors Related to Your Search = "Authors Related to Your Search"
-Auto configuration is currently disabled = "Auto configuration is currently disabled"
-auto_configure_description = "If this is a new installation, you may be able to fix the error using VuFind's Auto Configure tool."
-auto_configure_disabled = "Auto configuration is disabled."
-auto_configure_title = "Auto Configure"
-Available = Available
-Available Functionality = "Available Functionality"
-Awards = Awards
-Back to Record = "Back to Record"
-Back to Search Results = "Back to Search Results"
-Backtrace = Backtrace
-Bag = Bag
-Balance = Balance
-basic_search_keep_filters = "Retain my current filters"
-Be the first to leave a comment = "Be the first to leave a comment"
-Be the first to tag this record = "Be the first to tag this record"
-Bibliographic Details = "Bibliographic Details"
-Bibliography = Bibliography
-Book = Book
-Book Bag = "Book Bag"
-Book Cover = "Book Cover"
-bookbag_confirm_empty = "Are you sure you want to empty your Book Bag?"
-bookbag_delete = "Delete Selected Book Bag Items"
-bookbag_delete_selected = "Delete Selected"
-bookbag_email = "Email Selected Book Bag Items"
-bookbag_email_selected  = "Email Selected"
-bookbag_export = "Export Selected Book Bag Items"
-bookbag_export_selected  = "Export Selected"
-bookbag_full = "Full"
-bookbag_full_msg = "Your Book Bag is Full"
-bookbag_is_empty = "Your Book Bag is empty"
-bookbag_print_selected  = "Print Selected"
-bookbag_save = "Save Selected Book Bag Items"
-bookbag_save_selected  = "Save Selected"
-Bookmark = Bookmark
-Books = Books
-Braille = Braille
-Browse = Browse
-Browse Alphabetically = "Browse Alphabetically"
-Browse for Authors = "Browse for Authors"
-Browse Home = "Browse Home"
-Browse the Catalog = "Browse the Catalogue"
-Browse the Collection  = "Browse the Collection"
-Browse the Collection Alphabetically = "Browse the Collection Alphabetically"
-browse_dewey = "Classmark (Dewey)"
-browse_lcc = "Call Number (LC)"
-bulk_email_success = "Your item(s) were e-mailed"
-bulk_email_title = "Library Catalogue Items"
-bulk_error_missing = "Some data was missing. Your request was not successful."
-bulk_export_not_supported = "The record(s) you have selected do not support bulk export."
-bulk_fail = "Sorry, an error has occurred. Please try again."
-bulk_noitems_advice = "No items were selected. Please click on a checkbox next to an item and try again."
-bulk_save_error = "Some data was missing. Your items were not saved."
-bulk_save_success = "Your item(s) were saved successfully"
-by = by
-By = By
-By Alphabetical = "By Alphabetical"
-By Author = "By Author"
-By Call Number = "By Classmark"
-By Course = "By Course"
-By Department = "By Department"
-By Era = "By Era"
-By Genre = "By Genre"
-By Instructor = "By Instructor"
-By Popularity = "By Popularity"
-By Recent = "By Recent"
-By Region = "By Region"
-By Title = "By Title"
-By Topic = "By Topic"
-Call Number = "Classmark"
-callnumber_abbrev = "Call #"
-Cannot find record = "Cannot find record"
-Cannot find similar records = "Cannot find similar records"
-Cassette = Cassette
-Catalog Results = "Catalogue Results"
-cat_establish_account = "In order to establish your account profile, please enter the following information:"
-cat_password_abbrev = "Catalogue Password"
-cat_username_abbrev = "Catalogue Username"
-CD = CD
-Check Hold = "Check Hold"
-Check Recall = "Check Recall"
-Checked Out = "Checked Out"
-Checked Out Items = "Checked Out Items"
-Checkedout = "Checked Out"
-Choose a Category to Begin Browsing = "Choose a Category to Begin Browsing"
-Choose a Column to Begin Browsing = "Choose a Column to Begin Browsing"
-Choose a List = "Choose a List"
-citation_issue_abbrev = "no."
-citation_multipage_abbrev = "pp."
-citation_singlepage_abbrev = "p."
-citation_volume_abbrev = "Vol."
-Cite this = "Cite this"
-close = close
-Code = Code
-Collection Browse = "Collection Browse"
-Collection Items = "Collection Items"
-Collections = Collections
-collection_disambiguation = "Found Multiple Matching Collections"
-collection_empty = "No items to display."
-collection_view_record = "View Record"
-Comments = Comments
-comment_error_load = "Error: Could Not Redraw Comment List"
-comment_error_save = "Error: Could Not Save Comment"
-Configuration = "Configuration"
-confirm_delete = "Are you sure you want to delete this?"
-confirm_delete_brief = "Delete Item?"
-confirm_delete_list_brief = "Delete List?"
-confirm_delete_list_text = "Are you sure you want to delete this list?"
-confirm_dialog_no = Cancel
-confirm_dialog_yes = Confirm
-confirm_hold_cancel_all_text = "Do you wish to cancel all your current holds?"
-confirm_hold_cancel_selected_text = "Do you wish to cancel your selected holds?"
-Contents = Contents
-Contributors = "Contributors"
-Copies = Copies
-Copy = Copy
-Corporate Author = "Corporate Author"
-Course = Course
-Course Reserves = "Course Reserves"
-course_reserves_empty_list = "No matching Course Reserves found."
-Cover Image = "Cover Image"
-Create a List = "Create a List"
-Create New Account = "Create New Account"
-Created = Created
-Date = Date
-date_day_placeholder = "D"
-date_from = "From"
-date_month_placeholder = "M"
-date_to = "To"
-date_year_placeholder = "Y"
-Days = Days
-Debug Information = "Debug Information"
-Delete = Delete
-delete_comment_failure = "Could not delete comment."
-delete_comment_success = "Comment deleted."
-delete_list = "Delete List"
-delete_selected = "Delete Selected"
-delete_selected_favorites = "Delete Selected Favourites"
-del_search       = "Remove Search Group"
-Department = Department
-Description = Description
-Desired Username = "Desired Username"
-Details = "Staff View"
-Displaying the top = "Displaying the top"
-Document Inspector = "Document Inspector"
-Due = Due
-Due Date = "Due Date"
-DVD = DVD
-eBook = eBook
-Edit = Edit
-Edit this Advanced Search = "Edit this Advanced Search"
-Edition = Edition
-edit_list = "Edit List"
-edit_list_fail = "Sorry, you are not permitted to edit this list"
-edit_list_success = "List successfully updated."
-Electronic = Electronic
-Email = Email
-Email Address = "Email Address"
-Email address is invalid = "Email address is invalid"
-Email Record = "Email Record"
-Email this = "Email this"
-Email this Search = "Email this Search"
-email_failure = "Error - Message Cannot Be Sent"
-email_link = "Link"
-email_selected = "Email Selected"
-email_selected_favorites = "Email Selected Favourites"
-email_sending = "Sending Message..."
-email_success = "Message Sent"
-Empty = Empty
-Empty Book Bag = "Empty Book Bag"
-Enable Auto Config = "Enable Auto Config"
-End Page = "End Page"
-Era = Era
-error_inconsistent_parameters = "Sorry, an error has occurred. Inconsistent parameters detected."
-error_page_parameter_list_heading = "Request Parameters"
-Exception = Exception
-Excerpt = Excerpt
-exclude_newspapers = "Exclude newspaper articles"
-Expires = Expires
-Export = Export
-Export Favorites = "Export Favourites"
-Export Items = "Export Items"
-Export Record = "Export Record"
-Export to = "Export to "
-export_choose_format = "Please choose an export format."
-export_download = "Download File"
-export_exporting = "Creating Export File"
-export_fail = "Your items were not exported"
-export_invalid_format = "The selected export format is not supported by this record."
-export_missing = "Some data was missing. Your items were not exported."
-export_no_formats = "This record does not support export."
-export_redirect = "Start export to %%service%%"
-export_refworks = "Start export to RefWorks"
-export_save = "Save File"
-export_selected = "Export Selected"
-export_selected_favorites = "Export Selected Favourites"
-export_success = "Export Complete"
-export_unsupported_format = "Unsupported Export Format"
-FAQs = "FAQs"
-Favorites = Favourites
-fav_delete = "Delete Selected Favourites"
-fav_delete_deleting = "Your favourite(s) are being deleted."
-fav_delete_fail = "Sorry, an error has occurred. Your favourite(s) were not deleted."
-fav_delete_missing = "Some data was missing. Your favourite(s) were not deleted."
-fav_delete_success = "Your favourite(s) were deleted."
-fav_delete_warn = "You are about to delete these favourites from all your lists - If you want to delete favourites from a specific list only, please select the list before clicking delete."
-fav_email_fail = "Sorry, an error has occurred. Your favourite(s) were not e-mailed."
-fav_email_missing = "Some data was missing. Your favourite(s) were not emailed."
-fav_email_success = "Your favourite(s) were emailed as requested."
-fav_export = "Export Favourites"
-fav_list_delete = "List has been deleted"
-fav_list_delete_cancel = "This list was not deleted"
-fav_list_delete_fail = "Sorry, an error has occurred. Your list was not deleted."
-Fee = Fee
-Feedback = Feedback
-Feedback Email = "Feedback Email"
-feedback_name = "Name"
-filter_wildcard = "Any"
-Find = Find
-Find More = "Find More"
-Find New Items = "Find New Items"
-Finding Aid = "Finding Aid"
-Fine = Fine
-Fines = Fines
-fine_limit_patron = "You have reached your fines limit and cannot renew items"
-First Name = "First Name"
-fix_metadata = "Yes, fix the metadata; I'll wait"
-for search = "for search"
-Form Submitted! = "Form Submitted!"
-Format = Format
-found = found
-From = "From"
-Full description = "Full description"
-fulltext_limit = "Limit to articles with full text available"
-Genre = Genre
-Geography = Geography
-Get full text = "Get full text"
-Get RSS Feed = "Get RSS Feed"
-Globe = Globe
-Go = "Go"
-Go to Standard View = "Go to Standard View"
-google_map_cluster = "Cluster"
-google_map_cluster_points = "Cluster Points"
-Grid = Grid
-Group = Group
-group_AND  = "ALL Groups"
-group_OR   = "ANY Groups"
-Has Illustrations = "Has Illustrations"
-Help with Advanced Search = "Help with Advanced Search"
-Help with Search Operators = "Help with Search Operators"
-hierarchy_hide_tree = "Hide Full Hierarchy"
-hierarchy_show_tree = "Show Full Hierarchy"
-hierarchy_tree = "Context"
-hierarchy_tree_error = "Sorry, we were unable to load the hierarchical tree"
-hierarchy_view_context = "View Context"
-History = History
-history_delete          = Delete
-history_delete_link     = Delete
-history_empty_search    = "Anything (empty search)"
-history_limits          = Limits
-history_no_searches     = "There are currently no searches in your history."
-history_purge           = "Purge my unsaved searches"
-history_recent_searches = "Your Recent Searches"
-history_results         = Results
-history_save            = Save?
-history_saved_searches  = "Your Saved Searches"
-history_save_link       = Save
-history_search          = Search
-history_time            = Time
-Holdings = Holdings
-Holdings at Other Libraries = "Holdings at Other Libraries"
-Holdings details from = "Holdings details from"
-Holds = Holds
-Holds and Recalls = "Holds and Recalls"
-hold_available = "Available for Collection"
-hold_cancel = "Cancel Hold"
-hold_cancel_all = "Cancel All Holds"
-hold_cancel_fail = "Your request was not cancelled. Please contact the issue desk for further assistance"
-hold_cancel_selected = "Cancel Selected Holds"
-hold_cancel_success = "Your request was successfully cancelled"
-hold_cancel_success_items = "request(s) were successfully cancelled"
-hold_date_invalid = "Please enter a valid date"
-hold_date_past = "Please enter a date in the future"
-hold_empty_selection = "No holds were selected"
-hold_error_blocked = "You do not have sufficient privileges to place a hold on this item"
-hold_error_fail = "Your request failed. Please contact the issue desk for further assistance"
-hold_invalid_pickup = "An invalid pick up location was entered. Please try again"
-hold_login = "for hold and recall information" 
-hold_place = "Place Request"
-hold_place_fail_missing = "Your request failed. Some data was missing. Please contact the issue desk for further assistance"
-hold_place_success = "Your request was successful"
-hold_profile_html = "For hold and recall information, please establish your <a href="%%url%%">Library Catalog Profile</a>."
-hold_queue_position = "Queue Position"
-hold_required_by = "No longer required after"
-hold_success = "Your request was successful"
-Home = Home
-home_browse = "Browse by"
-Identifier = "Identifier"
-Illustrated = Illustrated
-ils_offline_holdings_message = "Holdings and item availability information is currently unavailable. Please accept our apologies for any inconvenience this may cause and contact us for further assistance:"
-ils_offline_home_message = "Your account details and live item information will be unavailable during this time. Please accept our apologies for any inconvenience this may cause and contact us for further assistance:"
-ils_offline_login_message = "Your account details will be unavailable during this time. Please accept our apologies for any inconvenience this may cause and contact us for further assistance:"
-ils_offline_status = "Our Library Management System is currently under maintenance."
-ils_offline_title = "System Under Maintenance"
-Import Record = "Import Record"
-Import to = "Import to "
-in = in
-In This Collection = "In This Collection"
-information = "Information"
-Institution = Institution
-Institutional Login = "Institutional Login"
-Instructor = Instructor
-Internet = Internet
-Invalid Patron Login = "Invalid Patron Login"
-Invalid phone number. = "Invalid phone number."
-Invalid Recipient Email Address = "Invalid Recipient Email Address"
-Invalid Sender Email Address = "Invalid Sender Email Address"
-in_collection_label = "In collection:"
-ISBN = ISBN
-ISBN/ISSN = "ISBN/ISSN"
-ISSN = ISSN
-Issue = Issue
-Item Description = "Item Description"
-Item removed from favorites = "Item removed from favourites"
-Item removed from list = "Item removed from list"
-Items = "Items"
-items = items
-items_added_to_bookbag = "item(s) added to your Book Bag"
-items_already_in_bookbag = "item(s) are either already in your Book Bag or could not be added"
-Journal = Journal
-Journal Articles = "Journal Articles"
-Journal Title = "Journal Title"
-Journals = Journals
-Jump to = "Jump to"
-Keyword = Keyword
-Keyword Filter = "Keyword Filter"
-Kit = Kit
-Language = Language
-large = "Large"
-Last Modified = "Last Modified"
-Last Name = "Last Name"
-less = less
-Library = Library
-Library Catalog Password = "Library Catalogue Password"
-Library Catalog Profile = "Library Catalogue Profile"
-Library Catalog Record = "Library Catalogue Record"
-Library Catalog Search = "Library Catalogue Search"
-Library Catalog Search Result = "Library Catalogue Search Result"
-Library Catalog Username = "Library Catalogue Username"
-Library Web Search = "Library Web Search"
-lightbox_error = "Error: Cannot Load Popup Box"
-Limit To = "Limit To"
-List = List
-list_access_denied = "You do not have permission to view this list."
-list_edit_name_required = "List name is required."
-Loading = Loading
-load_tag_error = "Error: Could Not Load Tags"
-Located = Located
-Location = Location
-Log Out = "Log Out"
-Login = Login
-login_disabled = "Login is not available at this time."
-Logout = Logout
-Main Author = "Main Author"
-Manuscript = Manuscript
-Map = Map
-Map View = "Map View"
-Maps = Maps
-map_results_label = "At this location:"
-Media Format = "Media Format"
-medium = "Medium"
-Message = Message
-Message From Sender = "Message From Sender"
-Metadata Prefix = "Metadata Prefix"
-Microfilm = Microfilm
-MLA Citation = "MLA Citation"
-mobile_link = "You appear to be on a mobile device; switch to mobile view?"
-more = more
-More catalog results = "More catalogue results"
-More options = "More options"
-More Summon results = "More Summon results"
-more_info_toggle = "Show/hide more info."
-Most Recent Received Issues = "Most Recent Received Issues"
-Multiple Call Numbers = "Multiple Classmarks"
-Multiple Locations = "Multiple Locations"
-Musical Score = "Musical Score"
-My Favorites = "My Favourites"
-My Fines = "My Fines"
-My Holds = "My Holds"
-My Profile = "My Profile"
-MyResearch Help = "MyResearch Help"
-Narrow Search = "Narrow Search"
-navigate_back = "Back"
-Need Help? = "Need Help?"
-New Item Feed = "New Item Feed"
-New Item Search = "New Item Search"
-New Item Search Results = "New Item Search Results"
-New Items = "New Items"
-New Title = "New Title"
-Newspaper = Newspaper
-Next = Next
-No citations are available for this record = "No citations are available for this record"
-No Cover Image = "No Cover Image"
-No dependency problems found = "No dependency problems found"
-No excerpts were found for this record. = "No excerpts were found for this record."
-No library account = "No library account"
-No new item information is currently available. = "No new item information is currently available."
-No Preference = "No Preference"
-No reviews were found for this record = "No reviews were found for this record"
-No Tags = "No Tags"
-nohit_filters  = "Filters currently applied to this search:"
-nohit_heading  = "No Results!"
-nohit_no_filters = "No filters were applied to this search."
-nohit_parse_error = "There seems to be a problem with your search query.  Please check the syntax.  If you are not trying to use advanced features, putting the query inside double quotes may help."
-nohit_prefix   = "Your search"
-nohit_spelling = "Perhaps you should try some spelling variations"
-nohit_suffix   = "did not match any resources."
-nohit_suggest = "You may want to try to revise your search phrase by removing some words or check your spelling."
-NOT = NOT
-Not Illustrated = "Not Illustrated"
-Not On Reserve = "Not On Reserve"
-Note = Note
-Notes = Notes
-note_760   = "Main series"
-note_765   = "Translation of"
-note_770   = "Has supplement"
-note_772   = "Supplement to"
-note_773   = "Contained in"
-note_774   = "Constituent unit"
-note_775   = "Other edition available"
-note_777   = "Issued with"
-note_780_0 = "Continues"
-note_780_1 = "Continues in part"
-note_780_2 = "Supersedes"
-note_780_3 = "Supersedes in part"
-note_780_4 = "Formed by"
-note_780_5 = "Absorbed"
-note_780_6 = "Absorbed in part"
-note_780_7 = "Separated from"
-note_785_0 = "Continued by"
-note_785_1 = "Continued in part by"
-note_785_2 = "Superseded by"
-note_785_3 = "Superseded in part by"
-note_785_4 = "Absorbed by"
-note_785_5 = "Absorbed in part by"
-note_785_6 = "Split into"
-note_785_7 = "Merged with"
-note_785_8 = "Changed back to"
-not_applicable = "n/a"
-no_description = "Description not available."
-no_items_selected = "No Items were Selected"
-Number = Number
-OAI Server = "OAI Server"
-of = of
-On Reserve - Ask at Circulation Desk = "On Reserve - Ask at Circulation Desk"
-On Reserve = "On Reserve"
-Online Access = "Online Access"
-on_reserve = "Reserves - Ask at Circulation"
-OR = OR
-or create a new list = "or create a new list"
-original = "Original"
-Other Authors = "Other Authors"
-Other Editions = "Other Editions"
-Other Libraries = "Other Libraries"
-Password = Password
-Password Again = "Password Again"
-Password cannot be blank = "Password cannot be blank"
-Passwords do not match = "Passwords do not match"
-Past = Past
-peer_reviewed_limit = "Limit to articles from peer-reviewed journals"
-Phone Number = "Phone Number"
-Photo = Photo
-Physical Description = "Physical Description"
-Physical Object = "Physical Object"
-pick_up_location = "Collection Library"
-Place a Hold = "Place a Hold"
-Playing Time = "Playing Time"
-Please check back soon = "Please check back soon"
-Please contact the Library Reference Department for assistance = "Please contact the Library Reference Department for assistance"
-Please enable JavaScript. = "Please enable JavaScript."
-Posted by = "Posted by"
-posted_on = "on"
-Preferred Library = "Preferred Library"
-Prev = Prev
-Preview = "Preview"
-Preview from = "Preview from"
-Previous Title = "Previous Title"
-Print = Print
-print_selected = "Print Selected"
-Private = Private
-Production Credits = "Production Credits"
-Profile = Profile
-profile_update = "Your profile was updated as requested"
-Provider = Provider
-Public = Public
-Publication = Publication
-Publication Frequency = "Publication Frequency"
-Published = Published
-Published in = "Published in"
-QR Code = "QR Code"
-qrcode_hide = "Hide QR Code"
-qrcode_show = "Show QR Code"
-query time = "query time"
-Range = Range
-Range slider = "Range slider"
-Read the full review online... = "Read the full review online..."
-Recall This = "Recall This"
-Record Citations = "Record Citations"
-Record Count = "Record Count"
-Region = Region
-Related Author = "Related Author"
-Related Items = "Related Items"
-Related Subjects = "Related Subjects"
-Remove Filters = "Remove Filters"
-Remove from Book Bag = "Remove from Book Bag"
-renew_all = "Renew All Items"
-renew_determine_fail = "We were unable to determine if your item can be renewed. Please contact a member of staff."
-renew_empty_selection = "No items were selected"
-renew_error = "We were unable to renew your item(s) - Please contact a member of staff"
-renew_fail = "This item could not be renewed"
-renew_item = "Renew Item"
-renew_item_due = "Item due within the next 24 hours"
-renew_item_limit = "This item has reached its renewal limit"
-renew_item_no = "This item cannot be renewed"
-renew_item_overdue = "Item Overdue"
-renew_item_requested ="This item has been requested by another user"
-renew_selected = "Renew Selected Items"
-renew_select_box = "Renew Item"
-renew_success = "Renewal Successful"
-Requests = "Requests"
-request_place_text = "Place a Request"
-request_submit_text = "Submit Request"
-Reserves = Reserves
-Reserves Search = "Reserves Search"
-Reserves Search Results = "Reserves Search Results"
-Results for = "Results for"
-Results per page = "Results per page"
-Resumption Token = "Resumption Token"
-Review by = "Review by"
-Reviews = Reviews
-Save = Save
-Save Comment = "Save Comment"
-Saved in = "Saved in"
-save_search        = "Save Search"
-save_search_remove = "Remove Saved Search"
-scholarly_limit = "Limit to articles from scholarly journals"
-Scroll to Load More = "Scroll to Load More"
-Search = Search
-Search For = "Search For"
-Search For Items on Reserve = "Search For Items on Reserve"
-Search History = "Search History"
-Search Home = "Search Home"
-Search Options = "Search Options"
-Search Results = "Search Results"
-search results of = "search results of"
-Search Tips = "Search Tips"
-Search Tools = "Search Tools"
-Search Type = "Search Type"
-search_AND = "ALL Terms"
-search_groups    = "Search Groups"
-search_match     = Match
-search_NOT = "NO Terms"
-search_OR  = "ANY Terms"
-search_save_success = "Search saved successfully."
-search_unsave_success = "Saved search removed successfully."
-see all = "see all"
-See also = "See also"
-Select this record = "Select this record"
-Select your carrier = "Select your carrier"
-Selected = "Selected"
-select_page = "Select Page"
-Send = Send
-Send us your feedback! = "Send us your feedback!"
-Sensor Image = "Sensor Image"
-Serial = Serial
-Series = Series
-Set = Set
-Showing = Showing
-Similar Items = "Similar Items"
-skip_confirm = "Are you sure you want to skip this step?"
-skip_fix_metadata = "Do not fix the metadata at this time."
-skip_step = "Skip this step"
-Slide = Slide
-sms_failure = "Error!  Could not send message."
-sms_phone_number = "10-Digit Phone Number"
-sms_sending = "Sending message..."
-sms_success = "Message sent."
-Software = Software
-Sorry, but the help you requested is unavailable in your language. = "Sorry, but the help you requested is unavailable in your language."
-Sort = Sort
-sort_author     = Author
-sort_author_author     = Alphabetical
-sort_author_relevance  = Popularity
-sort_callnumber = "Classmark"
-sort_relevance  = Relevance
-sort_title      = Title
-sort_year       = "Date Descending"
-sort_year asc   = "Date Ascending"
-spell_expand_alt = "Expand Search"
-spell_suggest    = "Search alternatives"
-Staff View = "Staff View"
-Start a new Advanced Search = "Start a new Advanced Search"
-Start a new Basic Search = "Start a new Basic Search"
-Start Page = "Start Page"
-starting from = "starting from"
-Status = Status
-status_unknown_message = "Live Status Unavailable"
-Subcollection = Subcollection
-Subject = Subject
-Subject Area = "Subject Area"
-Subject Recommendations = "Subject Recommendations"
-Subjects = "Subjects"
-Submit = Submit
-Suggested Topics = "Suggested Topics"
-Summary = Summary
-Summon Results = "Summon Results"
-summon_database_recommendations = "You may find additional resources here:"
-Supplied by Amazon = "Supplied by Amazon"
-Switch view to = "Switch view to"
-switchquery_intro = "You may be able to get more results by adjusting your search query."
-switchquery_lowercasebools = "If you are trying to use Boolean operators, they must be ALL CAPS"
-switchquery_unwantedbools = "The words AND, OR and NOT may confuse the search; try adding quotes"
-switchquery_unwantedquotes = "Removing quotes may allow a broader search"
-switchquery_wildcard = "Adding a wildcard symbol may retrieve word variants"
-System Unavailable = "System Unavailable"
-Table of Contents = "Table of Contents"
-Table of Contents unavailable = "Table of Contents unavailable"
-Tag = Tag
-Tags = Tags
-test_fail = "Failed"
-test_fix = "Fix"
-test_ok = "OK"
-Text this = "Text this"
-Thank you for your feedback. = "Thank you for your feedback."
-That email address is already used = "That email address is already used"
-That username is already taken = "That username is already taken"
-The record you selected is not part of any of your lists. = "The record you selected is not part of any of your lists."
-The record you selected is not part of the selected list. = "The record you selected is not part of the selected list."
-The system is currently unavailable due to system maintenance = "The system is currently unavailable due to system maintenance"
-Theme = Theme
-This email was sent from = "This email was sent from"
-This field is required = "This field is required"
-This item is already part of the following list/lists = "This item is already part of the following list/lists"
-Title = Title
-Title not available = "Title not available"
-title_hold_place = "Place a Title Level Request"
-To = "To"
-too_many_favorites = "This list is too large to display all at once. Try rearranging your favourites into more lists or limiting using tags."
-too_many_new_items = "There are too many new items to display in a single list. Try limiting your search."
-too_many_reserves = "There are too many course reserves to display in a single list. Try limiting your search."
-Topic = Topic
-Topics = Topics
-top_facet_additional_prefix  = "Additional "
-top_facet_suffix             = "... within your search."
-tree_search_limit_reached_html = "Your search returned too many results to display in the tree. Showing only the first <b>%%limit%%</b> items. For a full search click <a id="fullSearchLink" href="%%url%%" target="_blank">here.</a>"
-University Library = "University Library"
-Unknown = Unknown
-Upgrade VuFind = "Upgrade VuFind"
-upgrade_description = "If you are upgrading a previous VuFind version, you can load your old settings with this tool."
-Use for = "Use for"
-Use instead = "Use instead"
-User Account = "User Account"
-Username = Username
-Username cannot be blank = "Username cannot be blank"
-VHS = VHS
-Video = Video
-Video Clips = "Video Clips"
-Videos = Videos
-view already selected = "view already selected"
-View Book Bag = "View Book Bag"
-View Full Collection = "View Full Collection"
-View Full Record = "View Full Record"
-View online: Full view Book Preview from the Hathi Trust = "View online: Full view Book Preview from the Hathi Trust"
-View Record = "View Record"
-View Records = "View Records"
-Volume = Volume
-Volume Holdings = "Volume Holdings"
-vudl_tab_docs = "Docs"
-vudl_tab_pages = "Pages"
-VuFind Configuration = "VuFind Configuration"
-vufind_upgrade_fail = "We cannot upgrade VuFind at this time"
-Warning: These citations may not always be 100% accurate = "Warning: These citations may not always be 100% accurate"
-wcterms_broader = "Broader Subjects"
-wcterms_exact = "Related Subjects"
-wcterms_narrower = "Narrower Subjects"
-Web = Web
-widen_prefix = "Try widening your search to"
-wiki_link = "Provided by Wikipedia"
-with filters = "with filters"
-with_selected = "with selected"
-Year of Publication = "Year of Publication"
-Yesterday = Yesterday
-You do not have any fines = "You do not have any fines"
-You do not have any holds or recalls placed = "You do not have any holds or recalls placed"
-You do not have any items checked out = "You do not have any items checked out"
-You do not have any saved resources = "You do not have any saved resources"
-You must be logged in first = "You must be logged in first"
-Your Account = "Your Account"
-Your book bag is empty = "Your book bag is empty"
-Your Checked Out Items = "Your Checked Out Items"
-Your Comment = "Your Comment"
-Your Favorites = "Your Favourites"
-Your Fines = "Your Fines"
-Your Holds and Recalls = "Your Holds and Recalls"
-Your Lists = "Your Lists"
-Your Profile = "Your Profile"
-Your search terms = "Your search terms"
-Your Tags = "Your Tags"
-Zip = Zip
+; For future reference:
+;English = English
+Access = Access
+Account = Account
+Add = Add
+Add a Note = "Add a Note"
+Add Tag = "Add Tag"
+Add Tags = "Add Tags"
+Add to another list = "Add to another list"
+Add to Book Bag = "Add to Book Bag"
+Add to favorites = "Add to Favourites"
+Add your comment = "Add your comment"
+Address = Address
+add_comment_fail_blank = "Comment cannot be blank."
+add_comment_success = "Comment added."
+add_favorite_fail = "Error: Record not saved"
+add_favorite_prefix = Add
+add_favorite_suffix = "to favourites"
+add_list_fail = "Error: List not created"
+add_other_libraries = "Include articles at other libraries"
+add_search       = "Add Search Field"
+add_search_group = "Add Search Group"
+add_tag_error = "Error: Could Not Save Tags"
+add_tag_note = "Spaces will separate tags.  Use quotes for multi-word tags."
+add_tag_success = "Tags Saved"
+Advanced = Advanced
+Advanced Search = "Advanced Search"
+advSearchError_noRights    = "I'm sorry, but you don't have permission to edit that search. Perhaps your browser session has expired?"
+advSearchError_notAdvanced = "The search you have requested to edit is not an advanced search."
+advSearchError_notFound    = "The search you have requested was not found."
+adv_search_all          = "All Fields"
+adv_search_author       = Author
+adv_search_callnumber   = "Classmarks"
+adv_search_filters      = "Applied Filters"
+adv_search_isn          = ISBN/ISSN
+adv_search_journaltitle = "Journal Title"
+adv_search_label = "Search for"
+adv_search_publisher    = Publisher
+adv_search_select_all   = "select all"
+adv_search_series       = Series
+adv_search_subject      = Subject
+adv_search_title        = Title
+adv_search_toc          = "Table of Contents"
+adv_search_year         = "Year of Publication"
+All Fields = "All Fields"
+All Pages Loaded = "All Pages Loaded"
+alphabrowse_matches = "Titles"
+An error has occurred = "An error has occurred"
+AND = AND
+APA Citation = "APA Citation"
+Ask a Librarian = "Ask a Librarian"
+Audience = Audience
+Audio = Audio
+authentication_error_admin = "We cannot log you in at this time.  Please contact your system administrator for assistance."
+authentication_error_blank = "Login information cannot be blank."
+authentication_error_denied = "Credentials do not match! Access denied."
+authentication_error_invalid = "Invalid login -- please try again."
+authentication_error_loggedout = "You have logged out."
+authentication_error_technical = "We cannot log you in at this time.  Please try again later."
+Author = Author
+Author Browse = "Author Browse"
+Author Notes = "Author Notes"
+Author Results for = "Author Results for"
+Author Search Results = "Author Search Results"
+Authors Related to Your Search = "Authors Related to Your Search"
+Auto configuration is currently disabled = "Auto configuration is currently disabled"
+auto_configure_description = "If this is a new installation, you may be able to fix the error using VuFind's Auto Configure tool."
+auto_configure_disabled = "Auto configuration is disabled."
+auto_configure_title = "Auto Configure"
+Available = Available
+Available Functionality = "Available Functionality"
+Awards = Awards
+Back to Record = "Back to Record"
+Back to Search Results = "Back to Search Results"
+Backtrace = Backtrace
+Bag = Bag
+Balance = Balance
+basic_search_keep_filters = "Retain my current filters"
+Be the first to leave a comment = "Be the first to leave a comment"
+Be the first to tag this record = "Be the first to tag this record"
+Bibliographic Details = "Bibliographic Details"
+Bibliography = Bibliography
+Book = Book
+Book Bag = "Book Bag"
+Book Cover = "Book Cover"
+bookbag_confirm_empty = "Are you sure you want to empty your Book Bag?"
+bookbag_delete = "Delete Selected Book Bag Items"
+bookbag_delete_selected = "Delete Selected"
+bookbag_email = "Email Selected Book Bag Items"
+bookbag_email_selected  = "Email Selected"
+bookbag_export = "Export Selected Book Bag Items"
+bookbag_export_selected  = "Export Selected"
+bookbag_full = "Full"
+bookbag_full_msg = "Your Book Bag is Full"
+bookbag_is_empty = "Your Book Bag is empty"
+bookbag_print_selected  = "Print Selected"
+bookbag_save = "Save Selected Book Bag Items"
+bookbag_save_selected  = "Save Selected"
+Bookmark = Bookmark
+Books = Books
+Braille = Braille
+Browse = Browse
+Browse Alphabetically = "Browse Alphabetically"
+Browse for Authors = "Browse for Authors"
+Browse Home = "Browse Home"
+Browse the Catalog = "Browse the Catalogue"
+Browse the Collection  = "Browse the Collection"
+Browse the Collection Alphabetically = "Browse the Collection Alphabetically"
+browse_dewey = "Classmark (Dewey)"
+browse_lcc = "Call Number (LC)"
+bulk_email_success = "Your item(s) were e-mailed"
+bulk_email_title = "Library Catalogue Items"
+bulk_error_missing = "Some data was missing. Your request was not successful."
+bulk_export_not_supported = "The record(s) you have selected do not support bulk export."
+bulk_fail = "Sorry, an error has occurred. Please try again."
+bulk_noitems_advice = "No items were selected. Please click on a checkbox next to an item and try again."
+bulk_save_error = "Some data was missing. Your items were not saved."
+bulk_save_success = "Your item(s) were saved successfully"
+by = by
+By = By
+By Alphabetical = "By Alphabetical"
+By Author = "By Author"
+By Call Number = "By Classmark"
+By Course = "By Course"
+By Department = "By Department"
+By Era = "By Era"
+By Genre = "By Genre"
+By Instructor = "By Instructor"
+By Popularity = "By Popularity"
+By Recent = "By Recent"
+By Region = "By Region"
+By Title = "By Title"
+By Topic = "By Topic"
+Call Number = "Classmark"
+callnumber_abbrev = "Call #"
+Cannot find record = "Cannot find record"
+Cannot find similar records = "Cannot find similar records"
+Cassette = Cassette
+Catalog Results = "Catalogue Results"
+cat_establish_account = "In order to establish your account profile, please enter the following information:"
+cat_password_abbrev = "Catalogue Password"
+cat_username_abbrev = "Catalogue Username"
+CD = CD
+Check Hold = "Check Hold"
+Check Recall = "Check Recall"
+Checked Out = "Checked Out"
+Checked Out Items = "Checked Out Items"
+Checkedout = "Checked Out"
+Choose a Category to Begin Browsing = "Choose a Category to Begin Browsing"
+Choose a Column to Begin Browsing = "Choose a Column to Begin Browsing"
+Choose a List = "Choose a List"
+citation_issue_abbrev = "no."
+citation_multipage_abbrev = "pp."
+citation_singlepage_abbrev = "p."
+citation_volume_abbrev = "Vol."
+Cite this = "Cite this"
+close = close
+Code = Code
+Collection Browse = "Collection Browse"
+Collection Items = "Collection Items"
+Collections = Collections
+collection_disambiguation = "Found Multiple Matching Collections"
+collection_empty = "No items to display."
+collection_view_record = "View Record"
+Comments = Comments
+comment_error_load = "Error: Could Not Redraw Comment List"
+comment_error_save = "Error: Could Not Save Comment"
+Configuration = "Configuration"
+confirm_delete = "Are you sure you want to delete this?"
+confirm_delete_brief = "Delete Item?"
+confirm_delete_list_brief = "Delete List?"
+confirm_delete_list_text = "Are you sure you want to delete this list?"
+confirm_dialog_no = Cancel
+confirm_dialog_yes = Confirm
+confirm_hold_cancel_all_text = "Do you wish to cancel all your current holds?"
+confirm_hold_cancel_selected_text = "Do you wish to cancel your selected holds?"
+Contents = Contents
+Contributors = "Contributors"
+Copies = Copies
+Copy = Copy
+Corporate Author = "Corporate Author"
+Course = Course
+Course Reserves = "Course Reserves"
+course_reserves_empty_list = "No matching Course Reserves found."
+Cover Image = "Cover Image"
+Create a List = "Create a List"
+Create New Account = "Create New Account"
+Created = Created
+Date = Date
+date_day_placeholder = "D"
+date_from = "From"
+date_month_placeholder = "M"
+date_to = "To"
+date_year_placeholder = "Y"
+Days = Days
+Debug Information = "Debug Information"
+Delete = Delete
+delete_comment_failure = "Could not delete comment."
+delete_comment_success = "Comment deleted."
+delete_list = "Delete List"
+delete_selected = "Delete Selected"
+delete_selected_favorites = "Delete Selected Favourites"
+del_search       = "Remove Search Group"
+Department = Department
+Description = Description
+Desired Username = "Desired Username"
+Details = "Staff View"
+Displaying the top = "Displaying the top"
+Document Inspector = "Document Inspector"
+Due = Due
+Due Date = "Due Date"
+DVD = DVD
+eBook = eBook
+Edit = Edit
+Edit this Advanced Search = "Edit this Advanced Search"
+Edition = Edition
+edit_list = "Edit List"
+edit_list_fail = "Sorry, you are not permitted to edit this list"
+edit_list_success = "List successfully updated."
+Electronic = Electronic
+Email = Email
+Email Address = "Email Address"
+Email address is invalid = "Email address is invalid"
+Email Record = "Email Record"
+Email this = "Email this"
+Email this Search = "Email this Search"
+email_failure = "Error - Message Cannot Be Sent"
+email_link = "Link"
+email_selected = "Email Selected"
+email_selected_favorites = "Email Selected Favourites"
+email_sending = "Sending Message..."
+email_success = "Message Sent"
+Empty = Empty
+Empty Book Bag = "Empty Book Bag"
+Enable Auto Config = "Enable Auto Config"
+End Page = "End Page"
+Era = Era
+error_inconsistent_parameters = "Sorry, an error has occurred. Inconsistent parameters detected."
+error_page_parameter_list_heading = "Request Parameters"
+Exception = Exception
+Excerpt = Excerpt
+exclude_facet = "[exclude]"
+exclude_newspapers = "Exclude newspaper articles"
+Expires = Expires
+Export = Export
+Export Favorites = "Export Favourites"
+Export Items = "Export Items"
+Export Record = "Export Record"
+Export to = "Export to "
+export_choose_format = "Please choose an export format."
+export_download = "Download File"
+export_exporting = "Creating Export File"
+export_fail = "Your items were not exported"
+export_invalid_format = "The selected export format is not supported by this record."
+export_missing = "Some data was missing. Your items were not exported."
+export_no_formats = "This record does not support export."
+export_redirect = "Start export to %%service%%"
+export_refworks = "Start export to RefWorks"
+export_save = "Save File"
+export_selected = "Export Selected"
+export_selected_favorites = "Export Selected Favourites"
+export_success = "Export Complete"
+export_unsupported_format = "Unsupported Export Format"
+FAQs = "FAQs"
+Favorites = Favourites
+fav_delete = "Delete Selected Favourites"
+fav_delete_deleting = "Your favourite(s) are being deleted."
+fav_delete_fail = "Sorry, an error has occurred. Your favourite(s) were not deleted."
+fav_delete_missing = "Some data was missing. Your favourite(s) were not deleted."
+fav_delete_success = "Your favourite(s) were deleted."
+fav_delete_warn = "You are about to delete these favourites from all your lists - If you want to delete favourites from a specific list only, please select the list before clicking delete."
+fav_email_fail = "Sorry, an error has occurred. Your favourite(s) were not e-mailed."
+fav_email_missing = "Some data was missing. Your favourite(s) were not emailed."
+fav_email_success = "Your favourite(s) were emailed as requested."
+fav_export = "Export Favourites"
+fav_list_delete = "List has been deleted"
+fav_list_delete_cancel = "This list was not deleted"
+fav_list_delete_fail = "Sorry, an error has occurred. Your list was not deleted."
+Fee = Fee
+Feedback = Feedback
+Feedback Email = "Feedback Email"
+feedback_name = "Name"
+filter_wildcard = "Any"
+Find = Find
+Find More = "Find More"
+Find New Items = "Find New Items"
+Finding Aid = "Finding Aid"
+Fine = Fine
+Fines = Fines
+fine_limit_patron = "You have reached your fines limit and cannot renew items"
+First Name = "First Name"
+fix_metadata = "Yes, fix the metadata; I'll wait"
+for search = "for search"
+Form Submitted! = "Form Submitted!"
+Format = Format
+found = found
+From = "From"
+Full description = "Full description"
+fulltext_limit = "Limit to articles with full text available"
+Genre = Genre
+Geography = Geography
+Get full text = "Get full text"
+Get RSS Feed = "Get RSS Feed"
+Globe = Globe
+Go = "Go"
+Go to Standard View = "Go to Standard View"
+google_map_cluster = "Cluster"
+google_map_cluster_points = "Cluster Points"
+Grid = Grid
+Group = Group
+group_AND  = "ALL Groups"
+group_OR   = "ANY Groups"
+Has Illustrations = "Has Illustrations"
+Help with Advanced Search = "Help with Advanced Search"
+Help with Search Operators = "Help with Search Operators"
+hierarchy_hide_tree = "Hide Full Hierarchy"
+hierarchy_show_tree = "Show Full Hierarchy"
+hierarchy_tree = "Context"
+hierarchy_tree_error = "Sorry, we were unable to load the hierarchical tree"
+hierarchy_view_context = "View Context"
+History = History
+history_delete          = Delete
+history_delete_link     = Delete
+history_empty_search    = "Anything (empty search)"
+history_limits          = Limits
+history_no_searches     = "There are currently no searches in your history."
+history_purge           = "Purge my unsaved searches"
+history_recent_searches = "Your Recent Searches"
+history_results         = Results
+history_save            = Save?
+history_saved_searches  = "Your Saved Searches"
+history_save_link       = Save
+history_search          = Search
+history_time            = Time
+Holdings = Holdings
+Holdings at Other Libraries = "Holdings at Other Libraries"
+Holdings details from = "Holdings details from"
+Holds = Holds
+Holds and Recalls = "Holds and Recalls"
+hold_available = "Available for Collection"
+hold_cancel = "Cancel Hold"
+hold_cancel_all = "Cancel All Holds"
+hold_cancel_fail = "Your request was not cancelled. Please contact the issue desk for further assistance"
+hold_cancel_selected = "Cancel Selected Holds"
+hold_cancel_success = "Your request was successfully cancelled"
+hold_cancel_success_items = "request(s) were successfully cancelled"
+hold_date_invalid = "Please enter a valid date"
+hold_date_past = "Please enter a date in the future"
+hold_empty_selection = "No holds were selected"
+hold_error_blocked = "You do not have sufficient privileges to place a hold on this item"
+hold_error_fail = "Your request failed. Please contact the issue desk for further assistance"
+hold_invalid_pickup = "An invalid pick up location was entered. Please try again"
+hold_login = "for hold and recall information" 
+hold_place = "Place Request"
+hold_place_fail_missing = "Your request failed. Some data was missing. Please contact the issue desk for further assistance"
+hold_place_success = "Your request was successful"
+hold_profile_html = "For hold and recall information, please establish your <a href="%%url%%">Library Catalog Profile</a>."
+hold_queue_position = "Queue Position"
+hold_required_by = "No longer required after"
+hold_success = "Your request was successful"
+Home = Home
+home_browse = "Browse by"
+Identifier = "Identifier"
+Illustrated = Illustrated
+ils_offline_holdings_message = "Holdings and item availability information is currently unavailable. Please accept our apologies for any inconvenience this may cause and contact us for further assistance:"
+ils_offline_home_message = "Your account details and live item information will be unavailable during this time. Please accept our apologies for any inconvenience this may cause and contact us for further assistance:"
+ils_offline_login_message = "Your account details will be unavailable during this time. Please accept our apologies for any inconvenience this may cause and contact us for further assistance:"
+ils_offline_status = "Our Library Management System is currently under maintenance."
+ils_offline_title = "System Under Maintenance"
+Import Record = "Import Record"
+Import to = "Import to "
+in = in
+In This Collection = "In This Collection"
+information = "Information"
+Institution = Institution
+Institutional Login = "Institutional Login"
+Instructor = Instructor
+Internet = Internet
+Invalid Patron Login = "Invalid Patron Login"
+Invalid phone number. = "Invalid phone number."
+Invalid Recipient Email Address = "Invalid Recipient Email Address"
+Invalid Sender Email Address = "Invalid Sender Email Address"
+in_collection_label = "In collection:"
+ISBN = ISBN
+ISBN/ISSN = "ISBN/ISSN"
+ISSN = ISSN
+Issue = Issue
+Item Description = "Item Description"
+Item removed from favorites = "Item removed from favourites"
+Item removed from list = "Item removed from list"
+Items = "Items"
+items = items
+items_added_to_bookbag = "item(s) added to your Book Bag"
+items_already_in_bookbag = "item(s) are either already in your Book Bag or could not be added"
+Journal = Journal
+Journal Articles = "Journal Articles"
+Journal Title = "Journal Title"
+Journals = Journals
+Jump to = "Jump to"
+Keyword = Keyword
+Keyword Filter = "Keyword Filter"
+Kit = Kit
+Language = Language
+large = "Large"
+Last Modified = "Last Modified"
+Last Name = "Last Name"
+less = less
+Library = Library
+Library Catalog Password = "Library Catalogue Password"
+Library Catalog Profile = "Library Catalogue Profile"
+Library Catalog Record = "Library Catalogue Record"
+Library Catalog Search = "Library Catalogue Search"
+Library Catalog Search Result = "Library Catalogue Search Result"
+Library Catalog Username = "Library Catalogue Username"
+Library Web Search = "Library Web Search"
+lightbox_error = "Error: Cannot Load Popup Box"
+Limit To = "Limit To"
+List = List
+list_access_denied = "You do not have permission to view this list."
+list_edit_name_required = "List name is required."
+Loading = Loading
+load_tag_error = "Error: Could Not Load Tags"
+Located = Located
+Location = Location
+Log Out = "Log Out"
+Login = Login
+login_disabled = "Login is not available at this time."
+Logout = Logout
+Main Author = "Main Author"
+Manuscript = Manuscript
+Map = Map
+Map View = "Map View"
+Maps = Maps
+map_results_label = "At this location:"
+Media Format = "Media Format"
+medium = "Medium"
+Message = Message
+Message From Sender = "Message From Sender"
+Metadata Prefix = "Metadata Prefix"
+Microfilm = Microfilm
+MLA Citation = "MLA Citation"
+mobile_link = "You appear to be on a mobile device; switch to mobile view?"
+more = more
+More catalog results = "More catalogue results"
+More options = "More options"
+More Summon results = "More Summon results"
+more_info_toggle = "Show/hide more info."
+Most Recent Received Issues = "Most Recent Received Issues"
+Multiple Call Numbers = "Multiple Classmarks"
+Multiple Locations = "Multiple Locations"
+Musical Score = "Musical Score"
+My Favorites = "My Favourites"
+My Fines = "My Fines"
+My Holds = "My Holds"
+My Profile = "My Profile"
+MyResearch Help = "MyResearch Help"
+Narrow Search = "Narrow Search"
+navigate_back = "Back"
+Need Help? = "Need Help?"
+New Item Feed = "New Item Feed"
+New Item Search = "New Item Search"
+New Item Search Results = "New Item Search Results"
+New Items = "New Items"
+New Title = "New Title"
+Newspaper = Newspaper
+Next = Next
+No citations are available for this record = "No citations are available for this record"
+No Cover Image = "No Cover Image"
+No dependency problems found = "No dependency problems found"
+No excerpts were found for this record. = "No excerpts were found for this record."
+No library account = "No library account"
+No new item information is currently available. = "No new item information is currently available."
+No Preference = "No Preference"
+No reviews were found for this record = "No reviews were found for this record"
+No Tags = "No Tags"
+nohit_filters  = "Filters currently applied to this search:"
+nohit_heading  = "No Results!"
+nohit_no_filters = "No filters were applied to this search."
+nohit_parse_error = "There seems to be a problem with your search query.  Please check the syntax.  If you are not trying to use advanced features, putting the query inside double quotes may help."
+nohit_prefix   = "Your search"
+nohit_spelling = "Perhaps you should try some spelling variations"
+nohit_suffix   = "did not match any resources."
+nohit_suggest = "You may want to try to revise your search phrase by removing some words or check your spelling."
+NOT = NOT
+Not Illustrated = "Not Illustrated"
+Not On Reserve = "Not On Reserve"
+Note = Note
+Notes = Notes
+note_760   = "Main series"
+note_765   = "Translation of"
+note_770   = "Has supplement"
+note_772   = "Supplement to"
+note_773   = "Contained in"
+note_774   = "Constituent unit"
+note_775   = "Other edition available"
+note_777   = "Issued with"
+note_780_0 = "Continues"
+note_780_1 = "Continues in part"
+note_780_2 = "Supersedes"
+note_780_3 = "Supersedes in part"
+note_780_4 = "Formed by"
+note_780_5 = "Absorbed"
+note_780_6 = "Absorbed in part"
+note_780_7 = "Separated from"
+note_785_0 = "Continued by"
+note_785_1 = "Continued in part by"
+note_785_2 = "Superseded by"
+note_785_3 = "Superseded in part by"
+note_785_4 = "Absorbed by"
+note_785_5 = "Absorbed in part by"
+note_785_6 = "Split into"
+note_785_7 = "Merged with"
+note_785_8 = "Changed back to"
+not_applicable = "n/a"
+no_description = "Description not available."
+no_items_selected = "No Items were Selected"
+Number = Number
+OAI Server = "OAI Server"
+of = of
+On Reserve - Ask at Circulation Desk = "On Reserve - Ask at Circulation Desk"
+On Reserve = "On Reserve"
+Online Access = "Online Access"
+on_reserve = "Reserves - Ask at Circulation"
+OR = OR
+or create a new list = "or create a new list"
+original = "Original"
+Other Authors = "Other Authors"
+Other Editions = "Other Editions"
+Other Libraries = "Other Libraries"
+Password = Password
+Password Again = "Password Again"
+Password cannot be blank = "Password cannot be blank"
+Passwords do not match = "Passwords do not match"
+Past = Past
+peer_reviewed_limit = "Limit to articles from peer-reviewed journals"
+Phone Number = "Phone Number"
+Photo = Photo
+Physical Description = "Physical Description"
+Physical Object = "Physical Object"
+pick_up_location = "Collection Library"
+Place a Hold = "Place a Hold"
+Playing Time = "Playing Time"
+Please check back soon = "Please check back soon"
+Please contact the Library Reference Department for assistance = "Please contact the Library Reference Department for assistance"
+Please enable JavaScript. = "Please enable JavaScript."
+Posted by = "Posted by"
+posted_on = "on"
+Preferred Library = "Preferred Library"
+Prev = Prev
+Preview = "Preview"
+Preview from = "Preview from"
+Previous Title = "Previous Title"
+Print = Print
+print_selected = "Print Selected"
+Private = Private
+Production Credits = "Production Credits"
+Profile = Profile
+profile_update = "Your profile was updated as requested"
+Provider = Provider
+Public = Public
+Publication = Publication
+Publication Frequency = "Publication Frequency"
+Published = Published
+Published in = "Published in"
+QR Code = "QR Code"
+qrcode_hide = "Hide QR Code"
+qrcode_show = "Show QR Code"
+query time = "query time"
+Range = Range
+Range slider = "Range slider"
+Read the full review online... = "Read the full review online..."
+Recall This = "Recall This"
+Record Citations = "Record Citations"
+Record Count = "Record Count"
+Region = Region
+Related Author = "Related Author"
+Related Items = "Related Items"
+Related Subjects = "Related Subjects"
+Remove Filters = "Remove Filters"
+Remove from Book Bag = "Remove from Book Bag"
+renew_all = "Renew All Items"
+renew_determine_fail = "We were unable to determine if your item can be renewed. Please contact a member of staff."
+renew_empty_selection = "No items were selected"
+renew_error = "We were unable to renew your item(s) - Please contact a member of staff"
+renew_fail = "This item could not be renewed"
+renew_item = "Renew Item"
+renew_item_due = "Item due within the next 24 hours"
+renew_item_limit = "This item has reached its renewal limit"
+renew_item_no = "This item cannot be renewed"
+renew_item_overdue = "Item Overdue"
+renew_item_requested ="This item has been requested by another user"
+renew_selected = "Renew Selected Items"
+renew_select_box = "Renew Item"
+renew_success = "Renewal Successful"
+Requests = "Requests"
+request_place_text = "Place a Request"
+request_submit_text = "Submit Request"
+Reserves = Reserves
+Reserves Search = "Reserves Search"
+Reserves Search Results = "Reserves Search Results"
+Results for = "Results for"
+Results per page = "Results per page"
+Resumption Token = "Resumption Token"
+Review by = "Review by"
+Reviews = Reviews
+Save = Save
+Save Comment = "Save Comment"
+Saved in = "Saved in"
+save_search        = "Save Search"
+save_search_remove = "Remove Saved Search"
+scholarly_limit = "Limit to articles from scholarly journals"
+Scroll to Load More = "Scroll to Load More"
+Search = Search
+Search For = "Search For"
+Search For Items on Reserve = "Search For Items on Reserve"
+Search History = "Search History"
+Search Home = "Search Home"
+Search Options = "Search Options"
+Search Results = "Search Results"
+search results of = "search results of"
+Search Tips = "Search Tips"
+Search Tools = "Search Tools"
+Search Type = "Search Type"
+search_AND = "ALL Terms"
+search_groups    = "Search Groups"
+search_match     = Match
+search_NOT = "NO Terms"
+search_OR  = "ANY Terms"
+search_save_success = "Search saved successfully."
+search_unsave_success = "Saved search removed successfully."
+see all = "see all"
+See also = "See also"
+Select this record = "Select this record"
+Select your carrier = "Select your carrier"
+Selected = "Selected"
+select_page = "Select Page"
+Send = Send
+Send us your feedback! = "Send us your feedback!"
+Sensor Image = "Sensor Image"
+Serial = Serial
+Series = Series
+Set = Set
+Showing = Showing
+Similar Items = "Similar Items"
+skip_confirm = "Are you sure you want to skip this step?"
+skip_fix_metadata = "Do not fix the metadata at this time."
+skip_step = "Skip this step"
+Slide = Slide
+sms_failure = "Error!  Could not send message."
+sms_phone_number = "10-Digit Phone Number"
+sms_sending = "Sending message..."
+sms_success = "Message sent."
+Software = Software
+Sorry, but the help you requested is unavailable in your language. = "Sorry, but the help you requested is unavailable in your language."
+Sort = Sort
+sort_author     = Author
+sort_author_author     = Alphabetical
+sort_author_relevance  = Popularity
+sort_callnumber = "Classmark"
+sort_relevance  = Relevance
+sort_title      = Title
+sort_year       = "Date Descending"
+sort_year asc   = "Date Ascending"
+spell_expand_alt = "Expand Search"
+spell_suggest    = "Search alternatives"
+Staff View = "Staff View"
+Start a new Advanced Search = "Start a new Advanced Search"
+Start a new Basic Search = "Start a new Basic Search"
+Start Page = "Start Page"
+starting from = "starting from"
+Status = Status
+status_unknown_message = "Live Status Unavailable"
+Subcollection = Subcollection
+Subject = Subject
+Subject Area = "Subject Area"
+Subject Recommendations = "Subject Recommendations"
+Subjects = "Subjects"
+Submit = Submit
+Suggested Topics = "Suggested Topics"
+Summary = Summary
+Summon Results = "Summon Results"
+summon_database_recommendations = "You may find additional resources here:"
+Supplied by Amazon = "Supplied by Amazon"
+Switch view to = "Switch view to"
+switchquery_intro = "You may be able to get more results by adjusting your search query."
+switchquery_lowercasebools = "If you are trying to use Boolean operators, they must be ALL CAPS"
+switchquery_unwantedbools = "The words AND, OR and NOT may confuse the search; try adding quotes"
+switchquery_unwantedquotes = "Removing quotes may allow a broader search"
+switchquery_wildcard = "Adding a wildcard symbol may retrieve word variants"
+System Unavailable = "System Unavailable"
+Table of Contents = "Table of Contents"
+Table of Contents unavailable = "Table of Contents unavailable"
+Tag = Tag
+Tags = Tags
+test_fail = "Failed"
+test_fix = "Fix"
+test_ok = "OK"
+Text this = "Text this"
+Thank you for your feedback. = "Thank you for your feedback."
+That email address is already used = "That email address is already used"
+That username is already taken = "That username is already taken"
+The record you selected is not part of any of your lists. = "The record you selected is not part of any of your lists."
+The record you selected is not part of the selected list. = "The record you selected is not part of the selected list."
+The system is currently unavailable due to system maintenance = "The system is currently unavailable due to system maintenance"
+Theme = Theme
+This email was sent from = "This email was sent from"
+This field is required = "This field is required"
+This item is already part of the following list/lists = "This item is already part of the following list/lists"
+Title = Title
+Title not available = "Title not available"
+title_hold_place = "Place a Title Level Request"
+To = "To"
+too_many_favorites = "This list is too large to display all at once. Try rearranging your favourites into more lists or limiting using tags."
+too_many_new_items = "There are too many new items to display in a single list. Try limiting your search."
+too_many_reserves = "There are too many course reserves to display in a single list. Try limiting your search."
+Topic = Topic
+Topics = Topics
+top_facet_additional_prefix  = "Additional "
+top_facet_suffix             = "... within your search."
+tree_search_limit_reached_html = "Your search returned too many results to display in the tree. Showing only the first <b>%%limit%%</b> items. For a full search click <a id="fullSearchLink" href="%%url%%" target="_blank">here.</a>"
+University Library = "University Library"
+Unknown = Unknown
+Upgrade VuFind = "Upgrade VuFind"
+upgrade_description = "If you are upgrading a previous VuFind version, you can load your old settings with this tool."
+Use for = "Use for"
+Use instead = "Use instead"
+User Account = "User Account"
+Username = Username
+Username cannot be blank = "Username cannot be blank"
+VHS = VHS
+Video = Video
+Video Clips = "Video Clips"
+Videos = Videos
+view already selected = "view already selected"
+View Book Bag = "View Book Bag"
+View Full Collection = "View Full Collection"
+View Full Record = "View Full Record"
+View online: Full view Book Preview from the Hathi Trust = "View online: Full view Book Preview from the Hathi Trust"
+View Record = "View Record"
+View Records = "View Records"
+Volume = Volume
+Volume Holdings = "Volume Holdings"
+vudl_tab_docs = "Docs"
+vudl_tab_pages = "Pages"
+VuFind Configuration = "VuFind Configuration"
+vufind_upgrade_fail = "We cannot upgrade VuFind at this time"
+Warning: These citations may not always be 100% accurate = "Warning: These citations may not always be 100% accurate"
+wcterms_broader = "Broader Subjects"
+wcterms_exact = "Related Subjects"
+wcterms_narrower = "Narrower Subjects"
+Web = Web
+widen_prefix = "Try widening your search to"
+wiki_link = "Provided by Wikipedia"
+with filters = "with filters"
+with_selected = "with selected"
+Year of Publication = "Year of Publication"
+Yesterday = Yesterday
+You do not have any fines = "You do not have any fines"
+You do not have any holds or recalls placed = "You do not have any holds or recalls placed"
+You do not have any items checked out = "You do not have any items checked out"
+You do not have any saved resources = "You do not have any saved resources"
+You must be logged in first = "You must be logged in first"
+Your Account = "Your Account"
+Your book bag is empty = "Your book bag is empty"
+Your Checked Out Items = "Your Checked Out Items"
+Your Comment = "Your Comment"
+Your Favorites = "Your Favourites"
+Your Fines = "Your Fines"
+Your Holds and Recalls = "Your Holds and Recalls"
+Your Lists = "Your Lists"
+Your Profile = "Your Profile"
+Your search terms = "Your search terms"
+Your Tags = "Your Tags"
+Zip = Zip
 zoom = "Zoom"
\ No newline at end of file
diff --git a/languages/en.ini b/languages/en.ini
index 2b9aa0cf1dc..ff53d494354 100644
--- a/languages/en.ini
+++ b/languages/en.ini
@@ -239,6 +239,7 @@ error_inconsistent_parameters = "Sorry, an error has occurred. Inconsistent para
 error_page_parameter_list_heading = "Request Parameters"
 Exception = Exception
 Excerpt = Excerpt
+exclude_facet = "[exclude]"
 exclude_newspapers = "Exclude newspaper articles"
 Expires = Expires
 Export = Export
diff --git a/module/VuFind/src/VuFind/Search/Base/Params.php b/module/VuFind/src/VuFind/Search/Base/Params.php
index e7af34703ba..fa5defef2d7 100644
--- a/module/VuFind/src/VuFind/Search/Base/Params.php
+++ b/module/VuFind/src/VuFind/Search/Base/Params.php
@@ -951,6 +951,13 @@ class Params implements ServiceLocatorAwareInterface
         $list = array();
         // Loop through all the current filter fields
         foreach ($this->filterList as $field => $values) {
+            $firstChar = substr($field, 0, 1);
+            if ($firstChar == '-') {
+                $operator = 'NOT';
+                $field = substr($field, 1);
+            } else {
+                $operator = 'AND';
+            }
             // and each value currently used for that field
             $translate
                 = in_array($field, $this->getOptions()->getTranslatedFacets());
@@ -964,7 +971,8 @@ class Params implements ServiceLocatorAwareInterface
                         'value'       => $value,
                         'displayText' =>
                             $translate ? $this->translate($value) : $value,
-                        'field'       => $field
+                        'field'       => $field,
+                        'operator'    => $operator,
                     );
                 }
             }
diff --git a/module/VuFind/src/VuFind/Search/Summon/Params.php b/module/VuFind/src/VuFind/Search/Summon/Params.php
index 897ee262e3f..ef348c0aec9 100644
--- a/module/VuFind/src/VuFind/Search/Summon/Params.php
+++ b/module/VuFind/src/VuFind/Search/Summon/Params.php
@@ -234,7 +234,11 @@ class Params extends \VuFind\Search\Base\Params
                             ->add('rangeFilters', "{$filt['field']},{$from}:{$to}");
                     } else {
                         // Standard case:
-                        $params->add('filters', "{$filt['field']},{$safeValue}");
+                        $fq = "{$filt['field']},{$safeValue}";
+                        if ($filt['operator'] == 'NOT') {
+                            $fq .= ',true';
+                        }
+                        $params->add('filters', $fq);
                     }
                 }
             }
diff --git a/module/VuFind/src/VuFind/Search/UrlQueryHelper.php b/module/VuFind/src/VuFind/Search/UrlQueryHelper.php
index 7372b9efa3e..8df3e3e2d57 100644
--- a/module/VuFind/src/VuFind/Search/UrlQueryHelper.php
+++ b/module/VuFind/src/VuFind/Search/UrlQueryHelper.php
@@ -233,15 +233,17 @@ class UrlQueryHelper
     /**
      * Add a facet to the parameters.
      *
-     * @param string $field Facet field
-     * @param string $value Facet value
+     * @param string $field    Facet field
+     * @param string $value    Facet value
+     * @param string $operator Facet type to add (AND, OR, NOT)
      *
      * @return string
      */
-    public function addFacet($field, $value)
+    public function addFacet($field, $value, $operator = 'AND')
     {
         // Facets are just a special case of filters:
-        return $this->addFilter($field . ':"' . $value . '"');
+        $prefix = ($operator == 'NOT') ? '-' : '';
+        return $this->addFilter($prefix . $field . ':"' . $value . '"');
     }
 
     /**
@@ -288,10 +290,15 @@ class UrlQueryHelper
      *
      * @return string
      */
-    public function removeFacet($field, $value, $escape = true)
+    public function removeFacet($field, $value, $escape = true, $operator = 'AND')
     {
         $params = $this->getParamArray();
 
+        // Account for operators:
+        if ($operator == 'NOT') {
+            $field = '-' . $field;
+        }
+
         // Remove the filter:
         $newFilter = array();
         if (isset($params['filter']) && is_array($params['filter'])) {
diff --git a/themes/blueprint/templates/Recommend/SideFacets.phtml b/themes/blueprint/templates/Recommend/SideFacets.phtml
index 375a3a5b692..9f3cbff38bd 100644
--- a/themes/blueprint/templates/Recommend/SideFacets.phtml
+++ b/themes/blueprint/templates/Recommend/SideFacets.phtml
@@ -21,13 +21,13 @@
             if (isset($filter['specialType']) && $filter['specialType'] == 'keyword') {
                 $removeLink = $this->currentPath().$results->getUrlQuery()->replaceTerm($filter['value'], '');
             } else {
-                $removeLink = $this->currentPath().$results->getUrlQuery()->removeFacet($filter['field'], $filter['value']);
+                $removeLink = $this->currentPath().$results->getUrlQuery()->removeFacet($filter['field'], $filter['value'], true, $filter['operator']);
             }
             if ($filter['displayText'] == '[* TO *]') $filter['displayText'] = $this->translate('filter_wildcard');
         ?>
         <li>
           <a href="<?=$removeLink?>"><img src="<?=$this->imageLink('silk/delete.png')?>" alt="Delete"/></a>
-          <a href="<?=$removeLink?>"><?=$this->transEsc($field)?>: <?=$this->escapeHtml($filter['displayText'])?></a>
+          <a href="<?=$removeLink?>"><? if ($filter['operator'] == 'NOT') echo $this->transEsc('NOT') . ' '; ?><?=$this->transEsc($field)?>: <?=$this->escapeHtml($filter['displayText'])?></a>
         </li>
       <? endforeach; ?>
     <? endforeach; ?>
@@ -64,7 +64,10 @@
             <? if ($thisFacet['isApplied']): ?>
               <dd><?=$this->escapeHtml($thisFacet['displayText'])?> <img src="<?=$this->imageLink('silk/tick.png')?>" alt="Selected"/></dd>
             <? else: ?>
-              <dd><a href="<?=$this->currentPath().$results->getUrlQuery()->addFacet($title, $thisFacet['value'])?>"><?=$this->escapeHtml($thisFacet['displayText'])?></a> (<?=$this->escapeHtml($thisFacet['count'])?>)</dd>
+              <dd>
+                <a href="<?=$this->currentPath().$results->getUrlQuery()->addFacet($title, $thisFacet['value'])?>"><?=$this->escapeHtml($thisFacet['displayText'])?></a> (<?=$this->escapeHtml($thisFacet['count'])?>)
+                <a href="<?=$this->currentPath().$results->getUrlQuery()->addFacet($title, $thisFacet['value'], 'NOT')?>"><?=$this->transEsc('exclude_facet')?></a>
+              </dd>
             <? endif; ?>
           <? endforeach; ?>
           <? if ($i > 5): ?><dd><a href="#" onclick="lessFacets('<?=$this->escapeHtml($title)?>'); return false;"><?=$this->transEsc('less')?> ...</a></dd><? endif; ?>
diff --git a/themes/jquerymobile/templates/Recommend/SideFacets.phtml b/themes/jquerymobile/templates/Recommend/SideFacets.phtml
index 361f90c5d23..91ed4b99df3 100644
--- a/themes/jquerymobile/templates/Recommend/SideFacets.phtml
+++ b/themes/jquerymobile/templates/Recommend/SideFacets.phtml
@@ -5,11 +5,11 @@
     <? $i = 0; foreach ($filterList as $field => $filters): ?>
       <? foreach ($filters as $filter): ?>
         <?
-            $removeLink = $this->currentPath().$results->getUrlQuery()->removeFacet($filter['field'], $filter['value']);
+            $removeLink = $this->currentPath().$results->getUrlQuery()->removeFacet($filter['field'], $filter['value'], true, $filter['operator']);
             if ($filter['displayText'] == '[* TO *]') $filter['displayText'] = $this->translate('filter_wildcard');
         ?>
         <li data-icon="minus">
-          <a data-icon="minus" rel="external" href="<?=$removeLink?>"><?=$i++ > 0 ? $this->transEsc("AND") . ' ' : ''?><?=$this->transEsc($field)?>: <?=$this->escapeHtml($filter['displayText'])?></a>
+          <a data-icon="minus" rel="external" href="<?=$removeLink?>"><?=$i++ > 0 ? $this->transEsc("AND") . ' ' : ''?><? if ($filter['operator'] == 'NOT') echo $this->transEsc('NOT') . ' '; ?><?=$this->transEsc($field)?>: <?=$this->escapeHtml($filter['displayText'])?></a>
         </li>
       <? endforeach; ?>
     <? endforeach; ?>
-- 
GitLab