From dff8bde1348a2cc472e445b52f1b724084d9d7aa Mon Sep 17 00:00:00 2001
From: Robert Lange <robert.lange@uni-leipzig.de>
Date: Tue, 17 Jan 2023 22:14:43 +0100
Subject: [PATCH] refs #22747 [vufind] sync finc with dev

---
 config/vufind/config.ini      | 223 +++++++++++++++++++++++++++-------
 languages/CreatorRoles/de.ini |   3 +-
 languages/Exception/fi.ini    |   5 +
 languages/Exception/sv.ini    |   5 +
 languages/en.ini              |   3 +-
 5 files changed, 190 insertions(+), 49 deletions(-)
 create mode 100644 languages/Exception/fi.ini
 create mode 100644 languages/Exception/sv.ini

diff --git a/config/vufind/config.ini b/config/vufind/config.ini
index 19ceddd9bdb..39771e53ff4 100644
--- a/config/vufind/config.ini
+++ b/config/vufind/config.ini
@@ -718,16 +718,25 @@ database          = mysql://root@localhost/vufind
 ; Optional: Session ID parameter for SAML2 single logout support. If omitted, single
 ; logout support is disabled. Note that if SLO support is enabled, Shibboleth session
 ; ID's are tracked in external_session table which may need to be cleaned up with the
-; expire_session_mappings command line utility. See
+; util/expire_external_sessions command line utility. See
 ; https://vufind.org/wiki/configuration:shibboleth for more information on how
 ; to configure the single logout support.
 ;session_id = Shib-Session-ID
+; Check for expired session - user is automatically logged out when Shibboleth
+; session is not present (default = true if unset); note that expiration check
+; also requires session_id to be set above.
+;checkExpiredSession = false
 ; Optional: you may set attribute names and values to be used as a filter;
 ; users will only be logged into VuFind if they match these filters.
 ;userattribute_1       = entitlement
 ;userattribute_value_1 = urn:mace:dir:entitlement:common-lib-terms
 ;userattribute_2       = unscoped-affiliation
 ;userattribute_value_2 = member
+; Set to true when shibboleth attributes must be read from headers instead of
+; environment variables - for example if you use proxy server and shibboleth is
+; running on proxy side. In that case you should protect against header spoofing:
+; see https://wiki.shibboleth.net/confluence/display/SP3/SpoofChecking for details
+;use_headers           = false
 ; Required: the attribute Shibboleth uses to uniquely identify users.
 ;username              = persistent-id
 ; Required: Shibboleth login URL.
@@ -749,6 +758,9 @@ database          = mysql://root@localhost/vufind
 ;college = HTTP_COLLEGE
 ;major = HTTP_MAJOR
 ;home_library = HTTP_HOME_LIBRARY
+; Enable if you want to override mapping or required attributes for specific IdP
+; in Shibboleth.ini
+;allow_configuration_override = true
 
 ; CAS is optional.  This section only needs to exist if the
 ; Authentication Method is set to CAS.
@@ -812,9 +824,6 @@ database          = mysql://root@localhost/vufind
 ; External Content is Optional.
 ; To use multiple, separate with a comma.  Priority will be given by the order listed
 ; Account id is separated with a colon, if no id is used then no colon is necessary
-; For Amazon, use your 20-character access key in the coverimages and reviews values;
-; you must also provide your 40-character secret key in the amazonsecret value and
-; your associate ID in the amazonassociate value.
 ;
 ; IMPORTANT: Review content providers' terms of service before turning them on.
 ;            Terms may change, and not all content sources are appropriate for all
@@ -841,9 +850,11 @@ database          = mysql://root@localhost/vufind
 ; coversize setting to false:
 ;coversize = false
 
-; You can select Syndetics, LibraryThing, Summon, Amazon, Booksite, OpenLibrary,
-; Contentcafe, Buchhandel.de, Google Books, BrowZine and/or LocalFile.
+; You can select Syndetics, LibraryThing, Summon, Booksite, OpenLibrary,
+; Contentcafe, Buchhandel.de, Google Books, BrowZine, ObalkyKnih and/or LocalFile.
 ;   Note: BrowZine requires you to have BrowZine.ini configured appropriately.
+;   Note: ObalkyKnih could be configured in obalkyknih.ini file. You should also
+;       add API URLs to img-src directive in contentsecuritypolicy.ini
 ;   Note: Summon service takes a Serials Solutions client key, NOT Summon API key!
 ;   For LocalFile:PathToFile, you may use a combination of directory path information
 ;        and tokens for filename and image type. If you have multiple directories
@@ -862,7 +873,7 @@ database          = mysql://root@localhost/vufind
 ;          %vufind-home%      - The VUFIND_HOME environment variable
 ;          %vufind-local-dir% - The VUFIND_LOCAL_DIR environment variable
 ;        Example: LocalFile:%vufind-local-dir%/path/to/file/%size%/issn/%issn%.%anyimage%
-;coverimages     = Syndetics:MySyndeticsId,Amazon:MyAccessKeyId,Booksite,LibraryThing:MyLibraryThingId,Google,OpenLibrary,Summon:MySerialsSolutionsClientKey,Contentcafe:MyContentCafeID,BrowZine,LocalFile:PathToFile
+;coverimages     = Syndetics:MySyndeticsId,Booksite,LibraryThing:MyLibraryThingId,Google,ObalkyKnih,OpenLibrary,Summon:MySerialsSolutionsClientKey,Contentcafe:MyContentCafeID,BrowZine,LocalFile:PathToFile
 
 ; This setting controls which services will have images cached on your local disk.
 ; Set to true to cache all applicable services. Set to false to disable caching. Set
@@ -878,6 +889,16 @@ coverimagesCache = true
 ; "/.*/" to turn on caching for all proxied images.
 ;coverproxyCache[] = "/.*\.?mylibrary\.edu/"
 
+; This setting controls how cover image URLs are loaded. They could be loaded as
+; part of main request, or asynchronously. Asynchronous loading is disabled by
+; default; to enable it, just uncomment the line below.
+;ajaxcovers = true
+
+; When ajaxcovers is set to true, this setting controls whether the AJAX Handler
+; GetRecordCover renders a fallback template (record/coverReplacement.phtml) in case
+; no cover image could be loaded.
+;useCoverFallbacksOnFail = false
+
 ; These settings control the image to display when no book cover is available.
 ; If makeDynamicCovers is not false and the GD library is installed, VuFind will draw
 ; cover images on the fly. See [DynamicCovers] below for more settings. If set to
@@ -889,13 +910,12 @@ coverimagesCache = true
 ; path relative to the base of your theme directory for a static image to display.
 noCoverAvailableImage = images/noCover2.gif
 
-; You can select from Syndetics, SyndeticsPlus, Amazon Editorial, Amazon, Booksite
-; and/or the Guardian
+; You can select from Syndetics, SyndeticsPlus, Booksite and/or the Guardian
 ;   Note: If the API key is omitted, e.g. "Guardian:", only the review title, byline,
 ;         Guardian logo and a link to the full Guardian page will be displayed
 ;   Note: The Guardian API changed in 2014; if you signed up before that date, you
 ;         may need to obtain a new API key for continued access.
-;reviews         = Syndetics:MySyndeticsId,SyndeticsPlus:MySyndeticsID,AmazonEditorial:MyAccessKeyId,Amazon:MyAccessKeyId,Booksite,Guardian:MyGuardianKeyId
+;reviews         = Syndetics:MySyndeticsId,SyndeticsPlus:MySyndeticsID,Booksite,Guardian:MyGuardianKeyId
 
 ; You can select from Syndetics or SyndeticsPlus
 ;excerpts        = Syndetics:MySyndeticsId,SyndeticsPlus:MySyndeticsId
@@ -926,15 +946,6 @@ noCoverAvailableImage = images/noCover2.gif
 ; heap size settings.  For details, see: https://vufind.org/jira/browse/VUFIND-630
 authors         = Wikipedia
 
-; You can look up your secret key by logging into http://aws.amazon.com and clicking
-; "Access Identifiers" under "Your Account".
-;amazonsecret    = MyAmazonSecretKey
-
-; You can sign up for an associate ID by logging into
-; https://affiliate-program.amazon.com .  Please make sure your instance of VuFind
-; complies with Amazon's agreements before enabling this feature.
-;amazonassociate = MyAmazonAssociateID
-
 ; You can select from Google, OpenLibrary, HathiTrust.  You should consult
 ; https://developers.google.com/books/branding before using Google Book Search.
 ;previews       = Google,OpenLibrary,HathiTrust
@@ -1158,10 +1169,17 @@ url = "https://api.booksite.com"
 [DOI]
 ; This setting controls whether or not DOI-based links are enabled, and which
 ; API is used to fetch the data. Currently supported options: BrowZine (requires
-; credentials to be configured in BrowZine.ini), Unpaywall or false (to disable). Disabled
-; by default.
+; credentials to be configured in BrowZine.ini), Unpaywall or false (to disable).
+; Disabled by default. You may also use a comma-separated list of resolvers if you
+; want to try multiple sources.
 ;resolver = BrowZine
 
+; If you use multiple values in the resolver setting above, you can determine how the
+; software should behave when multiple resolvers return results for the same DOI.
+; You can choose "first" (only return results from the first matching resolver --
+; the default behavior) or "merge" (merge together all results and show them all).
+;multi_resolver_mode = first
+
 ;unpaywall_api_url = "https://api.unpaywall.org/v2"
 ; Unpaywall needs an email adress, see https://unpaywall.org/products/api
 ;unpaywall_email = "your@email.org"
@@ -1202,6 +1220,8 @@ window_settings = "toolbar=no,location=no,directories=no,buttons=no,status=no,me
 ; If you want to display a graphical link to your link resolver, uncomment the
 ; settings below.  graphic should be a URL; graphic_width and graphic_height
 ; should be sizes in pixels.
+; Note: You will probably will need to add URL of image to img-src setting
+; in contentsecuritypolicy.ini file
 ;graphic = "http://myuniversity.edu/images/findIt.gif"
 ;graphic_width = 50
 ;graphic_height = 20
@@ -1350,11 +1370,62 @@ url             = https://www.myendnoteweb.com/EndNoteWeb.html
 ;host = your.proxy.server
 ;port = 8000
 
-; Uncomment following line to set proxy type to SOCKS 5
+; Uncomment one of the following lines to set proxy type to SOCKS 5 or SOCKS 5 with
+; name resolution done by proxy. Setting either of these will make VuFind use the
+; curl adapter for HTTP requests.
 ;type = socks5
+;type = socks5_hostname
+
+; If VuFind is running behind a proxy that uses X-Real-IP/X-Forwarded-For headers,
+; you should configure this setting on so that VuFind reports correct user IP
+; addresses, and sets permissions appropriately. CONFIGURE THIS WITH CARE! It is
+; possible to spoof IP addresses, and configuring this to differentiate between
+; legitimate headers from your proxy and spoofed values is critical to protecting
+; your content.
+;
+; The setting should be an ordered, comma-separated list of headers, with optional
+; colon-separated modifiers specifying behavior.
+;
+; Header values can be any keys in PHP's $_SERVER superglobal array; these are
+; the most commonly used options:
+; - HTTP_X_FORWARDED_FOR
+; - HTTP_X_REAL_IP
+;
+; Supported behaviors (if unspecified, "single" is the default behavior):
+; - first (pick the first comma-separated value; e.g. "a" in "a, b, c")
+; - last (pick the last comma-separated value; e.g. "c" in "a, b, c")
+; - single (enforce single values; completely ignore multi-valued headers)
+;
+; See also forwarded_ip_filter below for a way to filter out known IP addresses
+; of internal network devices before applying first/last/single settings.
+;
+; When commented out or set to false, only the regular REMOTE_ADDR value will
+; be used for IP detection. REMOTE_ADDR will also be used as the default value
+; if none of the configured headers are populated.
+;
+; If you need to implement more nuanced functionality, you can extend or
+; override the VuFind\Net\UserIpReader class to implement your own logic.
+;
+; You can use a header-modifying browser plugin to determine how your proxy
+; will respond to spoofing attempts.
+;
+; See this wiki page for additional notes and comments:
+; https://vufind.org/wiki/administration:security#proxies_and_ip_authentication
+;
+; The example below, if uncommented, will use X-Real-IP if found, and the
+; rightmost value of X-Forwarded-For otherwise (resorting to REMOTE_ADDR only
+; if no relevant X- headers are found).
+;allow_forwarded_ips = "HTTP_X_REAL_IP:single,HTTP_X_FORWARDED_FOR:last"
+
+; This setting can be used in combination with allow_forwarded_ips to prevent
+; known IP addresses of internal proxies and network devices from being reported
+; as end user IP addresses. You can repeat the setting for each IP address that
+; you wish to exclude. The first/last/single processing parameters used by
+; allow_forwarded_ips will be applied AFTER removing addresses filtered here.
+;forwarded_ip_filter[] = 1.2.3.4
 
 ; Default HTTP settings can be loaded here. These values will be passed to
-; the \Zend\Http\Client's setOptions method.
+; the \Laminas\Http\Client's setOptions method.
 [Http]
 ;sslcapath = "/etc/ssl/certs" ; e.g. for Debian systems
 ;sslcafile = "/etc/pki/tls/cert.pem" ; e.g. for CentOS systems
@@ -1363,7 +1434,13 @@ url             = https://www.myendnoteweb.com/EndNoteWeb.html
 
 ; Example: Using a CURL Adapter instead of the the defaultAdapter (Socket); note
 ; that you may also need to install CURL and PHP/CURL packages on your server.
-;adapter = 'Zend\Http\Client\Adapter\Curl'
+;adapter = 'Laminas\Http\Client\Adapter\Curl'
+
+; Set curl options if required. See
+; https://www.php.net/manual/en/function.curl-setopt.php for available options and
+; https://github.com/curl/curl/blob/master/include/curl/curl.h for their numeric
+; values.
+;curloptions[52] = true
 
 ; Spelling Suggestions
 ;
@@ -1437,6 +1514,18 @@ skip_numeric = true
 ; - Add /slack to the end of your url for Slack-compatible messages
 ; https://discordapp.com/developers/docs/resources/webhook#execute-slackcompatible-webhook
 
+; You can use Office365 webhooks to send messages to a Microsoft Team channel.
+; In the "Connectors" setting on a channel, you can add "Incoming Webhook." This
+; will provide a URL that you can paste into the office365_url setting.
+; If you are concerned about rate limits, you might also wish to set up the
+; VuOwma message aggregator; see https://github.com/FalveyLibraryTechnology/VuOwma
+;office365_url = "https://outlook.office.com/webhook/xxx/IncomingWebhook/yyy"
+; This setting controls the error levels that will be logged to Office365; if
+; commented out, Office365 logging will be disabled
+;office365 = alert,error
+; This setting controls the title on the messages displayed in Office365:
+;office365_title = "VuFind Log"
+
 ; This section can be used to specify a "parent configuration" from which
 ; the current configuration file will inherit.  You can chain multiple
 ; configurations together if you wish.
@@ -1444,7 +1533,7 @@ skip_numeric = true
 ; Full path to parent configuration file:
 ;path = /usr/local/vufind/application/config/config.ini
 ; Path to parent configuration file (relative to the location of this file):
-;relative_path = ../masterconfig/config.ini
+;relative_path = ../parentconfig/config.ini
 
 ; A comma-separated list of config sections from the parent which should be
 ; completely overwritten by the equivalent sections in this configuration;
@@ -1519,6 +1608,10 @@ rtl_langs = "ar,he"
 ; have a large index!
 [Browse]
 result_limit    = 100
+
+; These settings can be used to turn specific browse types on or off; the order
+; of the settings in the configuration below will also control the order of the
+; options displayed in the web interface:
 tag             = true      ; allow browsing of Tags
 dewey           = false     ; allow browsing of Dewey Decimal call numbers
 lcc             = true      ; allow browsing of LC call numbers
@@ -1527,6 +1620,7 @@ topic           = true      ; allow browsing of subject headings
 genre           = true      ; allow browsing of genre subdivisions
 region          = true      ; allow browsing of region subdivisions
 era             = true      ; allow browsing of era subdivisions
+
 ; You can use this setting to change the default alphabet provided for browsing:
 ;alphabet_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 ; Uncomment to sort lists alphabetically (instead of by popularity); note that
@@ -1639,6 +1733,15 @@ jump_to_single_search_result = false
 ; punctuation, but this can be used when ISBD punctuation is absent (e.g. ", ").
 ;marcPublicationInfoSeparator = " "
 
+; If you have a custom index, you might want to change the field where the full
+; MARC record is supposed to be. The field will be checked and ignored, if it is
+; not a valid index field or does not exist in the record or index schema.
+; If you have multiple fields with MARC content, you may add all of them
+; by using a comma sepated list. The first field is the preferred one, if it does not
+; exist, the next ones are taken.
+; (Default = "fullrecord")
+preferredMarcFields = "fullrecord"
+
 ; When displaying publication information from 260/264, this can be set to true
 ; to make 264 information completely replace 260 information. Default is false,
 ; which will display information from 260 AND 264 when both fields are populated.
@@ -1713,11 +1816,11 @@ HMACkey = mySuperSecretValue
 ; VUFIND_CACHE_DIR (see httpd-vufind.conf). The default location is inside the
 ; local settings directory.
 [Cache]
-; Set time to live value for Zend caches (in seconds), 0 means maximum possible.
+; Set time to live value for caches (in seconds), 0 means maximum possible.
 ;ttl = 0
 ; Override umask for cache directories and files.
 ;umask = 022
-; Permissions for Zend-created cache directories and files, subject to umask
+; Permissions for framework-created cache directories and files, subject to umask
 ; Default dir_permission seems to be 0700.
 ;dir_permission = 0700
 ; Default file_permission seems to be 0600.
@@ -1791,7 +1894,7 @@ treeSearchLimit = 100
 ;sender_name       = "VuFind Feedback"
 
 ; Note: for additional details about stats (including additional notes on Google
-; Analytics and Piwik), look at the wiki page:
+; Analytics and Matomo/Piwik), look at the wiki page:
 ;     https://vufind.org/wiki/configuration:usage_stats
 
 ; Uncomment this section and provide your API key to enable Google Analytics. Be
@@ -1802,18 +1905,20 @@ treeSearchLimit = 100
 ;apiKey = "mykey"
 ;universal = false
 
-; Uncomment this section and provide your Piwik server address and site id to
-; enable Piwik analytics. Note: VuFind's Piwik integration uses several custom
-; variables; to take advantage of them, you must reconfigure Piwik by switching
+; The Piwik product has been renamed to Matomo, but for backward compatibility,
+; the terminology has not yet been changed in VuFind. Uncomment this section and
+; provide your Matomo or Piwik server address and site id to enable Matomo/Piwik
+; analytics. Note: VuFind's Matomo/Piwik integration uses several custom variables;
+; to take advantage of them, you must reconfigure Matomo/Piwik by switching
 ; to its root directory and running this command to raise a default limit:
 ; ./console customvariables:set-max-custom-variables 10
 [Piwik]
 ;url = "http://server.address/piwik/"
 ;site_id = 1
 ; Uncomment the following setting to track additional information about searches
-; and displayed records with Piwik's custom variables
+; and displayed records with Matomo/Piwik's custom variables
 ;custom_variables = true
-; By default, Piwik searches are tracked using the format "Backend|Search Terms."
+; By default, searches are tracked using the format "Backend|Search Terms."
 ; If you need to differentiate searches coming from multiple VuFind instances using
 ; a shared site_id, you can set the searchPrefix to add an additional prefix to
 ; the string, for example "SiteA|Backend|Search Terms." Most users will want to
@@ -1865,22 +1970,46 @@ treeSearchLimit = 100
 ;EDS = "EBSCO Discovery Service"
 
 ; Activate Captcha validation on select forms
-; VuFind will use reCaptcha validation to prevent bots from using certain actions of
-; your instance. See http://www.google.com/recaptcha for more information on Captcha
-; and create keys for your domain.
-; You will need to provide a sslcapath in the [Http] section for your Captcha to work.
+; VuFind can use Captcha validation to prevent bots from using certain actions of
+; your instance.
 ;[Captcha]
-;siteKey  = "get your reCaptcha key at"
-;secretKey = "https://www.google.com/recaptcha/admin/create"
-; Valid theme values: dark, light
-;theme      = light
-; Valid forms values: changePassword, email, feedback, newAccount, passwordRecovery,
-;                     sms, userComments
-; Use * for all supported forms
+; Valid type values:
+; - figlet (generate a text-based message for the user to interpret)
+; - image (generate a local image for the user to interpret)
+; - recaptcha (use Google's ReCaptcha service)
+; If multiple values are given, the user will be able to pick his favorite.
+; See below for additional type-specific settings.
+;types[] = recaptcha
+
+; The "forms" setting controls the contexts in which CAPTCHA will be presented. It
+; can be either a comma-separated list of forms, or "*" to display CAPTCHA on all
+; supported forms. Valid forms values:
+;       changeEmail, changePassword, email, feedback, newAccount, passwordRecovery,
+;       sms, userComments
 ; Note: when "feedback" is active, Captcha can be conditionally disabled on a
 ;       form-by-form basis with the useCaptcha setting in FeedbackForms.yaml.
-;forms = changeEmail, changePassword, email, newAccount, passwordRecovery, sms
-
+;forms = *
+
+; Figlet options, see:
+;      https://docs.laminas.dev/laminas-captcha/adapters/#laminascaptchafiglet
+;figlet_length = 8
+
+; Image options, see:
+;      https://docs.laminas.dev/laminas-captcha/adapters/#laminascaptchaimage
+;image_length = 8
+;image_width = 200
+;image_height = 50
+;image_fontSize = 24
+;image_dotNoiseLevel = 100
+;image_lineNoiseLevel = 5
+
+; See http://www.google.com/recaptcha for more information on reCAPTCHA and to
+; create keys for your domain. Make sure that SSL settings are correct in the
+; [Http] section, or your Captcha may not work.
+;recaptcha_siteKey  = "get your reCaptcha key at"
+;recaptcha_secretKey = "https://www.google.com/recaptcha/admin/create"
+; Valid theme values: dark, light
+;recaptcha_theme      = light
 
 ; This section can be used to display default text inside the search boxes, useful
 ; for instructions. Format:
@@ -1919,6 +2048,8 @@ lists_view=full
 ; Tags may be "enabled" or "disabled" (default = "enabled")
 ; When disabling tags, don't forget to also turn off tag search in searches.ini.
 tags = enabled
+; User list tags may be "enabled" or "disabled" (default = "disabled")
+listTags = disabled
 ; This controls the maximum length of a single tag; it should correspond with the
 ; field size in the tags database table.
 max_tag_length = 64
diff --git a/languages/CreatorRoles/de.ini b/languages/CreatorRoles/de.ini
index 8d3ce0fdf99..3da8a5216fa 100644
--- a/languages/CreatorRoles/de.ini
+++ b/languages/CreatorRoles/de.ini
@@ -281,6 +281,7 @@ regie = "Regie"
 ren = "RendererIn (Bildverarbeitung)"
 reporter = "Reporter"
 res = "ForscherIn"
+resp = "Respondent"
 rev = "RezensentIn, GutachterIn"
 rpc = "HörfunkproduzentIn"
 rps = "Aufbewahrungsort, TreuhänderIn"
@@ -288,7 +289,7 @@ rpt = "ReporterIn"
 rpy = "Verantwortliche Partei"
 rse = "AntragsgegnerIn-BerufungsbeklagteR"
 rsg = "RegisseurIn der Wiederaufführung"
-rsp = "RespondentIn"
+rsp = "BerufungsbeklagteR"
 rsr = "RestauratorIn"
 rst = "AntragsgegnerIn-BerufungsklägerIn"
 rth = "Leitung des Forschungsteams"
diff --git a/languages/Exception/fi.ini b/languages/Exception/fi.ini
new file mode 100644
index 00000000000..76e6e638d91
--- /dev/null
+++ b/languages/Exception/fi.ini
@@ -0,0 +1,5 @@
+access_denied_change_password = "Salasanan vaihtaminen ei ole sallittu."
+access_denied_read_fines = "Maksujen näyttäminen ei ole sallittu."
+access_denied_read_items = "Varausten tai lainojen näyttäminen ei ole sallittu."
+access_denied_read_patron = "Käyttäjäprofiilin näyttäminen ei ole sallittu."
+access_denied_write_items = "Varaaminen tai lainojen uusiminen ei ole sallittu."
diff --git a/languages/Exception/sv.ini b/languages/Exception/sv.ini
new file mode 100644
index 00000000000..aee38c49900
--- /dev/null
+++ b/languages/Exception/sv.ini
@@ -0,0 +1,5 @@
+access_denied_change_password = "Du har inte rättigheter att byta lösenordet."
+access_denied_read_fines = "Du har inte rättigheter att visa avgifter."
+access_denied_read_items = "Du har inte rättigheter att visa lån eller reserveringar."
+access_denied_read_patron = "Du har inte rättigheter att visa din profil."
+access_denied_write_items = "Du har inte rättigheter att reservera material eller förnya lån."
diff --git a/languages/en.ini b/languages/en.ini
index 8e17f613fb4..c2f5b029c3f 100644
--- a/languages/en.ini
+++ b/languages/en.ini
@@ -410,7 +410,7 @@ fav_delete_deleting = "Your favorite(s) are being deleted."
 fav_delete_fail = "Sorry, an error has occurred. Your favorite(s) were not deleted."
 fav_delete_missing = "Some data was missing. Your favorite(s) were not deleted."
 fav_delete_success = "Your favorite(s) were deleted."
-fav_delete_warn = "You are about to delete these favorites from all your lists. If you want to delete favorites from a specific list only, please select the list before clicking delete."
+fav_delete_warn = "You are about to delete these favorites from all your lists - If you want to delete favorites from a specific list only, please select the list before clicking delete."
 fav_email_fail = "Sorry, an error has occurred. Your favorite(s) were not emailed."
 fav_email_missing = "Some data was missing. Your favorite(s) were not emailed."
 fav_email_success = "Your favorite(s) were emailed as requested."
@@ -649,7 +649,6 @@ List = "List"
 List Tags = "List Tags"
 list_access_denied = "You do not have permission to view this list."
 list_edit_name_required = "List name is required."
-list_item_delete = "Delete item from list"
 load_tag_error = "Error: Could Not Load Tags"
 Loading = "Loading"
 Loan History = "Loan History"
-- 
GitLab