diff --git a/INSTALL b/INSTALL index 60f190469..55894b27a 100644 --- a/INSTALL +++ b/INSTALL @@ -1,698 +1,698 @@ Invenio INSTALLATION ==================== About ===== This document specifies how to build, customize, and install Invenio v1.0.9 for the first time. See RELEASE-NOTES if you are upgrading from a previous Invenio release. Contents ======== 0. Prerequisites 1. Quick instructions for the impatient Invenio admin 2. Detailed instructions for the patient Invenio admin 0. Prerequisites ================ Here is the software you need to have around before you start installing Invenio: a) Unix-like operating system. The main development and production platforms for Invenio at CERN are GNU/Linux distributions Debian, Gentoo, Scientific Linux (aka RHEL), Ubuntu, but we also develop on Mac OS X. Basically any Unix system supporting the software listed below should do. If you are using Debian GNU/Linux ``Lenny'' or later, then you can install most of the below-mentioned prerequisites and recommendations by running: $ sudo aptitude install python-dev apache2-mpm-prefork \ mysql-server mysql-client python-mysqldb \ python-4suite-xml python-simplejson python-xml \ python-libxml2 python-libxslt1 gnuplot poppler-utils \ gs-common clisp gettext libapache2-mod-wsgi unzip \ python-dateutil python-rdflib \ python-gnuplot python-magic pdftk html2text giflib-tools \ - pstotext netpbm + pstotext netpbm python-pip You may also want to install some of the following packages, if you have them available on your concrete architecture: $ sudo aptitude install sbcl cmucl pylint pychecker pyflakes \ python-profiler python-epydoc libapache2-mod-xsendfile \ openoffice.org Moreover, you should install some Message Transfer Agent (MTA) such as Postfix so that Invenio can email notification alerts or registration information to the end users, contact moderators and reviewers of submitted documents, inform administrators about various runtime system information, etc: $ sudo aptitude install postfix After running the above-quoted aptitude command(s), you can proceed to configuring your MySQL server instance (max_allowed_packet in my.cnf, see item 0b below) and then to installing the Invenio software package in the section 1 below. If you are using another operating system, then please continue reading the rest of this prerequisites section, and please consult our wiki pages for any concrete hints for your specific operating system. b) MySQL server (may be on a remote machine), and MySQL client (must be available locally too). MySQL versions 4.1 or 5.0 are supported. Please set the variable "max_allowed_packet" in your "my.cnf" init file to at least 4M. (For sites such as INSPIRE, having 1M records with 10M citer-citee pairs in its citation map, you may need to increase max_allowed_packet to 1G.) You may perhaps also want to run your MySQL server natively in UTF-8 mode by setting "default-character-set=utf8" in various parts of your "my.cnf" file, such as in the "[mysql]" part and elsewhere; but this is not really required. c) Apache 2 server, with support for loading DSO modules, and optionally with SSL support for HTTPS-secure user authentication, and mod_xsendfile for off-loading file downloads away from Invenio processes to Apache. d) Python v2.4 or above: as well as the following Python modules: - (mandatory) MySQLdb (version >= 1.2.1_p2; see below) - (recommended) python-dateutil, for complex date processing: - (recommended) PyXML, for XML processing: - (recommended) PyRXP, for very fast XML MARC processing: - (recommended) libxml2-python, for XML/XLST processing: - (recommended) simplejson, for AJAX apps: Note that if you are using Python-2.6, you don't need to install simplejson, because the module is already included in the main Python distribution. - (recommended) Gnuplot.Py, for producing graphs: - (recommended) Snowball Stemmer, for stemming: - (recommended) py-editdist, for record merging: - (recommended) numpy, for citerank methods: - (recommended) magic, for full-text file handling: - (optional) 4suite, slower alternative to PyRXP and libxml2-python: - (optional) feedparser, for web journal creation: - (optional) RDFLib, to use RDF ontologies and thesauri: - (optional) mechanize, to run regression web test suite: - (optional) hashlib, needed only for Python-2.4 and only if you would like to use AWS connectivity: Note: MySQLdb version 1.2.1_p2 or higher is recommended. If you are using an older version of MySQLdb, you may get into problems with character encoding. e) mod_wsgi Apache module. Versions 3.x and above are recommended. Note: if you are using Python 2.4 or earlier, then you should also install the wsgiref Python module, available from: (As of Python 2.5 this module is included in standard Python distribution.) f) If you want to be able to extract references from PDF fulltext files, then you need to install pdftotext version 3 at least. g) If you want to be able to search for words in the fulltext files (i.e. to have fulltext indexing) or to stamp submitted files, then you need as well to install some of the following tools: - for Microsoft Office/OpenOffice.org document conversion: OpenOffice.org - for PDF file stamping: pdftk, pdf2ps - for PDF files: pdftotext or pstotext - for PostScript files: pstotext or ps2ascii - for DjVu creation, elaboration: DjVuLibre - to perform OCR: OCRopus (tested only with release 0.3.1) - to perform different image elaborations: ImageMagick - to generate PDF after OCR: ReportLab - to analyze images to generate PDF after OCR: netpbm h) If you have chosen to install fast XML MARC Python processors in the step d) above, then you have to install the parsers themselves: - (optional) 4suite: i) (recommended) Gnuplot, the command-line driven interactive plotting program. It is used to display download and citation history graphs on the Detailed record pages on the web interface. Note that Gnuplot must be compiled with PNG output support, that is, with the GD library. Note also that Gnuplot is not required, only recommended. j) (recommended) A Common Lisp implementation, such as CLISP, SBCL or CMUCL. It is used for the web server log analysing tool and the metadata checking program. Note that any of the three implementations CLISP, SBCL, or CMUCL will do. CMUCL produces fastest machine code, but it does not support UTF-8 yet. Pick up CLISP if you don't know what to do. Note that a Common Lisp implementation is not required, only recommended. k) GNU gettext, a set of tools that makes it possible to translate the application in multiple languages. This is available by default on many systems. Note that the configure script checks whether you have all the prerequisite software installed and that it won't let you continue unless everything is in order. It also warns you if it cannot find some optional but recommended software. 1. Quick instructions for the impatient Invenio admin ========================================================= 1a. Installation ---------------- $ cd $HOME/src/ $ wget http://invenio-software.org/download/invenio-1.0.9.tar.gz $ wget http://invenio-software.org/download/invenio-1.0.9.tar.gz.md5 $ wget http://invenio-software.org/download/invenio-1.0.9.tar.gz.sig $ md5sum -c invenio-1.0.9.tar.gz.md5 $ gpg --verify invenio-1.0.9.tar.gz.sig invenio-1.0.9.tar.gz $ tar xvfz invenio-1.0.9.tar.gz $ cd invenio-1.0.9 $ ./configure $ make $ make install $ make install-mathjax-plugin ## optional $ make install-jquery-plugins ## optional $ make install-fckeditor-plugin ## optional $ make install-pdfa-helper-files ## optional 1b. Configuration ----------------- $ sudo chown -R www-data.www-data /opt/invenio $ sudo -u www-data emacs /opt/invenio/etc/invenio-local.conf $ sudo -u www-data /opt/invenio/bin/inveniocfg --update-all $ sudo -u www-data /opt/invenio/bin/inveniocfg --create-tables $ sudo -u www-data /opt/invenio/bin/inveniocfg --load-webstat-conf $ sudo -u www-data /opt/invenio/bin/inveniocfg --create-apache-conf $ sudo /etc/init.d/apache2 restart $ sudo -u www-data /opt/invenio/bin/inveniocfg --create-demo-site $ sudo -u www-data /opt/invenio/bin/inveniocfg --load-demo-records $ sudo -u www-data /opt/invenio/bin/inveniocfg --run-unit-tests $ sudo -u www-data /opt/invenio/bin/inveniocfg --run-regression-tests $ sudo -u www-data /opt/invenio/bin/inveniocfg --run-web-tests $ sudo -u www-data /opt/invenio/bin/inveniocfg --remove-demo-records $ sudo -u www-data /opt/invenio/bin/inveniocfg --drop-demo-site $ firefox http://your.site.com/help/admin/howto-run 2. Detailed instructions for the patient Invenio admin ========================================================== 2a. Installation ---------------- The Invenio uses standard GNU autoconf method to build and install its files. This means that you proceed as follows: $ cd $HOME/src/ Change to a directory where we will build the Invenio sources. (The built files will be installed into different "target" directories later.) $ wget http://invenio-software.org/download/invenio-1.0.9.tar.gz $ wget http://invenio-software.org/download/invenio-1.0.9.tar.gz.md5 $ wget http://invenio-software.org/download/invenio-1.0.9.tar.gz.sig Fetch Invenio source tarball from the distribution server, together with MD5 checksum and GnuPG cryptographic signature files useful for verifying the integrity of the tarball. $ md5sum -c invenio-1.0.9.tar.gz.md5 Verify MD5 checksum. $ gpg --verify invenio-1.0.9.tar.gz.sig invenio-1.0.9.tar.gz Verify GnuPG cryptographic signature. Note that you may first have to import my public key into your keyring, if you haven't done that already: $ gpg --keyserver pool.sks-keyservers.net --recv-key 0xBA5A2B67 The output of the gpg --verify command should then read: Good signature from "Tibor Simko " You can safely ignore any trusted signature certification warning that may follow after the signature has been successfully verified. $ tar xvfz invenio-1.0.9.tar.gz Untar the distribution tarball. $ cd invenio-1.0.9 Go to the source directory. $ ./configure Configure Invenio software for building on this specific platform. You can use the following optional parameters: --prefix=/opt/invenio Optionally, specify the Invenio general installation directory (default is /opt/invenio). It will contain command-line binaries and program libraries containing the core Invenio functionality, but also store web pages, runtime log and cache information, document data files, etc. Several subdirs like `bin', `etc', `lib', or `var' will be created inside the prefix directory to this effect. Note that the prefix directory should be chosen outside of the Apache htdocs tree, since only one its subdirectory (prefix/var/www) is to be accessible directly via the Web (see below). Note that Invenio won't install to any other directory but to the prefix mentioned in this configuration line. --with-python=/opt/python/bin/python2.4 Optionally, specify a path to some specific Python binary. This is useful if you have more than one Python installation on your system. If you don't set this option, then the first Python that will be found in your PATH will be chosen for running Invenio. --with-mysql=/opt/mysql/bin/mysql Optionally, specify a path to some specific MySQL client binary. This is useful if you have more than one MySQL installation on your system. If you don't set this option, then the first MySQL client executable that will be found in your PATH will be chosen for running Invenio. --with-clisp=/opt/clisp/bin/clisp Optionally, specify a path to CLISP executable. This is useful if you have more than one CLISP installation on your system. If you don't set this option, then the first executable that will be found in your PATH will be chosen for running Invenio. --with-cmucl=/opt/cmucl/bin/lisp Optionally, specify a path to CMUCL executable. This is useful if you have more than one CMUCL installation on your system. If you don't set this option, then the first executable that will be found in your PATH will be chosen for running Invenio. --with-sbcl=/opt/sbcl/bin/sbcl Optionally, specify a path to SBCL executable. This is useful if you have more than one SBCL installation on your system. If you don't set this option, then the first executable that will be found in your PATH will be chosen for running Invenio. --with-openoffice-python Optionally, specify the path to the Python interpreter embedded with OpenOffice.org. This is normally not contained in the normal path. If you don't specify this it won't be possible to use OpenOffice.org to convert from and to Microsoft Office and OpenOffice.org documents. This configuration step is mandatory. Usually, you do this step only once. (Note that if you are building Invenio not from a released tarball, but from the Git sources, then you have to generate the configure file via autotools: $ sudo aptitude install automake1.9 autoconf $ aclocal-1.9 $ automake-1.9 -a $ autoconf after which you proceed with the usual configure command.) $ make Launch the Invenio build. Since many messages are printed during the build process, you may want to run it in a fast-scrolling terminal such as rxvt or in a detached screen session. During this step all the pages and scripts will be pre-created and customized based on the config you have edited in the previous step. Note that on systems such as FreeBSD or Mac OS X you have to use GNU make ("gmake") instead of "make". $ make install Install the web pages, scripts, utilities and everything needed for Invenio runtime into respective installation directories, as specified earlier by the configure command. Note that if you are installing Invenio for the first time, you will be asked to create symbolic link(s) from Python's site-packages system-wide directory(ies) to the installation location. This is in order to instruct Python where to find Invenio's Python files. You will be hinted as to the exact command to use based on the parameters you have used in the configure command. $ make install-mathjax-plugin ## optional This will automatically download and install in the proper place MathJax, a JavaScript library to render LaTeX formulas in the client browser. Note that in order to enable the rendering you will have to set the variable CFG_WEBSEARCH_USE_MATHJAX_FOR_FORMATS in invenio-local.conf to a suitable list of output format codes. For example: CFG_WEBSEARCH_USE_MATHJAX_FOR_FORMATS = hd,hb $ make install-jquery-plugins ## optional This will automatically download and install in the proper place jQuery and related plugins. They are used for AJAX applications such as the record editor. Note that `unzip' is needed when installing jquery plugins. $ make install-fckeditor-plugin ## optional This will automatically download and install in the proper place FCKeditor, a WYSIWYG Javascript-based editor (e.g. for the WebComment module). Note that in order to enable the editor you have to set the CFG_WEBCOMMENT_USE_FCKEDITOR to True. $ make install-pdfa-helper-files ## optional This will automatically download and install in the proper place the helper files needed to create PDF/A files out of existing PDF files. 2b. Configuration ----------------- Once the basic software installation is done, we proceed to configuring your Invenio system. $ sudo chown -R www-data.www-data /opt/invenio For the sake of simplicity, let us assume that your Invenio installation will run under the `www-data' user process identity. The above command changes ownership of installed files to www-data, so that we shall run everything under this user identity from now on. For production purposes, you would typically enable Apache server to read all files from the installation place but to write only to the `var' subdirectory of your installation place. You could achieve this by configuring Unix directory group permissions, for example. $ sudo -u www-data emacs /opt/invenio/etc/invenio-local.conf Customize your Invenio installation. Please read the 'invenio.conf' file located in the same directory that contains the vanilla default configuration parameters of your Invenio installation. If you want to customize some of these parameters, you should create a file named 'invenio-local.conf' in the same directory where 'invenio.conf' lives and you should write there only the customizations that you want to be different from the vanilla defaults. Here is a realistic, minimalist, yet production-ready example of what you would typically put there: $ cat /opt/invenio/etc/invenio-local.conf [Invenio] CFG_SITE_NAME = John Doe's Document Server CFG_SITE_NAME_INTL_fr = Serveur des Documents de John Doe CFG_SITE_URL = http://your.site.com CFG_SITE_SECURE_URL = https://your.site.com CFG_SITE_ADMIN_EMAIL = john.doe@your.site.com CFG_SITE_SUPPORT_EMAIL = john.doe@your.site.com CFG_WEBALERT_ALERT_ENGINE_EMAIL = john.doe@your.site.com CFG_WEBCOMMENT_ALERT_ENGINE_EMAIL = john.doe@your.site.com CFG_WEBCOMMENT_DEFAULT_MODERATOR = john.doe@your.site.com CFG_DATABASE_HOST = localhost CFG_DATABASE_NAME = invenio CFG_DATABASE_USER = invenio CFG_DATABASE_PASS = my123p$ss You should override at least the parameters mentioned above in order to define some very essential runtime parameters such as the name of your document server (CFG_SITE_NAME and CFG_SITE_NAME_INTL_*), the visible URL of your document server (CFG_SITE_URL and CFG_SITE_SECURE_URL), the email address of the local Invenio administrator, comment moderator, and alert engine (CFG_SITE_SUPPORT_EMAIL, CFG_SITE_ADMIN_EMAIL, etc), and last but not least your database credentials (CFG_DATABASE_*). The Invenio system will then read both the default invenio.conf file and your customized invenio-local.conf file and it will override any default options with the ones you have specifield in your local file. This cascading of configuration parameters will ease your future upgrades. $ sudo -u www-data /opt/invenio/bin/inveniocfg --update-all Make the rest of the Invenio system aware of your invenio-local.conf changes. This step is mandatory each time you edit your conf files. $ sudo -u www-data /opt/invenio/bin/inveniocfg --create-tables If you are installing Invenio for the first time, you have to create database tables. Note that this step checks for potential problems such as the database connection rights and may ask you to perform some more administrative steps in case it detects a problem. Notably, it may ask you to set up database access permissions, based on your configure values. If you are installing Invenio for the first time, you have to create a dedicated database on your MySQL server that the Invenio can use for its purposes. Please contact your MySQL administrator and ask him to execute the commands this step proposes you. At this point you should now have successfully completed the "make install" process. We continue by setting up the Apache web server. $ sudo -u www-data /opt/invenio/bin/inveniocfg --load-webstat-conf Load the configuration file of webstat module. It will create the tables in the database for register customevents, such as basket hits. $ sudo -u www-data /opt/invenio/bin/inveniocfg --create-apache-conf Running this command will generate Apache virtual host configurations matching your installation. You will be instructed to check created files (usually they are located under /opt/invenio/etc/apache/) and edit your httpd.conf to activate Invenio virtual hosts. If you are using Debian GNU/Linux ``Lenny'' or later, then you can do the following to create your SSL certificate and to activate your Invenio vhosts: ## make SSL certificate: $ sudo aptitude install ssl-cert $ sudo mkdir /etc/apache2/ssl $ sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf \ /etc/apache2/ssl/apache.pem ## add Invenio web sites: $ sudo ln -s /opt/invenio/etc/apache/invenio-apache-vhost.conf \ /etc/apache2/sites-available/invenio $ sudo ln -s /opt/invenio/etc/apache/invenio-apache-vhost-ssl.conf \ /etc/apache2/sites-available/invenio-ssl ## disable Debian's default web site: $ sudo /usr/sbin/a2dissite default ## enable Invenio web sites: $ sudo /usr/sbin/a2ensite invenio $ sudo /usr/sbin/a2ensite invenio-ssl ## enable SSL module: $ sudo /usr/sbin/a2enmod ssl ## if you are using xsendfile module, enable it too: $ sudo /usr/sbin/a2enmod xsendfile If you are using another operating system, you should do the equivalent, for example edit your system-wide httpd.conf and put the following include statements: Include /opt/invenio/etc/apache/invenio-apache-vhost.conf Include /opt/invenio/etc/apache/invenio-apache-vhost-ssl.conf Note that you may need to adapt generated vhost file snippets to match your concrete operating system specifics. For example, the generated configuration snippet will preload Invenio WSGI daemon application upon Apache start up for faster site response. The generated configuration assumes that you are using mod_wsgi version 3 or later. If you are using the old legacy mod_wsgi version 2, then you would need to comment out the WSGIImportScript directive from the generated snippet, or else move the WSGI daemon setup to the top level, outside of the VirtualHost section. Note also that you may want to tweak the generated Apache vhost snippet for performance reasons, especially with respect to WSGIDaemonProcess parameters. For example, you can increase the number of processes from the default value `processes=5' if you have lots of RAM and if many concurrent users may access your site in parallel. However, note that you must use `threads=1' there, because Invenio WSGI daemon processes are not fully thread safe yet. This may change in the future. $ sudo /etc/init.d/apache2 restart Please ask your webserver administrator to restart the Apache server after the above "httpd.conf" changes. $ sudo -u www-data /opt/invenio/bin/inveniocfg --create-demo-site This step is recommended to test your local Invenio installation. It should give you our "Atlantis Institute of Science" demo installation, exactly as you see it at . $ sudo -u www-data /opt/invenio/bin/inveniocfg --load-demo-records Optionally, load some demo records to be able to test indexing and searching of your local Invenio demo installation. $ sudo -u www-data /opt/invenio/bin/inveniocfg --run-unit-tests Optionally, you can run the unit test suite to verify the unit behaviour of your local Invenio installation. Note that this command should be run only after you have installed the whole system via `make install'. $ sudo -u www-data /opt/invenio/bin/inveniocfg --run-regression-tests Optionally, you can run the full regression test suite to verify the functional behaviour of your local Invenio installation. Note that this command requires to have created the demo site and loaded the demo records. Note also that running the regression test suite may alter the database content with junk data, so that rebuilding the demo site is strongly recommended afterwards. $ sudo -u www-data /opt/invenio/bin/inveniocfg --run-web-tests Optionally, you can run additional automated web tests running in a real browser. This requires to have Firefox with the Selenium IDE extension installed. $ sudo -u www-data /opt/invenio/bin/inveniocfg --remove-demo-records Optionally, remove the demo records loaded in the previous step, but keeping otherwise the demo collection, submission, format, and other configurations that you may reuse and modify for your own production purposes. $ sudo -u www-data /opt/invenio/bin/inveniocfg --drop-demo-site Optionally, drop also all the demo configuration so that you'll end up with a completely blank Invenio system. However, you may want to find it more practical not to drop the demo site configuration but to start customizing from there. $ firefox http://your.site.com/help/admin/howto-run In order to start using your Invenio installation, you can start indexing, formatting and other daemons as indicated in the "HOWTO Run" guide on the above URL. You can also use the Admin Area web interfaces to perform further runtime configurations such as the definition of data collections, document types, document formats, word indexes, etc. $ sudo ln -s /opt/invenio/etc/bash_completion.d/inveniocfg \ /etc/bash_completion.d/inveniocfg Optionally, if you are using Bash shell completion, then you may want to create the above symlink in order to configure completion for the inveniocfg command. Happy hacking and thanks for flying Invenio. - Invenio Development Team Email: info@invenio-software.org IRC: #invenio on irc.freenode.net Twitter: http://twitter.com/inveniosoftware Github: http://github.com/inveniosoftware URL: http://invenio-software.org diff --git a/Makefile.am b/Makefile.am index a43a65e9f..6a12638ed 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,554 +1,563 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013, 2014, 2015 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. confignicedir = $(sysconfdir)/build confignice_SCRIPTS=config.nice SUBDIRS = po config modules EXTRA_DIST = UNINSTALL THANKS RELEASE-NOTES configure-tests.py config.nice.in \ config.rpath CONTRIBUTING.rst Dockerfile docker-compose.yml # current MathJax version and packages -MJV = 1.0.1a -MATHJAX = http://invenio-software.org/download/mathjax/MathJax-v$(MJV).zip +MJV = 2.3.0 +MATHJAX = https://github.com/mathjax/MathJax/archive/$(MJV).zip # current FCKeditor version FCKV = 2.6.6 FCKEDITOR = FCKeditor_$(FCKV).zip # git-version-get stuff: BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ dist-hook: echo $(VERSION) > $(distdir)/.tarball-version check-custom-templates: $(PYTHON) $(top_srcdir)/modules/webstyle/lib/template.py --check-custom-templates $(top_srcdir) kwalitee-check: @$(PYTHON) $(top_srcdir)/modules/miscutil/lib/kwalitee.py --stats $(top_srcdir) kwalitee-check-errors-only: @$(PYTHON) $(top_srcdir)/modules/miscutil/lib/kwalitee.py --check-errors $(top_srcdir) kwalitee-check-variables: @$(PYTHON) $(top_srcdir)/modules/miscutil/lib/kwalitee.py --check-variables $(top_srcdir) kwalitee-check-indentation: @$(PYTHON) $(top_srcdir)/modules/miscutil/lib/kwalitee.py --check-indentation $(top_srcdir) kwalitee-check-sql-queries: @echo "* Listing potentially dangerous SQL queries:" @echo "** SQL SELECT queries without explicit column list:" @find $(top_srcdir) -name '*.py' -exec grep -HEin 'SELECT \* FROM' {} \; 2> /dev/null @echo "** SQL INSERT queries without explicit column list:" @find $(top_srcdir) -name '*.py' -exec grep -HEin 'INSERT INTO ([[:alnum:]]|_)+[[:space:]]*VALUES' {} \; 2> /dev/null @find $(top_srcdir) -name '*.py' -exec grep -HEin 'INSERT INTO ([[:alnum:]]|_)+[[:space:]]*$$' {} \; 2> /dev/null @echo "** SQL queries using charset-ignorant escape_string():" @find $(top_srcdir) -name '*.py' -exec grep -HEin 'escape_string' {} \; 2> /dev/null @echo "** SQL queries using literal '%s':" @find $(top_srcdir) -name '*.py' -exec grep -HEin "run_sql.*'%[dfis]'" {} \; 2> /dev/null @find $(top_srcdir) -name '*.py' -exec grep -HEin 'run_sql.*"%[dfis]"' {} \; 2> /dev/null @echo "** SQL queries with potentially unescaped arguments:" @find $(top_srcdir) -name '*.py' -exec grep -HEin 'run_sql.* % ' {} \; 2> /dev/null @echo "* Done." etags: \rm -f $(top_srcdir)/TAGS (cd $(top_srcdir) && find $(top_srcdir) -name "*.py" -print | xargs etags) install-data-local: for d in / /cache /log /tmp /data /run ; do \ mkdir -p $(localstatedir)$$d ; \ done @echo "************************************************************" @echo "** Invenio software has been successfully installed! **" @echo "** **" @echo "** You may proceed to customizing your installation now. **" @echo "************************************************************" install-mathjax-plugin: @echo "***********************************************************" @echo "** Installing MathJax plugin, please wait... **" @echo "***********************************************************" rm -rf /tmp/invenio-mathjax-plugin mkdir /tmp/invenio-mathjax-plugin (cd /tmp/invenio-mathjax-plugin && \ wget -O mathjax.zip '$(MATHJAX)' && \ unzip -q -u -d ${prefix}/var/www mathjax.zip) rm -fr /tmp/invenio-mathjax-plugin @echo "* Installing Invenio-specific MathJax config..." (cd $(top_srcdir)/modules/webstyle/etc && make install) @echo "************************************************************" @echo "** The MathJax plugin was successfully installed. **" @echo "** Please do not forget to properly set the option **" @echo "** CFG_WEBSEARCH_USE_MATHJAX_FOR_FORMATS in invenio.conf. **" @echo "************************************************************" uninstall-mathjax-plugin: @rm -rvf ${prefix}/var/www/MathJax @echo "***********************************************************" @echo "** The MathJax plugin was successfully uninstalled. **" @echo "***********************************************************" install-jscalendar-plugin: @echo "***********************************************************" @echo "** Installing jsCalendar plugin, please wait... **" @echo "***********************************************************" rm -rf /tmp/invenio-jscalendar-plugin mkdir /tmp/invenio-jscalendar-plugin (cd /tmp/invenio-jscalendar-plugin && \ wget 'http://www.dynarch.com/static/jscalendar-1.0.zip' && \ unzip -u jscalendar-1.0.zip && \ mkdir -p ${prefix}/var/www/jsCalendar && \ cp jscalendar-1.0/img.gif ${prefix}/var/www/jsCalendar/jsCalendar.gif && \ cp jscalendar-1.0/calendar.js ${prefix}/var/www/jsCalendar/ && \ cp jscalendar-1.0/calendar-setup.js ${prefix}/var/www/jsCalendar/ && \ cp jscalendar-1.0/lang/calendar-en.js ${prefix}/var/www/jsCalendar/ && \ cp jscalendar-1.0/calendar-blue.css ${prefix}/var/www/jsCalendar/) rm -fr /tmp/invenio-jscalendar-plugin @echo "***********************************************************" @echo "** The jsCalendar plugin was successfully installed. **" @echo "***********************************************************" uninstall-jscalendar-plugin: @rm -rvf ${prefix}/var/www/jsCalendar @echo "***********************************************************" @echo "** The jsCalendar plugin was successfully uninstalled. **" @echo "***********************************************************" install-jquery-plugins: @echo "***********************************************************" @echo "** Installing various jQuery plugins, please wait... **" @echo "***********************************************************" - mkdir -p ${prefix}/var/www/js + mkdir -p ${prefix}/var/www/js && \ + mkdir -p ${prefix}/var/www/img && \ (cd ${prefix}/var/www/js && \ wget http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js && \ mv jquery-1.3.1.min.js jquery.min.js && \ wget http://jquery-ui.googlecode.com/svn/tags/latest/ui/minified/jquery.effects.core.min.js && \ wget http://jquery-ui.googlecode.com/svn/tags/latest/ui/minified/jquery.effects.highlight.min.js && \ wget http://jquery-ui.googlecode.com/svn/tags/1.7.3/ui/minified/ui.slider.min.js && \ wget http://jquery-ui.googlecode.com/svn/tags/1.7.3/ui/minified/ui.sortable.min.js && \ wget http://www.appelsiini.net/download/jquery.jeditable.mini.js && \ wget https://raw.github.com/malsup/form/master/jquery.form.js --no-check-certificate && \ wget http://jquery-multifile-plugin.googlecode.com/svn/trunk/jquery.MultiFile.pack.js && \ wget https://raw.github.com/akaihola/jquery-autogrow/master/jquery.autogrow.js --no-check-certificate && \ wget -O jquery.tablesorter.zip http://invenio-software.org/download/jquery/jquery.tablesorter.20111208.zip && \ wget http://invenio-software.org/download/jquery/uploadify-v2.1.4.zip -O uploadify.zip && \ unzip jquery.tablesorter.zip -d tablesorter && \ rm jquery.tablesorter.zip && \ unzip -u uploadify.zip -d uploadify && \ mv uploadify/swfobject.js ./ && \ mv uploadify/cancel.png uploadify/uploadify.css uploadify/uploadify.allglyphs.swf uploadify/uploadify.fla uploadify/uploadify.swf ../img/ && \ mv uploadify/jquery.uploadify.v2.1.4.min.js ./jquery.uploadify.min.js && \ rm uploadify.zip && rm -r uploadify && \ wget --no-check-certificate https://github.com/douglascrockford/JSON-js/raw/master/json2.js && \ wget http://jquery-ui.googlecode.com/svn/tags/1.7.3/ui/minified/ui.datepicker.min.js && \ wget -O jquery.hotkeys.min.js http://js-hotkeys.googlecode.com/files/jquery.hotkeys-0.7.8-packed.js && \ wget http://invenio-software.org/download/jquery/jquery.treeview.zip && \ unzip jquery.treeview.zip -d jquery-treeview && \ rm jquery.treeview.zip && \ wget http://invenio-software.org/download/jquery/v1.5/js/jquery.ajaxPager.js && \ wget http://invenio-software.org/download/jquery/jquery-ui-1.7.3.custom.zip && \ unzip jquery-ui-1.7.3.custom.zip development-bundle/ui/ui.core.js && \ mv development-bundle/ui/ui.core.js ui.core.js && \ rm -rf development-bundle && \ rm jquery-ui-1.7.3.custom.zip && \ - mkdir -p ${prefix}/var/www/img && \ cd ${prefix}/var/www/img && \ wget -r -np -nH --cut-dirs=4 -A "png,css" -P jquery-ui/themes http://jquery-ui.googlecode.com/svn/tags/1.7.3/themes/base/ && \ wget http://jquery-ui.googlecode.com/svn/tags/1.7.3/themes/redmond/jquery-ui.css && \ wget http://jquery-ui.googlecode.com/svn/tags/1.7.3/demos/images/calendar.gif && \ wget -r -np -nH --cut-dirs=5 -A "png" http://jquery-ui.googlecode.com/svn/tags/1.7.3/themes/redmond/images/) @echo "***********************************************************" @echo "** The jQuery plugins were successfully installed. **" @echo "***********************************************************" uninstall-jquery-plugins: (cd ${prefix}/var/www/js && \ rm -f jquery.min.js && \ rm -f jquery.effects.core.min.js && \ rm -f jquery.effects.highlight.min.js && \ rm -f jquery.MultiFile.pack.js && \ rm -f jquery.jeditable.mini.js && \ rm -f ui.datepicker.min.js && \ rm -f jquery.autogrow.js && \ rm -f json2.js && \ rm -f jquery.uploadify.min.js && \ rm -f jquery.ui.slider.min.js && \ rm -f jquery.ui.sortable.min.js && \ rm -rf tablesorter && \ rm -f jquery.hotkeys.min.js && \ rm -rf jquery-treeview && \ rm -f jquery.ajaxPager.js && \ rm -f jquery.form.js && \ rm -f ui.core.js) && \ (cd ${prefix}/var/www/img && \ rm -f cancel.png uploadify.css uploadify.swf uploadify.allglyphs.swf uploadify.fla) @echo "***********************************************************" @echo "** The jquery plugins were successfully uninstalled. **" @echo "***********************************************************" install-ckeditor-plugin: install-fckeditor-plugin install-fckeditor-plugin: @echo "***********************************************************" @echo "** Installing FCKeditor plugin, please wait... **" @echo "***********************************************************" rm -rf ${prefix}/lib/python/invenio/fckeditor/ rm -rf /tmp/invenio-fckeditor-plugin mkdir /tmp/invenio-fckeditor-plugin (cd /tmp/invenio-fckeditor-plugin && \ wget 'http://downloads.sourceforge.net/fckeditor/$(FCKEDITOR)' && \ unzip -u -d ${prefix}/var/www $(FCKEDITOR)) && \ mkdir -p ${prefix}/lib/python/invenio/fckeditor/editor/filemanager/connectors/py && \ mv -f ${prefix}/var/www/fckeditor/fckeditor.py ${prefix}/lib/python/invenio/fckeditor/ && \ mv -f ${prefix}/var/www/fckeditor/editor/filemanager/connectors/py/*.py ${prefix}/lib/python/invenio/fckeditor/editor/filemanager/connectors/py/ && \ rm -f ${prefix}/var/www/fckeditor/editor/filemanager/connectors/py/upload.py && \ rm -f ${prefix}/var/www/fckeditor/editor/filemanager/connectors/py/zope.py && \ find ${prefix}/lib/python/invenio/fckeditor -type d -exec touch {}/__init__.py \; && \ find ${prefix}/var/www/fckeditor/ -depth -name '_*' -exec rm -rf {} \; && \ rm -r ${prefix}/var/www/fckeditor/editor/filemanager/connectors && \ find ${prefix}/var/www/fckeditor/fckeditor* -maxdepth 0 ! -name "fckeditor.js" -exec rm -r {} \; && \ rm -fr /tmp/invenio-fckeditor-plugin sed -i "s/if (FCKBrowserInfo\.IsSafari){FCKTools\.AddEventListener(FCK\.EditorDocument,'paste'/if (FCKBrowserInfo.IsSafari \&\& false){FCKTools.AddEventListener(FCK.EditorDocument,'paste'/" ${prefix}/var/www/fckeditor/editor/js/fckeditorcode_gecko.js # Fix issue described at , affecting v2.6.5, 2.6.6 @echo "* Installing Invenio-specific FCKeditor config..." (cd $(top_srcdir)/modules/webstyle/etc && make install) @echo "***********************************************************" @echo "** The FCKeditor plugin was successfully installed. **" @echo "** Please do not forget to properly set the option **" @echo "** CFG_WEBCOMMENT_USE_RICH_TEXT_EDITOR in invenio.conf. **" @echo "***********************************************************" uninstall-fckeditor-plugin: @rm -rvf ${prefix}/var/www/fckeditor @rm -rvf ${prefix}/lib/python/invenio/fckeditor @echo "***********************************************************" @echo "** The FCKeditor plugin was successfully uninstalled. **" @echo "***********************************************************" install-pdfa-helper-files: @echo "***********************************************************" @echo "** Installing PDF/A helper files, please wait... **" @echo "***********************************************************" wget 'http://invenio-software.org/download/invenio-demo-site-files/ISOCoatedsb.icc' -O ${prefix}/etc/websubmit/file_converter_templates/ISOCoatedsb.icc @echo "***********************************************************" @echo "** The PDF/A helper files were successfully installed. **" @echo "***********************************************************" uninstall-pdfa-helper-files: rm -f ${prefix}/etc/websubmit/file_converter_templates/ISOCoatedsb.icc @echo "***********************************************************" @echo "** The PDF/A helper files were successfully uninstalled. **" @echo "***********************************************************" +install-django-tequila: + @echo "***********************************************************" + @echo "** Installing Django Tequila, please wait... **" + @echo "***********************************************************" + pip install -e 'svn+https://svn.epfl.ch/svn/django-tools/trunk/django-tequila#egg=django-tequila' + @echo "***********************************************************" + @echo "** The Django Tequila has been successfully installed. **" + @echo "***********************************************************" + update-v0.3.0-tables update-v0.3.1-tables: echo "ALTER TABLE idxINDEXNAME CHANGE id_idxINDEX id_idxINDEX mediumint(9) unsigned NOT NULL FIRST;" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkMETHODNAME CHANGE id_rnkMETHOD id_rnkMETHOD mediumint(9) unsigned NOT NULL FIRST;" | ${prefix}/bin/dbexec echo "ALTER TABLE collectionname CHANGE id_collection id_collection mediumint(9) unsigned NOT NULL FIRST;" | ${prefix}/bin/dbexec echo "ALTER TABLE formatname CHANGE id_format id_format mediumint(9) unsigned NOT NULL FIRST;" | ${prefix}/bin/dbexec echo "ALTER TABLE fieldname CHANGE id_field id_field mediumint(9) unsigned NOT NULL FIRST;" | ${prefix}/bin/dbexec echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'runbibrank','run BibRank','','no');" | ${prefix}/bin/dbexec echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'cfgbibrank','configure BibRank','','no');" | ${prefix}/bin/dbexec update-v0.3.2-tables: echo "ALTER TABLE sbmCOLLECTION_sbmDOCTYPE CHANGE id_son id_son char(10) NOT NULL default '0';" | ${prefix}/bin/dbexec update-v0.3.3-tables: ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "ALTER TABLE flxLINKTYPEPARAMS CHANGE pname pname varchar(78) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkMETHOD DROP star_category_ranges;" | ${prefix}/bin/dbexec echo "DROP TABLE rnkSET;" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK CHANGE arguments arguments LONGTEXT;" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK CHANGE status status varchar(50);" | ${prefix}/bin/dbexec update-v0.5.0-tables: ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "ALTER TABLE session ADD INDEX uid (uid);" | ${prefix}/bin/dbexec echo "UPDATE idxINDEXNAME SET ln='cs' WHERE ln='cz';" | ${prefix}/bin/dbexec echo "UPDATE rnkMETHODNAME SET ln='cs' WHERE ln='cz';" | ${prefix}/bin/dbexec echo "UPDATE collectionname SET ln='cs' WHERE ln='cz';" | ${prefix}/bin/dbexec echo "UPDATE collection_portalbox SET ln='cs' WHERE ln='cz';" | ${prefix}/bin/dbexec echo "UPDATE formatname SET ln='cs' WHERE ln='cz';" | ${prefix}/bin/dbexec echo "UPDATE fieldname SET ln='cs' WHERE ln='cz';" | ${prefix}/bin/dbexec echo "UPDATE idxINDEXNAME SET ln='sv' WHERE ln='se';" | ${prefix}/bin/dbexec echo "UPDATE rnkMETHODNAME SET ln='sv' WHERE ln='se';" | ${prefix}/bin/dbexec echo "UPDATE collectionname SET ln='sv' WHERE ln='se';" | ${prefix}/bin/dbexec echo "UPDATE collection_portalbox SET ln='sv' WHERE ln='se';" | ${prefix}/bin/dbexec echo "UPDATE formatname SET ln='sv' WHERE ln='se';" | ${prefix}/bin/dbexec echo "UPDATE fieldname SET ln='sv' WHERE ln='se';" | ${prefix}/bin/dbexec update-v0.7.1-tables: echo "DROP TABLE oaiHARVEST;" | ${prefix}/bin/dbexec ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'cfgbibharvest','configure BibHarvest','','no');" | ${prefix}/bin/dbexec echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'runoaiharvest','run BibHarvest oaiharvest','','no');" | ${prefix}/bin/dbexec echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'cfgwebcomment','configure WebComment','','no');" | ${prefix}/bin/dbexec echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'runoaiarchive','run BibHarvest oaiarchive','','no');" | ${prefix}/bin/dbexec echo "INSERT INTO accACTION (id,name,description,allowedkeywords,optional) VALUES (NULL,'runbibedit','run BibEdit','','no');" | ${prefix}/bin/dbexec echo "ALTER TABLE user ADD nickname varchar(255) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE user ADD last_login datetime NOT NULL default '0000-00-00 00:00:00';" | ${prefix}/bin/dbexec echo "ALTER TABLE user ADD INDEX nickname (nickname);" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmFIELD CHANGE subname subname varchar(13) default NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE user_query_basket CHANGE alert_name alert_name varchar(30) NOT NULL default '';" | ${prefix}/bin/dbexec echo "TRUNCATE TABLE session;" | ${prefix}/bin/dbexec @echo "**********************************************************" @echo "** Do not forget to run the basket migration now: **" @echo "** @PYTHON@ modules/webbasket/lib/webbasket_migration_kit.py " @echo "** Please see the RELEASE-NOTES for details. **" @echo "**********************************************************" @echo "INSERT INTO oaiARCHIVE (id, setName, setSpec, setDescription, setDefinition, setRecList) SELECT id, setName, setSpec, CONCAT_WS('', setDescription), setDefinition, setRecList FROM oaiSET;" update-v0.90.0-tables: ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "ALTER TABLE format ADD COLUMN (description varchar(255) default '');" | ${prefix}/bin/dbexec echo "ALTER TABLE format ADD COLUMN (content_type varchar(255) default '');" | ${prefix}/bin/dbexec update-v0.90.1-tables: ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "ALTER TABLE schTASK ADD INDEX status (status);" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK ADD INDEX runtime (runtime);" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmCATEGORIES ADD COLUMN score TINYINT UNSIGNED NOT NULL DEFAULT 0;" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmCATEGORIES ADD PRIMARY KEY (doctype, sname);" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmCATEGORIES ADD KEY doctype (doctype);" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiHARVEST ADD COLUMN setspecs TEXT NOT NULL DEFAULT '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE setDescription setDescription text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE p1 p1 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE f1 f1 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE m1 m1 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE p2 p2 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE f2 f2 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE m2 m2 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE p3 p3 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE f3 f3 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiARCHIVE CHANGE m3 m3 text NOT NULL default '';" | ${prefix}/bin/dbexec echo "UPDATE bibdoc SET status=0 WHERE status='';" | ${prefix}/bin/dbexec echo "UPDATE bibdoc SET status=1 WHERE status='deleted';" | ${prefix}/bin/dbexec echo "ALTER TABLE fmtKNOWLEDGEBASES add COLUMN kbtype char default NULL;" | ${prefix}/bin/dbexec update-v0.92.0-tables: echo "UPDATE bibdoc SET status=0 WHERE status='';" | ${prefix}/bin/dbexec echo "UPDATE bibdoc SET status=1 WHERE status='deleted';" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK CHANGE arguments arguments mediumblob;" | ${prefix}/bin/dbexec echo "UPDATE user SET note=1 WHERE nickname='admin' AND note IS NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE usergroup CHANGE name name varchar(255) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE usergroup ADD login_method varchar(255) NOT NULL default 'INTERNAL';" | ${prefix}/bin/dbexec echo "ALTER TABLE usergroup ADD UNIQUE KEY login_method_name (login_method(70), name);" | ${prefix}/bin/dbexec echo "ALTER TABLE user CHANGE settings settings blob default NULL;" | ${prefix}/bin/dbexec echo "INSERT INTO sbmALLFUNCDESCR VALUES ('Get_Recid', 'This function gets the recid for a document with a given report-number (as stored in the global variable rn).');" | ${prefix}/bin/dbexec update-v0.92.1-tables: echo "DROP TABLE rnkCITATIONDATA;" | ${prefix}/bin/dbexec ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "UPDATE bibdoc SET status='DELETED' WHERE status='1';" | ${prefix}/bin/dbexec echo "UPDATE bibdoc SET status='' WHERE status='0';" | ${prefix}/bin/dbexec echo "ALTER TABLE bibrec ADD KEY creation_date (creation_date);" | ${prefix}/bin/dbexec echo "ALTER TABLE bibrec ADD KEY modification_date (modification_date);" | ${prefix}/bin/dbexec echo "ALTER TABLE bibdoc ADD KEY creation_date (creation_date);" | ${prefix}/bin/dbexec echo "ALTER TABLE bibdoc ADD KEY modification_date (modification_date);" | ${prefix}/bin/dbexec echo "ALTER TABLE bibdoc ADD KEY docname (docname);" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiHARVEST CHANGE postprocess postprocess varchar(20) NOT NULL default 'h';" | ${prefix}/bin/dbexec echo "ALTER TABLE oaiHARVEST ADD COLUMN bibfilterprogram varchar(255) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE idxINDEXNAME CHANGE ln ln char(5) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE idxINDEX ADD COLUMN stemming_language VARCHAR(10) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkMETHODNAME CHANGE ln ln char(5) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkDOWNLOADS CHANGE id_bibdoc id_bibdoc mediumint(9) unsigned default NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkDOWNLOADS CHANGE file_format file_format varchar(10) NULL default NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE collectionname CHANGE ln ln char(5) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE collection_portalbox CHANGE ln ln char(5) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE format ADD COLUMN visibility TINYINT NOT NULL default 1;" | ${prefix}/bin/dbexec echo "ALTER TABLE formatname CHANGE ln ln char(5) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE fieldname CHANGE ln ln char(5) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE accROLE ADD COLUMN firerole_def_ser blob NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE accROLE ADD COLUMN firerole_def_src text NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE user_accROLE ADD COLUMN expiration datetime NOT NULL default '9999-12-31 23:59:59';" | ${prefix}/bin/dbexec echo "ALTER TABLE user DROP INDEX id, ADD PRIMARY KEY id (id);" | ${prefix}/bin/dbexec echo -e 'from invenio.dbquery import run_sql;\ map(lambda index_id: run_sql("ALTER TABLE idxPHRASE%02dF CHANGE term term TEXT NULL DEFAULT NULL, DROP INDEX term, ADD INDEX term (term (50))" % index_id[0]), run_sql("select id from idxINDEX"))' | $(PYTHON) echo "INSERT INTO rnkCITATIONDATA VALUES (1,'citationdict','','');" | ${prefix}/bin/dbexec echo "INSERT INTO rnkCITATIONDATA VALUES (2,'reversedict','','');" | ${prefix}/bin/dbexec echo "INSERT INTO rnkCITATIONDATA VALUES (3,'selfcitdict','','');" | ${prefix}/bin/dbexec update-v0.99.0-tables: ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "ALTER TABLE bibdoc ADD COLUMN more_info mediumblob NULL default NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK ADD COLUMN priority tinyint(4) NOT NULL default 0;" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK ADD KEY priority (priority);" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkCITATIONDATA DROP PRIMARY KEY;" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkCITATIONDATA ADD PRIMARY KEY (id);" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkCITATIONDATA CHANGE id id mediumint(8) unsigned NOT NULL auto_increment;" | ${prefix}/bin/dbexec echo "ALTER TABLE rnkCITATIONDATA ADD UNIQUE KEY object_name (object_name);" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmPARAMETERS CHANGE value value text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmAPPROVAL ADD note text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE hstDOCUMENT CHANGE docsize docsize bigint(15) unsigned NOT NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtACTIONHISTORY CHANGE client_host client_host int(10) unsigned default NULL;" | ${prefix}/bin/dbexec update-v0.99.1-tables: @echo "Nothing to do; table structure did not change between v0.99.1 and v0.99.2." update-v0.99.2-tables: @echo "Nothing to do; table structure did not change between v0.99.2 and v0.99.3." update-v0.99.3-tables: @echo "Nothing to do; table structure did not change between v0.99.3 and v0.99.4." update-v0.99.4-tables: @echo "Nothing to do; table structure did not change between v0.99.4 and v0.99.5." update-v0.99.5-tables: @echo "Nothing to do; table structure did not change between v0.99.5 and v0.99.6." update-v0.99.6-tables: @echo "Nothing to do; table structure did not change between v0.99.6 and v0.99.7." update-v0.99.7-tables: @echo "Nothing to do; table structure did not change between v0.99.7 and v0.99.8." update-v0.99.8-tables: @echo "Nothing to do; table structure did not change between v0.99.8 and v0.99.9." update-v0.99.9-tables: # from v0.99.9 to v1.0.0-rc0 echo "RENAME TABLE oaiARCHIVE TO oaiREPOSITORY;" | ${prefix}/bin/dbexec ${prefix}/bin/dbexec < $(top_srcdir)/modules/miscutil/sql/tabcreate.sql echo "INSERT INTO knwKB (id,name,description,kbtype) SELECT id,name,description,'' FROM fmtKNOWLEDGEBASES;" | ${prefix}/bin/dbexec echo "INSERT INTO knwKBRVAL (id,m_key,m_value,id_knwKB) SELECT id,m_key,m_value,id_fmtKNOWLEDGEBASES FROM fmtKNOWLEDGEBASEMAPPINGS;" | ${prefix}/bin/dbexec echo "ALTER TABLE sbmPARAMETERS CHANGE name name varchar(40) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE bibdoc CHANGE docname docname varchar(250) COLLATE utf8_bin NOT NULL default 'file';" | ${prefix}/bin/dbexec echo "ALTER TABLE bibdoc CHANGE status status text NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE bibdoc ADD COLUMN text_extraction_date datetime NOT NULL default '0000-00-00';" | ${prefix}/bin/dbexec echo "ALTER TABLE collection DROP COLUMN restricted;" | ${prefix}/bin/dbexec echo "ALTER TABLE schTASK CHANGE host host varchar(255) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE hstTASK CHANGE host host varchar(255) NOT NULL default '';" | ${prefix}/bin/dbexec echo "ALTER TABLE bib85x DROP INDEX kv, ADD INDEX kv (value(100));" | ${prefix}/bin/dbexec echo "UPDATE clsMETHOD SET location='http://invenio-software.org/download/invenio-demo-site-files/HEP.rdf' WHERE name='HEP' AND location='';" | ${prefix}/bin/dbexec echo "UPDATE clsMETHOD SET location='http://invenio-software.org/download/invenio-demo-site-files/NASA-subjects.rdf' WHERE name='NASA-subjects' AND location='';" | ${prefix}/bin/dbexec echo "UPDATE accACTION SET name='runoairepository', description='run oairepositoryupdater task' WHERE name='runoaiarchive';" | ${prefix}/bin/dbexec echo "UPDATE accACTION SET name='cfgoaiharvest', description='configure OAI Harvest' WHERE name='cfgbibharvest';" | ${prefix}/bin/dbexec echo "ALTER TABLE accARGUMENT CHANGE value value varchar(255);" | ${prefix}/bin/dbexec echo "UPDATE accACTION SET allowedkeywords='doctype,act,categ' WHERE name='submit';" | ${prefix}/bin/dbexec echo "INSERT INTO accARGUMENT(keyword,value) VALUES ('categ','*');" | ${prefix}/bin/dbexec echo "INSERT INTO accROLE_accACTION_accARGUMENT(id_accROLE,id_accACTION,id_accARGUMENT,argumentlistid) SELECT DISTINCT raa.id_accROLE,raa.id_accACTION,accARGUMENT.id,raa.argumentlistid FROM accROLE_accACTION_accARGUMENT as raa JOIN accACTION on id_accACTION=accACTION.id,accARGUMENT WHERE accACTION.name='submit' and accARGUMENT.keyword='categ' and accARGUMENT.value='*';" | ${prefix}/bin/dbexec echo "UPDATE accACTION SET allowedkeywords='name,with_editor_rights' WHERE name='cfgwebjournal';" | ${prefix}/bin/dbexec echo "INSERT INTO accARGUMENT(keyword,value) VALUES ('with_editor_rights','yes');" | ${prefix}/bin/dbexec echo "INSERT INTO accROLE_accACTION_accARGUMENT(id_accROLE,id_accACTION,id_accARGUMENT,argumentlistid) SELECT DISTINCT raa.id_accROLE,raa.id_accACTION,accARGUMENT.id,raa.argumentlistid FROM accROLE_accACTION_accARGUMENT as raa JOIN accACTION on id_accACTION=accACTION.id,accARGUMENT WHERE accACTION.name='cfgwebjournal' and accARGUMENT.keyword='with_editor_rights' and accARGUMENT.value='yes';" | ${prefix}/bin/dbexec echo "ALTER TABLE bskEXTREC CHANGE id id int(15) unsigned NOT NULL auto_increment;" | ${prefix}/bin/dbexec echo "ALTER TABLE bskEXTREC ADD external_id int(15) NOT NULL default '0';" | ${prefix}/bin/dbexec echo "ALTER TABLE bskEXTREC ADD collection_id int(15) unsigned NOT NULL default '0';" | ${prefix}/bin/dbexec echo "ALTER TABLE bskEXTREC ADD original_url text;" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD status char(2) NOT NULL default 'ok';" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD KEY status (status);" | ${prefix}/bin/dbexec echo "INSERT INTO sbmALLFUNCDESCR VALUES ('Move_Photos_to_Storage','Attach/edit the pictures uploaded with the \"create_photos_manager_interface()\" function');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFIELDDESC VALUES ('Upload_Photos',NULL,'','R',NULL,NULL,NULL,NULL,NULL,'\"\"\"\r\nThis is an example of element that creates a photos upload interface.\r\nClone it, customize it and integrate it into your submission. Then add function \r\n\'Move_Photos_to_Storage\' to your submission functions list, in order for files \r\nuploaded with this interface to be attached to the record. More information in \r\nthe WebSubmit admin guide.\r\n\"\"\"\r\n\r\nfrom invenio.websubmit_functions.ParamFile import ParamFromFile\r\nfrom invenio.websubmit_functions.Move_Photos_to_Storage import read_param_file, create_photos_manager_interface, get_session_id\r\n\r\n# Retrieve session id\r\ntry:\r\n # User info is defined only in MBI/MPI actions...\r\n session_id = get_session_id(None, uid, user_info) \r\nexcept:\r\n session_id = get_session_id(req, uid, {})\r\n\r\n# Retrieve context\r\nindir = curdir.split(\'/\')[-3]\r\ndoctype = curdir.split(\'/\')[-2]\r\naccess = curdir.split(\'/\')[-1]\r\n\r\n# Get the record ID, if any\r\nsysno = ParamFromFile(\"%s/%s\" % (curdir,\'SN\')).strip()\r\n\r\n\"\"\"\r\nModify below the configuration of the photos manager interface.\r\nNote: \'can_reorder_photos\' parameter is not yet fully taken into consideration\r\n\r\nDocumentation of the function is available by running:\r\necho -e \'from invenio.websubmit_functions.Move_Photos_to_Storage import create_photos_manager_interface as f\\nprint f.__doc__\' | python\r\n\"\"\"\r\ntext += create_photos_manager_interface(sysno, session_id, uid,\r\n doctype, indir, curdir, access,\r\n can_delete_photos=True,\r\n can_reorder_photos=True,\r\n can_upload_photos=True,\r\n editor_width=700,\r\n editor_height=400,\r\n initial_slider_value=100,\r\n max_slider_value=200,\r\n min_slider_value=80)','0000-00-00','0000-00-00',NULL,NULL,0);" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Photos_to_Storage','iconsize');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFIELDDESC VALUES ('Upload_Files',NULL,'','R',NULL,NULL,NULL,NULL,NULL,'\"\"\"\r\nThis is an example of element that creates a file upload interface.\r\nClone it, customize it and integrate it into your submission. Then add function \r\n\'Move_Uploaded_Files_to_Storage\' to your submission functions list, in order for files \r\nuploaded with this interface to be attached to the record. More information in \r\nthe WebSubmit admin guide.\r\n\"\"\"\r\nfrom invenio.websubmit_managedocfiles import create_file_upload_interface\r\nfrom invenio.websubmit_functions.Shared_Functions import ParamFromFile\r\n\r\nindir = ParamFromFile(os.path.join(curdir, \'indir\'))\r\ndoctype = ParamFromFile(os.path.join(curdir, \'doctype\'))\r\naccess = ParamFromFile(os.path.join(curdir, \'access\'))\r\ntry:\r\n sysno = int(ParamFromFile(os.path.join(curdir, \'SN\')).strip())\r\nexcept:\r\n sysno = -1\r\nln = ParamFromFile(os.path.join(curdir, \'ln\'))\r\n\r\n\"\"\"\r\nRun the following to get the list of parameters of function \'create_file_upload_interface\':\r\necho -e \'from invenio.websubmit_managedocfiles import create_file_upload_interface as f\\nprint f.__doc__\' | python\r\n\"\"\"\r\ntext = create_file_upload_interface(recid=sysno,\r\n print_outside_form_tag=False,\r\n include_headers=True,\r\n ln=ln,\r\n doctypes_and_desc=[(\'main\',\'Main document\'),\r\n (\'additional\',\'Figure, schema, etc.\')],\r\n can_revise_doctypes=[\'*\'],\r\n can_describe_doctypes=[\'main\'],\r\n can_delete_doctypes=[\'additional\'],\r\n can_rename_doctypes=[\'main\'],\r\n sbm_indir=indir, sbm_doctype=doctype, sbm_access=access)[1]\r\n','0000-00-00','0000-00-00',NULL,NULL,0);" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Uploaded_Files_to_Storage','forceFileRevision');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmALLFUNCDESCR VALUES ('Create_Upload_Files_Interface','Display generic interface to add/revise/delete files. To be used before function \"Move_Uploaded_Files_to_Storage\"');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmALLFUNCDESCR VALUES ('Move_Uploaded_Files_to_Storage','Attach files uploaded with \"Create_Upload_Files_Interface\"')" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Revised_Files_to_Storage','elementNameToDoctype');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Revised_Files_to_Storage','createIconDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Revised_Files_to_Storage','createRelatedFormats');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Revised_Files_to_Storage','iconsize');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Revised_Files_to_Storage','keepPreviousVersionDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmALLFUNCDESCR VALUES ('Move_Revised_Files_to_Storage','Revise files initially uploaded with \"Move_Files_to_Storage\"')" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','maxsize');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','minsize');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','doctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','restrictions');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canDeleteDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canReviseDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canDescribeDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canCommentDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canKeepDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canAddFormatDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canRestrictDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canRenameDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','canNameNewFiles');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','createRelatedFormats');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','keepDefault');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','showLinks');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','fileLabel');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','filenameLabel');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','descriptionLabel');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','commentLabel');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','restrictionLabel');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','startDoc');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','endDoc');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','defaultFilenameDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Create_Upload_Files_Interface','maxFilesDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Uploaded_Files_to_Storage','iconsize');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Uploaded_Files_to_Storage','createIconDoctypes');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Report_Number_Generation','nblength');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Second_Report_Number_Generation','2nd_nb_length');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Get_Recid','record_search_pattern');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmALLFUNCDESCR VALUES ('Move_FCKeditor_Files_to_Storage','Transfer files attached to the record with the FCKeditor');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_FCKeditor_Files_to_Storage','input_fields');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Stamp_Uploaded_Files','layer');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Stamp_Replace_Single_File_Approval','layer');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Stamp_Replace_Single_File_Approval','switch_file');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Stamp_Uploaded_Files','switch_file');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Files_to_Storage','paths_and_restrictions');" | ${prefix}/bin/dbexec echo "INSERT INTO sbmFUNDESC VALUES ('Move_Files_to_Storage','paths_and_doctypes');" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD round_name varchar(255) NOT NULL default ''" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD restriction varchar(50) NOT NULL default ''" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD in_reply_to_id_cmtRECORDCOMMENT int(15) unsigned NOT NULL default '0'" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD KEY in_reply_to_id_cmtRECORDCOMMENT (in_reply_to_id_cmtRECORDCOMMENT);" | ${prefix}/bin/dbexec echo "ALTER TABLE bskRECORDCOMMENT ADD in_reply_to_id_bskRECORDCOMMENT int(15) unsigned NOT NULL default '0'" | ${prefix}/bin/dbexec echo "ALTER TABLE bskRECORDCOMMENT ADD KEY in_reply_to_id_bskRECORDCOMMENT (in_reply_to_id_bskRECORDCOMMENT);" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD reply_order_cached_data blob NULL default NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE bskRECORDCOMMENT ADD reply_order_cached_data blob NULL default NULL;" | ${prefix}/bin/dbexec echo "ALTER TABLE cmtRECORDCOMMENT ADD INDEX (reply_order_cached_data(40));" | ${prefix}/bin/dbexec echo "ALTER TABLE bskRECORDCOMMENT ADD INDEX (reply_order_cached_data(40));" | ${prefix}/bin/dbexec echo -e 'from invenio.webcommentadminlib import migrate_comments_populate_threads_index;\ migrate_comments_populate_threads_index()' | $(PYTHON) echo -e 'from invenio.access_control_firerole import repair_role_definitions;\ repair_role_definitions()' | $(PYTHON) update-v1.0.0-rc0-tables: # from v1.0.0-rc0 to v1.0.0 @echo "Nothing to do; table structure did not change between v1.0.0-rc0 and v1.0.0." update-v1.0.0-tables: # from v1.0.0 to v1.0.1 @echo "Nothing to do; table structure did not change between v1.0.0 and v1.0.1." update-v1.0.1-tables: # from v1.0.1 to v1.0.2 @echo "ALTER TABLE session ADD KEY session_expiry (session_expiry);" | ${prefix}/bin/dbexec update-v1.0.2-tables: # from v1.0.2 to v1.0.3 @echo "Nothing to do; table structure did not change between v1.0.2 and v1.0.3." update-v1.0.3-tables: # from v1.0.3 to v1.0.4 @echo "Nothing to do; table structure did not change between v1.0.3 and v1.0.4." update-v1.0.4-tables: # from v1.0.4 to v1.0.5 @echo "Nothing to do; table structure did not change between v1.0.4 and v1.0.5." update-v1.0.5-tables: # from v1.0.5 to v1.0.6 @echo "Nothing to do; table structure did not change between v1.0.5 and v1.0.6." update-v1.0.6-tables: # from v1.0.6 to v1.0.7 @echo "Nothing to do; table structure did not change between v1.0.6 and v1.0.7." update-v1.0.7-tables: # from v1.0.7 to v1.0.8 @echo "Nothing to do; table structure did not change between v1.0.7 and v1.0.8." update-v1.0.8-tables: # from v1.0.8 to v1.0.9 @echo "Nothing to do; table structure did not change between v1.0.8 and v1.0.9." CLEANFILES = *~ *.pyc *.tmp diff --git a/README b/README index e4ff9c896..775935e25 100644 --- a/README +++ b/README @@ -1,72 +1,74 @@ +This is the modified version used by Infoscience @ EPFL + Invenio README ============== Invenio is a free software suite enabling you to run your own digital library or document repository on the web. The technology offered by the software covers all aspects of digital library management, from document ingestion through classification, indexing, and curation up to document dissemination. Invenio complies with standards such as the Open Archives Initiative and uses MARC 21 as its underlying bibliographic format. The flexibility and performance of Invenio make it a comprehensive solution for management of document repositories of moderate to large sizes. Invenio has been originally developed at CERN to run the CERN document server, managing over 1,000,000 bibliographic records in high-energy physics since 2002, covering articles, books, journals, photos, videos, and more. Invenio is nowadays co-developed by an international collaboration comprising institutes such as CERN, DESY, EPFL, FNAL, SLAC and is being used by many more scientific institutions worldwide. We aim at user friendliness and speed. Among the features are: - Navigable collection tree . Documents organised in collections . Regular and virtual collection trees . Customisable portal pages for each collection . At CERN, over 1,000,000 documents in 700 collections - Powerful search engine . Specially designed indexes to provide fast search speed for repositories of up to 3,000,000 records . Customisable simple and advanced search interfaces . Combined metadata, fulltext and citation search in one go . Results clustering by collection - Flexible metadata . Standard metadata format (MARC) . Handling articles, books, theses, photos, videos, museum objects and more . Customisable batch import and web submission workflows . Customisable output format display and linking rules - Collaborative features and personalisation . User-defined document baskets . User-defined email notification alerts . Personalised RSS queries . Sharing documents of interest in user groups . Peer reviewing and group commenting on documents Invenio is free software licenced under the terms of the GNU General Public Licence (GPL). It is provided on an "as is" basis, in the hope that it will be useful, but without any warranty. There is a possibility to get commercial support in case of interest. Invenio runs on Unix-like systems and requires MySQL database server and Apache/Python web application server. Please consult the INSTALL file for more information. Happy hacking and thanks for flying Invenio. - Invenio Development Team Email: info@invenio-software.org IRC: #invenio on irc.freenode.net Twitter: http://twitter.com/inveniosoftware Github: http://github.com/inveniosoftware URL: http://invenio-software.org diff --git a/infoscience/README b/infoscience/README new file mode 100644 index 000000000..e31658182 --- /dev/null +++ b/infoscience/README @@ -0,0 +1,3 @@ +You can find here most used files as symlinks. + +Configurations files are in infoscience project, not in invenio-infoscience. \ No newline at end of file diff --git a/infoscience/etc/bibexport b/infoscience/etc/bibexport new file mode 120000 index 000000000..71314cc4b --- /dev/null +++ b/infoscience/etc/bibexport @@ -0,0 +1 @@ +../../modules/bibexport/etc \ No newline at end of file diff --git a/infoscience/etc/bibformat/format_elements b/infoscience/etc/bibformat/format_elements new file mode 120000 index 000000000..e97c8640e --- /dev/null +++ b/infoscience/etc/bibformat/format_elements @@ -0,0 +1 @@ +../../../modules/bibformat/lib/elements \ No newline at end of file diff --git a/infoscience/etc/bibformat/format_templates b/infoscience/etc/bibformat/format_templates new file mode 120000 index 000000000..d1c3037b8 --- /dev/null +++ b/infoscience/etc/bibformat/format_templates @@ -0,0 +1 @@ +../../../modules/bibformat/etc/format_templates \ No newline at end of file diff --git a/infoscience/etc/bibformat/output_formats b/infoscience/etc/bibformat/output_formats new file mode 120000 index 000000000..40888c7c3 --- /dev/null +++ b/infoscience/etc/bibformat/output_formats @@ -0,0 +1 @@ +../../../modules/bibformat/etc/output_formats \ No newline at end of file diff --git a/infoscience/modules/bibdocfile.py b/infoscience/modules/bibdocfile.py new file mode 120000 index 000000000..b0e1180b0 --- /dev/null +++ b/infoscience/modules/bibdocfile.py @@ -0,0 +1 @@ +../../modules/websubmit/lib/bibdocfile.py \ No newline at end of file diff --git a/infoscience/modules/bibedit_engine.py b/infoscience/modules/bibedit_engine.py new file mode 120000 index 000000000..953f3c23e --- /dev/null +++ b/infoscience/modules/bibedit_engine.py @@ -0,0 +1 @@ +../../modules/bibedit/lib/bibedit_engine.py \ No newline at end of file diff --git a/infoscience/modules/oai_repository_server.py b/infoscience/modules/oai_repository_server.py new file mode 120000 index 000000000..7896faa66 --- /dev/null +++ b/infoscience/modules/oai_repository_server.py @@ -0,0 +1 @@ +../../modules/bibharvest/lib/oai_repository_server.py \ No newline at end of file diff --git a/infoscience/modules/oai_repository_updater.py b/infoscience/modules/oai_repository_updater.py new file mode 120000 index 000000000..6ae173d59 --- /dev/null +++ b/infoscience/modules/oai_repository_updater.py @@ -0,0 +1 @@ +../../modules/bibharvest/lib/oai_repository_updater.py \ No newline at end of file diff --git a/infoscience/modules/search_engine.py b/infoscience/modules/search_engine.py new file mode 120000 index 000000000..d54921cfc --- /dev/null +++ b/infoscience/modules/search_engine.py @@ -0,0 +1 @@ +../../modules/websearch/lib/search_engine.py \ No newline at end of file diff --git a/infoscience/modules/webbasket.py b/infoscience/modules/webbasket.py new file mode 120000 index 000000000..3aa3c442b --- /dev/null +++ b/infoscience/modules/webbasket.py @@ -0,0 +1 @@ +../../modules/webbasket/lib/webbasket.py \ No newline at end of file diff --git a/infoscience/modules/webbasket_dblayer.py b/infoscience/modules/webbasket_dblayer.py new file mode 120000 index 000000000..2d2312e08 --- /dev/null +++ b/infoscience/modules/webbasket_dblayer.py @@ -0,0 +1 @@ +../../modules/webbasket/lib/webbasket_dblayer.py \ No newline at end of file diff --git a/infoscience/modules/webcomment_webinterface.py b/infoscience/modules/webcomment_webinterface.py new file mode 120000 index 000000000..9b2336fca --- /dev/null +++ b/infoscience/modules/webcomment_webinterface.py @@ -0,0 +1 @@ +../../modules/webcomment/lib/webcomment_webinterface.py \ No newline at end of file diff --git a/infoscience/modules/websearch_webcoll.py b/infoscience/modules/websearch_webcoll.py new file mode 120000 index 000000000..a7267a222 --- /dev/null +++ b/infoscience/modules/websearch_webcoll.py @@ -0,0 +1 @@ +../../modules/websearch/lib/websearch_webcoll.py \ No newline at end of file diff --git a/infoscience/modules/websubmit_webinterface.py b/infoscience/modules/websubmit_webinterface.py new file mode 120000 index 000000000..e3adc69b7 --- /dev/null +++ b/infoscience/modules/websubmit_webinterface.py @@ -0,0 +1 @@ +../../modules/websubmit/lib/websubmit_webinterface.py \ No newline at end of file diff --git a/infoscience/modules/webuser.py b/infoscience/modules/webuser.py new file mode 120000 index 000000000..61b0711c6 --- /dev/null +++ b/infoscience/modules/webuser.py @@ -0,0 +1 @@ +../../modules/websession/lib/webuser.py \ No newline at end of file diff --git a/infoscience/po/en.po b/infoscience/po/en.po new file mode 120000 index 000000000..7f9103090 --- /dev/null +++ b/infoscience/po/en.po @@ -0,0 +1 @@ +../../po/en.po \ No newline at end of file diff --git a/infoscience/po/fr.po b/infoscience/po/fr.po new file mode 120000 index 000000000..a2efb9bbe --- /dev/null +++ b/infoscience/po/fr.po @@ -0,0 +1 @@ +../../po/fr.po \ No newline at end of file diff --git a/infoscience/templates/bibedit_templates_epfl.py b/infoscience/templates/bibedit_templates_epfl.py new file mode 120000 index 000000000..bfdabf769 --- /dev/null +++ b/infoscience/templates/bibedit_templates_epfl.py @@ -0,0 +1 @@ +../../modules/bibedit/lib/bibedit_templates_epfl.py \ No newline at end of file diff --git a/infoscience/templates/webalert_templates_epfl.py b/infoscience/templates/webalert_templates_epfl.py new file mode 120000 index 000000000..fefe3a998 --- /dev/null +++ b/infoscience/templates/webalert_templates_epfl.py @@ -0,0 +1 @@ +../../modules/webalert/lib/webalert_templates_epfl.py \ No newline at end of file diff --git a/infoscience/templates/webbasket_templates_epfl.py b/infoscience/templates/webbasket_templates_epfl.py new file mode 120000 index 000000000..35dbc5be3 --- /dev/null +++ b/infoscience/templates/webbasket_templates_epfl.py @@ -0,0 +1 @@ +../../modules/webbasket/lib/webbasket_templates_epfl.py \ No newline at end of file diff --git a/infoscience/templates/websearch_templates_epfl.py b/infoscience/templates/websearch_templates_epfl.py new file mode 120000 index 000000000..6e983522d --- /dev/null +++ b/infoscience/templates/websearch_templates_epfl.py @@ -0,0 +1 @@ +../../modules/websearch/lib/websearch_templates_epfl.py \ No newline at end of file diff --git a/infoscience/templates/websession_templates_epfl.py b/infoscience/templates/websession_templates_epfl.py new file mode 120000 index 000000000..840d7915d --- /dev/null +++ b/infoscience/templates/websession_templates_epfl.py @@ -0,0 +1 @@ +../../modules/websession/lib/websession_templates_epfl.py \ No newline at end of file diff --git a/infoscience/templates/webstyle_templates_epfl.py b/infoscience/templates/webstyle_templates_epfl.py new file mode 120000 index 000000000..e78594101 --- /dev/null +++ b/infoscience/templates/webstyle_templates_epfl.py @@ -0,0 +1 @@ +../../modules/webstyle/lib/webstyle_templates_epfl.py \ No newline at end of file diff --git a/infoscience/tequila/access_control_config.py b/infoscience/tequila/access_control_config.py new file mode 120000 index 000000000..c3bf9a098 --- /dev/null +++ b/infoscience/tequila/access_control_config.py @@ -0,0 +1 @@ +../../modules/webaccess/lib/access_control_config.py \ No newline at end of file diff --git a/infoscience/tequila/external_authentication_tequila.py b/infoscience/tequila/external_authentication_tequila.py new file mode 120000 index 000000000..3144d10a2 --- /dev/null +++ b/infoscience/tequila/external_authentication_tequila.py @@ -0,0 +1 @@ +../../modules/webaccess/lib/external_authentication_tequila.py \ No newline at end of file diff --git a/infoscience/tequila/websession_webinterface.py b/infoscience/tequila/websession_webinterface.py new file mode 120000 index 000000000..bedb53a21 --- /dev/null +++ b/infoscience/tequila/websession_webinterface.py @@ -0,0 +1 @@ +../../modules/websession/lib/websession_webinterface.py \ No newline at end of file diff --git a/modules/bibedit/lib/Makefile.am b/modules/bibedit/lib/Makefile.am index 5afc465b0..7cb6e211e 100644 --- a/modules/bibedit/lib/Makefile.am +++ b/modules/bibedit/lib/Makefile.am @@ -1,54 +1,55 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. pylibdir = $(libdir)/python/invenio pylib_DATA = bibrecord_config.py \ bibrecord.py \ bibrecord_tests.py \ refextract_config.py \ refextract.py \ refextract_tests.py \ xmlmarc2textmarc.py \ textmarc2xmlmarc.py \ bibedit_config.py \ bibedit_dblayer.py \ bibedit_engine.py \ bibedit_regression_tests.py \ bibedit_templates.py \ bibeditcli.py \ bibedit_utils.py \ bibedit_webinterface.py \ bibeditmulti_templates.py \ bibeditmulti_webinterface.py \ - bibeditmulti_engine.py + bibeditmulti_engine.py \ + bibedit_templates_epfl.py jsdir=$(localstatedir)/www/js js_DATA = bibedit_display.js \ bibedit_engine.js \ bibedit_keys.js \ bibedit_menu.js \ bibeditmulti.js \ bibedit_holdingpen.js \ marcxml.js \ bibedit_clipboard.js EXTRA_DIST = $(pylib_DATA) \ $(js_DATA) CLEANFILES = *~ *.tmp *.pyc diff --git a/modules/bibedit/lib/bibedit_engine.py b/modules/bibedit/lib/bibedit_engine.py index 3260dcacb..8d56748f2 100644 --- a/modules/bibedit/lib/bibedit_engine.py +++ b/modules/bibedit/lib/bibedit_engine.py @@ -1,1120 +1,1122 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # pylint: disable=C0103 """Invenio BibEdit Engine.""" __revision__ = "$Id" from invenio.bibedit_config import CFG_BIBEDIT_AJAX_RESULT_CODES, \ CFG_BIBEDIT_JS_CHECK_SCROLL_INTERVAL, CFG_BIBEDIT_JS_HASH_CHECK_INTERVAL, \ CFG_BIBEDIT_JS_CLONED_RECORD_COLOR, \ CFG_BIBEDIT_JS_CLONED_RECORD_COLOR_FADE_DURATION, \ CFG_BIBEDIT_JS_NEW_ADD_FIELD_FORM_COLOR, \ CFG_BIBEDIT_JS_NEW_ADD_FIELD_FORM_COLOR_FADE_DURATION, \ CFG_BIBEDIT_JS_NEW_CONTENT_COLOR, \ CFG_BIBEDIT_JS_NEW_CONTENT_COLOR_FADE_DURATION, \ CFG_BIBEDIT_JS_NEW_CONTENT_HIGHLIGHT_DELAY, \ CFG_BIBEDIT_JS_STATUS_ERROR_TIME, CFG_BIBEDIT_JS_STATUS_INFO_TIME, \ CFG_BIBEDIT_JS_TICKET_REFRESH_DELAY, CFG_BIBEDIT_MAX_SEARCH_RESULTS, \ CFG_BIBEDIT_TAG_FORMAT, CFG_BIBEDIT_AJAX_RESULT_CODES_REV, \ CFG_BIBEDIT_AUTOSUGGEST_TAGS, CFG_BIBEDIT_AUTOCOMPLETE_TAGS_KBS,\ CFG_BIBEDIT_KEYWORD_TAXONOMY, CFG_BIBEDIT_KEYWORD_TAG, \ CFG_BIBEDIT_KEYWORD_RDFLABEL from invenio.config import CFG_SITE_LANG from invenio.bibedit_dblayer import get_name_tags_all, reserve_record_id, \ get_related_hp_changesets, get_hp_update_xml, delete_hp_change, \ get_record_last_modification_date, get_record_revision_author, \ get_marcxml_of_record_revision, delete_related_holdingpen_changes, \ get_record_revisions from invenio.bibedit_utils import cache_exists, cache_expired, \ create_cache_file, delete_cache_file, get_bibrecord, \ get_cache_file_contents, get_cache_mtime, get_record_templates, \ get_record_template, latest_record_revision, record_locked_by_other_user, \ record_locked_by_queue, save_xml_record, touch_cache_file, \ update_cache_file_contents, get_field_templates, get_marcxml_of_revision, \ revision_to_timestamp, timestamp_to_revision, \ get_record_revision_timestamps, record_revision_exists, \ can_record_have_physical_copies from invenio.bibrecord import create_record, print_rec, record_add_field, \ record_add_subfield_into, record_delete_field, \ record_delete_subfield_from, \ record_modify_subfield, record_move_subfield, \ create_field, record_replace_field, record_move_fields, \ record_modify_controlfield, record_get_field_values from invenio.config import CFG_BIBEDIT_PROTECTED_FIELDS, CFG_CERN_SITE, \ CFG_SITE_URL from invenio.search_engine import record_exists, search_pattern from invenio.webuser import session_param_get, session_param_set from invenio.bibcatalog import bibcatalog_system from invenio.webpage import page from invenio.bibknowledge import get_kbd_values_for_bibedit, get_kbr_values, \ get_kbt_items_for_bibedit #autosuggest from invenio.bibcirculation_dblayer import get_number_copies, has_copies from invenio.bibcirculation_utils import create_item_details_url import re import difflib import zlib import sys if sys.hexversion < 0x2060000: try: import simplejson as json simplejson_available = True except ImportError: # Okay, no Ajax app will be possible, but continue anyway, # since this package is only recommended, not mandatory. simplejson_available = False else: import json simplejson_available = True import invenio.template bibedit_templates = invenio.template.load('bibedit') re_revdate_split = re.compile('^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)') def get_empty_fields_templates(): """ Returning the templates of empty fields : - an empty data field - an empty control field """ return [{ "name": "Empty field", "description": "The data field not containing any " + \ "information filled in", "tag" : "", "ind1" : "", "ind2" : "", "subfields" : [("","")], "isControlfield" : False },{ "name" : "Empty control field", "description" : "The controlfield not containing any " + \ "data or tag description", "isControlfield" : True, "tag" : "", "value" : "" }] def get_available_fields_templates(): """ A method returning all the available field templates Returns a list of descriptors. Each descriptor has the same structure as a full field descriptor inside the record """ templates = get_field_templates() result = get_empty_fields_templates() for template in templates: tplTag = template[3].keys()[0] field = template[3][tplTag][0] if (field[0] == []): # if the field is a controlField, add different structure result.append({ "name" : template[1], "description" : template[2], "isControlfield" : True, "tag" : tplTag, "value" : field[3] }) else: result.append({ "name": template[1], "description": template[2], "tag" : tplTag, "ind1" : field[1], "ind2" : field[2], "subfields" : field[0], "isControlfield" : False }) return result def perform_request_init(uid, ln, req, lastupdated): """Handle the initial request by adding menu and JavaScript to the page.""" errors = [] warnings = [] body = '' # Add script data. record_templates = get_record_templates() record_templates.sort() tag_names = get_name_tags_all() protected_fields = ['001'] protected_fields.extend(CFG_BIBEDIT_PROTECTED_FIELDS.split(',')) history_url = '"' + CFG_SITE_URL + '/admin/bibedit/bibeditadmin.py/history"' cern_site = 'false' if not simplejson_available: title = 'Record Editor' body = '''Sorry, the record editor cannot operate when the `simplejson' module is not installed. Please see the INSTALL file.''' return page(title = title, body = body, errors = [], warnings = [], uid = uid, language = ln, navtrail = "", lastupdated = lastupdated, req = req) if CFG_CERN_SITE: cern_site = 'true' data = {'gRECORD_TEMPLATES': record_templates, 'gTAG_NAMES': tag_names, 'gPROTECTED_FIELDS': protected_fields, 'gSITE_URL': '"' + CFG_SITE_URL + '"', 'gHISTORY_URL': history_url, 'gCERN_SITE': cern_site, 'gHASH_CHECK_INTERVAL': CFG_BIBEDIT_JS_HASH_CHECK_INTERVAL, 'gCHECK_SCROLL_INTERVAL': CFG_BIBEDIT_JS_CHECK_SCROLL_INTERVAL, 'gSTATUS_ERROR_TIME': CFG_BIBEDIT_JS_STATUS_ERROR_TIME, 'gSTATUS_INFO_TIME': CFG_BIBEDIT_JS_STATUS_INFO_TIME, 'gCLONED_RECORD_COLOR': '"' + CFG_BIBEDIT_JS_CLONED_RECORD_COLOR + '"', 'gCLONED_RECORD_COLOR_FADE_DURATION': CFG_BIBEDIT_JS_CLONED_RECORD_COLOR_FADE_DURATION, 'gNEW_ADD_FIELD_FORM_COLOR': '"' + CFG_BIBEDIT_JS_NEW_ADD_FIELD_FORM_COLOR + '"', 'gNEW_ADD_FIELD_FORM_COLOR_FADE_DURATION': CFG_BIBEDIT_JS_NEW_ADD_FIELD_FORM_COLOR_FADE_DURATION, 'gNEW_CONTENT_COLOR': '"' + CFG_BIBEDIT_JS_NEW_CONTENT_COLOR + '"', 'gNEW_CONTENT_COLOR_FADE_DURATION': CFG_BIBEDIT_JS_NEW_CONTENT_COLOR_FADE_DURATION, 'gNEW_CONTENT_HIGHLIGHT_DELAY': CFG_BIBEDIT_JS_NEW_CONTENT_HIGHLIGHT_DELAY, 'gTICKET_REFRESH_DELAY': CFG_BIBEDIT_JS_TICKET_REFRESH_DELAY, 'gRESULT_CODES': CFG_BIBEDIT_AJAX_RESULT_CODES, 'gAUTOSUGGEST_TAGS' : CFG_BIBEDIT_AUTOSUGGEST_TAGS, 'gAUTOCOMPLETE_TAGS' : CFG_BIBEDIT_AUTOCOMPLETE_TAGS_KBS.keys(), 'gKEYWORD_TAG' : '"' + CFG_BIBEDIT_KEYWORD_TAG + '"' } body += '\n' # Adding the information about field templates fieldTemplates = get_available_fields_templates() body += "\n" # Add scripts (the ordering is NOT irrelevant). - scripts = ['jquery.min.js', 'jquery.effects.core.min.js', + scripts = ['jquery.effects.core.min.js', 'jquery.effects.highlight.min.js', 'jquery.autogrow.js', 'jquery.jeditable.mini.js', 'jquery.hotkeys.min.js', 'json2.js', 'bibedit_display.js', 'bibedit_engine.js', 'bibedit_keys.js', 'bibedit_menu.js', 'bibedit_holdingpen.js', 'marcxml.js', 'bibedit_clipboard.js'] for script in scripts: + # Infoscience modification : + # make it aware of the server full path body += ' \n' % (CFG_SITE_URL, script) # Build page structure and menu. # rec = create_record(format_record(235, "xm"))[0] #oaiId = record_extract_oai_id(rec) body += bibedit_templates.menu() body += '
\n' return body, errors, warnings def get_xml_comparison(header1, header2, xml1, xml2): """ Return diffs of two MARCXML records. """ return "".join(difflib.unified_diff(xml1.splitlines(1), xml2.splitlines(1), header1, header2)) def get_marcxml_of_revision_id(recid, revid): """ Return MARCXML string with corresponding to revision REVID (=RECID.REVDATE) of a record. Return empty string if revision does not exist. """ res = "" job_date = "%s-%s-%s %s:%s:%s" % re_revdate_split.search(revid).groups() tmp_res = get_marcxml_of_record_revision(recid, job_date) if tmp_res: for row in tmp_res: res += zlib.decompress(row[0]) + "\n" return res def perform_request_compare(ln, recid, rev1, rev2): """Handle a request for comparing two records""" body = "" errors = [] warnings = [] if (not record_revision_exists(recid, rev1)) or \ (not record_revision_exists(recid, rev2)): body = "The requested record revision does not exist !" else: xml1 = get_marcxml_of_revision_id(recid, rev1) xml2 = get_marcxml_of_revision_id(recid, rev2) fullrevid1 = "%i.%s" % (recid, rev1) fullrevid2 = "%i.%s" % (recid, rev2) comparison = bibedit_templates.clean_value( get_xml_comparison(fullrevid1, fullrevid2, xml1, xml2), 'text').replace('\n', '
\n ') job_date1 = "%s-%s-%s %s:%s:%s" % re_revdate_split.search(rev1).groups() job_date2 = "%s-%s-%s %s:%s:%s" % re_revdate_split.search(rev2).groups() body += bibedit_templates.history_comparebox(ln, job_date1, job_date2, comparison) return body, errors, warnings def perform_request_newticket(recid, uid): """create a new ticket with this record's number @param recid: record id @param uid: user id @return: (error_msg, url) """ t_id = bibcatalog_system.ticket_submit(uid, "", recid, "") t_url = "" errmsg = "" if t_id: #get the ticket's URL t_url = bibcatalog_system.ticket_get_attribute(uid, t_id, 'url_modify') else: errmsg = "ticket_submit failed" return (errmsg, t_url) def perform_request_ajax(req, recid, uid, data, isBulk = False, \ ln = CFG_SITE_LANG): """Handle Ajax requests by redirecting to appropriate function.""" response = {} request_type = data['requestType'] undo_redo = None if data.has_key("undoRedo"): undo_redo = data["undoRedo"] # Call function based on request type. if request_type == 'searchForRecord': # Search request. response.update(perform_request_search(data)) elif request_type in ['changeTagFormat']: # User related requests. response.update(perform_request_user(req, request_type, recid, data)) elif request_type in ('getRecord', 'submit', 'cancel', 'newRecord', 'deleteRecord', 'deleteRecordCache', 'prepareRecordMerge', 'revert'): # 'Major' record related requests. response.update(perform_request_record(req, request_type, recid, uid, data)) elif request_type in ('addField', 'addSubfields', \ 'addFieldsSubfieldsOnPositions', 'modifyContent', \ 'moveSubfield', 'deleteFields', 'moveField', \ 'modifyField', 'otherUpdateRequest', \ 'disableHpChange', 'deactivateHoldingPenChangeset'): # Record updates. cacheMTime = data['cacheMTime'] if data.has_key('hpChanges'): hpChanges = data['hpChanges'] else: hpChanges = {} response.update(perform_request_update_record(request_type, recid, \ uid, cacheMTime, data, \ hpChanges, undo_redo, \ isBulk, ln)) elif request_type in ('autosuggest', 'autocomplete', 'autokeyword'): response.update(perform_request_autocomplete(request_type, recid, uid, \ data)) elif request_type in ('getTickets', ): # BibCatalog requests. response.update(perform_request_bibcatalog(request_type, recid, uid)) elif request_type in ('getHoldingPenUpdates', ): response.update(perform_request_holdingpen(request_type, recid)) elif request_type in ('getHoldingPenUpdateDetails', \ 'deleteHoldingPenChangeset'): updateId = data['changesetNumber'] response.update(perform_request_holdingpen(request_type, recid, \ updateId)) elif request_type in ('applyBulkUpdates', ): # a general version of a bulk request changes = data['requestsData'] cacheMTime = data['cacheMTime'] response.update(perform_bulk_request_ajax(req, recid, uid, changes, \ undo_redo, cacheMTime)) return response def perform_bulk_request_ajax(req, recid, uid, reqsData, undoRedo, cacheMTime): """ An AJAX handler used when treating bulk updates """ lastResult = {} lastTime = cacheMTime isFirst = True for data in reqsData: assert data != None data['cacheMTime'] = lastTime if isFirst and undoRedo != None: # we add the undo/redo handler to the first operation in order to # save the handler on the server side ! data['undoRedo'] = undoRedo isFirst = False lastResult = perform_request_ajax(req, recid, uid, data, True) # now we have to update the cacheMtime in next request ! # if lastResult.has_key('cacheMTime'): try: lastTime = lastResult['cacheMTime'] except: raise Exception(str(lastResult)) return lastResult def perform_request_search(data): """Handle search requests.""" response = {} searchType = data['searchType'] searchPattern = data['searchPattern'] if searchType == 'anywhere': pattern = searchPattern else: pattern = searchType + ':' + searchPattern result_set = list(search_pattern(p=pattern)) response['resultCode'] = 1 response['resultSet'] = result_set[0:CFG_BIBEDIT_MAX_SEARCH_RESULTS] return response def perform_request_user(req, request_type, recid, data): """Handle user related requests.""" response = {} if request_type == 'changeTagFormat': try: tagformat_settings = session_param_get(req, 'bibedit_tagformat') except KeyError: tagformat_settings = {} tagformat_settings[recid] = data['tagFormat'] session_param_set(req, 'bibedit_tagformat', tagformat_settings) response['resultCode'] = 2 return response def perform_request_holdingpen(request_type, recId, changeId=None): """ A method performing the holdingPen ajax request. The following types of requests can be made: getHoldingPenUpdates - retrieving the holding pen updates pending for a given record """ response = {} if request_type == 'getHoldingPenUpdates': changeSet = get_related_hp_changesets(recId) changes = [] for change in changeSet: changes.append((str(change[0]), str(change[1]))) response["changes"] = changes elif request_type == 'getHoldingPenUpdateDetails': # returning the list of changes related to the holding pen update # the format based on what the record difference xtool returns assert(changeId != None) hpContent = get_hp_update_xml(changeId) holdingPenRecord = create_record(hpContent[0], "xm")[0] # databaseRecord = get_record(hpContent[1]) response['record'] = holdingPenRecord response['changeset_number'] = changeId elif request_type == 'deleteHoldingPenChangeset': assert(changeId != None) delete_hp_change(changeId) return response def perform_request_record(req, request_type, recid, uid, data, ln=CFG_SITE_LANG): """Handle 'major' record related requests like fetching, submitting or deleting a record, cancel editing or preparing a record for merging. """ response = {} if request_type == 'newRecord': # Create a new record. new_recid = reserve_record_id() new_type = data['newType'] if new_type == 'empty': # Create a new empty record. create_cache_file(recid, uid) response['resultCode'], response['newRecID'] = 6, new_recid elif new_type == 'template': # Create a new record from XML record template. template_filename = data['templateFilename'] template = get_record_template(template_filename) if not template: response['resultCode'] = 108 else: record = create_record(template)[0] if not record: response['resultCode'] = 109 else: record_add_field(record, '001', controlfield_value=str(new_recid)) create_cache_file(new_recid, uid, record, True) response['resultCode'], response['newRecID'] = 7, new_recid elif new_type == 'clone': # Clone an existing record (from the users cache). existing_cache = cache_exists(recid, uid) if existing_cache: try: record = get_cache_file_contents(recid, uid)[2] except: # if, for example, the cache format was wrong (outdated) record = get_bibrecord(recid) else: # Cache missing. Fall back to using original version. record = get_bibrecord(recid) record_delete_field(record, '001') record_add_field(record, '001', controlfield_value=str(new_recid)) create_cache_file(new_recid, uid, record, True) response['resultCode'], response['newRecID'] = 8, new_recid elif request_type == 'getRecord': # Fetch the record. Possible error situations: # - Non-existing record # - Deleted record # - Record locked by other user # - Record locked by queue # A cache file will be created if it does not exist. # If the cache is outdated (i.e., not based on the latest DB revision), # cacheOutdated will be set to True in the response. record_status = record_exists(recid) existing_cache = cache_exists(recid, uid) read_only_mode = False if data.has_key("inReadOnlyMode"): read_only_mode = data['inReadOnlyMode'] if record_status == 0: response['resultCode'] = 102 elif record_status == -1: response['resultCode'] = 103 elif not read_only_mode and not existing_cache and \ record_locked_by_other_user(recid, uid): response['resultCode'] = 104 elif not read_only_mode and existing_cache and \ cache_expired(recid, uid) and \ record_locked_by_other_user(recid, uid): response['resultCode'] = 104 elif not read_only_mode and record_locked_by_queue(recid): response['resultCode'] = 105 else: if data.get('deleteRecordCache'): delete_cache_file(recid, uid) existing_cache = False pending_changes = [] disabled_hp_changes = {} if read_only_mode: if data.has_key('recordRevision') and data['recordRevision'] != 'sampleValue': record_revision_ts = data['recordRevision'] record_xml = get_marcxml_of_revision(recid, \ record_revision_ts) record = create_record(record_xml)[0] record_revision = timestamp_to_revision(record_revision_ts) pending_changes = [] disabled_hp_changes = {} else: # a normal cacheless retrieval of a record record = get_bibrecord(recid) record_revision = get_record_last_modification_date(recid) pending_changes = [] disabled_hp_changes = {} cache_dirty = False mtime = 0 undo_list = [] redo_list = [] elif not existing_cache: record_revision, record = create_cache_file(recid, uid) mtime = get_cache_mtime(recid, uid) pending_changes = [] disabled_hp_changes = {} undo_list = [] redo_list = [] cache_dirty = False else: #TODO: This try except should be replaced with something nicer, # like an argument indicating if a new cache file is to # be created try: cache_dirty, record_revision, record, pending_changes, \ disabled_hp_changes, undo_list, redo_list = \ get_cache_file_contents(recid, uid) touch_cache_file(recid, uid) mtime = get_cache_mtime(recid, uid) if not latest_record_revision(recid, record_revision) and \ get_record_revisions(recid) != (): # This sould prevent from using old cache in case of # viewing old version. If there are no revisions, # it means we should skip this step because this # is a new record response['cacheOutdated'] = True except: record_revision, record = create_cache_file(recid, uid) mtime = get_cache_mtime(recid, uid) pending_changes = [] disabled_hp_changes = {} cache_dirty = False undo_list = [] redo_list = [] if data.get('clonedRecord',''): response['resultCode'] = 9 else: response['resultCode'] = 3 revision_author = get_record_revision_author(recid, record_revision) last_revision_ts = revision_to_timestamp( \ get_record_last_modification_date(recid)) revisions_history = get_record_revision_timestamps(recid) number_of_physical_copies = get_number_copies(recid) bibcirc_details_URL = create_item_details_url(recid, ln) can_have_copies = can_record_have_physical_copies(recid) response['cacheDirty'], response['record'], \ response['cacheMTime'], response['recordRevision'], \ response['revisionAuthor'], response['lastRevision'], \ response['revisionsHistory'], response['inReadOnlyMode'], \ response['pendingHpChanges'], response['disabledHpChanges'], \ response['undoList'], response['redoList'] = cache_dirty, \ record, mtime, revision_to_timestamp(record_revision), \ revision_author, last_revision_ts, revisions_history, \ read_only_mode, pending_changes, disabled_hp_changes, \ undo_list, redo_list response['numberOfCopies'] = number_of_physical_copies response['bibCirculationUrl'] = bibcirc_details_URL response['canRecordHavePhysicalCopies'] = can_have_copies # Set tag format from user's session settings. try: tagformat_settings = session_param_get(req, 'bibedit_tagformat') tagformat = tagformat_settings[recid] except KeyError: tagformat = CFG_BIBEDIT_TAG_FORMAT response['tagFormat'] = tagformat elif request_type == 'submit': # Submit the record. Possible error situations: # - Missing cache file # - Cache file modified in other editor # - Record locked by other user # - Record locked by queue # - Invalid XML characters # If the cache is outdated cacheOutdated will be set to True in the # response. if not cache_exists(recid, uid): response['resultCode'] = 106 elif not get_cache_mtime(recid, uid) == data['cacheMTime']: response['resultCode'] = 107 elif cache_expired(recid, uid) and \ record_locked_by_other_user(recid, uid): response['resultCode'] = 104 elif record_locked_by_queue(recid): response['resultCode'] = 105 else: try: tmp_result = get_cache_file_contents(recid, uid) record_revision = tmp_result[1] record = tmp_result[2] pending_changes = tmp_result[3] # disabled_changes = tmp_result[4] xml_record = print_rec(record) record, status_code, list_of_errors = create_record(xml_record) if status_code == 0: response['resultCode'], response['errors'] = 110, \ list_of_errors elif not data['force'] and \ not latest_record_revision(recid, record_revision): response['cacheOutdated'] = True else: save_xml_record(recid, uid) response['resultCode'] = 4 except: response['resultCode'] = CFG_BIBEDIT_AJAX_RESULT_CODES_REV[ \ 'error_wrong_cache_file_format'] elif request_type == 'revert': revId = data['revId'] job_date = "%s-%s-%s %s:%s:%s" % re_revdate_split.search(revId).groups() revision_xml = get_marcxml_of_revision(recid, job_date) save_xml_record(recid, uid, revision_xml) if (cache_exists(recid, uid)): delete_cache_file(recid, uid) response['resultCode'] = 4 elif request_type == 'cancel': # Cancel editing by deleting the cache file. Possible error situations: # - Cache file modified in other editor if cache_exists(recid, uid): if get_cache_mtime(recid, uid) == data['cacheMTime']: delete_cache_file(recid, uid) response['resultCode'] = 5 else: response['resultCode'] = 107 else: response['resultCode'] = 5 elif request_type == 'deleteRecord': # Submit the record. Possible error situations: # - Record locked by other user # - Record locked by queue # As the user is requesting deletion we proceed even if the cache file # is missing and we don't check if the cache is outdated or has # been modified in another editor. existing_cache = cache_exists(recid, uid) pending_changes = [] if has_copies(recid): response['resultCode'] = \ CFG_BIBEDIT_AJAX_RESULT_CODES_REV['error_physical_copies_exist'] elif existing_cache and cache_expired(recid, uid) and \ record_locked_by_other_user(recid, uid): response['resultCode'] = \ CFG_BIBEDIT_AJAX_RESULT_CODES_REV['error_rec_locked_by_user'] elif record_locked_by_queue(recid): response['resultCode'] = \ CFG_BIBEDIT_AJAX_RESULT_CODES_REV['error_rec_locked_by_queue'] else: if not existing_cache: record_revision, record, pending_changes, \ deactivated_hp_changes, undo_list, redo_list = \ create_cache_file(recid, uid) else: try: record_revision, record, pending_changes, \ deactivated_hp_changes, undo_list, redo_list = \ get_cache_file_contents(recid, uid)[1:] except: record_revision, record, pending_changes, \ deactivated_hp_changes = create_cache_file(recid, uid) record_add_field(record, '980', ' ', ' ', '', [('c', 'DELETED')]) undo_list = [] redo_list = [] update_cache_file_contents(recid, uid, record_revision, record, \ pending_changes, \ deactivated_hp_changes, undo_list, \ redo_list) save_xml_record(recid, uid) delete_related_holdingpen_changes(recid) # we don't need any changes # related to a deleted record response['resultCode'] = 10 elif request_type == 'deleteRecordCache': # Delete the cache file. Ignore the request if the cache has been # modified in another editor. if cache_exists(recid, uid) and get_cache_mtime(recid, uid) == \ data['cacheMTime']: delete_cache_file(recid, uid) response['resultCode'] = 11 elif request_type == 'prepareRecordMerge': # We want to merge the cache with the current DB version of the record, # so prepare an XML file from the file cache, to be used by BibMerge. # Possible error situations: # - Missing cache file # - Record locked by other user # - Record locked by queue # We don't check if cache is outdated (a likely scenario for this # request) or if it has been modified in another editor. if not cache_exists(recid, uid): response['resultCode'] = 106 elif cache_expired(recid, uid) and \ record_locked_by_other_user(recid, uid): response['resultCode'] = 104 elif record_locked_by_queue(recid): response['resultCode'] = 105 else: save_xml_record(recid, uid, to_upload=False, to_merge=True) response['resultCode'] = 12 return response def perform_request_update_record(request_type, recid, uid, cacheMTime, data, \ hpChanges, undoRedoOp, isBulk=False, \ ln=CFG_SITE_LANG): """Handle record update requests like adding, modifying, moving or deleting of fields or subfields. Possible common error situations: - Missing cache file - Cache file modified in other editor Explanation of some parameters: undoRedoOp - Indicates in "undo"/"redo"/undo_descriptor operation is performed by a current request. """ response = {} if not cache_exists(recid, uid): response['resultCode'] = 106 elif not get_cache_mtime(recid, uid) == cacheMTime and isBulk == False: # In case of a bulk request, the changes are deliberately performed # imemdiately one after another response['resultCode'] = 107 else: try: record_revision, record, pending_changes, deactivated_hp_changes, \ undo_list, redo_list = get_cache_file_contents(recid, uid)[1:] except: response['resultCode'] = CFG_BIBEDIT_AJAX_RESULT_CODES_REV[ \ 'error_wrong_cache_file_format'] return response # process all the Holding Pen changes operations ... regardles the # request type # import rpdb2; # rpdb2.start_embedded_debugger('password', fAllowRemote=True) if hpChanges.has_key("toDisable"): for changeId in hpChanges["toDisable"]: pending_changes[changeId]["applied_change"] = True if hpChanges.has_key("toEnable"): for changeId in hpChanges["toEnable"]: pending_changes[changeId]["applied_change"] = False if hpChanges.has_key("toOverride"): pending_changes = hpChanges["toOverride"] if hpChanges.has_key("changesetsToDeactivate"): for changesetId in hpChanges["changesetsToDeactivate"]: deactivated_hp_changes[changesetId] = True if hpChanges.has_key("changesetsToActivate"): for changesetId in hpChanges["changesetsToActivate"]: deactivated_hp_changes[changesetId] = False # processing the undo/redo entries if undoRedoOp == "undo": try: redo_list = [undo_list[-1]] + redo_list undo_list = undo_list[:-1] except: raise Exception("An exception occured when undoing previous" + \ " operation. Undo list: " + str(undo_list) + \ " Redo list " + str(redo_list)) elif undoRedoOp == "redo": try: undo_list = undo_list + [redo_list[0]] redo_list = redo_list[1:] except: raise Exception("An exception occured when redoing previous" + \ " operation. Undo list: " + str(undo_list) + \ " Redo list " + str(redo_list)) else: # This is a genuine operation - we have to add a new descriptor # to the undo list and cancel the redo unless the operation is # a bulk operation if undoRedoOp != None: undo_list = undo_list + [undoRedoOp] redo_list = [] else: assert isBulk == True field_position_local = data.get('fieldPosition') if field_position_local is not None: field_position_local = int(field_position_local) if request_type == 'otherUpdateRequest': # An empty request. Might be useful if we want to perform # operations that require only the actions performed globally, # like modifying the holdingPen changes list response['resultCode'] = CFG_BIBEDIT_AJAX_RESULT_CODES_REV[ \ 'editor_modifications_changed'] elif request_type == 'deactivateHoldingPenChangeset': # the changeset has been marked as processed ( user applied it in # the editor). Marking as used in the cache file. # CAUTION: This function has been implemented here because logically # it fits with the modifications made to the cache file. # No changes are made to the Holding Pen physically. The # changesets are related to the cache because we want to # cancel the removal every time the cache disappears for # any reason response['resultCode'] = CFG_BIBEDIT_AJAX_RESULT_CODES_REV[ \ 'disabled_hp_changeset'] elif request_type == 'addField': if data['controlfield']: record_add_field(record, data['tag'], controlfield_value=data['value']) response['resultCode'] = 20 else: record_add_field(record, data['tag'], data['ind1'], data['ind2'], subfields=data['subfields'], field_position_local=field_position_local) response['resultCode'] = 21 elif request_type == 'addSubfields': subfields = data['subfields'] for subfield in subfields: record_add_subfield_into(record, data['tag'], subfield[0], subfield[1], subfield_position=None, field_position_local=field_position_local) if len(subfields) == 1: response['resultCode'] = 22 else: response['resultCode'] = 23 elif request_type == 'addFieldsSubfieldsOnPositions': #1) Sorting the fields by their identifiers fieldsToAdd = data['fieldsToAdd'] subfieldsToAdd = data['subfieldsToAdd'] for tag in fieldsToAdd.keys(): positions = fieldsToAdd[tag].keys() positions.sort() for position in positions: # now adding fields at a position isControlfield = (len(fieldsToAdd[tag][position][0]) == 0) # if there are n subfields, this is a control field if isControlfield: controlfieldValue = fieldsToAdd[tag][position][3] record_add_field(record, tag, field_position_local = \ int(position), \ controlfield_value = \ controlfieldValue) else: subfields = fieldsToAdd[tag][position][0] ind1 = fieldsToAdd[tag][position][1] ind2 = fieldsToAdd[tag][position][2] record_add_field(record, tag, ind1, ind2, subfields = \ subfields, field_position_local = \ int(position)) # now adding the subfields for tag in subfieldsToAdd.keys(): for fieldPosition in subfieldsToAdd[tag].keys(): #now the fields #order not important ! subfieldsPositions = subfieldsToAdd[tag][fieldPosition]. \ keys() subfieldsPositions.sort() for subfieldPosition in subfieldsPositions: subfield = subfieldsToAdd[tag][fieldPosition]\ [subfieldPosition] record_add_subfield_into(record, tag, subfield[0], \ subfield[1], \ subfield_position = \ int(subfieldPosition), \ field_position_local = \ int(fieldPosition)) response['resultCode'] = \ CFG_BIBEDIT_AJAX_RESULT_CODES_REV['added_positioned_subfields'] elif request_type == 'modifyField': # changing the field structure # first remove subfields and then add new... change the indices subfields = data['subFields'] # parse the JSON representation of # the subfields here new_field = create_field(subfields, data['ind1'], data['ind2']) record_replace_field(record, data['tag'], new_field, \ field_position_local = data['fieldPosition']) response['resultCode'] = 26 elif request_type == 'modifyContent': if data['subfieldIndex'] != None: record_modify_subfield(record, data['tag'], data['subfieldCode'], data['value'], int(data['subfieldIndex']), field_position_local=field_position_local) else: record_modify_controlfield(record, data['tag'], data["value"], field_position_local=field_position_local) response['resultCode'] = 24 elif request_type == 'moveSubfield': record_move_subfield(record, data['tag'], int(data['subfieldIndex']), int(data['newSubfieldIndex']), field_position_local=field_position_local) response['resultCode'] = 25 elif request_type == 'moveField': if data['direction'] == 'up': final_position_local = field_position_local-1 else: # direction is 'down' final_position_local = field_position_local+1 record_move_fields(record, data['tag'], [field_position_local], final_position_local) response['resultCode'] = 32 elif request_type == 'deleteFields': to_delete = data['toDelete'] deleted_fields = 0 deleted_subfields = 0 for tag in to_delete: #Sorting the fields in a edcreasing order by the local position! fieldsOrder = to_delete[tag].keys() fieldsOrder.sort(lambda a, b: int(b) - int(a)) for field_position_local in fieldsOrder: if not to_delete[tag][field_position_local]: # No subfields specified - delete entire field. record_delete_field(record, tag, field_position_local=int(field_position_local)) deleted_fields += 1 else: for subfield_position in \ to_delete[tag][field_position_local][::-1]: # Delete subfields in reverse order (to keep the # indexing correct). record_delete_subfield_from(record, tag, int(subfield_position), field_position_local=int(field_position_local)) deleted_subfields += 1 if deleted_fields == 1 and deleted_subfields == 0: response['resultCode'] = 26 elif deleted_fields and deleted_subfields == 0: response['resultCode'] = 27 elif deleted_subfields == 1 and deleted_fields == 0: response['resultCode'] = 28 elif deleted_subfields and deleted_fields == 0: response['resultCode'] = 29 else: response['resultCode'] = 30 response['cacheMTime'], response['cacheDirty'] = \ update_cache_file_contents(recid, uid, record_revision, record, \ pending_changes, \ deactivated_hp_changes, \ undo_list, redo_list), \ True return response def perform_request_autocomplete(request_type, recid, uid, data): """ Perfrom an AJAX request associated with the retrieval of autocomplete data. Arguments: request_type: Type of the currently served request recid: the identifer of the record uid: The identifier of the user being currently logged in data: The request data containing possibly important additional arguments """ response = {} # get the values based on which one needs to search searchby = data['value'] #we check if the data is properly defined fulltag = '' if data.has_key('maintag') and data.has_key('subtag1') and \ data.has_key('subtag2') and data.has_key('subfieldcode'): maintag = data['maintag'] subtag1 = data['subtag1'] subtag2 = data['subtag2'] u_subtag1 = subtag1 u_subtag2 = subtag2 if (not subtag1) or (subtag1 == ' '): u_subtag1 = '_' if (not subtag2) or (subtag2 == ' '): u_subtag2 = '_' subfieldcode = data['subfieldcode'] fulltag = maintag+u_subtag1+u_subtag2+subfieldcode if (request_type == 'autokeyword'): #call the keyword-form-ontology function if fulltag and searchby: items = get_kbt_items_for_bibedit(CFG_BIBEDIT_KEYWORD_TAXONOMY, \ CFG_BIBEDIT_KEYWORD_RDFLABEL, \ searchby) response['autokeyword'] = items if (request_type == 'autosuggest'): #call knowledge base function to put the suggestions in an array.. if fulltag and searchby and len(searchby) > 3: suggest_values = get_kbd_values_for_bibedit(fulltag, "", searchby) #remove .. new_suggest_vals = [] for sugg in suggest_values: if sugg.startswith(searchby): new_suggest_vals.append(sugg) response['autosuggest'] = new_suggest_vals if (request_type == 'autocomplete'): #call the values function with the correct kb_name if CFG_BIBEDIT_AUTOCOMPLETE_TAGS_KBS.has_key(fulltag): kbname = CFG_BIBEDIT_AUTOCOMPLETE_TAGS_KBS[fulltag] #check if the seachby field has semicolons. Take all #the semicolon-separated items.. items = [] vals = [] if searchby: if searchby.rfind(';'): items = searchby.split(';') else: items = [searchby.strip()] for item in items: item = item.strip() kbrvals = get_kbr_values(kbname, item, '', 'e') #we want an exact match if kbrvals and kbrvals[0]: #add the found val into vals vals.append(kbrvals[0]) #check that the values are not already contained in other #instances of this field record = get_cache_file_contents(recid, uid)[2] xml_rec = print_rec(record) record, status_code, dummy_errors = create_record(xml_rec) existing_values = [] if (status_code != 0): existing_values = record_get_field_values(record, maintag, subtag1, subtag2, subfieldcode) #get the new values.. i.e. vals not in existing new_vals = vals for val in new_vals: if val in existing_values: new_vals.remove(val) response['autocomplete'] = new_vals response['resultCode'] = CFG_BIBEDIT_AJAX_RESULT_CODES_REV['autosuggestion_scanned'] return response def perform_request_bibcatalog(request_type, recid, uid): """Handle request to BibCatalog (RT). """ response = {} if request_type == 'getTickets': # Insert the ticket data in the response, if possible if uid: bibcat_resp = bibcatalog_system.check_system(uid) if bibcat_resp == "": tickets_found = bibcatalog_system.ticket_search(uid, \ status=['new', 'open'], recordid=recid) t_url_str = '' #put ticket urls here, formatted for HTML display for t_id in tickets_found: #t_url = bibcatalog_system.ticket_get_attribute(uid, \ # t_id, 'url_display') ticket_info = bibcatalog_system.ticket_get_info( \ uid, t_id, ['url_display', 'url_close']) t_url = ticket_info['url_display'] t_close_url = ticket_info['url_close'] #format.. t_url_str += "#" + str(t_id) + '[read] [close]
' #put ticket header and tickets links in the box t_url_str = "Tickets
" + t_url_str + \ "
" + '" response['resultCode'] = 31 return response diff --git a/modules/bibedit/lib/bibedit_templates_epfl.py b/modules/bibedit/lib/bibedit_templates_epfl.py new file mode 100644 index 000000000..263aef8f8 --- /dev/null +++ b/modules/bibedit/lib/bibedit_templates_epfl.py @@ -0,0 +1,115 @@ +"""BibEdit Templates.""" + +from invenio.config import CFG_SITE_URL +from invenio.messages import gettext_set_language + +from invenio import bibedit_templates +from invenio.bibedit_templates import img, inp, button, link + +class Template(bibedit_templates.Template): + """BibEdit Templates Class.""" + + def menu(self): + """Create the menu.""" + + recordmenu = """ + + +
+

History

+
+ +

Undo / Redo

+
+
+
+
+
+
+
+
+
+
+
+
+
""" % { + 'imgIndicator': img('/img/indicator.gif'), + 'lblChecking': 'Checking status' + '...', + 'imgNewRecord': img('/img/table.png', 'bibEditImgCtrlEnabled', id='imgNewRecord', title='New record'), + 'imgCloneRecord': img('/img/table_multiple.png', 'bibEditImgCtrlDisabled', id='imgCloneRecord', title='Clone record'), + 'btnPrev': button('button', 'Previous', id='btnPrev', disabled='disabled'), + 'btnNext': button('button', 'Next', id='btnNext', disabled='disabled'), + } + + + viewmenu = """ + """ % { + 'btnTagMARC': button('button', 'MARC', id='btnMARCTags', disabled='disabled'), + 'btnTagNames': button('button', 'Human', id='btnHumanTags', disabled='disabled') + } + + return """ +
+ %(recordmenu)s +
+
+ %(viewmenu)s +
+ """ % { + 'recordmenu': recordmenu, + 'viewmenu': viewmenu, + } + + def history_comparebox(self, ln, revdate, revdate_cmp, comparison): + """ Display the bibedit history comparison box. """ + _ = gettext_set_language(ln) + title = '%(comp)s
%(rev)s %(revdate)s
%(rev)s %(revdate_cmp)s' % { + 'comp': _('Comparison of:'), + 'rev': _('Revision'), + 'revdate': revdate, + 'revdate_cmp': revdate_cmp} + return ''' +
+

%s

+

+ %s +

+
''' % (title, comparison) diff --git a/modules/bibexport/etc/sitemap.cfg b/modules/bibexport/etc/sitemap.cfg index ffb08bc98..650763a1e 100644 --- a/modules/bibexport/etc/sitemap.cfg +++ b/modules/bibexport/etc/sitemap.cfg @@ -1,7 +1,4 @@ [export_job] export_method = sitemap -collection1 = Articles -collection2 = Preprints -collection3 = Reports -#fulltext_status = restricted_picture -fulltext_status = restricted_picture +collection1 = Infoscience/Research +fulltext_status = PUBLIC diff --git a/modules/bibformat/etc/format_templates/Default_HTML_meta.bft b/modules/bibformat/etc/format_templates/Default_HTML_meta.bft new file mode 100644 index 000000000..3d63d6b6e --- /dev/null +++ b/modules/bibformat/etc/format_templates/Default_HTML_meta.bft @@ -0,0 +1,3 @@ +Export short, link on titles, authors +Short format for article, review, which puts links on authors and titles + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ENACExportfull.bft b/modules/bibformat/etc/format_templates/ENACExportfull.bft new file mode 100755 index 000000000..89f56b039 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ENACExportfull.bft @@ -0,0 +1,9 @@ +Export detailed ENAC +Detailed format for article, review +
+ +

+

+

+ +
\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ENACExportfullbook.bft b/modules/bibformat/etc/format_templates/ENACExportfullbook.bft new file mode 100644 index 000000000..7104baacb --- /dev/null +++ b/modules/bibformat/etc/format_templates/ENACExportfullbook.bft @@ -0,0 +1,9 @@ +Export detailed ENAC +Detailed format for article, review +
+ +

+

+

+ +
diff --git a/modules/bibformat/etc/format_templates/ENACExportfullconference.bft b/modules/bibformat/etc/format_templates/ENACExportfullconference.bft new file mode 100644 index 000000000..9124ba19e --- /dev/null +++ b/modules/bibformat/etc/format_templates/ENACExportfullconference.bft @@ -0,0 +1,10 @@ +Export detailed ENAC +Detailed format for article, review +
+ + +

+

+

+ +
diff --git a/modules/bibformat/etc/format_templates/EPFL_HTML_meta.bft b/modules/bibformat/etc/format_templates/EPFL_HTML_meta.bft new file mode 100644 index 000000000..731634e88 --- /dev/null +++ b/modules/bibformat/etc/format_templates/EPFL_HTML_meta.bft @@ -0,0 +1,18 @@ +EPFL HTML meta +HTML Meta tags suitable to be parsed by search engines (e.g. Google Scholar) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/EPFL_Title.bft b/modules/bibformat/etc/format_templates/EPFL_Title.bft new file mode 100755 index 000000000..0f01d9d47 --- /dev/null +++ b/modules/bibformat/etc/format_templates/EPFL_Title.bft @@ -0,0 +1,3 @@ +EPFL-Title +Only output the title of a record + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportdetailed.bft b/modules/bibformat/etc/format_templates/Exportdetailed.bft new file mode 100755 index 000000000..9f99c9fd7 --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportdetailed.bft @@ -0,0 +1,5 @@ +Export detailed +Detailed format for article, review +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedAU.bft b/modules/bibformat/etc/format_templates/ExportdetailedAU.bft new file mode 100755 index 000000000..889b6aef1 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedAU.bft @@ -0,0 +1,5 @@ +Export detailed, links on authors +Detailed format for article, review, with links on authors +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedAUENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedAUENAC.bft new file mode 100755 index 000000000..7519e97e7 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedAUENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC, links on authors +Detailed format for article, review, with links on authors + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedENAC.bft new file mode 100755 index 000000000..0c085a1c0 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC +Detailed format for article, review + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedTI.bft b/modules/bibformat/etc/format_templates/ExportdetailedTI.bft new file mode 100755 index 000000000..cd08b1be4 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedTI.bft @@ -0,0 +1,5 @@ +Export detailed, links on titles +Detailed format for article, review, with links on titles +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedTIAU.bft b/modules/bibformat/etc/format_templates/ExportdetailedTIAU.bft new file mode 100755 index 000000000..b956a2647 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedTIAU.bft @@ -0,0 +1,5 @@ +Export detailed, links on titles, authors +Detailed format for article, review, with links on titles, authors +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedTIAUENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedTIAUENAC.bft new file mode 100755 index 000000000..33ad41dea --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedTIAUENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC, links on titles, authors +Detailed format for article, review, with links on titles, authors + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedTIENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedTIENAC.bft new file mode 100755 index 000000000..e2c30ca6d --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedTIENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC, links on titles +Detailed format for article, review, with links on titles + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportdetailedbook.bft b/modules/bibformat/etc/format_templates/Exportdetailedbook.bft new file mode 100644 index 000000000..79aed4449 --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportdetailedbook.bft @@ -0,0 +1,5 @@ +Export detailed - book +Detailed format for book, proc, thesis +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookAU.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookAU.bft new file mode 100644 index 000000000..4aafe44a8 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookAU.bft @@ -0,0 +1,5 @@ +Export detailed - book, links on authors +Detailed format for book, proceeding, thesis, with links on authors +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookAUENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookAUENAC.bft new file mode 100644 index 000000000..95d6972dc --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookAUENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC - book, links on authors +Detailed format for book, proceeding, thesis, with links on authors + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookENAC.bft new file mode 100644 index 000000000..57e3c8394 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookENAC.bft @@ -0,0 +1,6 @@ +Export detailed - book +Detailed format for book, proc, thesis + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookTI.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookTI.bft new file mode 100644 index 000000000..49c43129c --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookTI.bft @@ -0,0 +1,5 @@ +Export detailed - book, links on titles +Detailed format for book, proceeding, thesis, with links on titles +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookTIAU.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookTIAU.bft new file mode 100644 index 000000000..b1dd63c75 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookTIAU.bft @@ -0,0 +1,5 @@ +Export detailed - book, links on titles, authors +Detailed format for book, proc, thesis, with links on titles, authors +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookTIAUENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookTIAUENAC.bft new file mode 100644 index 000000000..d0a0e7018 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookTIAUENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC - book, links on titles, authors +Detailed format for book, proc, thesis, with links on titles, authors + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedbookTIENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedbookTIENAC.bft new file mode 100644 index 000000000..3357a2d33 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedbookTIENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC- book, links on titles +Detailed format for book, proceeding, thesis, with links on titles + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportdetailedconference.bft b/modules/bibformat/etc/format_templates/Exportdetailedconference.bft new file mode 100644 index 000000000..b14e8bb1a --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportdetailedconference.bft @@ -0,0 +1,5 @@ +Export detailed - conferences +Detailed format for conf, poster, talk +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceAU.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceAU.bft new file mode 100644 index 000000000..709ff8420 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceAU.bft @@ -0,0 +1,5 @@ +Export detailed - conferences, links on authors +Detailed format for conf, poster, talk, with links on authors +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceAUENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceAUENAC.bft new file mode 100644 index 000000000..69149e18e --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceAUENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC - conferences, links on authors +Detailed format for conf, poster, talk, with links on authors + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceENAC.bft new file mode 100644 index 000000000..fb145989c --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceENAC.bft @@ -0,0 +1,6 @@ +Export detailed - conferences +Detailed format for conf, poster, talk + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceTI.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTI.bft new file mode 100644 index 000000000..33bfd919d --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTI.bft @@ -0,0 +1,5 @@ +Export detailed - conferences, links on titles +Detailed format for conf, poster, talk, with links on titles +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIAU.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIAU.bft new file mode 100644 index 000000000..42f9a9140 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIAU.bft @@ -0,0 +1,5 @@ +Export detailed - conferences, links on titles, authors +Detailed format for conf, poster, talk, with links on titles, authors +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIAUENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIAUENAC.bft new file mode 100644 index 000000000..c336a7cdd --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIAUENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC - conferences, links on titles, authors +Detailed format for conf, poster, talk, with links on titles, authors + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIENAC.bft b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIENAC.bft new file mode 100644 index 000000000..c4e865a06 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportdetailedconferenceTIENAC.bft @@ -0,0 +1,6 @@ +Export detailed ENAC- conferences, links on titles +Detailed format for conf, poster, talk, with links on titles + +

+

+

\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportfull.bft b/modules/bibformat/etc/format_templates/Exportfull.bft new file mode 100755 index 000000000..b320872f6 --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportfull.bft @@ -0,0 +1,7 @@ +Export full +Full format for article, review +

+

+

+ + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullAU.bft b/modules/bibformat/etc/format_templates/ExportfullAU.bft new file mode 100755 index 000000000..67798ebf3 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullAU.bft @@ -0,0 +1,7 @@ +Export full, links on authors +Full format for article, review, with links on authors +

+

+

+ + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullTI.bft b/modules/bibformat/etc/format_templates/ExportfullTI.bft new file mode 100755 index 000000000..7f1e34d57 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullTI.bft @@ -0,0 +1,7 @@ +Export full, links on titles +Full format for article, review, with links on titles +

+

+

+ + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullTIAU.bft b/modules/bibformat/etc/format_templates/ExportfullTIAU.bft new file mode 100755 index 000000000..ae1f5002e --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullTIAU.bft @@ -0,0 +1,7 @@ +Export full, links on titles, authors +Full format for article, review, with links on titles, authors +

+

+

+ + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportfullbook.bft b/modules/bibformat/etc/format_templates/Exportfullbook.bft new file mode 100644 index 000000000..ed877daba --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportfullbook.bft @@ -0,0 +1,6 @@ +Export full - book +Full format for book, proc, thesis +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullbookAU.bft b/modules/bibformat/etc/format_templates/ExportfullbookAU.bft new file mode 100644 index 000000000..55cebf3fd --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullbookAU.bft @@ -0,0 +1,6 @@ +Export full - book, links on authors +Full format for book, proceeding, thesis, with links on authors +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullbookTI.bft b/modules/bibformat/etc/format_templates/ExportfullbookTI.bft new file mode 100644 index 000000000..4a4a51c9f --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullbookTI.bft @@ -0,0 +1,6 @@ +Export full - book, links on titles +Full format for book, proceeding, thesis, with links on titles +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullbookTIAU.bft b/modules/bibformat/etc/format_templates/ExportfullbookTIAU.bft new file mode 100644 index 000000000..62389299a --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullbookTIAU.bft @@ -0,0 +1,6 @@ +Export full - book, links on titles, authors +Full format for book, proc, thesis, with links on titles, authors +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportfullconference.bft b/modules/bibformat/etc/format_templates/Exportfullconference.bft new file mode 100644 index 000000000..51aeebc9e --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportfullconference.bft @@ -0,0 +1,6 @@ +Export full - conferences +Full format for conf, poster, talk +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullconferenceAU.bft b/modules/bibformat/etc/format_templates/ExportfullconferenceAU.bft new file mode 100644 index 000000000..44019364e --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullconferenceAU.bft @@ -0,0 +1,6 @@ +Export full - conferences, links on authors +Full format for conf, poster, talk, with links on authors +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullconferenceTI.bft b/modules/bibformat/etc/format_templates/ExportfullconferenceTI.bft new file mode 100644 index 000000000..b5a1e1ea5 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullconferenceTI.bft @@ -0,0 +1,6 @@ +Export full - conferences, links on titles +Full format for conf, poster, talk, with links on titles +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportfullconferenceTIAU.bft b/modules/bibformat/etc/format_templates/ExportfullconferenceTIAU.bft new file mode 100644 index 000000000..7f4533e02 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportfullconferenceTIAU.bft @@ -0,0 +1,6 @@ +Export full - conferences, links on titles, authors +Full format for conf, poster, talk, with links on titles, authors +

+

+

+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportshort.bft b/modules/bibformat/etc/format_templates/Exportshort.bft new file mode 100644 index 000000000..dc8628cec --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportshort.bft @@ -0,0 +1,3 @@ +Export short +Short format for article, review + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportshortAU.bft b/modules/bibformat/etc/format_templates/ExportshortAU.bft new file mode 100755 index 000000000..05510d08e --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortAU.bft @@ -0,0 +1,3 @@ +Export short, link on authors +Short format for article, review, which puts links on authors + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportshortTI.bft b/modules/bibformat/etc/format_templates/ExportshortTI.bft new file mode 100755 index 000000000..671915bb8 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortTI.bft @@ -0,0 +1,3 @@ +Export short, link on titles +Short format for article, review which puts links to fulltexts on title + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportshortTIAU.bft b/modules/bibformat/etc/format_templates/ExportshortTIAU.bft new file mode 100755 index 000000000..ecf046227 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortTIAU.bft @@ -0,0 +1,3 @@ +Export short, link on titles, authors +Short format for article, review, which puts links on authors and titles + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportshortbook.bft b/modules/bibformat/etc/format_templates/Exportshortbook.bft new file mode 100644 index 000000000..3d9cbe3cc --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportshortbook.bft @@ -0,0 +1,3 @@ +Export short - book +Short format for books, proceedings, theses + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportshortbookAU.bft b/modules/bibformat/etc/format_templates/ExportshortbookAU.bft new file mode 100644 index 000000000..acd2373f5 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortbookAU.bft @@ -0,0 +1,3 @@ +Export short - book, link on authors +Short format for books, proceedings, theses, which puts links on authors + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportshortbookTI.bft b/modules/bibformat/etc/format_templates/ExportshortbookTI.bft new file mode 100644 index 000000000..b8e406494 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortbookTI.bft @@ -0,0 +1,3 @@ +Export short - book, link on titles +Short format for book, proceedings, which puts links to fulltexts on titles + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/ExportshortbookTIAU.bft b/modules/bibformat/etc/format_templates/ExportshortbookTIAU.bft new file mode 100644 index 000000000..5f3a6080b --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortbookTIAU.bft @@ -0,0 +1,3 @@ +Export short - book, link on titles, authors +Short format for books, proceedings, theses, which puts links on authors and titles + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Exportshortconference.bft b/modules/bibformat/etc/format_templates/Exportshortconference.bft new file mode 100644 index 000000000..d7eee67a5 --- /dev/null +++ b/modules/bibformat/etc/format_templates/Exportshortconference.bft @@ -0,0 +1,3 @@ +Export short - conference +Short format for conference, poster, proccedings, talk + diff --git a/modules/bibformat/etc/format_templates/ExportshortconferenceAU.bft b/modules/bibformat/etc/format_templates/ExportshortconferenceAU.bft new file mode 100644 index 000000000..fbb1a0a3d --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortconferenceAU.bft @@ -0,0 +1,3 @@ +Export short - conference, link on authors +Short format for conference, poster, proccedings, talk, which puts links to fulltexts on authors + diff --git a/modules/bibformat/etc/format_templates/ExportshortconferenceTI.bft b/modules/bibformat/etc/format_templates/ExportshortconferenceTI.bft new file mode 100644 index 000000000..feca19d62 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortconferenceTI.bft @@ -0,0 +1,3 @@ +Export short - conference, link on titles +Short format for conference, poster, proccedings, talk, which puts links to fulltexts on titles + diff --git a/modules/bibformat/etc/format_templates/ExportshortconferenceTIAU.bft b/modules/bibformat/etc/format_templates/ExportshortconferenceTIAU.bft new file mode 100644 index 000000000..5eb48bee6 --- /dev/null +++ b/modules/bibformat/etc/format_templates/ExportshortconferenceTIAU.bft @@ -0,0 +1,3 @@ +Export short - conference, link on titles, authors +Short format for conference, poster, proccedings, talk, which puts links to fulltexts on titles, authors + diff --git a/modules/bibformat/etc/format_templates/FillerResult.bft b/modules/bibformat/etc/format_templates/FillerResult.bft new file mode 100644 index 000000000..dd4d1843e --- /dev/null +++ b/modules/bibformat/etc/format_templates/FillerResult.bft @@ -0,0 +1,3 @@ +Filler result +Short format for submit-filler result list + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HB_book.bft b/modules/bibformat/etc/format_templates/HB_book.bft new file mode 100644 index 000000000..1333af212 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HB_book.bft @@ -0,0 +1,4 @@ +EPFL HTML brief - book +Brief format for books and proceedings +
+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HB_conf.bft b/modules/bibformat/etc/format_templates/HB_conf.bft new file mode 100644 index 000000000..8bc79ce38 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HB_conf.bft @@ -0,0 +1,4 @@ +EPFL HTML brief - conference +Brief format for conference, poster, proccedings, talk +
+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HB_default.bft b/modules/bibformat/etc/format_templates/HB_default.bft new file mode 100644 index 000000000..835f2aeb3 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HB_default.bft @@ -0,0 +1,4 @@ +EPFL HTML brief - default +Brief format for article, review +
+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HB_hidden.bft b/modules/bibformat/etc/format_templates/HB_hidden.bft new file mode 100644 index 000000000..bdc97cba7 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HB_hidden.bft @@ -0,0 +1,6 @@ +EPFL HTML brief - Hidden record +Splash record when it has been hidden by its author +
+This record has been hidden by its author.Cette publication a été masquée par son auteur. +
+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HB_thesis.bft b/modules/bibformat/etc/format_templates/HB_thesis.bft new file mode 100644 index 000000000..2efef9e08 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HB_thesis.bft @@ -0,0 +1,4 @@ +EPFL HTML brief - thesis +Brief format for theses +
+ \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HD_EPFL_default.bft b/modules/bibformat/etc/format_templates/HD_EPFL_default.bft new file mode 100755 index 000000000..1161c8ebf --- /dev/null +++ b/modules/bibformat/etc/format_templates/HD_EPFL_default.bft @@ -0,0 +1,88 @@ +EPFL HTML detailed - default +Detailed format for article, review +
+ + + + +
+
+
+
+ +
+
+

+
+ + + + +
    + +
+ + + + + + + + +

ReferenceRéférence

+
    + +
+ + +

+ +
+
+
+
+

FulltextFulltext

+ +
+
+

Related materialDocuments pertinents

+ +
+ +
diff --git a/modules/bibformat/etc/format_templates/HD_hidden.bft b/modules/bibformat/etc/format_templates/HD_hidden.bft new file mode 100644 index 000000000..31858e571 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HD_hidden.bft @@ -0,0 +1,4 @@ +EPFL HTML detailed - hidden files +Detailed format for article, review +This record has been hidden by its author.Cette publication a été masquée par son auteur. + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HR_EPFL_default.bft b/modules/bibformat/etc/format_templates/HR_EPFL_default.bft new file mode 100644 index 000000000..22bfa6630 --- /dev/null +++ b/modules/bibformat/etc/format_templates/HR_EPFL_default.bft @@ -0,0 +1,43 @@ +EPFL HTML result detailed - default +Detailed format, for result list, for article, review +
+
+
+ +
+
+

+

+ + + + + + + + + + +

ReferenceRéférence

+
    + +
+ + +

FulltextFulltext

+ + +

ContactsContacts

+ + + + Detailed recordNotice détaillée +
+
+
\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/HR_hidden.bft b/modules/bibformat/etc/format_templates/HR_hidden.bft new file mode 100644 index 000000000..ff89d909a --- /dev/null +++ b/modules/bibformat/etc/format_templates/HR_hidden.bft @@ -0,0 +1,14 @@ +EPFL HTML result detailed - default +Detailed format, for result list, for article, review +
+
+
+ +
+
+ This record has been hidden by its author.Cette publication a été masquée par son auteur. + Detailed recordNotice détaillée + +
+
+
\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/MATCH_EPFL_default.bft b/modules/bibformat/etc/format_templates/MATCH_EPFL_default.bft new file mode 100644 index 000000000..4d189cfac --- /dev/null +++ b/modules/bibformat/etc/format_templates/MATCH_EPFL_default.bft @@ -0,0 +1,29 @@ +EPFL HTML matching preview +Preview and detailed format for matches. Prints affiliations +
+
+
+ +
+
+

+ + + + + + +

ReferenceRéférence

+
    + +
+ +
+
+
\ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/Makefile.am b/modules/bibformat/etc/format_templates/Makefile.am index 2971fffec..b368fef21 100644 --- a/modules/bibformat/etc/format_templates/Makefile.am +++ b/modules/bibformat/etc/format_templates/Makefile.am @@ -1,38 +1,102 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. etcdir = $(sysconfdir)/bibformat/format_templates etc_DATA = Default_HTML_captions.bft Picture_HTML_brief.bft \ Default_HTML_detailed.bft Default_HTML_portfolio.bft \ Picture_HTML_detailed.bft Default_HTML_brief.bft \ BibTeX.bft MARCXML.bft Excel.bft \ Default_HTML_similarity.bft NLM.xsl \ OAI_DC.xsl DC.xsl EndNote.xsl RSS.xsl \ RefWorks.xsl MODS.xsl \ Default_HTML_references.bft Default_HTML_files.bft \ Default_HTML_actions.bft Journal_HTML_detailed.bft \ Journal_HTML_brief.bft \ - Poetry_HTML_brief.bft Poetry_HTML_detailed.bft + Poetry_HTML_brief.bft Poetry_HTML_detailed.bft \ + ENACExportfull.bft \ + ENACExportfullbook.bft \ + ENACExportfullconference.bft \ + EPFL_Title.bft \ + Exportdetailed.bft \ + ExportdetailedAU.bft \ + ExportdetailedAUENAC.bft \ + ExportdetailedENAC.bft \ + ExportdetailedTI.bft \ + ExportdetailedTIAU.bft \ + ExportdetailedTIAUENAC.bft \ + ExportdetailedTIENAC.bft \ + Exportdetailedbook.bft \ + ExportdetailedbookAU.bft \ + ExportdetailedbookAUENAC.bft \ + ExportdetailedbookENAC.bft \ + ExportdetailedbookTI.bft \ + ExportdetailedbookTIAU.bft \ + ExportdetailedbookTIAUENAC.bft \ + ExportdetailedbookTIENAC.bft \ + Exportdetailedconference.bft \ + ExportdetailedconferenceAU.bft \ + ExportdetailedconferenceAUENAC.bft \ + ExportdetailedconferenceENAC.bft \ + ExportdetailedconferenceTI.bft \ + ExportdetailedconferenceTIAU.bft \ + ExportdetailedconferenceTIAUENAC.bft \ + ExportdetailedconferenceTIENAC.bft \ + Exportfull.bft \ + ExportfullAU.bft \ + ExportfullTI.bft \ + ExportfullTIAU.bft \ + Exportfullbook.bft \ + ExportfullbookAU.bft \ + ExportfullbookTI.bft \ + ExportfullbookTIAU.bft \ + Exportfullconference.bft \ + ExportfullconferenceAU.bft \ + ExportfullconferenceTI.bft \ + ExportfullconferenceTIAU.bft \ + Exportshort.bft \ + ExportshortAU.bft \ + ExportshortTI.bft \ + ExportshortTIAU.bft \ + Exportshortbook.bft \ + ExportshortbookAU.bft \ + ExportshortbookTI.bft \ + ExportshortbookTIAU.bft \ + Exportshortconference.bft \ + ExportshortconferenceAU.bft \ + ExportshortconferenceTI.bft \ + ExportshortconferenceTIAU.bft \ + HB_book.bft \ + HB_conf.bft \ + HB_default.bft \ + HB_hidden.bft \ + HB_thesis.bft \ + HD_EPFL_default.bft \ + HD_hidden.bft \ + HR_EPFL_default.bft \ + HR_hidden.bft \ + MATCH_EPFL_default.bft \ + PREVIEW_EPFL_default.bft + tmpdir = $(prefix)/var/tmp tmp_DATA = Test1.bft Test3.bft Test_2.bft Test_no_template.test EXTRA_DIST = $(etc_DATA) $(tmp_DATA) CLEANFILES = *.tmp diff --git a/modules/bibformat/etc/format_templates/OAI_DC.xsl b/modules/bibformat/etc/format_templates/OAI_DC.xsl index 541e2b29b..ec59483bf 100644 --- a/modules/bibformat/etc/format_templates/OAI_DC.xsl +++ b/modules/bibformat/etc/format_templates/OAI_DC.xsl @@ -1,101 +1,119 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + http://infoscience.epfl.ch/record/ + + + + + : + + + + + + + + + + + en + + + + + + + + : + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + Text + text/html + \ No newline at end of file diff --git a/modules/bibformat/etc/format_templates/PREVIEW_EPFL_default.bft b/modules/bibformat/etc/format_templates/PREVIEW_EPFL_default.bft new file mode 100644 index 000000000..4f305a2f1 --- /dev/null +++ b/modules/bibformat/etc/format_templates/PREVIEW_EPFL_default.bft @@ -0,0 +1,37 @@ +EPFL HTML preview detailed - default +Preview and detailed format +
+
+
+ +
+
+

+
+ + + +
    + +
+ + + + + + + + +

ReferenceRéférence

+
    + +
+ +
+
+
\ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/DTAU.bfo b/modules/bibformat/etc/output_formats/DTAU.bfo new file mode 100644 index 000000000..de889736f --- /dev/null +++ b/modules/bibformat/etc/output_formats/DTAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedAU.bft +REVIEW --- ExportdetailedAU.bft +CHAPTER --- ExportdetailedAU.bft +BOOK --- ExportdetailedbookAU.bft +PROC --- ExportdetailedbookAU.bft +STUDENT --- ExportdetailedbookAU.bft +THESIS --- ExportdetailedbookAU.bft +CONF --- ExportdetailedconferenceAU.bft +POSTER --- ExportdetailedconferenceAU.bft +TALK --- ExportdetailedconferenceAU.bft + +default: ExportdetailedAU.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/DTLD.bfo b/modules/bibformat/etc/output_formats/DTLD.bfo new file mode 100644 index 000000000..14998bdc7 --- /dev/null +++ b/modules/bibformat/etc/output_formats/DTLD.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- Exportdetailed.bft +REVIEW --- Exportdetailed.bft +CHAPTER --- Exportdetailed.bft +BOOK --- Exportdetailedbook.bft +PROC --- Exportdetailedbook.bft +STUDENT --- Exportdetailedbook.bft +THESIS --- Exportdetailedbook.bft +CONF --- Exportdetailedconference.bft +POSTER --- Exportdetailedconference.bft +TALK --- Exportdetailedconference.bft + +default: Exportdetailed.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/DTTI.bfo b/modules/bibformat/etc/output_formats/DTTI.bfo new file mode 100644 index 000000000..a6298b01d --- /dev/null +++ b/modules/bibformat/etc/output_formats/DTTI.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedTI.bft +REVIEW --- ExportdetailedTI.bft +CHAPTER --- ExportdetailedTI.bft +BOOK --- ExportdetailedbookTI.bft +PROC --- ExportdetailedbookTI.bft +STUDENT --- ExportdetailedbookTI.bft +THESIS --- ExportdetailedbookTI.bft +CONF --- ExportdetailedconferenceTI.bft +POSTER --- ExportdetailedconferenceTI.bft +TALK --- ExportdetailedconferenceTI.bft + +default: ExportdetailedTI.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/DTTIAU.bfo b/modules/bibformat/etc/output_formats/DTTIAU.bfo new file mode 100644 index 000000000..e2a41984e --- /dev/null +++ b/modules/bibformat/etc/output_formats/DTTIAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedTIAU.bft +REVIEW --- ExportdetailedTIAU.bft +CHAPTER --- ExportdetailedTIAU.bft +BOOK --- ExportdetailedbookTIAU.bft +PROC --- ExportdetailedbookTIAU.bft +STUDENT --- ExportdetailedbookTIAU.bft +THESIS --- ExportdetailedbookTIAU.bft +CONF --- ExportdetailedconferenceTIAU.bft +POSTER --- ExportdetailedconferenceTIAU.bft +TALK --- ExportdetailedconferenceTIAU.bft + +default: ExportdetailedTIAU.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/ENACDTAU.bfo b/modules/bibformat/etc/output_formats/ENACDTAU.bfo new file mode 100644 index 000000000..1a0ba99da --- /dev/null +++ b/modules/bibformat/etc/output_formats/ENACDTAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedAUENAC.bft +REVIEW --- ExportdetailedAUENAC.bft +CHAPTER --- ExportdetailedAUENAC.bft +BOOK --- ExportdetailedbookAUENAC.bft +PROC --- ExportdetailedbookAUENAC.bft +STUDENT --- ExportdetailedbookAUENAC.bft +THESIS --- ExportdetailedbookAUENAC.bft +CONF --- ExportdetailedconferenceAUENAC.bft +POSTER --- ExportdetailedconferenceAUENAC.bft +TALK --- ExportdetailedconferenceAUENAC.bft + +default: ExportdetailedAUENAC.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/ENACDTLD.bfo b/modules/bibformat/etc/output_formats/ENACDTLD.bfo new file mode 100644 index 000000000..6c127a054 --- /dev/null +++ b/modules/bibformat/etc/output_formats/ENACDTLD.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedENAC.bft +REVIEW --- ExportdetailedENAC.bft +CHAPTER --- ExportdetailedENAC.bft +BOOK --- ExportdetailedbookENAC.bft +PROC --- ExportdetailedbookENAC.bft +STUDENT --- ExportdetailedbookENAC.bft +THESIS --- ExportdetailedbookENAC.bft +CONF --- ExportdetailedconferenceENAC.bft +POSTER --- ExportdetailedconferenceENAC.bft +TALK --- ExportdetailedconferenceENAC.bft + +default: ExportdetailedENAC.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/ENACDTTI.bfo b/modules/bibformat/etc/output_formats/ENACDTTI.bfo new file mode 100644 index 000000000..f78ace1f6 --- /dev/null +++ b/modules/bibformat/etc/output_formats/ENACDTTI.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedTIENAC.bft +REVIEW --- ExportdetailedTIENAC.bft +CHAPTER --- ExportdetailedTIENAC.bft +BOOK --- ExportdetailedbookTIENAC.bft +PROC --- ExportdetailedbookTIENAC.bft +STUDENT --- ExportdetailedbookTIENAC.bft +THESIS --- ExportdetailedbookTIENAC.bft +CONF --- ExportdetailedconferenceTIENAC.bft +POSTER --- ExportdetailedconferenceTIENAC.bft +TALK --- ExportdetailedconferenceTIENAC.bft + +default: ExportdetailedTIENAC.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/ENACDTTIAU.bfo b/modules/bibformat/etc/output_formats/ENACDTTIAU.bfo new file mode 100644 index 000000000..dfcbe0675 --- /dev/null +++ b/modules/bibformat/etc/output_formats/ENACDTTIAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportdetailedTIAUENAC.bft +REVIEW --- ExportdetailedTIAUENAC.bft +CHAPTER --- ExportdetailedTIAUENAC.bft +BOOK --- ExportdetailedbookTIAUENAC.bft +PROC --- ExportdetailedbookTIAUENAC.bft +STUDENT --- ExportdetailedbookTIAUENAC.bft +THESIS --- ExportdetailedbookTIAUENAC.bft +CONF --- ExportdetailedconferenceTIAUENAC.bft +POSTER --- ExportdetailedconferenceTIAUENAC.bft +TALK --- ExportdetailedconferenceTIAUENAC.bft + +default: ExportdetailedTIAUENAC.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/ENACFULL.bfo b/modules/bibformat/etc/output_formats/ENACFULL.bfo new file mode 100644 index 000000000..335c48bd3 --- /dev/null +++ b/modules/bibformat/etc/output_formats/ENACFULL.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ENACExportfull.bft +REVIEW --- ENACExportfull.bft +CHAPTER --- ENACExportfull.bft +BOOK --- ENACExportfullbook.bft +PROC --- ENACExportfullbook.bft +STUDENT --- ENACExportfullbook.bft +THESIS --- ENACExportfullbook.bft +CONF --- ENACExportfullconference.bft +POSTER --- ENACExportfullconference.bft +TALK --- ENACExportfullconference.bft + +default: ENACExportfull.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/FILLER_RESULT.bfo b/modules/bibformat/etc/output_formats/FILLER_RESULT.bfo new file mode 100644 index 000000000..057c9c414 --- /dev/null +++ b/modules/bibformat/etc/output_formats/FILLER_RESULT.bfo @@ -0,0 +1,4 @@ +tag 980__a: +ARTICLE --- FillerResult.bft + +default: FillerResult.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/FLAU.bfo b/modules/bibformat/etc/output_formats/FLAU.bfo new file mode 100644 index 000000000..01474cf57 --- /dev/null +++ b/modules/bibformat/etc/output_formats/FLAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportfullAU.bft +REVIEW --- ExportfullAU.bft +CHAPTER --- ExportfullAU.bft +BOOK --- ExportfullbookAU.bft +PROC --- ExportfullbookAU.bft +STUDENT --- ExportfullbookAU.bft +THESIS --- ExportfullbookAU.bft +CONF --- ExportfullconferenceAU.bft +POSTER --- ExportfullconferenceAU.bft +TALK --- ExportfullconferenceAU.bft + +default: ExportfullAU.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/FLTI.bfo b/modules/bibformat/etc/output_formats/FLTI.bfo new file mode 100644 index 000000000..a8965e961 --- /dev/null +++ b/modules/bibformat/etc/output_formats/FLTI.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportfullTI.bft +REVIEW --- ExportfullTI.bft +CHAPTER --- ExportfullTI.bft +BOOK --- ExportfullbookTI.bft +PROC --- ExportfullbookTI.bft +STUDENT --- ExportfullbookTI.bft +THESIS --- ExportfullbookTI.bft +CONF --- ExportfullconferenceTI.bft +POSTER --- ExportfullconferenceTI.bft +TALK --- ExportfullconferenceTI.bft + +default: ExportfullTI.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/FLTIAU.bfo b/modules/bibformat/etc/output_formats/FLTIAU.bfo new file mode 100644 index 000000000..a897631ed --- /dev/null +++ b/modules/bibformat/etc/output_formats/FLTIAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportfullTIAU.bft +REVIEW --- ExportfullTIAU.bft +CHAPTER --- ExportfullTIAU.bft +BOOK --- ExportfullbookTIAU.bft +PROC --- ExportfullbookTIAU.bft +STUDENT --- ExportfullbookTIAU.bft +THESIS --- ExportfullbookTIAU.bft +CONF --- ExportfullconferenceTIAU.bft +POSTER --- ExportfullconferenceTIAU.bft +TALK --- ExportfullconferenceTIAU.bft + +default: ExportfullTIAU.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/FULL.bfo b/modules/bibformat/etc/output_formats/FULL.bfo new file mode 100644 index 000000000..845cde61e --- /dev/null +++ b/modules/bibformat/etc/output_formats/FULL.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- Exportfull.bft +REVIEW --- Exportfull.bft +CHAPTER --- Exportfull.bft +BOOK --- Exportfullbook.bft +PROC --- Exportfullbook.bft +STUDENT --- Exportfullbook.bft +THESIS --- Exportfullbook.bft +CONF --- Exportfullconference.bft +POSTER --- Exportfullconference.bft +TALK --- Exportfullconference.bft + +default: Exportfull.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/HB.bfo b/modules/bibformat/etc/output_formats/HB.bfo index afac278be..806d3dc12 100644 --- a/modules/bibformat/etc/output_formats/HB.bfo +++ b/modules/bibformat/etc/output_formats/HB.bfo @@ -1,8 +1,16 @@ -tag 980.a: -PICTURE --- Picture_HTML_brief.bft -POETRY --- Poetry_HTML_brief.bft +tag 980__c: +HIDDEN --- HB_hidden.bft -tag 773.t : -Atlantis Times --- Journal_HTML_brief.bft +tag 980__a: +ARTICLE --- HB_default.bft +REVIEW --- HB_default.bft +CHAPTER --- HB_default.bft +BOOK --- HB_book.bft +PROC --- HB_book.bft +STUDENT --- HB_book.bft +THESIS --- HB_thesis.bft +CONF --- HB_conf.bft +POSTER --- HB_conf.bft +TALK --- HB_conf.bft -default: Default_HTML_brief.bft +default: HB_default.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/HD.bfo b/modules/bibformat/etc/output_formats/HD.bfo index d668e335f..37fd0ba60 100644 --- a/modules/bibformat/etc/output_formats/HD.bfo +++ b/modules/bibformat/etc/output_formats/HD.bfo @@ -1,8 +1,3 @@ -tag 980.a : -PICTURE --- Picture_HTML_detailed.bft -POETRY --- Poetry_HTML_detailed.bft - -tag 773.t : -Atlantis Times --- Journal_HTML_detailed.bft - -default: Default_HTML_detailed.bft +tag 980__c: +HIDDEN --- HD_hidden.bft +default: HD_EPFL_default.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/HDM.bfo b/modules/bibformat/etc/output_formats/HDM.bfo new file mode 100644 index 000000000..bbbadaa77 --- /dev/null +++ b/modules/bibformat/etc/output_formats/HDM.bfo @@ -0,0 +1 @@ +default: EPFL_HTML_meta.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/HR.bfo b/modules/bibformat/etc/output_formats/HR.bfo new file mode 100644 index 000000000..c6bd75b1b --- /dev/null +++ b/modules/bibformat/etc/output_formats/HR.bfo @@ -0,0 +1,3 @@ +tag 980__c: +HIDDEN --- HR_hidden.bft +default: HR_EPFL_default.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/MATCH.bfo b/modules/bibformat/etc/output_formats/MATCH.bfo new file mode 100644 index 000000000..921c5a558 --- /dev/null +++ b/modules/bibformat/etc/output_formats/MATCH.bfo @@ -0,0 +1 @@ +default: MATCH_EPFL_default.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/Makefile.am b/modules/bibformat/etc/output_formats/Makefile.am index 401f50d3b..be228cf25 100644 --- a/modules/bibformat/etc/output_formats/Makefile.am +++ b/modules/bibformat/etc/output_formats/Makefile.am @@ -1,32 +1,52 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. etcdir = $(sysconfdir)/bibformat/output_formats etc_DATA = HB.bfo HC.bfo HD.bfo HP.bfo HX.bfo XM.bfo EXCEL.bfo \ XD.bfo HS.bfo \ XE.bfo XN.bfo XR.bfo XW.bfo \ XOAIDC.bfo XO.bfo \ - HDREF.bfo HDFILE.bfo HDACT.bfo + HDREF.bfo HDFILE.bfo HDACT.bfo \ + DTAU.bfo \ + DTLD.bfo \ + DTTI.bfo \ + DTTIAU.bfo \ + ENACDTAU.bfo \ + ENACDTLD.bfo \ + ENACDTTI.bfo \ + ENACDTTIAU.bfo \ + ENACFULL.bfo \ + FLAU.bfo \ + FLTI.bfo \ + FLTIAU.bfo \ + FULL.bfo \ + HR.bfo \ + MATCH.bfo \ + PREVIEW.bfo \ + SHAU.bfo \ + SHRT.bfo \ + SHTI.bfo \ + SHTIAU.bfo tmpdir = $(prefix)/var/tmp tmp_DATA = TEST1.bfo TEST2.bfo TEST3.bfo EXTRA_DIST = $(etc_DATA) $(tmp_DATA) CLEANFILES = *.tmp diff --git a/modules/bibformat/etc/output_formats/PREVIEW.bfo b/modules/bibformat/etc/output_formats/PREVIEW.bfo new file mode 100644 index 000000000..dbd0f31de --- /dev/null +++ b/modules/bibformat/etc/output_formats/PREVIEW.bfo @@ -0,0 +1 @@ +default: PREVIEW_EPFL_default.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/SHAU.bfo b/modules/bibformat/etc/output_formats/SHAU.bfo new file mode 100644 index 000000000..5b65400b3 --- /dev/null +++ b/modules/bibformat/etc/output_formats/SHAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportshortAU.bft +REVIEW --- ExportshortAU.bft +CHAPTER --- ExportshortAU.bft +BOOK --- ExportshortbookAU.bft +PROC --- ExportshortbookAU.bft +STUDENT --- ExportshortbookAU.bft +THESIS --- ExportshortbookAU.bft +CONF --- ExportshortconferenceAU.bft +POSTER --- ExportshortconferenceAU.bft +TALK --- ExportshortconferenceAU.bft + +default: ExportshortAU.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/SHRT.bfo b/modules/bibformat/etc/output_formats/SHRT.bfo new file mode 100644 index 000000000..e45f4a332 --- /dev/null +++ b/modules/bibformat/etc/output_formats/SHRT.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- Exportshort.bft +REVIEW --- Exportshort.bft +CHAPTER --- Exportshort.bft +BOOK --- Exportshortbook.bft +PROC --- Exportshortbook.bft +STUDENT --- Exportshortbook.bft +THESIS --- Exportshortbook.bft +CONF --- Exportshortconference.bft +POSTER --- Exportshortconference.bft +TALK --- Exportshortconference.bft + +default: Exportshort.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/SHTI.bfo b/modules/bibformat/etc/output_formats/SHTI.bfo new file mode 100644 index 000000000..911c727eb --- /dev/null +++ b/modules/bibformat/etc/output_formats/SHTI.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportshortTI.bft +REVIEW --- ExportshortTI.bft +CHAPTER --- ExportshortTI.bft +BOOK --- ExportshortbookTI.bft +PROC --- ExportshortbookTI.bft +STUDENT --- ExportshortbookTI.bft +THESIS --- ExportshortbookTI.bft +CONF --- ExportshortconferenceTI.bft +POSTER --- ExportshortconferenceTI.bft +TALK --- ExportshortconferenceTI.bft + +default: ExportshortTI.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/SHTIAU.bfo b/modules/bibformat/etc/output_formats/SHTIAU.bfo new file mode 100644 index 000000000..9ff9a574f --- /dev/null +++ b/modules/bibformat/etc/output_formats/SHTIAU.bfo @@ -0,0 +1,13 @@ +tag 980__a: +ARTICLE --- ExportshortTIAU.bft +REVIEW --- ExportshortTIAU.bft +CHAPTER --- ExportshortTIAU.bft +BOOK --- ExportshortbookTIAU.bft +PROC --- ExportshortbookTIAU.bft +STUDENT --- ExportshortbookTIAU.bft +THESIS --- ExportshortbookTIAU.bft +CONF --- ExportshortconferenceTIAU.bft +POSTER --- ExportshortconferenceTIAU.bft +TALK --- ExportshortconferenceTIAU.bft + +default: ExportshortTIAU.bft \ No newline at end of file diff --git a/modules/bibformat/etc/output_formats/XD.bfo b/modules/bibformat/etc/output_formats/XD.bfo index 71233dec6..0255a9445 100644 --- a/modules/bibformat/etc/output_formats/XD.bfo +++ b/modules/bibformat/etc/output_formats/XD.bfo @@ -1 +1 @@ -default: DC.xsl +default: OAI_DC.xsl diff --git a/modules/bibformat/lib/elements/Makefile.am b/modules/bibformat/lib/elements/Makefile.am index 2d7e66fe3..f3eb3ced0 100644 --- a/modules/bibformat/lib/elements/Makefile.am +++ b/modules/bibformat/lib/elements/Makefile.am @@ -1,41 +1,47 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. pylibdir=$(libdir)/python/invenio/bibformat_elements pylib_DATA = bfe_field.py bfe_title.py bfe_authors.py bfe_abstract.py bfe_affiliation.py \ bfe_imprint.py bfe_fulltext.py bfe_place.py bfe_publisher.py bfe_topbanner.py \ bfe_date_rec.py bfe_keywords.py bfe_notes.py bfe_reprints.py bfe_publi_info.py \ bfe_cited_by.py bfe_references.py bfe_title_brief.py \ bfe_report_numbers.py bfe_additional_report_numbers.py bfe_url.py \ bfe_addresses.py bfe_contact.py bfe_photo_resources_brief.py \ bfe_collection.py bfe_editors.py bfe_bibtex.py bfe_edit_record.py \ bfe_date.py bfe_xml_record.py bfe_external_publications.py __init__.py \ bfe_bfx_engine.py bfe_creation_date.py bfe_server_info.py bfe_issn.py \ bfe_client_info.py bfe_language.py bfe_record_id.py bfe_comments.py \ bfe_pagination.py bfe_fulltext_mini.py bfe_year.py bfe_isbn.py \ bfe_appears_in_collections.py bfe_photos.py bfe_record_stats.py \ - bfe_edit_files.py bfe_plots.py bfe_plots_thumb.py bfe_sword_push.py + bfe_edit_files.py bfe_plots.py bfe_plots_thumb.py bfe_sword_push.py \ + bfe_abstract_export.py bfe_authors_detailed.py bfe_authors_info.py \ + bfe_authors_short.py bfe_award.py bfe_brief_links.py bfe_conference.py \ + bfe_contact_authors.py bfe_contact_lab.py bfe_defense.py bfe_doctype.py \ + bfe_editor.py bfe_epfl_fulltext.py bfe_epfl_icon.py bfe_hidden.py \ + bfe_host.py bfe_icon.py bfe_note.py bfe_patent.py bfe_series_intext.py \ + bfe_series.py bfe_thesis_info.py bfe_updated_date.py tmpdir = $(prefix)/var/tmp/tests_bibformat_elements tmp_DATA = test_1.py bfe_test_2.py bfe_test_4.py test3.py test_5.py \ test_no_element.test __init__.py EXTRA_DIST = $(pylib_DATA) $(tmp_DATA) CLEANFILES = *~ *.tmp *.pyc diff --git a/modules/bibformat/lib/elements/bfe_abstract.py b/modules/bibformat/lib/elements/bfe_abstract.py index 4027b11c3..09abc12b5 100644 --- a/modules/bibformat/lib/elements/bfe_abstract.py +++ b/modules/bibformat/lib/elements/bfe_abstract.py @@ -1,173 +1,182 @@ # -*- coding: utf-8 -*- ## ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """BibFormat element - Prints English and French abstract. """ __revision__ = "$Id$" #import cgi from invenio import bibformat_utils def format_element(bfo, prefix_en, prefix_fr, suffix_en, suffix_fr, limit, max_chars, extension_en="[...] ",extension_fr="[...] ", contextual="no", highlight='no', print_lang='en,fr', escape="3", separator_en="
", separator_fr="
", latex_to_html='no'): """ Prints the abstract of a record in HTML. By default prints English and French versions. Printed languages can be chosen with the 'print_lang' parameter. @param prefix_en: a prefix for english abstract (printed only if english abstract exists) @param prefix_fr: a prefix for french abstract (printed only if french abstract exists) @param limit: the maximum number of sentences of the abstract to display (for each language) @param max_chars: the maximum number of chars of the abstract to display (for each language) @param extension_en: a text printed after english abstracts longer than parameter 'limit' @param extension_fr: a text printed after french abstracts longer than parameter 'limit' @param suffix_en: a suffix for english abstract(printed only if english abstract exists) @param suffix_fr: a suffix for french abstract(printed only if french abstract exists) @parmm contextual if 'yes' prints sentences the most relative to user search keyword (if limit < abstract) @param highlight: if 'yes' highlights words from user search keyword @param print_lang: the comma-separated list of languages to print. Now restricted to 'en' and 'fr' @param escape: escaping method (overrides default escape parameter to not escape separators) @param separator_en: a separator between each english abstract @param separator_fr: a separator between each french abstract @param latex_to_html: if 'yes', interpret as LaTeX abstract """ out = '' if print_lang == 'auto': print_lang = bfo.lang languages = print_lang.split(',') try: escape_mode_int = int(escape) except ValueError, e: escape_mode_int = 0 - abstract_en = bfo.fields('520__a', escape=escape_mode_int) - abstract_en.extend(bfo.fields('520__b', escape=escape_mode_int)) - abstract_en = separator_en.join(abstract_en) - - abstract_fr = bfo.fields('590__a', escape=escape_mode_int) - abstract_fr.extend(bfo.fields('590__b', escape=escape_mode_int)) - abstract_fr = separator_fr.join(abstract_fr) - + abstract_en = [] + abstract_fr = [] + for abstract in bfo.fields('520__'): + lang = abstract.get('9', 'eng') + if lang == 'eng': + abstract_en.append(abstract.get('a', '')) + else: + abstract_fr.append(abstract.get('a', '')) + + #abstract_en = bfo.fields('520__a', escape=3) + #abstract_en.extend(bfo.fields('520__b', escape=3)) + abstract_en = "
".join(abstract_en) + + #abstract_fr = bfo.fields('590__a', escape=3) + #abstract_fr.extend(bfo.fields('590__b', escape=3)) + abstract_fr = "
".join(abstract_fr) + if contextual == 'yes' and limit != "" and \ limit.isdigit() and int(limit) > 0: context_en = bibformat_utils.get_contextual_content(abstract_en, bfo.search_pattern, max_lines=int(limit)) #FIXME add something like [...] before and after #contextual sentences when not at beginning/end of abstract #if not abstract_en.strip().startswith(context_en[0].strip()): # out += '[...]' abstract_en = "
".join(context_en) context_fr = bibformat_utils.get_contextual_content(abstract_fr, bfo.search_pattern, max_lines=int(limit)) abstract_fr = "
".join(context_fr) if len(abstract_en) > 0 and 'en' in languages: out += prefix_en print_extension = False if max_chars != "" and max_chars.isdigit() and \ int(max_chars) < len(abstract_en): print_extension = True abstract_en = abstract_en[:int(max_chars)] if limit != "" and limit.isdigit(): s_abstract = abstract_en.split(". ") # Split around # DOTSPACE so that we # don't split html # links if int(limit) < len(s_abstract): print_extension = True s_abstract = s_abstract[:int(limit)] #for sentence in s_abstract: # out += sentence + "." out = '. '.join(s_abstract) # Add final dot if needed if abstract_en.endswith('.'): out += '.' if print_extension: out += " " + extension_en else: out += abstract_en out += suffix_en if len(abstract_fr) > 0 and 'fr' in languages: out += prefix_fr print_extension = False if max_chars != "" and max_chars.isdigit() and \ int(max_chars) < len(abstract_fr): print_extension = True abstract_fr = abstract_fr[:int(max_chars)] if limit != "" and limit.isdigit(): s_abstract = abstract_fr.split(". ") # Split around # DOTSPACE so that we # don't split html # links if int(limit) < len(s_abstract): print_extension = True s_abstract = s_abstract[:int(limit)] #for sentence in s_abstract: # out += sentence + "." out += '. '.join(s_abstract) # Add final dot if needed if abstract_fr.endswith('.'): out += '.' if print_extension: out += " "+extension_fr else: out += abstract_fr out += suffix_fr if highlight == 'yes': out = bibformat_utils.highlight(out, bfo.search_pattern) if latex_to_html == 'yes': out = bibformat_utils.latex_to_html(out) return out def escape_values(bfo): """ Called by BibFormat in order to check if output of this element should be escaped. """ return 0 diff --git a/modules/bibformat/lib/elements/bfe_abstract_export.py b/modules/bibformat/lib/elements/bfe_abstract_export.py new file mode 100644 index 000000000..e894be4a0 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_abstract_export.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- +## +## $Id: bfe_abstract.py,v 1.14 2007/07/24 10:21:28 kaplun Exp $ +## +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## CDS Invenio is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. +"""BibFormat element - Prints English and French abstract. +""" + +__revision__ = "$Id: bfe_abstract.py,v 1.14 2007/07/24 10:21:28 kaplun Exp $" + +#import cgi +from invenio import bibformat_utils +from urllib import quote +import re + +#invalid and old import +#from invenio.bibformat_config import CFG_BIBFORMAT_HAS_MIMETEX + +latex_formula_re = re.compile(r'\$(.*?)\$') +def fix_latex_formulas(text): + """Substitute every occurency of a Latex Formula with a proper image + representing it, produce by MimeTeX.""" + text=text.replace('&lt', '<') + text=text.replace('\$', '$') + def replace(match): + return '%s' % (quote(r'\small ' + match.group(1)), match.group(1)) + return latex_formula_re.sub(replace, text) + + +def format(bfo, limit, max_chars, extension="[...] ", languages='en', latex="no"): + """ Prints the abstract of a record in HTML. By default prints English and French versions. + @param prefix_en a prefix for english abstract (printed only if english abstract exists) + @param prefix_fr a prefix for french abstract (printed only if french abstract exists) + @param limit the maximum number of sentences of the abstract to display (for each language) + @param max_chars the maximum number of chars of the abstract to display (for each language) + @param extension a text printed after abstracts longer than parameter 'limit' + @param suffix_en a suffix for english abstract(printed only if english abstract exists) + @param suffix_fr a suffix for french abstract(printed only if french abstract exists) + @parmm contextual if 'yes' prints sentences the most relative to user search keyword (if limit < abstract) + @param highlight if 'yes' highlights words from user search keyword + """ + out = '' + abstract_en = [] + abstract_fr = [] + for abstract in bfo.fields('520__'): + lang = abstract.get('9', 'eng') + if lang == 'eng': + abstract_en.append(abstract.get('a', '')) + else: + abstract_fr.append(abstract.get('a', '')) + + #abstract_en = bfo.fields('520__a', escape=3) + #abstract_en.extend(bfo.fields('520__b', escape=3)) + abstract_en = "
".join(abstract_en) + + #abstract_fr = bfo.fields('590__a', escape=3) + #abstract_fr.extend(bfo.fields('590__b', escape=3)) + abstract_fr = "
".join(abstract_fr) + + if limit != "" and limit.isdigit() and int(limit) > 0: + context_en = bibformat_utils.get_contextual_content(abstract_en, + bfo.search_pattern, + max_lines=int(limit)) + #FIXME add something like [...] before and after + #contextual sentences when not at beginning/end of abstract + #if not abstract_en.strip().startswith(context_en[0].strip()): + # out += '[...]' + abstract_en = "
".join(context_en) + context_fr = bibformat_utils.get_contextual_content(abstract_fr, + bfo.search_pattern, + max_lines=int(limit)) + abstract_fr = "
".join(context_fr) + if len(abstract_en) > 0 and 'en' in languages: + print_extension = False + if max_chars != "" and max_chars.isdigit() and int(max_chars) < len(abstract_en): + print_extension = True + abstract_en = abstract_en[:int(max_chars)] + if limit != "" and limit.isdigit(): + s_abstract = abstract_en.split(".") + if int(limit) < len(s_abstract): + print_extension = True + s_abstract = s_abstract[:int(limit)] + #for sentence in s_abstract: + # out += sentence + "." + out = '.'.join(s_abstract) + + # Add final dot if needed + if abstract_en.endswith('.'): + out += '.' + + if print_extension: + out += " " + extension + + else: + out += abstract_en + + if len(abstract_fr) > 0 and 'fr' in languages: + + print_extension = False + + if max_chars != "" and max_chars.isdigit() and \ + int(max_chars) < len(abstract_fr): + print_extension = True + abstract_fr = abstract_fr[:int(max_chars)] + + if limit != "" and limit.isdigit(): + s_abstract = abstract_fr.split(".") + + if int(limit) < len(s_abstract): + print_extension = True + s_abstract = s_abstract[:int(limit)] + + #for sentence in s_abstract: + # out += sentence + "." + out = '.'.join(s_abstract) + + # Add final dot if needed + if abstract_fr.endswith('.'): + out += '.' + + if print_extension: + out += " "+ extension + + else: + out += abstract_fr + + if latex=="yes": + return fix_latex_formulas(out) + else: + return out + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_authors.py b/modules/bibformat/lib/elements/bfe_authors.py index d1e2fbe4b..3cd737f8f 100644 --- a/modules/bibformat/lib/elements/bfe_authors.py +++ b/modules/bibformat/lib/elements/bfe_authors.py @@ -1,137 +1,255 @@ # -*- coding: utf-8 -*- -## -## This file is part of Invenio. -## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. -## -## Invenio is free software; you can redistribute it and/or -## modify it under the terms of the GNU General Public License as -## published by the Free Software Foundation; either version 2 of the -## License, or (at your option) any later version. -## -## Invenio is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Invenio; if not, write to the Free Software Foundation, Inc., -## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -"""BibFormat element - Prints authors -""" -__revision__ = "$Id$" -def format_element(bfo, limit, separator=' ; ', +"""BibFormat element - Prints authors""" +from cgi import escape +from urllib import quote + +from invenio.config import CFG_SITE_URL +from invenio.messages import gettext_set_language +from invenio import bibformat_utils + +from Infoscience.Names import InfoscienceName + + +def format_element(bfo, limit, separator='; ', extension='[...]', print_links="yes", print_affiliations='no', affiliation_prefix = ' (', affiliation_suffix = ')', interactive="no", highlight="no"): """ Prints the list of authors of a record. @param limit: the maximum number of authors to display @param separator: the separator between authors. @param extension: a text printed if more authors than 'limit' exist @param print_links: if yes, prints the authors as HTML link to their publications @param print_affiliations: if yes, make each author name followed by its affiliation @param affiliation_prefix: prefix printed before each affiliation @param affiliation_suffix: suffix printed after each affiliation @param interactive: if yes, enable user to show/hide authors when there are too many (html + javascript) @param highlight: highlights authors corresponding to search query if set to 'yes' """ - from urllib import quote - from cgi import escape - from invenio.config import CFG_SITE_URL - from invenio.messages import gettext_set_language - _ = gettext_set_language(bfo.lang) # load the right message language - - authors = [] + + output = [] + + all_authors = [] authors_1 = bfo.fields('100__') authors_2 = bfo.fields('700__') - authors.extend(authors_1) - authors.extend(authors_2) + all_authors.extend(authors_1) + all_authors.extend(authors_2) + + roles = {} + for author in all_authors: + if author.has_key('a') and author['a'].strip(): + role = 'author' + if author.has_key('e') and author['e'].strip(): + if 'ed' in author['e'].lower(): + role = 'editor' + elif 'trad' in author['e'].lower(): + role = 'translator' + elif 'dir' in author['e'].lower(): + role = 'director' + if roles.has_key(role): + roles[role].append(author) + else: + roles[role] = [author] + + if 'author' in roles.keys(): + output.append(render_authors(bfo, roles['author'], limit, separator, + extension, print_links, print_affiliations, + affiliation_prefix, affiliation_suffix, + interactive, highlight, "")) + corporates = bfo.fields('710__a') + if len(corporates): + output.append(render_corporates(bfo, corporates, separator, print_links)) + + if 'editor' in roles.keys(): + if len(roles['editor']) > 1: + prefix = _("Editors") + else: + prefix = _("Editor") + + output.append(render_authors(bfo, roles['editor'], limit, separator, + extension, print_links, print_affiliations, + affiliation_prefix, affiliation_suffix, + interactive, highlight, + prefix + ": ") + ) + + if 'translator' in roles.keys(): + output.append(render_authors(bfo, roles['translator'], limit, separator, + extension, print_links, print_affiliations, + affiliation_prefix, affiliation_suffix, + interactive, highlight, + len(roles['translator']) == 1 and _("Translators: ") or _("Translator: ")) + ) + + if 'director' in roles.keys(): + output.append(render_authors(bfo, roles['director'], limit, separator, + extension, print_links, print_affiliations, + affiliation_prefix, affiliation_suffix, + interactive, highlight, + len(roles['director']) == 1 and _("Advisor: ") or _("Advisors: ")) + ) + + + if len(output) == 0: + return '' + + return '
'.join(output) + + + + +def render_authors(bfo, authors_list, limit, separator='; ', extension='[...]', + print_links="yes", print_affiliations='no', + affiliation_prefix = ' (', affiliation_suffix = ')', + interactive="no", highlight="no", prefix=""): + + _ = gettext_set_language(bfo.lang) + nb_authors = len(authors_list) + + for author in authors_list: + if highlight == 'yes': + author['a'] = bibformat_utils.highlight(author['a'], bfo.search_pattern) + if print_links.lower() == "yes": + author['a'] = '%s' % \ + (CFG_SITE_URL, quote(author['a']), bfo.lang, escape(author['a'])) + if author.has_key('u') and print_affiliations == "yes": + author['u'] = affiliation_prefix + author['u'] + affiliation_suffix + author['a'] = author.get('a', '') + author.get('u', '') + + authors = [] + + for author in authors_list: + if author.has_key('q'): + authors.append(author['a'] + " (" + author['q'] + ")") + else: + authors.append(author['a']) + + #authors = [author['a'] for author in authors_list] #James: have to put a condition to know if a q argument exist + + if limit.isdigit() and nb_authors > int(limit) and interactive != "yes": + return prefix + separator.join(authors[:int(limit)]) + extension + + elif limit.isdigit() and nb_authors > int(limit) and interactive == "yes": + return """%s%s
+ + """ % (prefix, + separator.join(authors[:int(limit)]), + _("Show all %i authors") % nb_authors, + separator.join(authors[int(limit):])) + else: + return prefix + separator.join(authors) + + +def render_corporates(bfo, corporate_list, separator, print_links): + out = [] + for corporate in corporate_list: + if print_links.lower() == "yes": + out.append('%s' % \ + (CFG_SITE_URL, quote(corporate), bfo.lang, escape(corporate))) + else: + out.append(coporate) + return separator.join(out) - nb_authors = len(authors) +""" + + authors = [] + for author in all_authors: + if author.has_key('a'): + + if is_part_of_something and author.has_key('e') and author['e'].strip(): + # AB 2011-11-04 check for editors of the containing work, which should not appear among authors + if 'ed' in author['e'].lower(): + role = 'editor' + continue + else: + authors.append(author) + else: + authors.append(author) + + nb_authors = len(authors) # Process authors to add link, highlight and format affiliation for author in authors: - if author.has_key('a'): if highlight == 'yes': - from invenio import bibformat_utils + author['a'] = bibformat_utils.highlight(author['a'], bfo.search_pattern) if print_links.lower() == "yes": author['a'] = ''+escape(author['a'])+'' if author.has_key('u'): if print_affiliations == "yes": author['u'] = affiliation_prefix + author['u'] + \ affiliation_suffix # Flatten author instances if print_affiliations == 'yes': authors = [author.get('a', '') + author.get('u', '') for author in authors] else: authors = [author.get('a', '') for author in authors] if limit.isdigit() and nb_authors > int(limit) and interactive != "yes": return separator.join(authors[:int(limit)]) + extension elif limit.isdigit() and nb_authors > int(limit) and interactive == "yes": out = ''' '''%{'show_less':_("Hide"), 'show_more':_("Show all %i authors") % nb_authors, 'extension':extension} out += '' out += separator.join(authors[:int(limit)]) out += '' + separator + \ separator.join(authors[int(limit):]) + '' out += ' ' out += ' ' out += '' return out elif nb_authors > 0: return separator.join(authors) - +""" def escape_values(bfo): """ Called by BibFormat in order to check if output of this element should be escaped. """ - return 0 + return 0 \ No newline at end of file diff --git a/modules/bibformat/lib/elements/bfe_authors_detailed.py b/modules/bibformat/lib/elements/bfe_authors_detailed.py new file mode 100644 index 000000000..874471d94 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_authors_detailed.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- +## +## $Id: bfe_authors.py,v 1.16 2007/02/14 18:32:16 tibor Exp $ +## +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## CDS Invenio is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. +"""BibFormat element - Prints authors +""" +__revision__ = "$Id: bfe_authors.py,v 1.16 2007/02/14 18:32:16 tibor Exp $" + +from Infoscience.Names import InfoscienceName +from urllib import quote +from invenio.config import CFG_SITE_URL + + +def __url_to_author(author): + if author.has_key('g') and author['g'].strip(): + url = 'http://people.epfl.ch/%s' % author['g'].strip() + #else: + url = CFG_SITE_URL + '/search?f=author&p='+ quote(author['a']) + return url + +def __url_to_corporate(corporate): + url = CFG_SITE_URL + '/search?f=710__a&p='+ quote(corporate) + return url + +def __link(author, url): + return '%s' % (url, author) + +def __span(author, author_class): + if author_class: + return '%s' % (author_class, author) + return author + +def format(bfo, limit_to="", print_links="no", author_class="", separator='; '): + """ + Prints the list of authors of a record. + + @param limit the maximum number of authors to display + @param separator the separator between authors. + @param extension a text printed if more authors than 'limit' exist + @param print_links if yes, prints the authors as HTML link to their publications + @param print_roles if yes, make each author name followed by its role + @param role_prefix prefix printed before each role + @param role_suffix suffix printed after each role + @param interactive if yes, enable user to show/hide authors when there are too many (html + javascript) + @param highlight highlights authors corresponding to search query if set to 'yes' + """ + print_links = (print_links == "yes") + output = [] + + is_part_of_something = (len(bfo.fields('773__')) > 0) + + authors = bfo.fields('700__') + roles = {} + for author in authors: + if author.has_key('a') and author['a'].strip(): + role = 'author' + if author.has_key('e') and author['e'].strip(): + if 'ed' in author['e'].lower(): + role = 'editor' + elif 'trad' in author['e'].lower(): + role= 'translator' + elif 'dir' in author['e'].lower(): + role = 'director' + if roles.has_key(role): + roles[role].append((author['a'], __url_to_author(author))) + else: + roles[role] = [(author['a'], __url_to_author(author))] + if 'author' in roles.keys(): + output.append(render_authors(roles['author'], print_links, author_class)) + if not is_part_of_something: + if 'editor' in roles.keys(): + output.append(render_editors(roles['editor'], print_links, author_class)) + if 'director' in roles.keys(): + output.append(render_directors(roles['director'], print_links, author_class)) + if 'translator' in roles.keys(): + output.append(render_translators(roles['translator'], print_links, author_class)) + + corporates = bfo.fields('710__a') + if len(corporates): + output.append(render_corporates(corporates, print_links, author_class)) + if len(output) == 0: + return '' + + if limit_to == "author": + return output.pop() + else: + return separator.join(output) + + + +def render_authors(authors, print_links=False, author_class="", separator=';'): + if print_links: + auts = [__span(__link(InfoscienceName(author).ieee_render(), url), author_class) for (author, url) in authors] + else: + auts = [__span(InfoscienceName(author).ieee_render(), author_class) for (author, url) in authors] + if len(auts) > 1: + return ' and '.join([', '.join(auts[0:-1]), auts[-1]]) + else: + return auts[0] + +def render_editors(editors, print_links=False, author_class=""): + if print_links: + eds = [__span(__link(InfoscienceName(editor).ieee_render(), url), author_class) for (editor, url) in editors] + else: + eds = [__span(InfoscienceName(editor).ieee_render(), author_class) for (editor, url) in editors] + if len(eds) > 1: + return ' and '.join([', '.join(eds[0:-1]), eds[-1]]) + ' (Eds.)' + else: + return eds[0] + ' (Ed.)' + + +def render_translators(translators, print_links=False, author_class=""): + if print_links: + trans = [__span(__link(InfoscienceName(translator).ieee_render(), url), author_class) for (translator, url) in translators] + else: + trans = [__span(InfoscienceName(translator).ieee_render(), author_class) for (translator, url) in translators] + if len(trans) > 1: + return ' and '.join([', '.join(trans[0:-1]), trans[-1]]) + ' (Trans.)' + else: + return trans[0] + ' (Trans.)' + +def render_directors(directors, print_links=False, author_class=""): + if print_links: + dirs = [__span(__link(InfoscienceName(director).ieee_render(), url), author_class) for (director, url) in directors] + else: + dirs = [__span(InfoscienceName(director).ieee_render(), author_class) for (director, url) in directors] + if len(dirs) > 1: + return ' and '.join([', '.join(dirs[0:-1]), dirs[-1]]) + ' (Dirs.)' + else: + return dirs[0] + ' (Dir.)' + +def render_corporates(corporates, print_links=False, author_class=""): + if print_links: + corps = [__span(__link(corporate, __url_to_corporate(corporate)), author_class) for corporate in corporates] + else: + corps = [__span(corporate, author_class) for corporate in corporates] + if len(corps) > 1: + return ' and '.join([', '.join(corps[0:-1]), corps[-1]]) + else: + return corps[0] + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_authors_info.py b/modules/bibformat/lib/elements/bfe_authors_info.py new file mode 100644 index 000000000..29a952889 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_authors_info.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- + +"""BibFormat element - Prints authors information + +Author 1, Affiliation, [link to people], find accreditations, find publications + +Accreditations: + http://accred.epfl.ch/accred/accreds.pl/viewpers?name=favre (find in accreditations) + http://accred.epfl.ch/accred/accreds.pl/viewpers?thescip=128933 (view accreditations) + + +""" +from cgi import escape +from urllib import quote, urlencode + +from invenio.config import CFG_SITE_URL +from invenio.messages import gettext_set_language +from invenio import bibformat_utils + +from Infoscience.Names import InfoscienceName + + +def link_accred(author, ln): + _ = gettext_set_language(ln) + sciper = author.get('g', None) + template = """ + + """ + if sciper: + url = 'http://accred.epfl.ch/accred/accreds.pl/viewpers?thescip=%s' % sciper + return template % (url, _("View accreditations")) + else: + name = author.get('a').split(',')[0] + url = 'http://accred.epfl.ch/accred/accreds.pl/viewpers?name=%s' % name + return template % (url, _("Lookup in accred")) + +def link_people(author, ln): + _ = gettext_set_language(ln) + sciper = author.get('g', None) + template = """ + + """ + if sciper: + url = 'http://people.epfl.ch/%s' % sciper + return template % (url, _("People profile")) + +def link_affiliations(author, ln): + affiliation = author.get('u', None) + template = '%s' + if affiliation: + params = urlencode({'p': "700__u:'%s'" % affiliation, 'ln': ln}) + url = 'http://infoscience.epfl.ch/search?%s' % params + return template % (url, affiliation) + +def link_publications(author, ln): + _ = gettext_set_language(ln) + name = author.get('a', None) + template = """ + + """ + params = urlencode({'p': name, 'f': 'author', 'ln': ln}) + url = 'http://infoscience.epfl.ch/search?%s' % params + return template % (url, _("Find publications")) + +def format_element(bfo): + """ + Prints the list of authors of a record. + """ + _ = gettext_set_language(bfo.lang) # load the right message language + + output = [] + + all_authors = [] + authors_1 = bfo.fields('100__') + authors_2 = bfo.fields('700__') + + all_authors.extend(authors_1) + all_authors.extend(authors_2) + + for author in all_authors: + title = '

%s

' % author['a'] + + buttons = [] + affiliation = link_affiliations(author, bfo.lang) + if affiliation: + title += '' + affiliation + '' + + people = link_people(author, bfo.lang) + if people: + buttons.append(people) + + buttons.append(link_accred(author, bfo.lang)) + buttons.append(link_publications(author, bfo.lang)) + output.append(title + '
' + '\n'.join(buttons) + '
' ) + + return '\n'.join(['
%s
' % printable for printable in output]) + + + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_authors_short.py b/modules/bibformat/lib/elements/bfe_authors_short.py new file mode 100644 index 000000000..3a8d9b731 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_authors_short.py @@ -0,0 +1,180 @@ +""" +BibFormat element - Prints authors +""" +from urllib import quote + +from Infoscience.Names import InfoscienceName + +from invenio.config import CFG_SITE_URL + +def __url_to_author(author): +# if author.has_key('g') and author['g'].strip(): +# url = 'http://people.epfl.ch/%s' % author['g'].strip() + #else: + url = CFG_SITE_URL + '/search?f=author&p='+ quote(author['a']) + return url + +def __url_to_corporate(corporate): + url = CFG_SITE_URL + '/search?f=710__a&p='+ quote(corporate) + return url + +def __link(author, url): + return '%s' % (url, author) + +def __span(author, author_class): + if author_class: + return '%s' % (author_class, author) + return author + +def format(bfo, limit=5, extension=" et al", limit_to="", print_links="no", author_class=""): + """ + Prints the list of authors of a record. + + @param limit the maximum number of authors to display + @param separator the separator between authors. + @param extension a text printed if more authors than 'limit' exist + @param print_links if yes, prints the authors as HTML link to their publications + @param print_roles if yes, make each author name followed by its role + @param role_prefix prefix printed before each role + @param role_suffix suffix printed after each role + @param interactive if yes, enable user to show/hide authors when there are too many (html + javascript) + @param highlight highlights authors corresponding to search query if set to 'yes' + """ + limit= int(limit) + print_links = (print_links == "yes") + + is_part_of_something = (len(bfo.fields('773__')) > 0) + + output = [] + authors = bfo.fields('700__') + roles = {} + for author in authors: + if author.has_key('a') and author['a'].strip(): + role = 'author' + if author.has_key('e') and author['e'].strip(): + if 'ed' in author['e'].lower(): + role = 'editor' + elif 'trad' in author['e'].lower(): + role= 'translator' + elif 'dir' in author['e'].lower(): + role = 'director' + if roles.has_key(role): + roles[role].append((author['a'], __url_to_author(author))) + else: + roles[role] = [(author['a'], __url_to_author(author))] + total_len = 0 + + + if 'author' in roles.keys(): + authors = roles['author'] + if len(authors) > limit: + if len(authors[:limit]): + output.append(render_authors(authors[:limit], print_links, author_class)) + return ', '.join(output) + extension + else: + total_len += len(authors) + output.append(render_authors(authors, print_links, author_class)) + + if not is_part_of_something: + if 'editor' in roles.keys(): + editors = roles['editor'] + if total_len + len(editors) > limit: + if len(editors[:limit - total_len]): + output.append(render_editors(editors[:limit - total_len], print_links, author_class)) + return ', '.join(output) + extension + else: + total_len += len(editors) + output.append(render_editors(editors, print_links, author_class)) + + if 'director' in roles.keys(): + directors = roles['director'] + if total_len + len(directors) > limit: + if len(directors[:limit - total_len]): + output.append(render_directors(directors[:limit - total_len], print_links, author_class)) + return ', '.join(output) + extension + else: + total_len += len(directors) + output.append(render_directors(directors, print_links, author_class)) + + if 'translator' in roles.keys(): + translators = roles['translator'] + if total_len + len(translators) > limit: + if len(translators[:limit - total_len]): + output.append(render_translators(translators[:limit - total_len], print_links, author_class)) + return ', '.join(output) + extension + else: + total_len += len(translators) + output.append(render_translators(translators, print_links, author_class)) + + corporates = bfo.fields('710__a') + if len(corporates): + output.append(render_corporates(corporates, print_links, author_class)) + + if len(output) == 0: + return '' + + if limit_to == "author": + return output[0] + else: + return ', '.join(output) + + + +def render_authors(authors, print_links=False, author_class=""): + if print_links: + auts = [__span(__link(InfoscienceName(author).ieee_render(), url), author_class) for (author, url) in authors] + else: + auts = [__span(InfoscienceName(author).ieee_render(), author_class) for (author, url) in authors] + if len(auts) > 1: + return ' and '.join([', '.join(auts[0:-1]), auts[-1]]) + else: + return auts[0] + +def render_editors(editors, print_links=False, author_class=""): + if print_links: + eds = [__span(__link(InfoscienceName(editor).ieee_render(), url), author_class) for (editor, url) in editors] + else: + eds = [__span(InfoscienceName(editor).ieee_render(), author_class) for (editor, url) in editors] + if len(eds) > 1: + return ' and '.join([', '.join(eds[0:-1]), eds[-1]]) + ' (Eds.)' + else: + return eds[0] + ' (Ed.)' + + +def render_translators(translators, print_links=False, author_class=""): + if print_links: + trans = [__span(__link(InfoscienceName(translator).ieee_render(), url), author_class) for (translator, url) in translators] + else: + trans = [__span(InfoscienceName(translator).ieee_render(), author_class) for (translator, url) in translators] + if len(trans) > 1: + return ' and '.join([', '.join(trans[0:-1]), trans[-1]]) + ' (Trans.)' + else: + return trans[0] + ' (Trans.)' + +def render_directors(directors, print_links=False, author_class=""): + if print_links: + dirs = [__span(__link(InfoscienceName(director).ieee_render(), url), author_class) for (director, url) in directors] + else: + dirs = [__span(InfoscienceName(director).ieee_render(), author_class) for (director, url) in directors] + if len(dirs) > 1: + return ' and '.join([', '.join(dirs[0:-1]), dirs[-1]]) + ' (Dirs.)' + else: + return dirs[0] + ' (Dir.)' + +def render_corporates(corporates, print_links=False, author_class=""): + if print_links: + corps = [__span(__link(corporate, __url_to_corporate(corporate)), author_class) for corporate in corporates] + else: + corps = [__span(corporate, author_class) for corporate in corporates] + if len(corps) > 1: + return ' and '.join([', '.join(corps[0:-1]), corps[-1]]) + else: + return corps[0] + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_award.py b/modules/bibformat/lib/elements/bfe_award.py new file mode 100644 index 000000000..65d56478a --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_award.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints Award information""" + + +from invenio.bibknowledge import get_kb_mapping + +def format(bfo): + """ + Print Award. + + """ + output = '' + award_field = bfo.field('586__a') + if award_field and award_field.strip(): + if not ',' in award_field: + award_name = award_field.strip() + award_name = get_kb_mapping(kb_name='awards', key=award_name, default=award_name) + if type(award_name) == dict: + award_name = award_name['value'] + return award_name + + award_name = ','.join(award_field.split(',')[:-1]) + award_year = award_field.split(',')[-1].strip() + award_name = get_kb_mapping(kb_name='awards', key=award_name, default=award_name) + if type(award_name) == dict: + award_name = award_name['value'] + output = '%s, %s' % (award_name, award_year) + + return output \ No newline at end of file diff --git a/modules/bibformat/lib/elements/bfe_brief_links.py b/modules/bibformat/lib/elements/bfe_brief_links.py new file mode 100644 index 000000000..d06d6f2e4 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_brief_links.py @@ -0,0 +1,76 @@ +""" +BibFormat element - Prints links to detailed record, similar records and fulltext +""" + +from invenio.messages import gettext_set_language +from invenio.bibformat_elements.bfe_epfl_fulltext import get_files + +from invenio.access_control_engine import acc_authorize_action + +def can_edit(bfo): + user_info = bfo.user_info + + at_epfl = bfo.field("973__a") == 'EPFL' + thesis = bfo.field('980__a') == 'THESIS' + + # EPFL Theses cannot be edited via websubmit interface. + if at_epfl and thesis: + (auth_code, auth_message) = acc_authorize_action(user_info, 'submit_thesis') + if auth_code == 0: + return True + return False + + sciper = user_info.get('external_uniqueidentifier', [None])[0] + labs = bfo.fields("909C0p") + # member of labs ? + for lab in labs: + (auth_code, auth_message) = acc_authorize_action(user_info, 'submit_epfl', categ=lab) + if auth_code == 0: + return True + + # author of publication ? + if sciper: + scipers = bfo.fields('700__g') + if sciper in scipers: + return True + # original submitter ? + scipers = bfo.fields('917Z8x') + if sciper in scipers: + return True + + # admin ? + (auth_code, auth_message) = acc_authorize_action(user_info, 'submit_epfl') + if auth_code == 0: + return True + + return False + + +def format_element(bfo): + """ + This is the format for formatting fulltext links in the mini panel. + """ + _ = gettext_set_language(bfo.lang) + + links = [('/record/%s?ln=%s' % (bfo.recID, bfo.lang), _("Detailed record"))] + template = '%s' + + if bfo.field("980__c") == 'HIDDEN': + return ''.join([template % link for link in links]) + + (main_documents, additional_documents, external_documents) = get_files(bfo) + if main_documents: + if len(main_documents) + len(additional_documents) == 1: + links.append((main_documents[0][0], _("Fulltext"))) + else: + links.append(('/record/%s/files?ln=%s' % (bfo.recID, bfo.lang), _("Fulltext"))) + + return ''.join([template % link for link in links]) + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_conference.py b/modules/bibformat/lib/elements/bfe_conference.py new file mode 100644 index 000000000..f95197c74 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_conference.py @@ -0,0 +1,30 @@ +"""BibFormat element - Prints conference informations""" +from invenio.messages import gettext_set_language + +def format(bfo, separator=', ', year="yes"): + """ + Print host (Order: Name of publisher, place of publication and date of publication). + + """ + output = [] + date = False + # name + if bfo.field('7112_a') and bfo.field('7112_a').strip(): + output.append(bfo.field('7112_a').strip()) + + # location + if bfo.field('7112_c') and bfo.field('7112_c').strip(): + output.append(bfo.field('7112_c').strip()) + + # date + if year == "yes" and bfo.field('7112_d') and bfo.field('7112_d').strip(): + output.append(bfo.field('7112_d')) + + return separator.join(output) + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 \ No newline at end of file diff --git a/modules/bibformat/lib/elements/bfe_contact_authors.py b/modules/bibformat/lib/elements/bfe_contact_authors.py new file mode 100644 index 000000000..ac57f706c --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_contact_authors.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints link to EPFL authors""" + +from invenio.messages import gettext_set_language + +def format(bfo, ): + """ + Prints the contact informations. + Translate using given knowledge base. + + TODO USE Knowledge base!! + + """ + authors = bfo.fields("700__") + out = [] + for author in authors: + name = author.get('a') + sciper = author.get('g') + if sciper: + out.append('%s' % (sciper, name)) + return ''.join(['
  • %s
  • ' % elem for elem in out]) + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 \ No newline at end of file diff --git a/modules/bibformat/lib/elements/bfe_contact_box.py b/modules/bibformat/lib/elements/bfe_contact_box.py new file mode 100755 index 000000000..85faf3f9c --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_contact_box.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Get contacts informations from different bfe and format it, if any +This is currently used in HD_EPFL_default.bft""" + +from invenio.bibformat_elements.bfe_contact_lab import format as format_element_labs +from invenio.bibformat_elements.bfe_contact_authors import format as format_element_authors + +def format(bfo, kb_name, kb_url): + full_html = '' + full_html_labs = '' + full_html_authors = '' + + html_wrapper = '

    Contacts

    %s%s
    ' + + html_labs = format_element_labs(bfo, kb_name, kb_url) or '' + html_authors = format_element_authors(bfo) or '' + + if html_labs: + full_html_labs = '' % html_labs + + if html_authors: + if bfo.lang == 'fr': + full_html_authors = '

    Auteurs EPFL

    ' % html_authors + else: + full_html_authors = '

    EPFL authors

    ' % html_authors + + if full_html_labs or full_html_authors: + full_html = html_wrapper % (full_html_labs, full_html_authors) + + return full_html + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_contact_lab.py b/modules/bibformat/lib/elements/bfe_contact_lab.py new file mode 100755 index 000000000..2df92421b --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_contact_lab.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints link to lab""" + +from invenio.messages import gettext_set_language + +def format(bfo, kb_name, kb_url): + """ + Prints the contact informations. + Translate using given knowledge base. + + @param kb_name a knowledge base use to translate the lab identifier + @param kb_url a knowledge base use to translate the lab identifier + """ + lab_identifiers = bfo.fields("909C0p") + out = [] + for lab in lab_identifiers: + lab_name = bfo.kb(kb_name, lab) + lab_url = bfo.kb(kb_url, lab) + if lab_url: + out.append('%s' % (lab_url, lab_name)) + else: + out.append('%s' % lab_name) + + # Add the TTO if we have a patent + is_tto = False + + external_ids = bfo.fields('035__a') + + for field in external_ids: + if 'TTO' in field: + is_tto = True + + if bfo.field('980__a') == 'PATENT' and is_tto: + out.append('Technology Transfer Office') + + return ''.join(['
  • %s
  • ' % elem for elem in out]) + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_defense.py b/modules/bibformat/lib/elements/bfe_defense.py new file mode 100644 index 000000000..4500b0a17 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_defense.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints Award information""" +from datetime import datetime +def format(bfo): + """ + Print ISBN. + + """ + output = '' + if bfo.field('920__a') and bfo.field('920__a').strip(): + output = bfo.field('920__a').strip() + return output \ No newline at end of file diff --git a/modules/bibformat/lib/elements/bfe_doctype.py b/modules/bibformat/lib/elements/bfe_doctype.py new file mode 100644 index 000000000..548d3e5ac --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_doctype.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints collection identifier""" + +from invenio.messages import gettext_set_language + +def format(bfo): + """ + Prints the collection identifier. + Translate using given knowledge base. + """ + _ = gettext_set_language(bfo.lang) + collection = bfo.field("980__a") + + if collection == 'ARTICLE': + out = _("Journal article") + elif collection == 'BOOK': + out = _("Book") + elif collection == 'CHAPTER': + out = _("Book Chapter") + elif collection == 'CONF': + out = _("Conference paper") + elif collection == 'LECTURE': + out = _("Lecture") + elif collection == 'REPORT': + out = _("Report") + elif collection == 'REVIEW': + out = _("Review") + elif collection =='PATENT': + out = _("Patent") + elif collection == 'PERSON': + out = _("Researcher's profile") + elif collection == 'POLY': + out = _("Teaching document") + elif collection == 'POSTER': + out = _("Poster") + elif collection == 'PROC': + out = _("Conference proceedings") + elif collection == 'STANDARD': + out = _("Standard") + elif collection == 'STUDENT': + out = _("Student project") + elif collection == 'TALK': + out = _("Presentation / Talk") + elif collection == 'THESIS': + out = _("Thesis") + elif collection == 'WORKING': + out = _("Working paper") + else: + out = _("Record") + return out diff --git a/modules/bibformat/lib/elements/bfe_edit_record.py b/modules/bibformat/lib/elements/bfe_edit_record.py index 498fad090..84f358dce 100644 --- a/modules/bibformat/lib/elements/bfe_edit_record.py +++ b/modules/bibformat/lib/elements/bfe_edit_record.py @@ -1,61 +1,176 @@ -# -*- coding: utf-8 -*- -## -## This file is part of Invenio. -## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. -## -## Invenio is free software; you can redistribute it and/or -## modify it under the terms of the GNU General Public License as -## published by the Free Software Foundation; either version 2 of the -## License, or (at your option) any later version. -## -## Invenio is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Invenio; if not, write to the Free Software Foundation, Inc., -## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -"""BibFormat element - Prints a link to BibEdit -""" -__revision__ = "$Id$" - -from invenio.urlutils import create_html_link from invenio.messages import gettext_set_language -from invenio.config import CFG_SITE_URL from invenio.access_control_engine import acc_authorize_action -from invenio.search_engine import guess_primary_collection_of_a_record +from invenio import webuser +from invenio.webuser import isGuestUser -def format_element(bfo, style): - """ - Prints a link to BibEdit, if authorization is granted +from invenio.bibformat_elements.bfe_brief_links import can_edit - @param style: the CSS style to be applied to the link. +def get_pending_informations(bfo): + """ + Parse value from Curator to get pending status, + trough jQuery in an AJAX way """ + query_url = "/curator/api/submission/recid/%s/pending_labs/" % bfo.recID + + script_wrapper = """""" + + script = """ + $(document).ready(function() + { + $.getJSON('%s', function(data) { + to_append = $('#record-container-%s'); + + var starting_div = '
    '; + var closing_div = '
    '; + + if (data['validate'].length > 0) + { + var validate_text = ''; + validate_text += 'Pending validation for
    '; + + $.each(data['validate'], function(index, url) { + validate_text += url + '
    '; + }); + + to_append.append(starting_div + validate_text + closing_div); + } + + if (data['import'].length > 0) + { + var import_text = ''; + import_text += 'Pending import for
    '; + + $.each(data['import'], function(index, url) { + import_text += url + '
    '; + }); + + to_append.append(starting_div + import_text + closing_div); + } + }); + }); + """ % (query_url, bfo.recID) + + return script_wrapper % script + +def get_ask_for_removal_form(bfo): _ = gettext_set_language(bfo.lang) + + text_content = {'query_url': "/curator/delete/ask_for_removal/", + 'field_required': _("This field is required"), + 'wait_while_sending': _("Please wait while your message is being sent"), + 'successful_sent': _("Your request has been successfully sent.") + } + + script = """ + + """ % text_content - out = "" + link = '''%s''' % ( _("Ask for removal")) + + content_string = {'title': _("Removal request"), + 'explanation': _("Please tell us the reason you want to remove it"), + 'recid': bfo.recID, + 'submit_button': _("Send request"), + 'cancel_button': _("Cancel") + } + + overlay = '''''' % content_string + return link + overlay + script + +def format(bfo, style): + """ + Prints a link to BibEdit, if authorization is granted + @param style the CSS style to be applied to the link. + """ + _ = gettext_set_language(bfo.lang) + out = [] + + if can_edit(bfo): + out.append('%s' % \ + (bfo.recID, bfo.lang, _("Edit this record"))) + user_info = bfo.user_info - collection = guess_primary_collection_of_a_record(bfo.recID) - (auth_code, auth_message) = acc_authorize_action(user_info, - 'runbibedit', - collection=collection) - if auth_code == 0: - linkattrd = {} - if style != '': - linkattrd['style'] = style - out += create_html_link(CFG_SITE_URL + - '/record/edit/?ln=%s#state=edit&recid=%s' % (bfo.lang, str(bfo.recID)), - {}, - link_label=_("Edit This Record"), - linkattrd=linkattrd) - - return out + # before verifing access, assert that the user has a remote_ip and this is not + # an internal call + remote_ip = user_info.get('remote_ip', '') + + if remote_ip: + (auth_code, auth_message) = acc_authorize_action(user_info, 'runbibedit') + if auth_code == 0: + out.append('%s' % \ + (str(bfo.recID), bfo.lang, _("Edit this record (BibEdit)"))) + + user_uid = user_info.get('uid') + if user_uid and not isGuestUser(user_uid): + out.append(get_ask_for_removal_form(bfo)) + + out = '  |  '.join(out) + + if remote_ip and auth_code == 0: + return out + get_pending_informations(bfo) + else: + return out + def escape_values(bfo): """ Called by BibFormat in order to check if output of this element should be escaped. """ return 0 diff --git a/modules/bibformat/lib/elements/bfe_editor.py b/modules/bibformat/lib/elements/bfe_editor.py new file mode 100644 index 000000000..a2273b16c --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_editor.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +## +## $Id: bfe_imprint.py,v 1.6 2007/02/14 18:32:17 tibor Exp $ +## +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## CDS Invenio is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. +"""BibFormat element - Prints editor information""" + +from invenio.messages import gettext_set_language + +def emphasize(text): + return '%s' % text + +def format(bfo, style_status='', style_text='', separator=', '): + """ + Print host (Order: Name of publisher, place of publication and date of publication). + + """ + output = [] + if bfo.field('260__b') and bfo.field('260__b').strip(): + output.append(bfo.field('260__b')) + if bfo.field('260__a') and bfo.field('260__a').strip(): + output.append(bfo.field('260__a')) +# if bfo.field('260__c') and bfo.field('260__c').strip(): +# output.append(bfo.field('260__c')) + return separator.join(output) + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 + diff --git a/modules/bibformat/lib/elements/bfe_editors.py b/modules/bibformat/lib/elements/bfe_editors.py index 64eff31a9..656b49c70 100644 --- a/modules/bibformat/lib/elements/bfe_editors.py +++ b/modules/bibformat/lib/elements/bfe_editors.py @@ -1,52 +1,64 @@ # -*- coding: utf-8 -*- ## -## This file is part of Invenio. -## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. +## $Id: bfe_editors.py,v 1.9 2007/02/14 18:32:17 tibor Exp $ ## -## Invenio is free software; you can redistribute it and/or +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## -## Invenio is distributed in the hope that it will be useful, but +## CDS Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. +## General Public License for more details. ## ## You should have received a copy of the GNU General Public License -## along with Invenio; if not, write to the Free Software Foundation, Inc., +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -"""BibFormat element - Prints editors +"""BibFormat element - Print publication info (field 773) """ -__revision__ = "$Id$" -def format_element(bfo, limit, separator=' ; ', extension='[...]', print_links="yes"): +def format(bfo, limit, separator=' ; ', extension='[...]', print_links="yes"): """ Prints the list of editors of a record. - - @param limit: the maximum number of editors to display - @param separator: the separator between editors. - @param extension: a text printed if more editors than 'limit' exist - @param print_links: if yes, print the editors as HTML link to their publications + + @param limit the maximum number of editors to display + @param separator the separator between editors. + @param extension a text printed if more editors than 'limit' exist + @param print_links if yes, print the editors as HTML link to their publications """ from urllib import quote from invenio.config import CFG_SITE_URL from invenio import bibrecord - - authors = bibrecord.record_get_field_instances(bfo.get_record(), '100') - + + authors = bibrecord.record_get_field_instances(bfo.get_record(), '700') editors = [bibrecord.field_get_subfield_values(author, 'a')[0] - for author in authors if len(bibrecord.field_get_subfield_values(author, "e")) > 0 and bibrecord.field_get_subfield_values(author, "e")[0]=="ed." ] - + for author in authors if \ + len(bibrecord.field_get_subfield_values(author, "e")) > 0 \ + and bibrecord.field_get_subfield_values(author, "e")[0]=="ed." + ] if print_links.lower() == "yes": editors = ['' + editor + '' - for editor in editors] + for editor in editors if editor.strip()] + + if len(editors) == 0: + beginning = '' + ending = '' + elif len(editors) == 1: + beginning = '' + ending = ' (ed.)' + else: + beginning = '' + ending = ' (eds.)' if limit.isdigit() and len(editors) > int(limit): - return separator.join(editors[:int(limit)]) + extension + return beginning + separator.join(editors[:int(limit)]) + extension + ending elif len(editors) > 0: - return separator.join(editors) + return beginning + separator.join(editors) + ending \ No newline at end of file diff --git a/modules/bibformat/lib/elements/bfe_epfl_fulltext.py b/modules/bibformat/lib/elements/bfe_epfl_fulltext.py new file mode 100644 index 000000000..7a59270f4 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_epfl_fulltext.py @@ -0,0 +1,303 @@ +# -*- coding: utf-8 -*- + +""" +BibFormat element - Prints links to fulltext +""" +from urlparse import urlparse +from os.path import basename +import urllib + +from invenio.bibdocfile import BibRecDocs, file_strip_ext +from invenio.messages import gettext_set_language +from invenio.config import CFG_SITE_URL +from invenio.access_control_engine import acc_authorize_action + + + +traditional = [ + (1024 ** 5, 'P'), + (1024 ** 4, 'T'), + (1024 ** 3, 'G'), + (1024 ** 2, 'M'), + (1024 ** 1, 'K'), + (1024 ** 0, 'B'), + ] + +alternative = [ + (1024 ** 5, ' PiB'), + (1024 ** 4, ' TiB'), + (1024 ** 3, ' GiB'), + (1024 ** 2, ' MiB'), + (1024 ** 1, ' KiB'), + (1024 ** 0, (' byte', ' bytes')), + ] + + +def size_to_string(bytes, system=alternative): + """Human-readable file size.""" + for factor, suffix in system: + if bytes >= factor: + break + amount = int(bytes/factor) + if isinstance(suffix, tuple): + singular, multiple = suffix + if amount == 1: + suffix = singular + else: + suffix = multiple + return str(amount) + suffix + +def test(): + params = {'fmt': 'order', + 'nr': 3906, + 'title': "Bose-Einstein condensation of microcavity polaritons", + 'year': 2007, + 'author': "Sarchi, Davide", + 'infoscience_id': 141282, + 'fulltext_name': 'EPFL_TH3906.pdf'} + return urllib.urlencode(params) + + +def thesis_link(bfo): + thesis_id = bfo.field('088__a') + thesis_title = bfo.field('245__a') + thesis_year = bfo.field('260__c') + thesis_author = bfo.field('700__a') + fulltext_name = 'n/a' + for url in bfo.fields("8564_u"): + (dummy, host, path, dummy, params, dummy) = urlparse(url) + filename = urllib.unquote(basename(path)) + if filename.startswith('EPFL_TH'): + fulltext_name = filename + break + + params = {'fmt': 'order', + 'nr': thesis_id, + 'title': thesis_title, + 'year': thesis_year, + 'author': thesis_author, + 'infoscience_id': bfo.recID,} + #'fulltext_name': fulltext_name} + + encoded = urllib.urlencode(params) + if bfo.lang == 'fr': + return "http://library.epfl.ch/theses/?%s" % encoded + else: + return "http://library.epfl.ch/en/theses/?%s" % encoded + +def get_files(bfo): + """ + Returns the files available for the given record. + Returned structure is a tuple (parsed_urls, old_versions, additionals): + + """ + _ = gettext_set_language(bfo.lang) + bibarchive = BibRecDocs(bfo.recID) + + main_documents = [] + additional_documents = [] + external_urls = [] + + user_info = bfo.user_info + + # before verifing access, assert that the user has a remote_ip and it is not + # an internal call + remote_ip = user_info.get('remote_ip', '') + is_thesis = bfo.field("980__a") == 'THESIS' and bfo.field("973__a") == 'EPFL' + is_published = bfo.field("973__s") == 'PUBLISHED' + + # Parse URLs + urls = bfo.fields("8564_") + for complete_url in urls: + if not complete_url.has_key('u'): + continue + + #remove icons + if complete_url.has_key('x') and complete_url['x'].lower() == 'icon': + continue + + url = complete_url['u'] + (dummy, host, path, dummy, params, dummy) = urlparse(url) + filename = urllib.unquote(basename(path)) + name = file_strip_ext(filename) + format = filename[len(name):] + if format.startswith('.'): + format = format[1:] + + if not url.startswith(CFG_SITE_URL) and not complete_url.get('i'): # Not a bibdoc? + descr = complete_url.get('z', 'URL') + external_urls.append((url, descr, format, 0)) + + else: # It's a bibdoc! + if complete_url.get('i') == 'EXTERNAL': + filename = complete_url.get('z') or basename(complete_url['u']) + if is_thesis and complete_url.get('x') == 'RESTRICTED': + if not complete_url.get('z'): + filename = _("Fulltext") + if not remote_ip: + # no real access + main_documents.append((thesis_link(bfo), filename, basename(complete_url['u']).split('.')[-1], 0)) + continue + + if acc_authorize_action(bfo.user_info, 'viewrestrdoc', status='RESTRICTED')[0] == 1: + # no real access + main_documents.append((thesis_link(bfo), filename, basename(complete_url['u']).split('.')[-1], 0)) + continue + + is_sar = 'SAR' in bfo.fields('909C0p') + if is_sar: + main_documents.append((url, _("Get the whole digitalized project"), '', 0)) + continue + + + main_documents.append((complete_url['u'], filename, + basename(complete_url['u']).split('.')[-1], 0)) + else: + # Internal + for doc in bibarchive.list_bibdocs(): + size = doc.get_total_size_latest_version() + descr = doc.get_description(format) + + if True in [f.fullname.startswith(filename) for f in doc.list_all_files()]: + if doc.status and doc.status.lower() == 'icon': + continue + restriction = doc.list_latest_files()[0].status + + #no ip = no access, only show the public files + if not remote_ip: + if restriction not in ('LAB', 'RESTRICTED', 'PRIVATE', 'DELETED'): + if doc.get_type().lower() == 'main' : + if not descr or descr.lower() == 'n/a': + descr = name + if is_thesis: + descr = _("Fulltext") + if not url in [m_url for (m_url, m_descr, m_format, m_size) in main_documents]: + main_documents.append((url, descr, format, size)) + else: + if not descr or descr.lower() == 'n/a': + descr = name + if not url in [m_url for (m_url, junk, junk, junk) in additional_documents]: + additional_documents.append((url, descr, format, size)) + continue + + #try: + if doc.list_latest_files()[0].is_restricted(bfo.user_info)[0] == 1: + continue + #except: + # restricted = 0 + + if doc.get_type().lower() == 'main' : + if not descr or descr.lower() == 'n/a': + descr = name + if is_thesis: + if restriction == 'RESTRICTED': + descr = _("EPFL intranet: Fulltext") + else: + descr = "Texte intégral / Full text" + if not url in [m_url for (m_url, m_descr, m_format, m_size) in main_documents]: + main_documents.append((url, descr, format, size)) + + else: + if not descr or descr.lower() == 'n/a': + descr = name + if is_thesis and restriction == 'RESTRICTED': + descr = _("EPFL intranet: %s") % descr + if not url in [m_url for (m_url, junk, junk, junk) in additional_documents]: + additional_documents.append((url, descr, format, size)) + if is_thesis and not main_documents and is_published: + main_documents.append((thesis_link(bfo), _("Order free pdf"), 'pdf', 0)) + return (main_documents, additional_documents, external_urls) + + +def format_element(bfo, style, display_fulltext="yes", display_url="no", display_replacement_text='yes'): + """ + This is the format for formatting fulltext links in the mini panel. + @param separator: the separator between urls. + @param style: CSS class of the link + @param show_icons: if 'yes', print icons for fulltexts + @param focus_on_main_file: if 'yes' and a doctype 'Main' is found, + prominently display this doctype. In that case other doctypes are + summarized with a link to the Files tab, named"Additional files". + """ + _ = gettext_set_language(bfo.lang) + out = """ +
      + %(fulltexts)s +
    """ + + # Retrieve files + (main_documents, additional_documents, external_documents) = get_files(bfo) + # Prepare style + if style != "": + style = 'class="%s"' % style + + tmpl = '
  • %(filename)s (%(format)s%(size)s)
  • ' + tmpl_external = '
  • %(description)s
  • ' + + formatted = [] + if display_fulltext.lower() == 'yes': + for (url, name, format, size) in main_documents: + if format.lower() == 'pdf': + class_name = 'pdf' + elif format.lower() in ['doc', 'docx']: + class_name = 'doc' + elif format.lower() in ['png', 'gif', 'jpg', 'jpeg', 'tif', 'tiff', 'bmp']: + class_name = 'jpg' + elif format.lower() in ['txt', 'text', 'ps']: + class_name = 'txt' + else: + class_name = 'file' + if format and size: + formatted.append(tmpl % {'url': url, 'filename': name, 'format': format, + 'size': size != 0 and ', ' + size_to_string(size) or '', + 'class_name': class_name }) + else: + formatted.append(tmpl_external % {'url': url, 'description': name, 'class_name': class_name }) + + + for (url, name, format, size) in additional_documents: + if format.lower() == 'pdf': + class_name = 'pdf' + elif format.lower() in ['doc', 'docx']: + class_name = 'doc' + elif format.lower() in ['png', 'gif', 'jpg', 'jpeg', 'tif', 'tiff', 'bmp']: + class_name = 'jpg' + elif format.lower() in ['txt', 'text', 'ps']: + class_name = 'txt' + else: + class_name = 'file' + if format and size: + formatted.append(tmpl % {'url': url, 'filename': name, 'format': format, + 'size': size != 0 and ', ' + size_to_string(size) or '', + 'class_name': class_name }) + else: + formatted.append(tmpl_external % {'url': url, 'description': name, 'class_name': class_name }) + + + doi = bfo.field('0247_a').strip() + if bfo.field("980__a") == 'THESIS' and bfo.field("973__a") == 'EPFL': + if bfo.field("973__s") != 'PUBLISHED': + formatted.append("
  • %s
  • " % _("Thesis submitted - Forthcoming publication")) + elif doi and doi.lower() != 'n/a': + formatted.append('
  • %s
  • ' % (doi, _("Official version"))) + + if display_url.lower() == 'yes': + for (url, description, format, size) in external_documents: + if url.strip(): + tmpl2 = '
  • %(description)s: %(url)s
  • ' + formatted.append(tmpl2 % {'url': url, 'description': description }) + + if not len(formatted) and display_replacement_text.lower() == 'yes': + formatted.append('
  • %s
  • ' % _("There is no available fulltext. Please contact the lab or the authors.")) + if not formatted: + return '' + return out % {'style': style, 'fulltexts': '\n '.join(formatted)} + + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_epfl_icon.py b/modules/bibformat/lib/elements/bfe_epfl_icon.py new file mode 100644 index 000000000..4e395959e --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_epfl_icon.py @@ -0,0 +1,43 @@ +""" +BibFormat element - Prints icon +""" + +import re +from cgi import escape + + +from invenio.messages import gettext_set_language + + +def format_element(bfo, style='record-illustration', link="no", link_class=""): + """ + display an icon using provided css class + @style: css class to appy + """ + _ = gettext_set_language(bfo.lang) + if link == "yes": + tmpl = """ + %(description)s""" + else: + tmpl = """ + %(description)s""" + out = '' + urls = bfo.fields("8564_") + for complete_url in urls: + if not complete_url.has_key('u'): + continue + url = complete_url['u'] + if not complete_url.has_key('x') or complete_url['x'].lower() != 'icon': + continue + description = complete_url.has_key('z') and complete_url['z'] or '' + out += tmpl % {'url': url, 'link_class': link_class, + 'style': style, 'description': description} + + return out + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_hidden.py b/modules/bibformat/lib/elements/bfe_hidden.py new file mode 100644 index 000000000..c8a89e747 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_hidden.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints hidden message""" + +from invenio.messages import gettext_set_language + +from invenio.bibformat_elements.bfe_brief_links import can_edit + +from invenio.bibformat_engine import format_with_format_template + +def format(bfo, logged_template='HD_EPFL_default.bft'): + """ + Prints the collection identifier. + Translate using given knowledge base. + """ + _ = gettext_set_language(bfo.lang) + if can_edit(bfo): + (out, errors) = format_with_format_template(logged_template, bfo) + return out + + return '' + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_host.py b/modules/bibformat/lib/elements/bfe_host.py new file mode 100644 index 000000000..15571dcf3 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_host.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints document host""" + +from invenio.messages import gettext_set_language + +def emphasize(text, css_class): + if css_class: + return '%s' % (css_class, text) + return text + +def format(bfo, separator=', ', hostname_class="", display_label="no", display_identifiers="no", label_with_span="no"): + """ + Print host (Order: Name of publisher, place of publication and date of publication). + """ + _ = gettext_set_language(bfo.lang) + output = [] + if bfo.field('773__p') and bfo.field('773__p').strip(): + journal_name = bfo.field('773__p').strip() + if display_identifiers == 'yes': + if bfo.field('773__x'): + # ISSN provided + issn = bfo.field('773__x') + journal_name = '%s (ISSN: %s)' % (journal_name, issn, issn) + if bfo.field('773__z'): + # ISBN provided + journal_name = '%s (ISBN: %s)' % (journal_name, bfo.field('773__z')) + + status = bfo.field('973__s') + if display_label == 'yes': + if status == 'SUBMITTED': + output.append('' + _("Submitted to") + ': ' + journal_name) + elif status == 'ACCEPTED': + output.append('' + _("Accepted in") + ': ' + journal_name) + else: + output.append('' + _("Published in") + ': ' + journal_name) + else: + if status == 'SUBMITTED': + output.append((_("Submitted to")).lower() + ' ' + journal_name) + elif status == 'ACCEPTED': + output.append((_("Accepted in")).lower() + ' ' + journal_name) + else: + output.append(emphasize("in " + bfo.field('773__p').strip(), hostname_class)) + + if bfo.field('773__v') and bfo.field('773__v').strip(): + output.append('vol. ' + bfo.field('773__v')) + + if bfo.field('773__n') and bfo.field('773__n').strip(): + output.append('num. ' + bfo.field('773__n')) + + if bfo.field('773__c') and bfo.field('773__c').strip(): + output.append('p. ' + bfo.field('773__c')) + + return separator.join(output) + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 + diff --git a/modules/bibformat/lib/elements/bfe_icon.py b/modules/bibformat/lib/elements/bfe_icon.py new file mode 100644 index 000000000..03d13cf1c --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_icon.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +## +## $Id: bfe_fulltext.py,v 1.11 2007/07/20 12:30:27 jerome Exp $ +## +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## CDS Invenio is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. +"""BibFormat element - Prints a links to fulltext +""" + +def format_element(bfo, style='record-illustration-enac'): + """ + display an icon using provided css class + @style: css class to appy + """ + img = """""" + + urls = bfo.fields("8564_") + + icons_urls = [] + + for complete_url in urls: + if not complete_url.has_key('u'): + continue + url = complete_url['u'] + if not complete_url.has_key('x') or complete_url['x'].lower() != 'icon': + continue + icons_urls.append(url) + + return '
    '.join([img % (url, style) for url in icons_urls]) + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_imprint.py b/modules/bibformat/lib/elements/bfe_imprint.py index b464cc4eb..3a33a6632 100644 --- a/modules/bibformat/lib/elements/bfe_imprint.py +++ b/modules/bibformat/lib/elements/bfe_imprint.py @@ -1,65 +1,34 @@ # -*- coding: utf-8 -*- -## -## This file is part of Invenio. -## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. -## -## Invenio is free software; you can redistribute it and/or -## modify it under the terms of the GNU General Public License as -## published by the Free Software Foundation; either version 2 of the -## License, or (at your option) any later version. -## -## Invenio is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Invenio; if not, write to the Free Software Foundation, Inc., -## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -"""BibFormat element - Prints document imprint -""" -__revision__ = "$Id$" +"""BibFormat element - Prints info about publisher""" -import time +from invenio.messages import gettext_set_language -def format_element(bfo, place_label, publisher_label, date_label, - separator=', ', date_format=""): + + +def format(bfo, separator=', ', hostname_class="", display_label="no", display_year="no", display_identifiers="no"): """ - Print imprint (Order: Name of publisher, place of publication and date of publication). - Parameter date_format allows to specify the string representation of the output. - The format string has the same behaviour as the strftime() function. -
    Eg: 1982-09-24 07:32:00
    -         "%d %B %Y"   -> 24 September 1982
    -         "%I:%M"      -> 07:32
    -    
    - @param separator: a separator between the elements of imprint - @param place_label: a label to print before the publication place value - @param publisher_label: a label to print before the publisher name - @param date_label: a a label to print before the publication date - @param date_format: date format - @see: place.py, publisher.py, date.py, reprints.py, pagination.py + Print host (Order: Name of publisher, place of publication and date of publication). """ - - place = bfo.field('260__a') + _ = gettext_set_language(bfo.lang) + output = '' + year = bfo.field('260__c') + if not year: + return output publisher = bfo.field('260__b') - date = bfo.field('260__c') - - out = "" - - if publisher != "sine nomine": - out += publisher_label + ' ' + publisher + separator - - if place != "sine loco": - out += place_label + ' ' + place + separator - - if len(date) > 0: - if date_format != '': - try: - date_time = time.strptime(date, "%Y-%m-%d") - out += date_label + " " + time.strftime(date_format, date_time) - except ValueError: - out += date_label + ' ' + date + if publisher: + place = bfo.field('260__a') + if place: + output = '%s: %s, %s' % (place, publisher, year) else: - out += date_label + ' ' + date + output = '%s, %s' % (publisher, year) + else: + output = '%s: %s' % (_("Publication date"), year) + return output + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 - return out diff --git a/modules/bibformat/lib/elements/bfe_isbn.py b/modules/bibformat/lib/elements/bfe_isbn.py index 2cad4c4e2..39e8a5688 100644 --- a/modules/bibformat/lib/elements/bfe_isbn.py +++ b/modules/bibformat/lib/elements/bfe_isbn.py @@ -1,40 +1,34 @@ # -*- coding: utf-8 -*- ## -## This file is part of Invenio. -## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. +## $Id: bfe_imprint.py,v 1.6 2007/02/14 18:32:17 tibor Exp $ ## -## Invenio is free software; you can redistribute it and/or +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## -## Invenio is distributed in the hope that it will be useful, but +## CDS Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. +## General Public License for more details. ## ## You should have received a copy of the GNU General Public License -## along with Invenio; if not, write to the Free Software Foundation, Inc., +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -"""BibFormat element - Print ISBN -""" +"""BibFormat element - Prints ISBN""" -__revision__ = "$Id$" -def format_element(bfo, separator=", "): - """ - Returns the ISBN of the record. +def format(bfo): """ - isbn_numbers = bfo.fields("020__a") - - return separator.join(isbn_numbers) + Print ISBN. -def escape_values(bfo): """ - Called by BibFormat in order to check if output of this element - should be escaped. - """ - return 0 - - + output = '' + if bfo.field('020__a') and bfo.field('020__a').strip(): + output = bfo.field('020__a').strip() + return output + diff --git a/modules/bibformat/lib/elements/bfe_meta.py b/modules/bibformat/lib/elements/bfe_meta.py new file mode 100644 index 000000000..12f3585c5 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_meta.py @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- +## +## This file is part of CDS Invenio. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 CERN. +## +## CDS Invenio is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## CDS Invenio is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with CDS Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. +"""BibFormat element - + +""" +__revision__ = "$Id$" + +from invenio.bibformat_utils import parse_tag +from invenio.htmlutils import create_html_tag +from invenio.bibindex_engine import get_field_tags + +def format_element(bfo, name, tag_name='', tag = '', respect_file_visiblity=False, author_only=True, escape=4): + """Prints a custom field in a way suitable to be used in HTML META + tags. In particular conforms to Google Scholar harvesting protocol as + defined http://scholar.google.com/intl/en/scholar/inclusion.html + + + @param tag_name: the name, from tag table, of the field to be exported + looks initially for names prefixed by "meta-" + then looks for exact name, then falls through to "tag" + @param tag: the MARC tag to be exported (only if not defined by tag_name) + @param name: name to be displayed in the meta headers, labelling this value + @param respect_file_visiblity: check the 8564_z if we are allowed to show a file + @param author_only: as google scholar, the author field is for authors only, + not editor nor director + """ + + # for files case, make different rule + if respect_file_visiblity: + values = [] + + files = bfo.fields('8564_') + + for file_dict in files: + # show only public + if file_dict.get('x'): + try: + if file_dict['x'] == 'PUBLIC': + values.append(file_dict['u']) + except KeyError: + continue + else: + tags = [] + if tag_name: + # First check for special meta named tags + tags = get_field_tags("meta-" + tag_name) + if not tags: + #then check for regular tags + tags = get_field_tags(tag_name) + if not tags and tag: + # fall back to explicit marc tag + tags = [tag] + if not tags: + return '' + + # load values to be printed + values = [] + + for marctag in tags: + ###################################### + # Special cases + if marctag == '700__a' and author_only: + # authors + # no editor or director + authors_info = bfo.fields('700',escape=escape) + for author_info in authors_info: + if not author_info.has_key('e'): + values.append(author_info['a']) + # doi + elif marctag == '0247_a': + # dont show anything that is not an doi + doi_infos = bfo.fields('0247_',escape=escape) + for doi_info in doi_infos: + if doi_info.has_key('2'): + if doi_info['2'] == 'doi': + values.append(doi_info['a']) + else: + values.append(doi_info['a']) + #### + else: + values.append(bfo.fields(marctag,escape=escape)) + + out = [] + for value in values: + if isinstance(value, list): + for val in value: + if isinstance(val, dict): + out.extend(val.values()) + else: + out.append(val) + elif isinstance(value, dict): + out.extend(value.values()) + else: + out.append(value) + + # out = dict(zip(out, len(out)*[''])).keys() + + # uniquify + noDupes = [] + [noDupes.append(i) for i in out if not noDupes.count(i)] + + return '\n'.join([create_html_tag('meta', name=name, content=value) for value in noDupes]) + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 diff --git a/modules/bibformat/lib/elements/bfe_note.py b/modules/bibformat/lib/elements/bfe_note.py new file mode 100644 index 000000000..b36eb3785 --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_note.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints note""" + + +def format(bfo): + """ + Print note. + + """ + output = '' + for note in bfo.fields('500__a'): + if note.strip(): + output += '

    %s

    ' % note.strip() + + return output + + +def escape_values(bfo): + """ + Called by BibFormat in order to check if output of this element + should be escaped. + """ + return 0 + + diff --git a/modules/bibformat/lib/elements/bfe_patent.py b/modules/bibformat/lib/elements/bfe_patent.py new file mode 100644 index 000000000..9cb8fde5e --- /dev/null +++ b/modules/bibformat/lib/elements/bfe_patent.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +"""BibFormat element - Prints Patent Number""" + +def format(bfo, short="no", add_link_to_epo=False): + """ + Print Patent information. + + """ + # it may a good idea to put an information like "published or granted" like : + # if b1: + # return "Granted/Published patent" + # if a1: + # return "Pending patent" + if short != "no": + patent_to_print = "" + patents = bfo.fields('013') + if patents: + # return only the latest + for patent in patents: + if patent.has_key('a'): + patent_to_print = patent['a'] + return patent_to_print + return + + url_to_espacenet = "http://worldwide.espacenet.com/searchResults?compact=false&PN=%s&ST=advanced&locale=en_EP&DB=EPODOC" + patents = bfo.fields('013') + + if bfo.lang != 'en': + patent_text = 'Numéro de brevet' + patents_text = 'Numéros de brevet' + else: + patent_text = 'Patent number' + patents_text = 'Patent numbers' + + template_output_patent_nr = '
  • %s:
      %s
  • ' + + output = [] + # get number with data linked + patents_nr = [] + patent_priority_dates = [] + outer_list = '
    """ % { + 'title': _("Infoscience, EPFL's scientific publications"), + + 'guidelines_url': ln == 'en' and 'http://polylex.epfl.ch/files/content/sites/polylex/files/recueil_pdf/ENG/3.3.2_principe_integrite_recherche_an.pdf' or + 'http://polylex.epfl.ch/files/content/sites/polylex/files/recueil_pdf/3.3.2_principe_integrite_recherche_fr.pdf', + 'guidelines_label': _("EPFL Directive for Research Integrity"), + + 'fns1_url': ln == 'en' and 'http://www.snf.ch/SiteCollectionDocuments/allg_reglement_valorisierung_e.pdf' or + 'http://www.snf.ch/SiteCollectionDocuments/dos_OA_Weisung_f.pdf', + 'fns1_label': _("SNSF regulations on information, valorisation and rights to research results"), + + + 'fns2_url': ln == 'en' and 'http://www.snf.ch/SiteCollectionDocuments/Dossiers/dos_OA_regelung_auf_einen_blick_e.pdf' or + 'http://www.snf.ch/SiteCollectionDocuments/Dossiers/dos_OA_regelung_auf_einen_blick_f.pdf', + 'fns2_label': _("Overview of SNSF Guidelines on Open Access"), + + + 'erc_url': 'http://erc.europa.eu/sites/default/files/press_release/files/open_access_policy_researchers_funded_ERC.pdf', + 'erc_label': _("Open Access Guidelines for researchers funded by the ERC"), + +} + body = """ + +
    +

    %(title)s

    +%(te_portalbox)s +%(searchfor)s +%(np_portalbox)s +

    %(instant_label)s

    +%(instantbrowse)s +%(ne_portalbox)s +
    +
    +%(right_col)s +
    +
    """ % \ + {'title': c.get_name(ln=ln), + 'te_portalbox': te_portalbox, + 'searchfor': searchfor, + 'np_portalbox': np_portalbox, + 'ne_portalbox': ne_portalbox, + 'right_col': right_col, + 'instantbrowse': instantbrowse, + 'instant_label': _('Latest additions'), + 'feed': self.build_rss_url({'c': collection, 'ln': ln}), + 'feed_label': 'RSS', + } + return body + + def tmpl_homepage(self, searchfor, ln): + """ + EPFL: infoscience's homepage + """ + from invenio.websearch_webcoll import Collection + research = Collection('Infoscience/Research') + resource = Collection('Infoscience/Resource') + + _ = gettext_set_language(ln) + try: + f = FancyURLopener().open('http://actu.epfl.ch/webservice?channel=79&lang=%s&template=4' % ln) + news_feed = f.read() + except: + news_feed = '' + + body = """ + +
    +

    %(title)s

    +%(searchfor)s + +%(news_feed)s + + +
    +%(right_col)s + """ + + return body % {'title': _("Search publications"), + 'searchfor': searchfor, + 'ln': ln, + 'research_label': _("Access to the %s scientific publications") % self.tmpl_nice_number_via_locale(research.nbrecs, ln), + 'resource_label': _("Access to the %s documentary resources") % self.tmpl_nice_number_via_locale(resource.nbrecs, ln), + 'news_feed': news_feed, + 'more_news_label': _('More news'), + 'right_col': self.tmpl_default_right_col(ln), + 'feed': self.build_rss_url({'c': 'Infoscience', 'ln': ln}), + 'feed_label': 'RSS', + } + + def tmpl_default_right_col(self, ln): + """EPFL => right column """ + _ = gettext_set_language(ln) + out = """ + +
    """ + return out % { + 'title': _("Infoscience, EPFL's scientific publications"), + + 'guidelines_url': ln == 'en' and 'http://polylex.epfl.ch/files/content/sites/polylex/files/recueil_pdf/ENG/3.3.2_principe_integrite_recherche_an.pdf' or + 'http://polylex.epfl.ch/files/content/sites/polylex/files/recueil_pdf/3.3.2_principe_integrite_recherche_fr.pdf', + 'guidelines_label': _("EPFL Directive for Research Integrity"), + + 'fns1_url': ln == 'en' and 'http://www.snf.ch/SiteCollectionDocuments/allg_reglement_valorisierung_e.pdf' or + 'http://www.snf.ch/SiteCollectionDocuments/dos_OA_Weisung_f.pdf', + 'fns1_label': _("SNSF regulations on information, valorisation and rights to research results"), + + + 'fns2_url': ln == 'en' and 'http://www.snf.ch/SiteCollectionDocuments/Dossiers/dos_OA_regelung_auf_einen_blick_e.pdf' or + 'http://www.snf.ch/SiteCollectionDocuments/Dossiers/dos_OA_regelung_auf_einen_blick_f.pdf', + 'fns2_label': _("Overview of SNSF Guidelines on Open Access"), + + + 'erc_url': 'http://erc.europa.eu/sites/default/files/press_release/files/open_access_policy_researchers_funded_ERC.pdf', + 'erc_label': _("Open Access Guidelines for researchers funded by the ERC"), + +} + + + + + def tmpl_portalbox(self, title, body): + """ + EPFL + Creates portalboxes based on the parameters + Parameters: + - 'title' *string* - The title of the box + - 'body' *string* - The HTML code for the body of the box + """ + out = """
    +

    %(title)s

    +

    %(body)s

    +
    """ % {'title' : title, 'body' : body} + + return out + + + def tmpl_advanced_search_box(self, ln, ext=None): + """ EPFL """ + _ = gettext_set_language(ln) + + if not ext: + ext = [] + # ext: ['collection:ARTICLE', 'review:REVIEWED'] + out = """ +

    %(filter_doctype_label)s

    +
      +
    • %(category_publications)s
      +
        +
      • +
      • +
      • +
      +
    • +
    • %(category_monographs)s
      +
        +
      • +
      • +
      • +
      • +
      +
    • +
    • %(category_presentations)s
      +
        +
      • +
      • +
      +
    • + +
    • %(category_patent)s
      +
        +
      • +
      • +
      +
    • +
    • %(category_reports)s
      +
        +
      • +
      • +
      +
    • +
    • %(category_teaching)s
      +
        +
      • +
      • +
      +
    • +
    +
    + +
      +
    • +

      %(filter_status_label)s

      +
        +
      • +
      • +
      • +
      • +
      +
    • +
    • +

      %(filter_affiliation_label)s

      +
        +
      • +
      +
    • +
    +
    +
      +
    • +

      %(filter_fulltext_label)s

      +
        +
      • +
      • +
      +
    • +
    +
    + """ + + return out % {'filter_doctype_label': _("Filter by document type"), + 'category_publications': _("Publications"), + 'ARTICLE': _("Journal Articles"), 'c_article': 'collection:ARTICLE' in ext and 'checked="checked"', + 'REVIEW': _("Reviews"), 'c_review': 'collection:REVIEW' in ext and 'checked="checked"', + 'CONF': _("Conference Papers"), 'c_conf': 'collection:CONF' in ext and 'checked="checked"', + + 'category_monographs': _("Monographs"), + 'BOOK': _("Books"), 'c_book': 'collection:BOOK' in ext and 'checked="checked"', + 'THESIS': _("Theses"), 'c_thesis': 'collection:THESIS' in ext and 'checked="checked"', + 'CHAPTER': _("Book Chapters"), 'c_chapter': 'collection:CHAPTER' in ext and 'checked="checked"', + 'PROC': _("Conference Proceedings"), 'c_proc': 'collection:PROC' in ext and 'checked="checked"', + + 'category_presentations': _("Presentations & Talks"), + 'POSTER': _("Posters"), 'c_poster': 'collection:POSTER' in ext and 'checked="checked"', + 'TALK': _("Presentations & Talks"), 'c_talk': 'collection:TALK' in ext and 'checked="checked"', + + 'category_patent': _("Standards & Patents"), + 'STANDARD': _("Standards"), 'c_standard': 'collection:STANDARD' in ext and 'checked="checked"', + 'PATENT': _("Patents"), 'c_patent': 'collection:PATENT' in ext and 'checked="checked"', + + 'category_reports': _("Reports"), + 'REPORT': _("Technical Reports"), 'c_report': 'collection:REPORT' in ext and 'checked="checked"', + 'WORKING': _("Working Papers"), 'c_working': 'collection:WORKING' in ext and 'checked="checked"', + + 'category_teaching': _("Lectures & teaching material"), + 'POLY': _("Teaching Documents"), 'c_poly': 'collection:POLY' in ext and 'checked="checked"', + 'STUDENT': _("Student Projects"), 'c_student': 'collection:STUDENT' in ext and 'checked="checked"', + + 'filter_status_label': _("Filter by publication status"), + 'REVIEWED': _("Peer-reviewed publications"), 'c_reviewed': 'review:REVIEWED' in ext and 'checked="checked"', + 'PUBLISHED': _("Published"), 'c_published': 'status:PUBLISHED' in ext and 'checked="checked"', + 'ACCEPTED': _("Accepted"), 'c_accepted': 'status:ACCEPTED' in ext and 'checked="checked"', + 'SUBMITTED': _("Submitted"), 'c_submitted': 'status:SUBMITTED' in ext and 'checked="checked"', + + 'filter_affiliation_label': _("Filter by origin"), + 'EPFL': _("Work produced at EPFL"), 'c_epfl': 'affiliation:EPFL' in ext and 'checked="checked"', + + 'filter_fulltext_label': _("Filter by fulltext availability"), + 'PUBLIC': _("Publicly available"), 'c_public': 'fulltext:PUBLIC' in ext and 'checked="checked"', + 'RESTRICTED': _("Restricted access"), 'c_restricted': 'fulltext:RESTRICTED' in ext and 'checked="checked"', + + + + + } + + + def tmpl_search_help(self, ln): + """ EPFL : print search tips """ + _ = gettext_set_language(ln) + help_section = """ +

    %(b_label)s

    +
      +
    • %(and)s
    • +
    • %(not)s
    • +
    • %(or)s
    • +
    +

    %(p_label)s

    +

    %(paren)s

    + %(link)s""" % { + 'b_label': _("Boolean operators"), + 'and': _("AND: vetterli AND wavelet (you can also use + char instead of AND)"), + 'not': _("NOT: vetterli NOT wavelet (you can also use - char instead of NOT)"), + 'or': _("OR: vetterli OR wavelet (you can also use | char instead of OR)"), + 'p_label': _("Parentheses"), + 'paren': _("You can also use parentheses in your queries to group boolean expressions together. Nested parentheses are also supported."), + 'link': _("Full documentation about searching"), + 'page': ln == 'en' and 'search' or 'rechercher', + } + + return help_section + + + def tmpl_searchfor_simple(self, ln, collection_id, collection_name, record_count, middle_option): + """ + EPFL + Produces simple *Search for* box for the current collection. + Parameters: + - 'ln' *string* - *str* The language to display + - 'collection_id' - *str* The collection id + - 'collection_name' - *str* The collection name in current language + - 'record_count' - *str* Number of records in this collection + - 'middle_option' *string* - HTML code for the options (any field, specific fields ...) + """ + # load the right message language + _ = gettext_set_language(ln) + argd = drop_default_urlargd({'ln': ln, 'cc': collection_id, 'sc': CFG_WEBSEARCH_SPLIT_BY_COLLECTION}, + self.search_results_default_urlargd) + + hidden_values = '' + for field, value in argd.items(): + hidden_values += self.tmpl_input_hidden(field, value) + asearchurl = self.build_search_interface_url(c=collection_id, + aas=max(CFG_WEBSEARCH_ENABLED_SEARCH_INTERFACES), + ln=ln) + + out = """ +
    + %(hidden_values)s +
    + %(search_within)s +
    +
    +
    + %(help_label)s +
    +%(help_section)s +
    +
    + + +
    """ + + return out % {'siteurl' : CFG_SITE_URL, + 'hidden_values': hidden_values, + 'search_within': middle_option, + 'asearch_url': asearchurl, + 'search_url': ln=='en' and 'search' or 'rechercher', + 'label': _("Search"), + 'help_label': _("Search Tips"), + 'advanced_label': _("Advanced Search"), + 'advanced_box': self.tmpl_advanced_search_box(ln), + 'help_section': self.tmpl_search_help(ln), + } + + + def tmpl_searchfor_advanced(self, + ln, # current language + collection_id, + collection_name, + record_count, + middle_option_1, middle_option_2, middle_option_3, + searchoptions, + sortoptions, + rankoptions, + displayoptions, + formatoptions + ): + """ + Produces advanced *Search for* box for the current collection. + Parameters: + - 'ln' *string* - The language to display + - 'middle_option_1' *string* - HTML code for the first row of options (any field, specific fields ...) + - 'middle_option_2' *string* - HTML code for the second row of options (any field, specific fields ...) + - 'middle_option_3' *string* - HTML code for the third row of options (any field, specific fields ...) + - 'searchoptions' *string* - HTML code for the search options + - 'sortoptions' *string* - HTML code for the sort options + - 'rankoptions' *string* - HTML code for the rank options + - 'displayoptions' *string* - HTML code for the display options + - 'formatoptions' *string* - HTML code for the format options + """ + # load the right message language + _ = gettext_set_language(ln) + + out = ''' + + ''' + argd = drop_default_urlargd({'ln': ln, 'aas': 1, 'cc': collection_id, 'sc': CFG_WEBSEARCH_SPLIT_BY_COLLECTION}, + self.search_results_default_urlargd) + + # Only add non-default hidden values + for field, value in argd.items(): + out += self.tmpl_input_hidden(field, value) + + + header = _("Search %s records for") % \ + self.tmpl_nbrecs_info(record_count, "", "") + header += ':' + ssearchurl = self.build_search_interface_url(c=collection_id, aas=min(CFG_WEBSEARCH_ENABLED_SEARCH_INTERFACES), ln=ln) + + out += ''' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' % {'ln' : ln, + 'sizepattern' : CFG_WEBSEARCH_ADVANCEDSEARCH_PATTERN_BOX_WIDTH, + 'langlink': ln != CFG_SITE_LANG and '?ln=' + ln or '', + 'siteurl' : CFG_SITE_URL, + 'ssearch' : create_html_link(ssearchurl, {}, _("Simple Search")), + 'header' : header, + + 'matchbox_m1' : self.tmpl_matchtype_box('m1', ln=ln), + 'middle_option_1' : middle_option_1, + 'andornot_op1' : self.tmpl_andornot_box('op1', ln=ln), + + 'matchbox_m2' : self.tmpl_matchtype_box('m2', ln=ln), + 'middle_option_2' : middle_option_2, + 'andornot_op2' : self.tmpl_andornot_box('op2', ln=ln), + + 'matchbox_m3' : self.tmpl_matchtype_box('m3', ln=ln), + 'middle_option_3' : middle_option_3, + + 'msg_search' : _("Search"), + 'msg_browse' : _("Browse"), + 'msg_search_tips' : _("Search Tips")} + + if (searchoptions): + out += """ + + + + + + + + + + + """ % { + 'searchheader' : _("Search options:"), + 'searchoptions' : searchoptions + } + + out += """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ % { + + 'added' : _("Added/modified since:"), + 'until' : _("until:"), + 'added_or_modified': self.tmpl_inputdatetype(ln=ln), + 'date_added' : self.tmpl_inputdate("d1", ln=ln), + 'date_until' : self.tmpl_inputdate("d2", ln=ln), + + 'msg_sort' : _("Sort by:"), + 'msg_display' : _("Display results:"), + 'msg_format' : _("Output format:"), + 'sortoptions' : sortoptions, + 'rankoptions' : rankoptions, + 'displayoptions' : displayoptions, + 'formatoptions' : formatoptions + } + return out + + def tmpl_narrowsearch(self, aas, ln, type, father, + has_grandchildren, sons, display_grandsons, + grandsons): + + """ + EPFL + Creates list of collection descendants of type *type* under title *title*. + If aas==1, then links to Advanced Search interfaces; otherwise Simple Search. + Suitable for 'Narrow search' and 'Focus on' boxes. + + Parameters: + - 'aas' *bool* - Should we display an advanced search box? + - 'ln' *string* - The language to display + - 'type' *string* - The type of the produced box (virtual collections or normal collections) + - 'father' *collection* - The current collection + - 'has_grandchildren' *bool* - If the current collection has grand children + - 'sons' *list* - The list of the sub-collections (first level) + - 'display_grandsons' *bool* - If the grand children collections should be displayed (2 level deep display) + - 'grandsons' *list* - The list of sub-collections (second level) + """ + _ = gettext_set_language(ln) + out = """ +
  • + %(label)s +
      +%(subcollections)s +
    +
  • """ + + if type == 'r': + label = _("Search specifically in") + elif type == 'v': + label = _("Focus on") + + son_accro_tmpl = """ +
  • + %(acronym)s %(name)s %(nb)s + %(grandchildren)s +
  • """ + grandson_accro_tmpl = """ +
  • + %(acronym)s %(name)s %(nb)s +
  • """ + son_tmpl = """ +
  • + %(name)s %(nb)s + %(grandchildren)s +
  • """ + grandson_tmpl = """ +
  • + %(name)s %(nb)s +
  • """ + subcollections = [] + for son_index, son in enumerate(sons): + try: + splitted_name = son.get_name(ln).split(' - ') + acronym = splitted_name[0] + name = ' - '.join(splitted_name[1:]) + tmpl = son_accro_tmpl + except ValueError: + acronym = '' + name = son.get_name(ln) + tmpl = son_tmpl + + grandchildren = '' + if has_grandchildren: + grandchildren = """ +
      +%s +
    """ + subsubcollections = [] + for grandson in grandsons[son_index]: + try: + splitted_name = grandson.get_name(ln).split(' - ') + subacronym = splitted_name[0] + subname = ' - '.join(splitted_name[1:]) + grand_tmpl = grandson_accro_tmpl + except ValueError: + (subacronym, subname) = ('', grandson.get_name(ln)) + grand_tmpl = grandson_tmpl + subsubcollections.append(grand_tmpl % {'url': self.build_search_interface_url(c=grandson.name, ln=ln, aas=aas), + 'acronym': subacronym, + 'name': subname, + 'nb': self.tmpl_nbrecs_info(grandson.nbrecs, ln=ln) }) + grandchildren %=''.join(subsubcollections) + + subcollections.append(tmpl % {'url': self.build_search_interface_url(c=son.name, ln=ln, aas=aas), + 'acronym': acronym, + 'name': name, + 'nb': self.tmpl_nbrecs_info(son.nbrecs, ln=ln), + 'grandchildren': grandchildren }) + + return out % {'label': label, + 'subcollections': '\n'.join(subcollections)} + + + def tmpl_instant_browse(self, aas, ln, recids, more_link = None): + """ + EPFL + Formats a list of records (given in the recids list) from the database. + Parameters: + - 'aas' *int* - Advanced Search interface or not (0 or 1) + - 'ln' *string* - The language to display + - 'recids' *list* - the list of records from the database + - 'more_link' *string* - the "More..." link for the record. If not given, will not be displayed + """ + # load the right message language + _ = gettext_set_language(ln) + body = """ +
      """ + for recid in recids: + body += """ +
    • +
      %(date)s
      +
      + + %(body)s +
      +
    • """ % { + 'recid': recid['id'], + 'date': recid['date'], + 'body': recid['body'] + } + body += """ +
    """ + if more_link: + body += '
    ' + \ + create_html_link(more_link, {}, '[>> %s]' % _("more")) + \ + '
    ' + return body + + + def tmpl_searchwithin_select(self, ln, fieldname, selected, values): + """ + EPFL + Produces 'search within' selection box for the current collection. + Parameters: + - 'ln' *string* - The language to display + - 'fieldname' *string* - the name of the select box produced + - 'selected' *string* - which of the values is selected + - 'values' *list* - the list of values in the select + """ + _ = gettext_set_language(ln) + out = """ + %s + + """ + tmpl = """ +
  • + + +
  • """ + + values = [{'value': '', 'text': _("Any field")}, + {'value': 'title', 'text': _("Title")}, + {'value': 'author', 'text': _("Author")}, + {'value': 'keyword', 'text': _("Keyword")}, + {'value': 'year', 'text': _("Year")}, + {'value': 'source', 'text': _("Source")}, + {'value': 'reportnumber', 'text': _("Report number")}, + {'value': 'doi', 'text': _("DOI")},] + lines = [] + s_label = _("Any field") + for pair in values: + lines.append(tmpl % {'fieldname': fieldname, 'value': pair['value'], + 'label': pair['text'], + 'checked': pair['value'] == selected and 'checked="checked"' or '', + 'checked_class': pair['value'] == selected and 'class="current"' or ''}) + if selected == pair['value']: + s_label = pair['text'] + + return out % (s_label, ''.join(lines)) + + + def tmpl_record_links(self, recid, ln, sf='', so='d', sp='', rm=''): + """ + EPFL + Displays the *More info* and *Find similar* links for a record + Parameters: + - 'ln' *string* - The language to display + - 'recid' *string* - the id of the displayed record + """ + return self.tmpl_print_record_brief_links(ln=ln, recID=recid, sf=sf, so=so, sp=sp, rm=rm, user_info=None) + + def tmpl_search_in_bibwords(self, p, f, ln, nearest_box): + """ + Displays the *Words like current ones* links for a search + + Parameters: + + - 'p' *string* - Current search words + + - 'f' *string* - the fields in which the search was done + + - 'nearest_box' *string* - the HTML code for the "nearest_terms" box - most probably from a create_nearest_terms_box call + """ + + # load the right message language + _ = gettext_set_language(ln) + out = '

    ' + if f: + out += _("Words nearest to %(x_word)s inside %(x_field)s in any collection are:") % {'x_word': '' + cgi.escape(p) + '', + 'x_field': '' + cgi.escape(f) + ''} + else: + out += _("Words nearest to %(x_word)s in any collection are:") % {'x_word': '' + cgi.escape(p) + ''} + out += '
    ' + nearest_box + '

    ' + return out + + def tmpl_nearest_term_box(self, p, ln, f, terminfo, intro): + """ + EPFL + Displays the *Nearest search terms* box + Parameters: + - 'p' *string* - Current search words + - 'f' *string* - a collection description (if the search has been completed in a collection) + - 'ln' *string* - The language to display + - 'terminfo': tuple (term, hits, argd) for each near term + - 'intro' *string* - the intro HTML to prefix the box with + """ + _ = gettext_set_language(ln) + out = """ +%s +
      +%s +
    + """ + tmpl = """ +
  • %(term)s (%(hits)s)
  • """ + + definitions = [] + for term, hits, argd in terminfo: + if hits: + hitsinfo = _("%s results") % str(hits) + else: + hitsinfo = _("%s results") % str(0) + term = cgi.escape(term) + if term == p: # print search word for orientation: + if hits > 0: + term = create_html_link(self.build_search_url(argd), {}, term) + else: + term = create_html_link(self.build_search_url(argd), {}, term) + definitions.append(tmpl % {'hits': hitsinfo, 'term': term}) + + return out % (intro, ''.join(definitions)) + + def tmpl_browse_pattern(self, f, fn, ln, browsed_phrases_in_colls, colls, rg): + """ + Displays the *Nearest search terms* box + + Parameters: + + - 'f' *string* - field (*not* i18nized) + + - 'fn' *string* - field name (i18nized) + + - 'ln' *string* - The language to display + + - 'browsed_phrases_in_colls' *array* - the phrases to display + + - 'colls' *array* - the list of collection parameters of the search (c's) + + - 'rg' *int* - the number of records + """ + + # load the right message language + _ = gettext_set_language(ln) + + out = """ + + + + + + + + """ % { + 'hits' : _("Hits"), + 'fn' : cgi.escape(fn) + } + + if len(browsed_phrases_in_colls) == 1: + # one hit only found: + phrase, nbhits = browsed_phrases_in_colls[0][0], browsed_phrases_in_colls[0][1] + + query = {'c': colls, + 'ln': ln, + 'p': '"%s"' % phrase.replace('"', '\\"'), + 'f': f, + 'rg' : rg} + + out += """ + + + + """ % {'nbhits': nbhits, + 'link': create_html_link(self.build_search_url(query), + {}, cgi.escape(phrase))} + + elif len(browsed_phrases_in_colls) > 1: + # first display what was found but the last one: + for phrase, nbhits in browsed_phrases_in_colls[:-1]: + query = {'c': colls, + 'ln': ln, + 'p': '"%s"' % phrase.replace('"', '\\"'), + 'f': f, + 'rg' : rg} + + out += """ + + + + """ % {'nbhits' : nbhits, + 'link': create_html_link(self.build_search_url(query), + {}, + cgi.escape(phrase))} + + # now display last hit as "previous term": + phrase, nbhits = browsed_phrases_in_colls[0] + query_previous = {'c': colls, + 'ln': ln, + 'p': '"%s"' % phrase.replace('"', '\\"'), + 'f': f, + 'rg' : rg} + + # now display last hit as "next term": + phrase, nbhits = browsed_phrases_in_colls[-1] + query_next = {'c': colls, + 'ln': ln, + 'p': '"%s"' % phrase.replace('"', '\\"'), + 'f': f, + 'rg' : rg} + + out += """ + + """ % {'link_previous': create_html_link(self.build_search_url(query_previous, action='browse'), {}, _("Previous")), + 'link_next': create_html_link(self.build_search_url(query_next, action='browse'), + {}, _("next")), + 'siteurl' : CFG_SITE_URL} + out += """ +
    + %(hits)s + +   + + %(fn)s +
    + %(nbhits)s + +   + + %(link)s +
    + %(nbhits)s + +   + + %(link)s +
    +   + + %(link_previous)s + + + %(link_next)s +
    """ + return out + + def tmpl_search_box(self, ln, aas, cc, cc_intl, ot, sp, + action, fieldslist, f1, f2, f3, m1, m2, m3, + p1, p2, p3, op1, op2, rm, p, f, coll_selects, + d1y, d2y, d1m, d2m, d1d, d2d, dt, sort_fields, + sf, so, ranks, sc, rg, formats, of, pl, jrec, ec, + show_colls=True, show_title=True, ext=None): + + """ + EPFL + Displays the *Nearest search terms* box + Parameters: + - 'ln' *string* - The language to display + - 'aas' *bool* - Should we display an advanced search box? -1 -> 1, from simpler to more advanced + - 'cc_intl' *string* - the i18nized current collection name, used for display + - 'cc' *string* - the internal current collection name + - 'ot', 'sp' *string* - hidden values + - 'action' *string* - the action demanded by the user + - 'fieldslist' *list* - the list of all fields available, for use in select within boxes in advanced search + - 'p, f, f1, f2, f3, m1, m2, m3, p1, p2, p3, op1, op2, op3, rm' *strings* - the search parameters + - 'coll_selects' *array* - a list of lists, each containing the collections selects to display + - 'd1y, d2y, d1m, d2m, d1d, d2d' *int* - the search between dates + - 'dt' *string* - the dates' types (creation dates, modification dates) + - 'sort_fields' *array* - the select information for the sort fields + - 'sf' *string* - the currently selected sort field + - 'so' *string* - the currently selected sort order ("a" or "d") + - 'ranks' *array* - ranking methods + - 'rm' *string* - selected ranking method + - 'sc' *string* - split by collection or not + - 'rg' *string* - selected results/page + - 'formats' *array* - available output formats + - 'of' *string* - the selected output format + - 'pl' *string* - `limit to' search pattern + - show_colls *bool* - propose coll selection box? + - show_title *bool* show cc_intl in page title? + """ + # load the right message language + _ = gettext_set_language(ln) + out = "" + + if aas == -1: + argd = drop_default_urlargd({ + 'ln': ln, 'aas': aas, + 'ot': ot, 'sp': sp, 'ec': ec, + }, self.search_results_default_urlargd) + else: + argd = drop_default_urlargd({ + 'cc': cc, 'ln': ln, 'aas': aas, + 'ot': ot, 'sp': sp, 'ec': ec, + }, self.search_results_default_urlargd) + + asearchurl = self.build_search_interface_url(c=cc, **argd) + + if show_title: + out += """ +

    %(ccname)s

    """ + else: + out += """ +

    %s

    """ % _("Search results") + + out += """ +
    + %(hidden_fields)s +
    +%(search_within)s +
    +
    +
    + %(help_label)s +
    +%(help_section)s +
    +
    + + +
    + """ + return out % {'ccname': cc_intl, + 'hidden_fields': ''.join([self.tmpl_input_hidden(field, value) for (field, value) in argd.items()]), + 'search_within': self.tmpl_searchwithin_select(ln=ln, fieldname='f', selected=f, values=[]), + 'advanced_class': aas == 1 and 'toggled-active' or '', + 'toggled': aas == 0 and 'style="display: none"' or '', + 'pattern': aas==0 and p or p1, + 'asearch_url': asearchurl, + 'label': _("Search"), + 'help_label': _("Search Tips"), + 'advanced_label': _("Advanced Search"), + 'advanced_box': self.tmpl_advanced_search_box(ln, ext), + 'help_section': self.tmpl_search_help(ln), + } + + if show_colls and aas > -1: + # display collections only if there is more than one + selects = '' + for sel in coll_selects: + selects += self.tmpl_select(fieldname='c', values=sel) + + out += """ + + + + + + + + + + + + + """ % { + 'leading' : leadingtext, + 'msg_coll' : _("collections"), + 'colls' : selects, + } + + ## thirdly, print search limits, if applicable: + if action != _("Browse") and pl: + out += """ + + + + + + + + + + + """ % { + 'limitto' : _("Limit to:"), + 'sizepattern' : CFG_WEBSEARCH_ADVANCEDSEARCH_PATTERN_BOX_WIDTH, + 'pl' : cgi.escape(pl, 1), + } + + ## fourthly, print from/until date boxen, if applicable: + if action == _("Browse") or (d1y==0 and d1m==0 and d1d==0 and d2y==0 and d2m==0 and d2d==0): + pass # do not need it + else: + cell_6_a = self.tmpl_inputdatetype(dt, ln) + self.tmpl_inputdate("d1", ln, d1y, d1m, d1d) + cell_6_b = self.tmpl_inputdate("d2", ln, d2y, d2m, d2d) + out += """ + + + + + + + + + + + + + """ % { + 'added' : _("Added/modified since:"), + 'until' : _("until:"), + 'added_or_modified': self.tmpl_inputdatetype(dt, ln), + 'date1' : self.tmpl_inputdate("d1", ln, d1y, d1m, d1d), + 'date2' : self.tmpl_inputdate("d2", ln, d2y, d2m, d2d), + } + + ## fifthly, print Display results box, including sort/rank, formats, etc: + if action != _("Browse") and aas > -1: + + rgs = [] + for i in [10, 25, 50, 100, 250, 500]: + if i <= CFG_WEBSEARCH_MAX_RECORDS_IN_GROUPS: + rgs.append({ 'value' : i, 'text' : "%d %s" % (i, _("results"))}) + # enrich sort fields list if we are sorting by some MARC tag: + sort_fields = self._add_mark_to_field(value=sf, fields=sort_fields, ln=ln) + # create sort by HTML box: + out += """ + + + + + + + + + + + + + + + """ % { + 'sort_by' : _("Sort by:"), + 'display_res' : _("Display results:"), + 'out_format' : _("Output format:"), + 'select_sf' : self.tmpl_select(fieldname = 'sf', values = sort_fields, selected = sf, css_class = 'address'), + 'select_so' : self.tmpl_select(fieldname = 'so', values = [{ + 'value' : 'a', + 'text' : _("asc.") + }, { + 'value' : 'd', + 'text' : _("desc.") + }], selected = so, css_class = 'address'), + 'select_rm' : self.tmpl_select(fieldname = 'rm', values = ranks, selected = rm, css_class = 'address'), + 'select_rg' : self.tmpl_select(fieldname = 'rg', values = rgs, selected = rg, css_class = 'address'), + 'select_sc' : self.tmpl_select(fieldname = 'sc', values = [{ + 'value' : 0, + 'text' : _("single list") + }, { + 'value' : 1, + 'text' : _("split by collection") + }], selected = sc, css_class = 'address'), + 'select_of' : self.tmpl_select( + fieldname = 'of', + selected = of, + values = self._add_mark_to_field(value=of, fields=formats, chars=3, ln=ln), + css_class = 'address'), + } + + ## last but not least, print end of search box: + out += """""" + return out + + + def tmpl_search_pagestart(self, user_info, rss_url='', ln=CFG_SITE_LANG) : + "EPFL page start for search page. Will display after the page header" + _ = gettext_set_language(ln) + rss_button = '' + basket_button = '' + + if rss_url: + rss_button = """ + """ % rss_url + + basket_modal = '' + if user_info and not int(user_info.get('guest', '1')): + uid = user_info.get('uid', -1) + import invenio.webbasket_dblayer as db + personal_basket_list = db.get_all_personal_basket_ids_and_names_by_topic_for_add_to_list(uid) + group_basket_list = db.get_all_group_basket_ids_and_names_by_group_for_add_to_list(uid) + from invenio.webbasket_templates_epfl import create_add_box_select_options + options = create_add_box_select_options('', '', personal_basket_list, group_basket_list, ln) + basket_modal = """ + """ % {'title': _("Add record to collection"), + 'choose_basket_label': _("Please choose a collection"), + 'create_label': _("or %(x_url_open)screate a new one%(x_url_close)s first") % {'x_url_open': '' % ln, 'x_url_close': ''}, + 'baskets_list': options, + 'mandatory_label': _("This field is required"), + 'submit_label': _("Add record"), + 'cancel_label': _("Cancel")} + + + out = """ + +
    +%(basket_modal)s""" + return out % {'rss': rss_button, 'basket_modal': basket_modal, + 'export_label': _('Export'), + 'export_web_label': _("Integrate these publications into my website")} + + def tmpl_search_pageend(self, ln) : + "EPFL page end for search page. Will display just before the page footer" + _ = gettext_set_language(ln) + out = """ +
    + """ + return out + + def tmpl_print_warning(self, msg, type, prologue, epilogue): + """ + EPFL + Prints warning message and flushes output. + Parameters: + - 'msg' *string* - The message string + - 'type' *string* - the warning type + - 'prologue' *string* - HTML code to display before the warning + - 'epilogue' *string* - HTML code to display after the warning + """ + out = """ +

    %s

    """ + if type: + msg = '%s: %s' % (type, msg) + return out % msg + + def tmpl_pagination(self, query_params, nb_recs, recs_per_page, jrec, ln): + """EPFL + """ + def get_link(page): + if not 'rg' in query_params: + return self.build_search_url(jrec= 1 + (page -1) * recs_per_page, rg=recs_per_page, **query_params) + return self.build_search_url(jrec= 1 + (page -1) * recs_per_page, **query_params) + + _ = gettext_set_language(ln) + + LEADING_PAGE_RANGE_DISPLAYED = TRAILING_PAGE_RANGE_DISPLAYED = 5 + LEADING_PAGE_RANGE = TRAILING_PAGE_RANGE = 4 + NUM_PAGES_OUTSIDE_RANGE = 2 + ADJACENT_PAGES = 2 + + in_leading_range = in_trailing_range = False + pages_outside_leading_range = pages_outside_trailing_range = range(0) + + total_nb_pages = int(math.ceil(float(nb_recs) / float(recs_per_page))) + current_page = (jrec / recs_per_page) + 1 + + if total_nb_pages <= LEADING_PAGE_RANGE_DISPLAYED: + in_leading_range = in_trailing_range = True + page_numbers = [n for n in range(1, total_nb_pages + 1)] + + elif current_page <= LEADING_PAGE_RANGE: + in_leading_range = True + page_numbers = [n for n in range(1, LEADING_PAGE_RANGE_DISPLAYED + 1) if n > 0 and n <= total_nb_pages] + pages_outside_leading_range = [n + total_nb_pages for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)] + pages_outside_leading_range.reverse() + + elif current_page > total_nb_pages - TRAILING_PAGE_RANGE: + in_trailing_range = True + page_numbers = [n for n in range(total_nb_pages - TRAILING_PAGE_RANGE_DISPLAYED + 1, total_nb_pages + 1) if n > 0 and n <= total_nb_pages] + pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)] + + else: + page_numbers = [n for n in range(current_page - ADJACENT_PAGES, current_page + ADJACENT_PAGES + 1) if n > 0 and n <= total_nb_pages] + pages_outside_leading_range = [n + total_nb_pages for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)] + pages_outside_leading_range.reverse() + pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)] + + page_tmpl = """ +
  • %s
  • """ + separator = """ +
  • ...
  • """ + + out = """ + +
    """ + return out + + + def tmpl_print_search_info(self, ln, middle_only, + collection, collection_name, collection_id, + aas, sf, so, rm, rg, nb_found, of, ot, p, f, f1, + f2, f3, m1, m2, m3, op1, op2, p1, p2, + p3, d1y, d1m, d1d, d2y, d2m, d2d, dt, + all_fieldcodes, cpu_time, pl_in_url, + jrec, sc, sp, ext): + + """ + EPFL + Prints stripe with the information on 'collection' and 'nb_found' results and CPU time. + Also, prints navigation links (beg/next/prev/end) inside the results set. + If middle_only is set to 1, it will only print the middle box information (beg/netx/prev/end/etc) links. + This is suitable for displaying navigation links at the bottom of the search results page. + + Parameters: + - 'ln' *string* - The language to display + - 'middle_only' *bool* - Only display parts of the interface + - 'collection' *string* - the collection name + - 'collection_name' *string* - the i18nized current collection name + - 'aas' *bool* - if we display the advanced search interface + - 'sf' *string* - the currently selected sort format + - 'so' *string* - the currently selected sort order ("a" or "d") + - 'rm' *string* - selected ranking method + - 'rg' *int* - selected results/page + - 'nb_found' *int* - number of results found + - 'of' *string* - the selected output format + - 'ot' *string* - hidden values + - 'p' *string* - Current search words + - 'f' *string* - the fields in which the search was done + - 'f1, f2, f3, m1, m2, m3, p1, p2, p3, op1, op2' *strings* - the search parameters + - 'jrec' *int* - number of first record on this page + - 'd1y, d2y, d1m, d2m, d1d, d2d' *int* - the search between dates + - 'dt' *string* the dates' type (creation date, modification date) + - 'all_fieldcodes' *array* - all the available fields + - 'cpu_time' *float* - the time of the query in seconds + """ + # load the right message language + _ = gettext_set_language(ln) + if p2: + p = p1 + p1 = '' + p2 = '' + op1 = '' + op2 = '' + aas = 1 + query = {'p': p, 'f': f, + 'cc': cgi.escape(collection), + 'sf': sf, 'so': so, + 'sp': sp, 'rm': rm, + 'of': of, 'ot': ot, + 'aas': aas, 'ln': ln, + 'p1': p1, 'p2': p2, 'p3': p3, + 'f1': f1, 'f2': f2, 'f3': f3, + 'm1': m1, 'm2': m2, 'm3': m3, + 'op1': op1, 'op2': op2, + 'sc': sc, + 'd1y': d1y, 'd1m': d1m, 'd1d': d1d, + 'd2y': d2y, 'd2m': d2m, 'd2d': d2d, + 'dt': dt, + 'ln': ln, 'ext': ext or [], 'rg': rg, + } + + + if middle_only: + + return self.tmpl_pagination(query_params=query, nb_recs=nb_found, + recs_per_page=rg, + jrec=jrec, ln=ln) + + sf_labels = {'': _("Creation date"), + 'title': _("Title"), + 'author': _("First author"), + 'reportnumber': _("Report number"), + 'year': _("Publication year")} + so_labels = {'a': _("Ascending"), + 'd': _("Descending")} + of_labels = {'hb': _("HTML brief"), + 'hr': _("HTML detailed"), + 'hm': _("HTML MARC21")} + out = """ +
    %(records_found_label)s
    + + """ + return out % {'records_found_label': _("%s records found") % self.tmpl_nice_number(nb_found, ln), + 'sort_label': _("Sort by"), + 'selected_sf': sf_labels.get(sf, sf) , + 'collection_id': collection_id, + 'sort_by_cd_url': self.build_search_url(query, sf=''), + 'sort_by_cd_label': sf_labels.get(''), + 'sort_by_year_url': self.build_search_url(query, sf='year'), + 'sort_by_year_label': sf_labels.get('year'), + 'sort_by_title_url': self.build_search_url(query, sf='title'), + 'sort_by_title_label': sf_labels.get('title'), + 'sort_by_author_url': self.build_search_url(query, sf='author'), + 'sort_by_author_label': sf_labels.get('author'), + 'selected_so': so_labels.get(so, so) , + 'sort_order_asc_url': self.build_search_url(query, so='a'), + 'sort_order_asc_label': so_labels.get('a'), + 'sort_order_desc_url': self.build_search_url(query, so='d'), + 'sort_order_desc_label': so_labels.get('d'), + 'selected_rg': rg, + 'results': _("results"), + 'nb_results_url': self.build_search_url(query), + 'selected_of': of_labels.get(of.lower(), of), + 'format_hb_url': self.build_search_url(query, of='hb'), + 'format_hb_label': of_labels.get('hb'), + 'format_hr_url': self.build_search_url(query, of='hr'), + 'format_hr_label': of_labels.get('hr'), + 'format_hm_url': self.build_search_url(query, of='hm'), + 'format_hm_label': of_labels.get('hm'), + } + + + def tmpl_record_format_htmlbrief_header(self, ln): + """EPFL + Returns the header of the search results list when output + is html brief. Note that this function is called for each collection + results when 'split by collection' is enabled. + + See also: tmpl_record_format_htmlbrief_footer, + tmpl_record_format_htmlbrief_body + + Parameters: + + - 'ln' *string* - The language to display + + """ + + # load the right message language + _ = gettext_set_language(ln) + out = """ +
      """ + return out + + def tmpl_record_format_htmlbrief_footer(self, ln, display_add_to_basket=True): + """EPFL + Returns the footer of the search results list when output + is html brief. Note that this function is called for each collection + results when 'split by collection' is enabled. + + See also: tmpl_record_format_htmlbrief_header(..), + tmpl_record_format_htmlbrief_body(..) + + Parameters: + + - 'ln' *string* - The language to display + - 'display_add_to_basket' *bool* - whether to display Add-to-basket button + """ + # load the right message language + _ = gettext_set_language(ln) + out = """ +
    + """ + return out + + def tmpl_record_format_htmlbrief_body(self, ln, recid, + row_number, relevance, + record, relevances_prologue, + relevances_epilogue, + display_add_to_basket=True): + """ + EPFL + Returns the html brief format of one record. Used in the + search results list for each record. + See also: tmpl_record_format_htmlbrief_header(..), + tmpl_record_format_htmlbrief_footer(..) + + Parameters: + - 'ln' *string* - The language to display + - 'row_number' *int* - The position of this record in the list + - 'recid' *int* - The recID + - 'relevance' *string* - The relevance of the record + - 'record' *string* - The formatted record + - 'relevances_prologue' *string* - HTML code to prepend the relevance indicator + - 'relevances_epilogue' *string* - HTML code to append to the relevance indicator (used mostly for formatting) + """ + # load the right message language + _ = gettext_set_language(ln) + tmpl = """ +
  • +
    + %(number)s. +
    +
    + + %(record)s +
    +
  • """ + + if False: # TODO: put this feature on when interface is ready to handle checkboxes... #display_add_to_basket: + tmpl = """ +
  • +
    +
    + %(number)s. +
    +
    + + %(record)s +
    +
  • """ + + return tmpl % {'recid': recid, + 'number': row_number, + 'record': record} + + + def tmpl_print_results_overview(self, ln, results_final_nb_total, cpu_time, results_final_nb, colls, ec, hosted_colls_potential_results_p=False): + """Prints results overview box with links to particular collections below. + + Parameters: + + - 'ln' *string* - The language to display + + - 'results_final_nb_total' *int* - The total number of hits for the query + + - 'colls' *array* - The collections with hits, in the format: + + - 'coll[code]' *string* - The code of the collection (canonical name) + + - 'coll[name]' *string* - The display name of the collection + + - 'results_final_nb' *array* - The number of hits, indexed by the collection codes: + + - 'cpu_time' *string* - The time the query took + + - 'url_args' *string* - The rest of the search query + + - 'ec' *array* - selected external collections + + - 'hosted_colls_potential_results_p' *boolean* - check if there are any hosted collections searches + that timed out during the pre-search + """ + + if len(colls) == 1 and not ec: + # if one collection only and no external collections, print nothing: + return "" + + # load the right message language + _ = gettext_set_language(ln) + + # first find total number of hits: + # if there were no hosted collections that timed out during the pre-search print out the exact number of records found + if not hosted_colls_potential_results_p: + out = """ + +
    %(founds)s
    """ % { + 'founds' : _("%(x_fmt_open)sResults overview:%(x_fmt_close)s Found %(x_nb_records)s records in %(x_nb_seconds)s seconds.") %\ + {'x_fmt_open': '', + 'x_fmt_close': '', + 'x_nb_records': '' + self.tmpl_nice_number(results_final_nb_total, ln) + '', + 'x_nb_seconds': '%.2f' % cpu_time} + } + # if there were (only) hosted_collections that timed out during the pre-search print out a fuzzier message + else: + if results_final_nb_total == 0: + out = """ + +
    %(founds)s
    """ % { + 'founds' : _("%(x_fmt_open)sResults overview%(x_fmt_close)s") %\ + {'x_fmt_open': '', + 'x_fmt_close': ''} + } + elif results_final_nb_total > 0: + out = """ + +
    %(founds)s
    """ % { + 'founds' : _("%(x_fmt_open)sResults overview:%(x_fmt_close)s Found at least %(x_nb_records)s records in %(x_nb_seconds)s seconds.") %\ + {'x_fmt_open': '', + 'x_fmt_close': '', + 'x_nb_records': '' + self.tmpl_nice_number(results_final_nb_total, ln) + '', + 'x_nb_seconds': '%.2f' % cpu_time} + } + # then print hits per collection: + for coll in colls: + if results_final_nb.has_key(coll['code']) and results_final_nb[coll['code']] > 0: + out += """ + %(coll_name)s, %(number)s
    """ % \ + {'coll' : coll['id'], + 'coll_name' : cgi.escape(coll['name']), + 'number' : _("%s records found") % \ + ('' + self.tmpl_nice_number(results_final_nb[coll['code']], ln) + '')} + # the following is used for hosted collections that have timed out, + # i.e. for which we don't know the exact number of results yet. + elif results_final_nb.has_key(coll['code']) and results_final_nb[coll['code']] == -963: + out += """ + %(coll_name)s
    """ % \ + {'coll' : coll['id'], + 'coll_name' : cgi.escape(coll['name']), + 'number' : _("%s records found") % \ + ('' + self.tmpl_nice_number(results_final_nb[coll['code']], ln) + '')} + out += "
    " + return out + + + def tmpl_print_searchresultbox(self, header, body): + """print a nicely formatted box for search results """ + #_ = gettext_set_language(ln) + + # first find total number of hits: + out = '
    '+header+'
    '+body+'
    ' + return out + + + def tmpl_search_no_boolean_hits(self, ln, nearestterms): + """No hits found, proposes alternative boolean queries + + Parameters: + + - 'ln' *string* - The language to display + + - 'nearestterms' *array* - Parts of the interface to display, in the format: + + - 'nearestterms[nbhits]' *int* - The resulting number of hits + + - 'nearestterms[url_args]' *string* - The search parameters + + - 'nearestterms[p]' *string* - The search terms + + """ + + # load the right message language + _ = gettext_set_language(ln) + + out = _("Boolean query returned no hits. Please combine your search terms differently.") + + out += '''
    ''' + for term, hits, argd in nearestterms: + out += '''\ + + + + + ''' % {'hits' : hits, + 'link': create_html_link(self.build_search_url(argd), + {}, cgi.escape(term), + {'class': "nearestterms"})} + out += """
    %(hits)s  + %(link)s +
    """ + return out + + def tmpl_similar_author_names(self, authors, ln): + """No hits found, proposes alternative boolean queries + + Parameters: + + - 'authors': a list of (name, hits) tuples + - 'ln' *string* - The language to display + """ + + # load the right message language + _ = gettext_set_language(ln) + + out = ''' + ''' % { + 'similar' : _("See also: similar author names") + } + for author, hits in authors: + out += '''\ + + + + ''' % {'link': create_html_link( + self.build_search_url(p=author, + f='author', + ln=ln), + {}, cgi.escape(author), {'class':"google"}), + 'nb' : hits} + + out += """
    %(similar)s
    %(nb)d%(link)s
    """ + + return out + + def tmpl_print_record_list_for_similarity_boxen(self, title, recID_score_list, ln=CFG_SITE_LANG): + """Print list of records in the "hs" (HTML Similarity) format for similarity boxes. + RECID_SCORE_LIST is a list of (recID1, score1), (recID2, score2), etc. + """ + + from invenio.search_engine import print_record, record_public_p + + recID_score_list_to_be_printed = [] + + # firstly find 5 first public records to print: + nb_records_to_be_printed = 0 + nb_records_seen = 0 + while nb_records_to_be_printed < 5 and nb_records_seen < len(recID_score_list) and nb_records_seen < 50: + # looking through first 50 records only, picking first 5 public ones + (recID, score) = recID_score_list[nb_records_seen] + nb_records_seen += 1 + if record_public_p(recID): + nb_records_to_be_printed += 1 + recID_score_list_to_be_printed.append([recID, score]) + + # secondly print them: + out = ''' + + + + +
    +
    %(title)s
    +
    + ''' % { 'title': cgi.escape(title) } + for recid, score in recID_score_list_to_be_printed: + out += ''' + ''' % { + 'score': score, + 'info' : print_record(recid, format="hs", ln=ln), + } + + out += """
    (%(score)s)  %(info)s
    """ + return out + + def tmpl_print_record_brief_links(self, ln, recID, sf='', so='d', sp='', rm='', user_info=None): + """ + EPFL + Displays links for brief record on-the-fly + Parameters: + - 'ln' *string* - The language to display + - 'recID' *int* - The record id + """ + # load the right message language + + _ = gettext_set_language(ln) + + links = [] + #links.append(create_html_link(self.build_search_url(p="recid:%d" % recID, rm="wrd", ln=ln), + # {}, _("Similar records"), + # {'class': "infoscience_link_similar"})) + if user_info and user_info.get('guest', '1') == '0': + links.append(create_html_link('/yourbaskets/add', {'recid': recID, 'ln': ln}, + _("Add to my collections"), {'class': "infoscience_link_basket modal-opener", 'rel': '#basket_modal'})) + out = '%s' + return out % ''.join(links) + + def tmpl_collection_not_found_page_body(self, colname, ln=CFG_SITE_LANG): + """ + Create page body for cases when unexisting collection was asked for. + """ + _ = gettext_set_language(ln) + out = """

    %(title)s

    +

    %(sorry)s

    +

    %(you_may_want)s

    + """ % { 'title': self.tmpl_collection_not_found_page_title(colname, ln), + 'sorry': _("Sorry, collection %s does not seem to exist.") % \ + ('' + cgi.escape(colname) + ''), + 'you_may_want': _("You may want to start browsing from %s.") % \ + ('' + \ + cgi.escape(CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME)) + '')} + return out + + def tmpl_alert_rss_teaser_box_for_query(self, id_query, ln, display_email_alert_part=True): + """ + EPFL + Propose teaser for setting up this query as alert or RSS feed. + + Parameters: + - 'id_query' *int* - ID of the query we make teaser for + - 'ln' *string* - The language to display + - 'display_email_alert_part' *bool* - whether to display email alert part + """ + return '' + + def tmpl_detailed_record_metadata(self, recID, ln, format, + content, + creationdate=None, + modificationdate=None): + """Returns the main detailed page of a record + Parameters: + - 'recID' *int* - The ID of the printed record + - 'ln' *string* - The language to display + - 'format' *string* - The format in used to print the record + - 'content' *string* - The main content of the page + - 'creationdate' *string* - The creation date of the printed record + - 'modificationdate' *string* - The last modification date of the printed record + """ + _ = gettext_set_language(ln) + ## unAPI identifier + out = '\n' % recID + out += content + + return out + + def tmpl_record_plots(self, recID, ln): + """ + Displays little tables containing the images and captions contained in the specified document. + + Parameters: + + - 'recID' *int* - The ID of the printed record + + - 'ln' *string* - The language to display + """ + from invenio.search_engine import get_record + from invenio.bibrecord import field_get_subfield_values + from invenio.bibrecord import record_get_field_instances + _ = gettext_set_language(ln) + + out = '' + + rec = get_record(recID) + flds = record_get_field_instances(rec, '856', '4') + + images = [] + + for fld in flds: + image = field_get_subfield_values(fld, 'u') + caption = field_get_subfield_values(fld, 'y') + + if type(image) == list and len(image) > 0: + image = image[0] + else: + continue + if type(caption) == list and len(caption) > 0: + caption = caption[0] + else: + continue + + if not image.endswith('.png'): + # huh? + continue + + if len(caption) >= 5: + images.append((int(caption[:5]), image, caption[5:])) + else: + # we don't have any idea of the order... just put it on + images.append(99999, image, caption) + + images = sorted(images, key=lambda x: x[0]) + + for (index, image, caption) in images: + # let's put everything in nice little subtables with the image + # next to the caption + out = out + '' +\ + '' +\ + '' +\ + '
    ' +\ + '' + caption + '
    ' + + out = out + '

    ' + + return out + + + def tmpl_detailed_record_statistics(self, recID, ln, + downloadsimilarity, + downloadhistory, viewsimilarity): + """Returns the statistics page of a record + + Parameters: + + - 'recID' *int* - The ID of the printed record + + - 'ln' *string* - The language to display + + - downloadsimilarity *string* - downloadsimilarity box + + - downloadhistory *string* - downloadhistory box + + - viewsimilarity *string* - viewsimilarity box + + """ + # load the right message language + _ = gettext_set_language(ln) + + out = '' + + if CFG_BIBRANK_SHOW_DOWNLOAD_STATS and downloadsimilarity is not None: + similar = self.tmpl_print_record_list_for_similarity_boxen ( + _("People who downloaded this document also downloaded:"), downloadsimilarity, ln) + + out = '' + out += ''' + + + ''' % { 'siteurl': CFG_SITE_URL, 'recid': recID, 'ln': ln, + 'similar': similar, 'more': _("more"), + 'graph': downloadsimilarity + } + + out += '
    %(graph)s
    %(similar)s
    ' + out += '
    ' + + if CFG_BIBRANK_SHOW_READING_STATS and viewsimilarity is not None: + out += self.tmpl_print_record_list_for_similarity_boxen ( + _("People who viewed this page also viewed:"), viewsimilarity, ln) + + if CFG_BIBRANK_SHOW_DOWNLOAD_GRAPHS and downloadhistory is not None: + out += downloadhistory + '
    ' + + return out + + + + def tmpl_author_information(self, req, pubs, authorname, num_downloads, aff_pubdict, + citedbylist, kwtuples, authors, vtuples, ln): + """Prints stuff about the author given as authorname. + 1. Author name + his/her institutes. Each institute I has a link + to papers where the auhtor has I as institute. + 2. Publications, number: link to search by author. + 3. Keywords + 4. Author collabs + 5. Publication venues like journals + The parameters are data structures needed to produce 1-6, as follows: + req - request + pubs - list of recids, probably the records that have the author as an author + authorname - evident + num_downloads - evident + aff_pubdict - a dictionary where keys are inst names and values lists of recordids + citedbylist - list of recs that cite pubs + kwtuples - keyword tuples like ('HIGGS BOSON',[3,4]) where 3 and 4 are recids + authors - a list of authors that have collaborated with authorname + """ + from invenio.search_engine import perform_request_search + _ = gettext_set_language(ln) + #make a authoraff string that looks like CERN (1), Caltech (2) etc + authoraff = "" + aff_pubdict_keys = aff_pubdict.keys() + aff_pubdict_keys.sort(lambda x, y: cmp(len(aff_pubdict[y]), len(aff_pubdict[x]))) + for a in aff_pubdict_keys: + recids = "+or+".join(map(str, aff_pubdict[a])) + print_a = a + if (print_a == ' '): + print_a = _("unknown") + if authoraff: + authoraff += '
    ' + authoraff += ""+print_a+' ('+str(len(aff_pubdict[a]))+")" + + #print a "general" banner about the author + req.write("

    " + authorname + "

    ") + + # print papers: + searchstr = create_html_link(self.build_search_url(p=authorname, + f='exactauthor'), + {}, "All papers ("+str(len(pubs))+")",) + line1 = "" + _("Papers:") + "" + line2 = searchstr + if CFG_BIBRANK_SHOW_DOWNLOAD_STATS and num_downloads: + line2 += " ("+_("downloaded")+" " + line2 += str(num_downloads)+" "+_("times")+")" + if CFG_INSPIRE_SITE: + CFG_COLLS = ['Book', + 'Conference', + 'Introductory', + 'Lectures', + 'Preprint', + 'Published', + 'Report', + 'Review', + 'Thesis'] + else: + CFG_COLLS = ['Article', + 'Book', + 'Preprint',] + collsd = {} + for coll in CFG_COLLS: + coll_num_papers = len(intbitset(pubs) & intbitset(perform_request_search(p="collection:"+coll))) + if coll_num_papers: + collsd[coll] = coll_num_papers + colls = collsd.keys() + colls.sort(lambda x, y: cmp(collsd[y], collsd[x])) # sort by number of papers + for coll in colls: + line2 += "
    " + create_html_link(self.build_search_url(p='exactauthor:"' + authorname + '" ' + \ + 'collection:' + coll), + {}, coll + " ("+str(collsd[coll])+")",) + banner = self.tmpl_print_searchresultbox(line1, line2) + + + req.write("") + + #print affiliations + line1 = "" + _("Affiliations:") + "" + line2 = authoraff + req.write("") + + # print frequent keywords: + keywstr = "" + if (kwtuples): + for (kw, freq) in kwtuples: + if keywstr: + keywstr += '
    ' + #create a link in author=x, keyword=y + searchstr = create_html_link(self.build_search_url( + p='exactauthor:"' + authorname + '" ' + + 'keyword:"' + kw + '"'), + {}, kw+" ("+str(freq)+")",) + keywstr = keywstr+" "+searchstr + else: keywstr += 'No Keywords found' + banner = self.tmpl_print_searchresultbox("" + _("Frequent keywords:") + "", keywstr) + req.write("") + + + # print frequent co-authors: + collabstr = "" + if (authors): + for c in authors: + c = c.strip() + if collabstr: + collabstr += '
    ' + #do not add this person him/herself in the list + cUP = c.upper() + authornameUP = authorname.upper() + if not cUP == authornameUP: + commpubs = intbitset(pubs) & intbitset(perform_request_search(p="exactauthor:\"%s\" exactauthor:\"%s\"" % (authorname, c))) + collabstr = collabstr + create_html_link(self.build_search_url(p='exactauthor:"' + authorname + '" exactauthor:"' + c + '"' ), + {}, c + " (" + str(len(commpubs)) + ")",) + else: collabstr += 'None' + banner = self.tmpl_print_searchresultbox("" + _("Frequent co-authors:") + "", collabstr) + req.write("
    ") + req.write(banner) + req.write(" ") + req.write(self.tmpl_print_searchresultbox(line1, line2)) + req.write("
    ") + req.write(banner) + req.write(" ") + req.write(banner) + req.write("
    ") + + # print frequently publishes in journals: + #if (vtuples): + # pubinfo = "" + # for t in vtuples: + # (journal, num) = t + # pubinfo += create_html_link(self.build_search_url(p='exactauthor:"' + authorname + '" ' + \ + # 'journal:"' + journal + '"'), + # {}, journal + " ("+str(num)+")
    ") + # banner = self.tmpl_print_searchresultbox("" + _("Frequently publishes in:") + "", pubinfo) + # req.write(banner) + + + + # print citations: + if len(citedbylist): + line1 = "" + _("Citations:") + "" + line2 = "" + req.write(self.tmpl_print_searchresultbox(line1, line2)) + # they will be printed after that + + diff --git a/modules/websearch/lib/websearch_webcoll.py b/modules/websearch/lib/websearch_webcoll.py index 988cc059f..020f35dbf 100644 --- a/modules/websearch/lib/websearch_webcoll.py +++ b/modules/websearch/lib/websearch_webcoll.py @@ -1,1106 +1,1111 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """Create Invenio collection cache.""" __revision__ = "$Id$" import calendar import copy import sys import cgi import re import os import string import time from invenio.config import \ CFG_CERN_SITE, \ CFG_WEBSEARCH_INSTANT_BROWSE, \ CFG_WEBSEARCH_NARROW_SEARCH_SHOW_GRANDSONS, \ CFG_WEBSEARCH_I18N_LATEST_ADDITIONS, \ CFG_CACHEDIR, \ CFG_SITE_LANG, \ CFG_SITE_NAME, \ CFG_SITE_LANGS, \ CFG_WEBSEARCH_ENABLED_SEARCH_INTERFACES, \ CFG_WEBSEARCH_DEFAULT_SEARCH_INTERFACE, \ CFG_WEBSEARCH_DEF_RECORDS_IN_GROUPS from invenio.messages import gettext_set_language, language_list_long from invenio.search_engine import HitSet, search_pattern_parenthesised, get_creation_date, get_field_i18nname, collection_restricted_p, sort_records from invenio.dbquery import run_sql, Error, get_table_update_time from invenio.bibrank_record_sorter import get_bibrank_methods from invenio.dateutils import convert_datestruct_to_dategui from invenio.bibformat import format_record from invenio.websearch_external_collections import \ external_collection_load_states, \ dico_collection_external_searches, \ external_collection_sort_engine_by_name from invenio.bibtask import task_init, task_get_option, task_set_option, \ write_message, task_has_option, task_update_progress, \ task_sleep_now_if_required import invenio.template websearch_templates = invenio.template.load('websearch') from invenio.websearch_external_collections_searcher import external_collections_dictionary from invenio.websearch_external_collections_config import CFG_EXTERNAL_COLLECTION_TIMEOUT from invenio.websearch_external_collections_config import CFG_HOSTED_COLLECTION_TIMEOUT_NBRECS ## global vars collection_house = {} # will hold collections we treat in this run of the program; a dict of {collname2, collobject1}, ... # cfg_cache_last_updated_timestamp_tolerance -- cache timestamp # tolerance (in seconds), to account for the fact that an admin might # accidentally happen to edit the collection definitions at exactly # the same second when some webcoll process was about to be started. # In order to be safe, let's put an exaggerated timestamp tolerance # value such as 20 seconds: cfg_cache_last_updated_timestamp_tolerance = 20 # cfg_cache_last_updated_timestamp_file -- location of the cache # timestamp file: cfg_cache_last_updated_timestamp_file = "%s/collections/last_updated" % CFG_CACHEDIR def get_collection(colname): """Return collection object from the collection house for given colname. If does not exist, then create it.""" if not collection_house.has_key(colname): colobject = Collection(colname) collection_house[colname] = colobject return collection_house[colname] ## auxiliary functions: def mymkdir(newdir, mode=0777): """works the way a good mkdir should :) - already exists, silently complete - regular file in the way, raise an exception - parent directory(ies) does not exist, make them as well """ if os.path.isdir(newdir): pass elif os.path.isfile(newdir): raise OSError("a file with the same name as the desired " \ "dir, '%s', already exists." % newdir) else: head, tail = os.path.split(newdir) if head and not os.path.isdir(head): mymkdir(head, mode) if tail: os.umask(022) os.mkdir(newdir, mode) def is_selected(var, fld): "Checks if the two are equal, and if yes, returns ' selected'. Useful for select boxes." if var == fld: return ' selected="selected"' else: return "" def get_field(recID, tag): "Gets list of field 'tag' for the record with 'recID' system number." out = [] digit = tag[0:2] bx = "bib%sx" % digit bibx = "bibrec_bib%sx" % digit query = "SELECT bx.value FROM %s AS bx, %s AS bibx WHERE bibx.id_bibrec='%s' AND bx.id=bibx.id_bibxxx AND bx.tag='%s'" \ % (bx, bibx, recID, tag) res = run_sql(query) for row in res: out.append(row[0]) return out def check_nbrecs_for_all_external_collections(): """Check if any of the external collections have changed their total number of records, aka nbrecs. Return True if any of the total numbers of records have changed and False if they're all the same.""" res = run_sql("SELECT name FROM collection WHERE dbquery LIKE 'hostedcollection:%';") for row in res: coll_name = row[0] if (get_collection(coll_name)).check_nbrecs_for_external_collection(): write_message("External collection %s found updated." % coll_name, verbose=6) return True write_message("All external collections are up to date.", verbose=6) return False class Collection: "Holds the information on collections (id,name,dbquery)." def __init__(self, name=""): "Creates collection instance by querying the DB configuration database about 'name'." self.calculate_reclist_run_already = 0 # to speed things up without much refactoring self.update_reclist_run_already = 0 # to speed things up without much refactoring self.reclist_with_nonpublic_subcolls = HitSet() # temporary counters for the number of records in hosted collections self.nbrecs_tmp = None # number of records in a hosted collection self.nbrecs_from_hosted_collections = 0 # total number of records from # descendant hosted collections if not name: self.name = CFG_SITE_NAME # by default we are working on the home page self.id = 1 self.dbquery = None self.nbrecs = None self.reclist = HitSet() else: self.name = name try: res = run_sql("""SELECT id,name,dbquery,nbrecs,reclist FROM collection WHERE name=%s""", (name,)) if res: self.id = res[0][0] self.name = res[0][1] self.dbquery = res[0][2] self.nbrecs = res[0][3] try: self.reclist = HitSet(res[0][4]) except: self.reclist = HitSet() else: # collection does not exist! self.id = None self.dbquery = None self.nbrecs = None self.reclist = HitSet() except Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) def get_example_search_queries(self): """Returns list of sample search queries for this collection. """ res = run_sql("""SELECT example.body FROM example LEFT JOIN collection_example on example.id=collection_example.id_example WHERE collection_example.id_collection=%s ORDER BY collection_example.score""", (self.id,)) return [query[0] for query in res] def get_name(self, ln=CFG_SITE_LANG, name_type="ln", prolog="", epilog="", prolog_suffix=" ", epilog_suffix=""): """Return nicely formatted collection name for language LN. The NAME_TYPE may be 'ln' (=long name), 'sn' (=short name), etc.""" out = prolog i18name = "" res = run_sql("SELECT value FROM collectionname WHERE id_collection=%s AND ln=%s AND type=%s", (self.id, ln, name_type)) try: i18name += res[0][0] except IndexError: pass if i18name: out += i18name else: out += self.name out += epilog return out def get_ancestors(self): "Returns list of ancestors of the current collection." ancestors = [] id_son = self.id while 1: query = "SELECT cc.id_dad,c.name FROM collection_collection AS cc, collection AS c "\ "WHERE cc.id_son=%d AND c.id=cc.id_dad" % int(id_son) res = run_sql(query, None, 1) if res: col_ancestor = get_collection(res[0][1]) # looking for loops if col_ancestor in ancestors: write_message("Loop found in collection %s" % self.name, stream=sys.stderr) raise OverflowError else: ancestors.append(col_ancestor) id_son = res[0][0] else: break ancestors.reverse() return ancestors def restricted_p(self): """Predicate to test if the collection is restricted or not. Return the contect of the `restrited' column of the collection table (typically Apache group). Otherwise return None if the collection is public.""" if collection_restricted_p(self.name): return 1 return None def get_sons(self, type='r'): "Returns list of direct sons of type 'type' for the current collection." sons = [] id_dad = self.id query = "SELECT cc.id_son,c.name FROM collection_collection AS cc, collection AS c "\ "WHERE cc.id_dad=%d AND cc.type='%s' AND c.id=cc.id_son ORDER BY score DESC, c.name ASC" % (int(id_dad), type) res = run_sql(query) for row in res: sons.append(get_collection(row[1])) return sons def get_descendants(self, type='r'): "Returns list of all descendants of type 'type' for the current collection." descendants = [] id_dad = self.id query = "SELECT cc.id_son,c.name FROM collection_collection AS cc, collection AS c "\ "WHERE cc.id_dad=%d AND cc.type='%s' AND c.id=cc.id_son ORDER BY score DESC" % (int(id_dad), type) res = run_sql(query) for row in res: col_desc = get_collection(row[1]) # looking for loops if col_desc in descendants: write_message("Loop found in collection %s" % self.name, stream=sys.stderr) raise OverflowError else: descendants.append(col_desc) descendants += col_desc.get_descendants() return descendants def write_cache_file(self, filename='', filebody=''): "Write a file inside collection cache." # open file: dirname = "%s/collections/%d" % (CFG_CACHEDIR, self.id) mymkdir(dirname) fullfilename = dirname + "/%s.html" % filename try: os.umask(022) f = open(fullfilename, "w") except IOError, v: try: (code, message) = v except: code = 0 message = v print "I/O Error: " + str(message) + " (" + str(code) + ")" sys.exit(1) # print user info: write_message("... creating %s" % fullfilename, verbose=6) sys.stdout.flush() # print page body: f.write(filebody) # close file: f.close() def update_webpage_cache(self): """Create collection page header, navtrail, body (including left and right stripes) and footer, and call write_cache_file() afterwards to update the collection webpage cache.""" ## precalculate latest additions for non-aggregate ## collections (the info is ln and as independent) - if self.dbquery and not CFG_WEBSEARCH_I18N_LATEST_ADDITIONS: + + # Infoscience modification + # removed self.dbquery + if not CFG_WEBSEARCH_I18N_LATEST_ADDITIONS: self.create_latest_additions_info() ## do this for each language: for lang, lang_fullname in language_list_long(): # but only if some concrete language was not chosen only: if lang in task_get_option("language", [lang]): - if self.dbquery and CFG_WEBSEARCH_I18N_LATEST_ADDITIONS: + # Infoscience modification + # removed self.dbquery + if CFG_WEBSEARCH_I18N_LATEST_ADDITIONS: self.create_latest_additions_info(ln=lang) # load the right message language _ = gettext_set_language(lang) ## first, update navtrail: for aas in CFG_WEBSEARCH_ENABLED_SEARCH_INTERFACES: self.write_cache_file("navtrail-as=%s-ln=%s" % (aas, lang), self.create_navtrail_links(aas, lang)) ## second, update page body: for aas in CFG_WEBSEARCH_ENABLED_SEARCH_INTERFACES: # do light, simple and advanced search pages: body = websearch_templates.tmpl_webcoll_body( ln=lang, collection=self.name, te_portalbox = self.create_portalbox(lang, 'te'), searchfor = self.create_searchfor(aas, lang), np_portalbox = self.create_portalbox(lang, 'np'), narrowsearch = self.create_narrowsearch(aas, lang, 'r'), focuson = self.create_narrowsearch(aas, lang, "v") + \ self.create_external_collections_box(lang), instantbrowse = self.create_instant_browse(aas=aas, ln=lang), ne_portalbox = self.create_portalbox(lang, 'ne') ) self.write_cache_file("body-as=%s-ln=%s" % (aas, lang), body) ## third, write portalboxes: self.write_cache_file("portalbox-tp-ln=%s" % lang, self.create_portalbox(lang, "tp")) self.write_cache_file("portalbox-te-ln=%s" % lang, self.create_portalbox(lang, "te")) self.write_cache_file("portalbox-lt-ln=%s" % lang, self.create_portalbox(lang, "lt")) self.write_cache_file("portalbox-rt-ln=%s" % lang, self.create_portalbox(lang, "rt")) ## fourth, write 'last updated' information: self.write_cache_file("last-updated-ln=%s" % lang, convert_datestruct_to_dategui(time.localtime(), ln=lang)) return def create_navtrail_links(self, aas=CFG_WEBSEARCH_DEFAULT_SEARCH_INTERFACE, ln=CFG_SITE_LANG): """Creates navigation trail links, i.e. links to collection ancestors (except Home collection). If aas==1, then links to Advanced Search interfaces; otherwise Simple Search. """ dads = [] for dad in self.get_ancestors(): if dad.name != CFG_SITE_NAME: # exclude Home collection dads.append((dad.name, dad.get_name(ln))) return websearch_templates.tmpl_navtrail_links( aas=aas, ln=ln, dads=dads) def create_portalbox(self, lang=CFG_SITE_LANG, position="rt"): """Creates portalboxes of language CFG_SITE_LANG of the position POSITION by consulting DB configuration database. The position may be: 'lt'='left top', 'rt'='right top', etc.""" out = "" query = "SELECT p.title,p.body FROM portalbox AS p, collection_portalbox AS cp "\ " WHERE cp.id_collection=%d AND p.id=cp.id_portalbox AND cp.ln='%s' AND cp.position='%s' "\ " ORDER BY cp.score DESC" % (self.id, lang, position) res = run_sql(query) for row in res: title, body = row[0], row[1] if title: out += websearch_templates.tmpl_portalbox(title = title, body = body) else: # no title specified, so print body ``as is'' only: out += body return out def create_narrowsearch(self, aas=CFG_WEBSEARCH_DEFAULT_SEARCH_INTERFACE, ln=CFG_SITE_LANG, type="r"): """Creates list of collection descendants of type 'type' under title 'title'. If aas==1, then links to Advanced Search interfaces; otherwise Simple Search. Suitable for 'Narrow search' and 'Focus on' boxes.""" # get list of sons and analyse it sons = self.get_sons(type) if not sons: return '' # get descendents descendants = self.get_descendants(type) grandsons = [] if CFG_WEBSEARCH_NARROW_SEARCH_SHOW_GRANDSONS: # load grandsons for each son for son in sons: grandsons.append(son.get_sons()) # return "" return websearch_templates.tmpl_narrowsearch( aas = aas, ln = ln, type = type, father = self, has_grandchildren = len(descendants)>len(sons), sons = sons, display_grandsons = CFG_WEBSEARCH_NARROW_SEARCH_SHOW_GRANDSONS, grandsons = grandsons ) def create_external_collections_box(self, ln=CFG_SITE_LANG): external_collection_load_states() if not dico_collection_external_searches.has_key(self.id): return "" engines_list = external_collection_sort_engine_by_name(dico_collection_external_searches[self.id]) return websearch_templates.tmpl_searchalso(ln, engines_list, self.id) def create_latest_additions_info(self, rg=CFG_WEBSEARCH_INSTANT_BROWSE, ln=CFG_SITE_LANG): """ Create info about latest additions that will be used for create_instant_browse() later. """ self.latest_additions_info = [] if self.nbrecs and self.reclist: # firstly, get last 'rg' records: recIDs = list(self.reclist) # CERN hack begins: tweak latest additions for selected collections: if CFG_CERN_SITE: # alter recIDs list for some CERN collections: this_year = time.strftime("%Y", time.localtime()) if self.name in ['CERN Yellow Reports','Videos']: last_year = str(int(this_year) - 1) # detect recIDs only from this and past year: recIDs = list(self.reclist & \ search_pattern_parenthesised(p='year:%s or year:%s' % \ (this_year, last_year))) elif self.name in ['VideosXXX']: # detect recIDs only from this year: recIDs = list(self.reclist & \ search_pattern_parenthesised(p='year:%s' % this_year)) elif self.name == 'CMS Physics Analysis Summaries' and \ 1281585 in self.reclist: # REALLY, REALLY temporary hack recIDs = list(self.reclist) recIDs.remove(1281585) # apply special filters: if self.name in ['Videos']: # select only videos with movies: from invenio.intbitset import intbitset recIDs = list(intbitset(recIDs) & \ search_pattern_parenthesised(p='collection:"PUBLVIDEOMOVIE"')) # sort some CERN collections specially: if self.name in ['Videos', 'Video Clips', 'Video Movies', 'Video News', 'Video Rushes', 'Webcast', 'ATLAS Videos', 'Restricted Video Movies', 'Restricted Video Rushes', 'LHC First Beam Videos', 'CERN openlab Videos']: recIDs = sort_records(None, recIDs, '269__c') # CERN hack ends. total = len(recIDs) to_display = min(rg, total) for idx in range(total-1, total-to_display-1, -1): recid = recIDs[idx] self.latest_additions_info.append({'id': recid, 'format': format_record(recid, "hb", ln=ln), 'date': get_creation_date(recid, fmt="%Y-%m-%d
    %H:%i")}) return def create_instant_browse(self, rg=CFG_WEBSEARCH_INSTANT_BROWSE, aas=CFG_WEBSEARCH_DEFAULT_SEARCH_INTERFACE, ln=CFG_SITE_LANG): "Searches database and produces list of last 'rg' records." if self.restricted_p(): return websearch_templates.tmpl_box_restricted_content(ln = ln) if str(self.dbquery).startswith("hostedcollection:"): return websearch_templates.tmpl_box_hosted_collection(ln = ln) if rg == 0: # do not show latest additions box return "" # CERN hack: do not display latest additions for some CERN collections: if CFG_CERN_SITE and self.name in ['Periodicals', 'Electronic Journals', 'Press Office Photo Selection', 'Press Office Video Selection']: return "" try: self.latest_additions_info latest_additions_info_p = True except: latest_additions_info_p = False if latest_additions_info_p: passIDs = [] for idx in range(0, min(len(self.latest_additions_info), rg)): passIDs.append({'id': self.latest_additions_info[idx]['id'], 'body': self.latest_additions_info[idx]['format'] + \ websearch_templates.tmpl_record_links(recid=self.latest_additions_info[idx]['id'], rm='citation', ln=ln), 'date': self.latest_additions_info[idx]['date']}) if self.nbrecs > rg: url = websearch_templates.build_search_url( cc=self.name, jrec=rg+1, ln=ln, aas=aas) else: url = "" return websearch_templates.tmpl_instant_browse( aas=aas, ln=ln, recids=passIDs, more_link=url) return websearch_templates.tmpl_box_no_records(ln=ln) def create_searchoptions(self): "Produces 'Search options' portal box." box = "" query = """SELECT DISTINCT(cff.id_field),f.code,f.name FROM collection_field_fieldvalue AS cff, field AS f WHERE cff.id_collection=%d AND cff.id_fieldvalue IS NOT NULL AND cff.id_field=f.id ORDER BY cff.score DESC""" % self.id res = run_sql(query) if res: for row in res: field_id = row[0] field_code = row[1] field_name = row[2] query_bis = """SELECT fv.value,fv.name FROM fieldvalue AS fv, collection_field_fieldvalue AS cff WHERE cff.id_collection=%d AND cff.type='seo' AND cff.id_field=%d AND fv.id=cff.id_fieldvalue ORDER BY cff.score_fieldvalue DESC, cff.score DESC, fv.name ASC""" % (self.id, field_id) res_bis = run_sql(query_bis) if res_bis: values = [{'value' : '', 'text' : 'any' + ' ' + field_name}] # FIXME: internationalisation of "any" for row_bis in res_bis: values.append({'value' : cgi.escape(row_bis[0], 1), 'text' : row_bis[1]}) box += websearch_templates.tmpl_select( fieldname = field_code, values = values ) return box def create_sortoptions(self, ln=CFG_SITE_LANG): """Produces 'Sort options' portal box.""" # load the right message language _ = gettext_set_language(ln) box = "" query = """SELECT f.code,f.name FROM field AS f, collection_field_fieldvalue AS cff WHERE id_collection=%d AND cff.type='soo' AND cff.id_field=f.id ORDER BY cff.score DESC, f.name ASC""" % self.id values = [{'value' : '', 'text': "- %s -" % _("latest first")}] res = run_sql(query) if res: for row in res: values.append({'value' : row[0], 'text': row[1]}) else: for tmp in ('title', 'author', 'report number', 'year'): values.append({'value' : tmp.replace(' ', ''), 'text' : get_field_i18nname(tmp, ln)}) box = websearch_templates.tmpl_select( fieldname = 'sf', css_class = 'address', values = values ) box += websearch_templates.tmpl_select( fieldname = 'so', css_class = 'address', values = [ {'value' : 'a' , 'text' : _("asc.")}, {'value' : 'd' , 'text' : _("desc.")} ] ) return box def create_rankoptions(self, ln=CFG_SITE_LANG): "Produces 'Rank options' portal box." # load the right message language _ = gettext_set_language(ln) values = [{'value' : '', 'text': "- %s %s -" % (string.lower(_("OR")), _("rank by"))}] for (code, name) in get_bibrank_methods(self.id, ln): values.append({'value' : code, 'text': name}) box = websearch_templates.tmpl_select( fieldname = 'rm', css_class = 'address', values = values ) return box def create_displayoptions(self, ln=CFG_SITE_LANG): "Produces 'Display options' portal box." # load the right message language _ = gettext_set_language(ln) values = [] for i in ['10', '25', '50', '100', '250', '500']: values.append({'value' : i, 'text' : i + ' ' + _("results")}) box = websearch_templates.tmpl_select( fieldname = 'rg', selected = str(CFG_WEBSEARCH_DEF_RECORDS_IN_GROUPS), css_class = 'address', values = values ) if self.get_sons(): box += websearch_templates.tmpl_select( fieldname = 'sc', css_class = 'address', values = [ {'value' : '1' , 'text' : _("split by collection")}, {'value' : '0' , 'text' : _("single list")} ] ) return box def create_formatoptions(self, ln=CFG_SITE_LANG): "Produces 'Output format options' portal box." # load the right message language _ = gettext_set_language(ln) box = "" values = [] query = """SELECT f.code,f.name FROM format AS f, collection_format AS cf WHERE cf.id_collection=%d AND cf.id_format=f.id AND f.visibility='1' ORDER BY cf.score DESC, f.name ASC""" % self.id res = run_sql(query) if res: for row in res: values.append({'value' : row[0], 'text': row[1]}) else: values.append({'value' : 'hb', 'text' : "HTML %s" % _("brief")}) box = websearch_templates.tmpl_select( fieldname = 'of', css_class = 'address', values = values ) return box def create_searchwithin_selection_box(self, fieldname='f', value='', ln='en'): """Produces 'search within' selection box for the current collection.""" # get values query = """SELECT f.code,f.name FROM field AS f, collection_field_fieldvalue AS cff WHERE cff.type='sew' AND cff.id_collection=%d AND cff.id_field=f.id ORDER BY cff.score DESC, f.name ASC""" % self.id res = run_sql(query) values = [{'value' : '', 'text' : get_field_i18nname("any field", ln)}] if res: for row in res: values.append({'value' : row[0], 'text' : get_field_i18nname(row[1], ln)}) else: if CFG_CERN_SITE: for tmp in ['title', 'author', 'abstract', 'report number', 'year']: values.append({'value' : tmp.replace(' ', ''), 'text' : get_field_i18nname(tmp, ln)}) else: for tmp in ['title', 'author', 'abstract', 'keyword', 'report number', 'journal', 'year', 'fulltext', 'reference']: values.append({'value' : tmp.replace(' ', ''), 'text' : get_field_i18nname(tmp, ln)}) return websearch_templates.tmpl_searchwithin_select( fieldname = fieldname, ln = ln, selected = value, values = values ) def create_searchexample(self): "Produces search example(s) for the current collection." out = "$collSearchExamples = getSearchExample(%d, $se);" % self.id return out def create_searchfor(self, aas=CFG_WEBSEARCH_DEFAULT_SEARCH_INTERFACE, ln=CFG_SITE_LANG): "Produces either Simple or Advanced 'Search for' box for the current collection." if aas == 1: return self.create_searchfor_advanced(ln) elif aas == 0: return self.create_searchfor_simple(ln) else: return self.create_searchfor_light(ln) def create_searchfor_light(self, ln=CFG_SITE_LANG): "Produces light 'Search for' box for the current collection." return websearch_templates.tmpl_searchfor_light( ln=ln, collection_id = self.name, collection_name=self.get_name(ln=ln), record_count=self.nbrecs, example_search_queries=self.get_example_search_queries(), ) def create_searchfor_simple(self, ln=CFG_SITE_LANG): "Produces simple 'Search for' box for the current collection." return websearch_templates.tmpl_searchfor_simple( ln=ln, collection_id = self.name, collection_name=self.get_name(ln=ln), record_count=self.nbrecs, middle_option = self.create_searchwithin_selection_box(ln=ln), ) def create_searchfor_advanced(self, ln=CFG_SITE_LANG): "Produces advanced 'Search for' box for the current collection." return websearch_templates.tmpl_searchfor_advanced( ln = ln, collection_id = self.name, collection_name=self.get_name(ln=ln), record_count=self.nbrecs, middle_option_1 = self.create_searchwithin_selection_box('f1', ln=ln), middle_option_2 = self.create_searchwithin_selection_box('f2', ln=ln), middle_option_3 = self.create_searchwithin_selection_box('f3', ln=ln), searchoptions = self.create_searchoptions(), sortoptions = self.create_sortoptions(ln), rankoptions = self.create_rankoptions(ln), displayoptions = self.create_displayoptions(ln), formatoptions = self.create_formatoptions(ln) ) def calculate_reclist(self): """ Calculate, set and return the (reclist, reclist_with_nonpublic_subcolls, nbrecs_from_hosted_collections) tuple for the given collection.""" if str(self.dbquery).startswith("hostedcollection:"): # we don't normally use this function to calculate the reclist # for hosted collections. In case we do, recursively for a regular # ancestor collection, then quickly return the object attributes. return (self.reclist, self.reclist_with_nonpublic_subcolls, self.nbrecs) if self.calculate_reclist_run_already: # do we really have to recalculate? If not, # then return the object attributes return (self.reclist, self.reclist_with_nonpublic_subcolls, self.nbrecs_from_hosted_collections) write_message("... calculating reclist of %s" % self.name, verbose=6) reclist = HitSet() # will hold results for public sons only; good for storing into DB reclist_with_nonpublic_subcolls = HitSet() # will hold results for both public and nonpublic sons; good for deducing total # number of documents nbrecs_from_hosted_collections = 0 # will hold the total number of records from descendant hosted collections if not self.dbquery: # A - collection does not have dbquery, so query recursively all its sons # that are either non-restricted or that have the same restriction rules for coll in self.get_sons(): coll_reclist,\ coll_reclist_with_nonpublic_subcolls,\ coll_nbrecs_from_hosted_collection = coll.calculate_reclist() if ((coll.restricted_p() is None) or (coll.restricted_p() == self.restricted_p())): # add this reclist ``for real'' only if it is public reclist.union_update(coll_reclist) reclist_with_nonpublic_subcolls.union_update(coll_reclist_with_nonpublic_subcolls) # increment the total number of records from descendant hosted collections nbrecs_from_hosted_collections += coll_nbrecs_from_hosted_collection else: # B - collection does have dbquery, so compute it: # (note: explicitly remove DELETED records) if CFG_CERN_SITE: reclist = search_pattern_parenthesised(None, self.dbquery + \ ' -980__:"DELETED" -980__:"DUMMY"', ap=-9) #ap=-9 for allow queries containing hidden tags else: reclist = search_pattern_parenthesised(None, self.dbquery + ' -980__:"DELETED"', ap=-9) #ap=-9 allow queries containing hidden tags reclist_with_nonpublic_subcolls = copy.deepcopy(reclist) # store the results: self.nbrecs_from_hosted_collections = nbrecs_from_hosted_collections self.nbrecs = len(reclist_with_nonpublic_subcolls) + \ nbrecs_from_hosted_collections self.reclist = reclist self.reclist_with_nonpublic_subcolls = reclist_with_nonpublic_subcolls # last but not least, update the speed-up flag: self.calculate_reclist_run_already = 1 # return the two sets, as well as # the total number of records from descendant hosted collections: return (self.reclist, self.reclist_with_nonpublic_subcolls, self.nbrecs_from_hosted_collections) def calculate_nbrecs_for_external_collection(self, timeout=CFG_EXTERNAL_COLLECTION_TIMEOUT): """Calculate the total number of records, aka nbrecs, for given external collection.""" #if self.calculate_reclist_run_already: # do we have to recalculate? #return self.nbrecs #write_message("... calculating nbrecs of external collection %s" % self.name, verbose=6) if external_collections_dictionary.has_key(self.name): engine = external_collections_dictionary[self.name] if engine.parser: self.nbrecs_tmp = engine.parser.parse_nbrecs(timeout) if self.nbrecs_tmp >= 0: return self.nbrecs_tmp # the parse_nbrecs() function returns negative values for some specific cases # maybe we can handle these specific cases, some warnings or something # for now the total number of records remains silently the same else: return self.nbrecs else: write_message("External collection %s does not have a parser!" % self.name, verbose=6) else: write_message("External collection %s not found!" % self.name, verbose=6) return 0 # last but not least, update the speed-up flag: #self.calculate_reclist_run_already = 1 def check_nbrecs_for_external_collection(self): """Check if the external collections has changed its total number of records, aka nbrecs. Rerurns True if the total number of records has changed and False if it's the same""" write_message("*** self.nbrecs = %s / self.cal...ion = %s ***" % (str(self.nbrecs), str(self.calculate_nbrecs_for_external_collection())), verbose=6) write_message("*** self.nbrecs != self.cal...ion = %s ***" % (str(self.nbrecs != self.calculate_nbrecs_for_external_collection()),), verbose=6) return self.nbrecs != self.calculate_nbrecs_for_external_collection(CFG_HOSTED_COLLECTION_TIMEOUT_NBRECS) def set_nbrecs_for_external_collection(self): """Set this external collection's total number of records, aka nbrecs""" if self.calculate_reclist_run_already: # do we have to recalculate? return write_message("... calculating nbrecs of external collection %s" % self.name, verbose=6) if self.nbrecs_tmp: self.nbrecs = self.nbrecs_tmp else: self.nbrecs = self.calculate_nbrecs_for_external_collection(CFG_HOSTED_COLLECTION_TIMEOUT_NBRECS) # last but not least, update the speed-up flag: self.calculate_reclist_run_already = 1 def update_reclist(self): "Update the record universe for given collection; nbrecs, reclist of the collection table." if self.update_reclist_run_already: # do we have to reupdate? return 0 write_message("... updating reclist of %s (%s recs)" % (self.name, self.nbrecs), verbose=6) sys.stdout.flush() try: run_sql("UPDATE collection SET nbrecs=%s, reclist=%s WHERE id=%s", (self.nbrecs, self.reclist.fastdump(), self.id)) self.reclist_updated_since_start = 1 except Error, e: print "Database Query Error %d: %s." % (e.args[0], e.args[1]) sys.exit(1) # last but not least, update the speed-up flag: self.update_reclist_run_already = 1 return 0 def get_datetime(var, format_string="%Y-%m-%d %H:%M:%S"): """Returns a date string according to the format string. It can handle normal date strings and shifts with respect to now.""" date = time.time() shift_re = re.compile("([-\+]{0,1})([\d]+)([dhms])") factors = {"d":24*3600, "h":3600, "m":60, "s":1} m = shift_re.match(var) if m: sign = m.groups()[0] == "-" and -1 or 1 factor = factors[m.groups()[2]] value = float(m.groups()[1]) date = time.localtime(date + sign * factor * value) date = time.strftime(format_string, date) else: date = time.strptime(var, format_string) date = time.strftime(format_string, date) return date def get_current_time_timestamp(): """Return timestamp corresponding to the current time.""" return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) def compare_timestamps_with_tolerance(timestamp1, timestamp2, tolerance=0): """Compare two timestamps TIMESTAMP1 and TIMESTAMP2, of the form '2005-03-31 17:37:26'. Optionally receives a TOLERANCE argument (in seconds). Return -1 if TIMESTAMP1 is less than TIMESTAMP2 minus TOLERANCE, 0 if they are equal within TOLERANCE limit, and 1 if TIMESTAMP1 is greater than TIMESTAMP2 plus TOLERANCE. """ # remove any trailing .00 in timestamps: timestamp1 = re.sub(r'\.[0-9]+$', '', timestamp1) timestamp2 = re.sub(r'\.[0-9]+$', '', timestamp2) # first convert timestamps to Unix epoch seconds: timestamp1_seconds = calendar.timegm(time.strptime(timestamp1, "%Y-%m-%d %H:%M:%S")) timestamp2_seconds = calendar.timegm(time.strptime(timestamp2, "%Y-%m-%d %H:%M:%S")) # now compare them: if timestamp1_seconds < timestamp2_seconds - tolerance: return -1 elif timestamp1_seconds > timestamp2_seconds + tolerance: return 1 else: return 0 def get_database_last_updated_timestamp(): """Return last updated timestamp for collection-related and record-related database tables. """ database_tables_timestamps = [] database_tables_timestamps.append(get_table_update_time('bibrec')) database_tables_timestamps.append(get_table_update_time('bibfmt')) database_tables_timestamps.append(get_table_update_time('idxWORD%')) database_tables_timestamps.append(get_table_update_time('collection%')) database_tables_timestamps.append(get_table_update_time('portalbox')) database_tables_timestamps.append(get_table_update_time('field%')) database_tables_timestamps.append(get_table_update_time('format%')) database_tables_timestamps.append(get_table_update_time('rnkMETHODNAME')) database_tables_timestamps.append(get_table_update_time('accROLE_accACTION_accARGUMENT')) return max(database_tables_timestamps) def get_cache_last_updated_timestamp(): """Return last updated cache timestamp.""" try: f = open(cfg_cache_last_updated_timestamp_file, "r") except: return "1970-01-01 00:00:00" timestamp = f.read() f.close() return timestamp def set_cache_last_updated_timestamp(timestamp): """Set last updated cache timestamp to TIMESTAMP.""" try: f = open(cfg_cache_last_updated_timestamp_file, "w") except: pass f.write(timestamp) f.close() return timestamp def main(): """Main that construct all the bibtask.""" task_init(authorization_action="runwebcoll", authorization_msg="WebColl Task Submission", description="""Description: webcoll updates the collection cache (record universe for a given collection plus web page elements) based on invenio.conf and DB configuration parameters. If the collection name is passed as an argument, only this collection's cache will be updated. If the recursive option is set as well, the collection's descendants will also be updated.\n""", help_specific_usage=" -c, --collection\t Update cache for the given " "collection only. [all]\n" " -r, --recursive\t Update cache for the given collection and all its\n" "\t\t\t descendants (to be used in combination with -c). [no]\n" " -f, --force\t\t Force update even if cache is up to date. [no]\n" " -p, --part\t\t Update only certain cache parts (1=reclist," " 2=webpage). [both]\n" " -l, --language\t Update pages in only certain language" " (e.g. fr,it,...). [all]\n", version=__revision__, specific_params=("c:rfp:l:", [ "collection=", "recursive", "force", "part=", "language=" ]), task_submit_elaborate_specific_parameter_fnc=task_submit_elaborate_specific_parameter, task_submit_check_options_fnc=task_submit_check_options, task_run_fnc=task_run_core) def task_submit_elaborate_specific_parameter(key, value, opts, args): """ Given the string key it checks it's meaning, eventually using the value. Usually it fills some key in the options dict. It must return True if it has elaborated the key, False, if it doesn't know that key. eg: if key in ['-n', '--number']: self.options['number'] = value return True return False """ if key in ("-c", "--collection"): task_set_option("collection", value) elif key in ("-r", "--recursive"): task_set_option("recursive", 1) elif key in ("-f", "--force"): task_set_option("force", 1) elif key in ("-p", "--part"): task_set_option("part", int(value)) elif key in ("-l", "--language"): languages = task_get_option("language", []) languages += value.split(',') for ln in languages: if ln not in CFG_SITE_LANGS: print 'ERROR: "%s" is not a recognized language code' % ln return False task_set_option("language", languages) else: return False return True def task_submit_check_options(): if task_has_option('collection'): coll = get_collection(task_get_option("collection")) if coll.id is None: print 'ERROR: Collection "%s" does not exist' % coll.name return False return True def task_run_core(): """ Reimplement to add the body of the task.""" ## ## ------->--->time--->------> ## (-1) | ( 0) | ( 1) ## | | | ## [T.db] | [T.fc] | [T.db] ## | | | ## |<-tol|tol->| ## ## the above is the compare_timestamps_with_tolerance result "diagram" ## [T.db] stands fore the database timestamp and [T.fc] for the file cache timestamp ## ( -1, 0, 1) stand for the returned value ## tol stands for the tolerance in seconds ## ## When a record has been added or deleted from one of the collections the T.db becomes greater that the T.fc ## and when webcoll runs it is fully ran. It recalculates the reclists and nbrecs, and since it updates the ## collections db table it also updates the T.db. The T.fc is set as the moment the task started running thus ## slightly before the T.db (practically the time distance between the start of the task and the last call of ## update_reclist). Therefore when webcoll runs again, and even if no database changes have taken place in the ## meanwhile, it fully runs (because compare_timestamps_with_tolerance returns 0). This time though, and if ## no databases changes have taken place, the T.db remains the same while T.fc is updated and as a result if ## webcoll runs again it will not be fully ran ## task_run_start_timestamp = get_current_time_timestamp() colls = [] # decide whether we need to run or not, by comparing last updated timestamps: write_message("Database timestamp is %s." % get_database_last_updated_timestamp(), verbose=3) write_message("Collection cache timestamp is %s." % get_cache_last_updated_timestamp(), verbose=3) if task_has_option("part"): write_message("Running cache update part %s only." % task_get_option("part"), verbose=3) if check_nbrecs_for_all_external_collections() or task_has_option("force") or \ compare_timestamps_with_tolerance(get_database_last_updated_timestamp(), get_cache_last_updated_timestamp(), cfg_cache_last_updated_timestamp_tolerance) >= 0: ## either forced update was requested or cache is not up to date, so recreate it: # firstly, decide which collections to do: if task_has_option("collection"): coll = get_collection(task_get_option("collection")) colls.append(coll) if task_has_option("recursive"): r_type_descendants = coll.get_descendants(type='r') colls += r_type_descendants v_type_descendants = coll.get_descendants(type='v') colls += v_type_descendants else: res = run_sql("SELECT name FROM collection ORDER BY id") for row in res: colls.append(get_collection(row[0])) # secondly, update collection reclist cache: if task_get_option('part', 1) == 1: i = 0 for coll in colls: i += 1 write_message("%s / reclist cache update" % coll.name) if str(coll.dbquery).startswith("hostedcollection:"): coll.set_nbrecs_for_external_collection() else: coll.calculate_reclist() task_sleep_now_if_required() coll.update_reclist() task_update_progress("Part 1/2: done %d/%d" % (i, len(colls))) task_sleep_now_if_required(can_stop_too=True) # thirdly, update collection webpage cache: if task_get_option("part", 2) == 2: i = 0 for coll in colls: i += 1 write_message("%s / webpage cache update" % coll.name) coll.update_webpage_cache() task_update_progress("Part 2/2: done %d/%d" % (i, len(colls))) task_sleep_now_if_required(can_stop_too=True) # finally update the cache last updated timestamp: # (but only when all collections were updated, not when only # some of them were forced-updated as per admin's demand) if not task_has_option("collection"): set_cache_last_updated_timestamp(task_run_start_timestamp) write_message("Collection cache timestamp is set to %s." % get_cache_last_updated_timestamp(), verbose=3) else: ## cache up to date, we don't have to run write_message("Collection cache is up to date, no need to run.") ## we are done: return True ### okay, here we go: if __name__ == '__main__': - main() + main() \ No newline at end of file diff --git a/modules/websession/lib/Makefile.am b/modules/websession/lib/Makefile.am index 69b7a7c91..9bb6355f4 100644 --- a/modules/websession/lib/Makefile.am +++ b/modules/websession/lib/Makefile.am @@ -1,31 +1,31 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. pylibdir = $(libdir)/python/invenio pylib_DATA = session.py webuser.py webuser_tests.py \ websession_templates.py websession_webinterface.py \ webgroup.py webgroup_dblayer.py websession_config.py \ webaccount.py websession_regression_tests.py \ webgroup_regression_tests.py webuser_regression_tests.py \ - webgroup_tests.py inveniogc.py + webgroup_tests.py inveniogc.py websession_templates_epfl.py noinst_DATA = password_migration_kit.py EXTRA_DIST = $(pylib_DATA) $(noinst_DATA) CLEANFILES = *~ *.tmp *.pyc diff --git a/modules/websession/lib/websession_templates_epfl.py b/modules/websession/lib/websession_templates_epfl.py new file mode 100644 index 000000000..8d6b71c65 --- /dev/null +++ b/modules/websession/lib/websession_templates_epfl.py @@ -0,0 +1,311 @@ +# -*- coding: utf-8 -*- +""" +EPFL templates. +Websession handles admin menu and login links +""" +import urllib + +from invenio.config import CFG_SITE_LANG, CFG_SITE_SECURE_URL, CFG_SITE_URL +from invenio.messages import gettext_set_language +from invenio import websession_templates + +class Template(websession_templates.Template): + """ + EPFL subclass of websession_template + """ + + def tmpl_account_adminactivities(self, ln, uid, guest, roles, activities): + """ + Displays the admin activities block for this user + Parameters: + - 'ln' *string* - The language to display the interface in + - 'uid' *string* - The used id + - 'guest' *boolean* - If the user is guest + - 'roles' *array* - The current user roles + - 'activities' *array* - The user allowed activities + """ + # load the right message language + _ = gettext_set_language(ln) + out = "" + # guest condition + if guest: + return _("You seem to be a guest user. You have to %(x_url_open)slogin%(x_url_close)s first.") % \ + {'x_url_open': '', + 'x_url_close': ''} + + # no rights condition + if not roles: + return "

    " + _("You are not authorized to access administrative functions.") + "

    " + + # displaying form + out += "

    " + _("You are enabled to the following roles: %(x_role)s.") % {'x_role': ('' + ", ".join(roles) + "")} + '

    ' + + if activities: + # print proposed links: + activities.sort(lambda x, y: cmp(x.lower(), y.lower())) + tmp_out = '' + for action in activities: + if action == "runbibedit": + tmp_out += """
       
    %s""" % (CFG_SITE_URL, _("Run Record Editor")) + if action == "runbibeditmulti": + tmp_out += """
        %s""" % (CFG_SITE_URL, _("Run Multi-Record Editor")) + if action == "runbibcirculation": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Run BibCirculation")) + if action == "runbibmerge": + tmp_out += """
        %s""" % (CFG_SITE_URL, _("Run Record Merger")) + if action == "runbibswordclient": + tmp_out += """
        %s""" % (CFG_SITE_URL, _("Run BibSword Client")) + if action == "runbatchuploader": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Run Batch Uploader")) + if action == "cfgbibformat": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure BibFormat")) + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure BibKnowledge")) + if action == "cfgoaiharvest": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure OAI Harvest")) + if action == "cfgoairepository": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure OAI Repository")) + if action == "cfgbibindex": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure BibIndex")) + if action == "cfgbibrank": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure BibRank")) + if action == "cfgwebaccess": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure WebAccess")) + if action == "cfgwebcomment": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure WebComment")) + if action == "cfgwebjournal": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure WebJournal")) + if action == "cfgwebsearch": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure WebSearch")) + if action == "cfgwebsubmit": + tmp_out += """
        %s""" % (CFG_SITE_URL, ln, _("Configure WebSubmit")) + if tmp_out: + out += _("Here are some interesting web admin links for you:") + tmp_out + + out += "
    " + _("For more admin-level activities, see the complete %(x_url_open)sAdmin Area%(x_url_close)s.") %\ + {'x_url_open': '', + 'x_url_close': ''} + return out + + + def tmpl_create_useractivities_menu(self, user_info, ln, selected, url_referer, guest, username, submitter, referee, admin, usebaskets, usemessages, usealerts, usegroups, useloans, usestats): + """ + Returns the main navigation menu with actions based on user's + priviledges + + @param ln: The language to display the interface in + @type ln: string + @param selected: If the menu is currently selected + @type selected: boolean + @param url_referer: URL of the page being displayed + @type url_referer: string + @param guest: If the user is guest + @type guest: string + @param username: The username (nickname or email) + @type username: string + @param submitter: If the user is submitter + @type submitter: boolean + @param referee: If the user is referee + @type referee: boolean + @param admin: If the user is admin + @type admin: boolean + @param usebaskets: If baskets are enabled for the user + @type usebaskets: boolean + @param usemessages: If messages are enabled for the user + @type usemessages: boolean + @param usealerts: If alerts are enabled for the user + @type usealerts: boolean + @param usegroups: If groups are enabled for the user + @type usegroups: boolean + @param useloans: If loans are enabled for the user + @type useloans: boolean + @param usestats: If stats are enabled for the user + @type usestats: boolean + @return: html menu of the user activities + @rtype: string + """ + # load the right message language + _ = gettext_set_language(ln) + out = '' + if guest: + return out + out = """ + """ % {'secure_domain': CFG_SITE_SECURE_URL, + 'ln': ln, + 'sciper': user_info.get('external_uniqueidentifier', [None])[0] or user_info.get('external_cn', [None])[-1] or '', + 'my_infoscience_label': _("My profile"), + 'collections_label': _("My collections"), + 'alerts_label': _("My alerts"), + 'publications_validation_label': _("to be validated"), + 'publications_import_label': _("to be imported"), + 'publications_manual_match_label': _("to be matched"), + } + junk = _("XX-Translate-test") + return out + + def tmpl_create_adminactivities_menu(self, ln, selected, url_referer, guest, username, submitter, referee, admin, usebaskets, usemessages, usealerts, usegroups, useloans, usestats, activities): + """ + Returns the main navigation menu with actions based on user's + priviledges + + @param ln: The language to display the interface in + @type ln: string + @param selected: If the menu is currently selected + @type selected: boolean + @param url_referer: URL of the page being displayed + @type url_referer: string + @param guest: If the user is guest + @type guest: string + @param username: The username (nickname or email) + @type username: string + @param submitter: If the user is submitter + @type submitter: boolean + @param referee: If the user is referee + @type referee: boolean + @param admin: If the user is admin + @type admin: boolean + @param usebaskets: If baskets are enabled for the user + @type usebaskets: boolean + @param usemessages: If messages are enabled for the user + @type usemessages: boolean + @param usealerts: If alerts are enabled for the user + @type usealerts: boolean + @param usegroups: If groups are enabled for the user + @type usegroups: boolean + @param useloans: If loans are enabled for the user + @type useloans: boolean + @param usestats: If stats are enabled for the user + @type usestats: boolean + @param activities: dictionary of admin activities + @rtype activities: dict + @return: html menu of the user activities + @rtype: string + """ + # load the right message language + _ = gettext_set_language(ln) + + if not activities: + return '' + + admin_action_list = {} + + tmpl = '
  • %s
  • ' + admin_action_list['curator_functions'] = '\n'.join([ + tmpl % ('/curator/dropbox', _("Dropbox")), + tmpl % ('/curator/delete', _("Delete by reference")), + tmpl % ('/curator/laboratories', _("Laboratories management")), + tmpl % ('/curator/stats/query', _("Laboratories stats")), + tmpl % ('/curator/authors', _("Authors management")), + tmpl % ('/curator/users/create', _("Create user")), + tmpl % ('/curator/metrics', _("Publication statistics / bibliometrics")), + #tmpl % ('/stats/', _("Site statistics")), + ]) + + admin_action_list['getter_functions'] = '\n'.join([ + tmpl % ('/curator/deduplicate/wos/list', _("Deduplicate")), + tmpl % ('/curator/getter/manual_match', _("Manual match")), + tmpl % ('/curator/getter/rejected_imports', _("Rejected imports")), + ]) + + activities = activities.items() + activities.sort(lambda x, y: cmp(x[0], y[0])) + admin_action_list['invenio_functions'] = '\n'.join([tmpl % (url, label) for (label, url) in activities]) + out = """ + """ % (admin_action_list) + + + return out + + + def tmpl_navtrail(self, ln=CFG_SITE_LANG, title=""): + """ + display the navtrail, e.g.: + Your account > Your group > title + @param title: the last part of the navtrail. Is not a link + @param ln: language + return html formatted navtrail + """ + _ = gettext_set_language(ln) + nav_h1 = '%s' + nav_h2 = "" + if (title != ""): + nav_h2 = ' > %s' + nav_h2 = nav_h2 % (CFG_SITE_URL, _("Your Groups")) + + return nav_h1 % (CFG_SITE_URL, _("Your Account")) + nav_h2 + + + def tmpl_create_userinfobox(self, ln, url_referer, guest, username, submitter, referee, admin, usebaskets, usemessages, usealerts, usegroups, useloans, usestats): + """ + Displays the user block + Parameters: + - 'ln' *string* - The language to display the interface in + - 'url_referer' *string* - URL of the page being displayed + - 'guest' *boolean* - If the user is guest + - 'username' *string* - The username (nickname or email) + - 'submitter' *boolean* - If the user is submitter + - 'referee' *boolean* - If the user is referee + - 'admin' *boolean* - If the user is admin + - 'usebaskets' *boolean* - If baskets are enabled for the user + - 'usemessages' *boolean* - If messages are enabled for the user + - 'usealerts' *boolean* - If alerts are enabled for the user + - 'usegroups' *boolean* - If groups are enabled for the user + - 'useloans' *boolean* - If loans are enabled for the user + - 'usestats' *boolean* - If stats are enabled for the user + @note: with the update of CSS classes (cds.cds -> + invenio.css), the variables useloans etc are not used in + this function, since they are in the menus. But we keep + them in the function signature for backwards + compatibility. + """ + # load the right message language + _ = gettext_set_language(ln) + out = '' + if guest: + out += """%(login)s""" % { + 'sitesecureurl': CFG_SITE_SECURE_URL, + 'ln' : ln, + 'referer' : url_referer and ('&referer=%s' % urllib.quote(url_referer)) or '', + 'login' : _('login') + } + else: + out += """%(logout)s""" % { + 'sitesecureurl' : CFG_SITE_SECURE_URL, + 'ln' : ln, + 'logout' : _("logout"), + } + out += """ (%(username)s)""" % { + 'sitesecureurl' : CFG_SITE_SECURE_URL, + 'ln' : ln, + 'username' : username + } + return out diff --git a/modules/websession/lib/websession_webinterface.py b/modules/websession/lib/websession_webinterface.py index 1c0f40815..d860679f5 100644 --- a/modules/websession/lib/websession_webinterface.py +++ b/modules/websession/lib/websession_webinterface.py @@ -1,1389 +1,1407 @@ # -*- coding: utf-8 -*- ## ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2014 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """Invenio ACCOUNT HANDLING""" __revision__ = "$Id$" __lastupdated__ = """$Date$""" import cgi from datetime import timedelta from invenio.config import \ CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS, \ CFG_ACCESS_CONTROL_LEVEL_SITE, \ CFG_ACCESS_CONTROL_NOTIFY_USER_ABOUT_NEW_ACCOUNT, \ CFG_SITE_NAME, \ CFG_SITE_NAME_INTL, \ CFG_SITE_SUPPORT_EMAIL, \ CFG_SITE_SECURE_URL, \ CFG_SITE_URL, \ CFG_CERN_SITE, \ CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS from invenio import webuser from invenio.webpage import page from invenio import webaccount from invenio import webbasket from invenio import webalert from invenio.dbquery import run_sql from invenio.webmessage import account_new_mail from invenio.access_control_engine import acc_authorize_action from invenio.webinterface_handler import wash_urlargd, WebInterfaceDirectory from invenio import webinterface_handler_config as apache from invenio.urlutils import redirect_to_url, make_canonical_urlargd from invenio import webgroup from invenio import webgroup_dblayer from invenio.messages import gettext_set_language, wash_language from invenio.mailutils import send_email from invenio.access_control_mailcookie import mail_cookie_retrieve_kind, \ mail_cookie_check_pw_reset, mail_cookie_delete_cookie, \ mail_cookie_create_pw_reset, mail_cookie_check_role, \ mail_cookie_check_mail_activation, InvenioWebAccessMailCookieError, \ InvenioWebAccessMailCookieDeletedError, mail_cookie_check_authorize_action from invenio.access_control_config import CFG_WEBACCESS_WARNING_MSGS, \ CFG_EXTERNAL_AUTH_USING_SSO, CFG_EXTERNAL_AUTH_LOGOUT_SSO, \ CFG_EXTERNAL_AUTHENTICATION import invenio.template websession_templates = invenio.template.load('websession') bibcatalog_templates = invenio.template.load('bibcatalog') +from django_tequila.tequila_client import TequilaClient +from django_tequila.tequila_client import EPFLConfig + class WebInterfaceYourAccountPages(WebInterfaceDirectory): _exports = ['', 'edit', 'change', 'lost', 'display', 'send_email', 'youradminactivities', 'access', 'delete', 'logout', 'login', 'register', 'resetpassword', 'robotlogin', 'robotlogout'] _force_https = True def index(self, req, form): redirect_to_url(req, '%s/youraccount/display' % CFG_SITE_SECURE_URL) def access(self, req, form): args = wash_urlargd(form, {'mailcookie' : (str, '')}) _ = gettext_set_language(args['ln']) title = _("Mail Cookie Service") try: kind = mail_cookie_retrieve_kind(args['mailcookie']) if kind == 'pw_reset': redirect_to_url(req, '%s/youraccount/resetpassword?k=%s&ln=%s' % (CFG_SITE_SECURE_URL, args['mailcookie'], args['ln'])) elif kind == 'role': uid = webuser.getUid(req) try: (role_name, expiration) = mail_cookie_check_role(args['mailcookie'], uid) except InvenioWebAccessMailCookieDeletedError: return page(title=_("Role authorization request"), req=req, body=_("This request for an authorization has already been authorized."), uid=webuser.getUid(req), navmenuid='youraccount', language=args['ln'], secure_page_p=1) return page(title=title, body=webaccount.perform_back( _("You have successfully obtained an authorization as %(x_role)s! " "This authorization will last until %(x_expiration)s and until " "you close your browser if you are a guest user.") % {'x_role' : '%s' % role_name, 'x_expiration' : '%s' % expiration.strftime("%Y-%m-%d %H:%M:%S")}, '/youraccount/display?ln=%s' % args['ln'], _('login'), args['ln']), req=req, uid=webuser.getUid(req), language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount', secure_page_p=1) elif kind == 'mail_activation': try: email = mail_cookie_check_mail_activation(args['mailcookie']) if not email: raise StandardError webuser.confirm_email(email) body = "

    " + _("You have confirmed the validity of your email" " address!") + "

    " if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 1: body += "

    " + _("Please, wait for the administrator to " "enable your account.") + "

    " else: uid = webuser.update_Uid(req, email) body += "

    " + _("You can now go to %(x_url_open)syour account page%(x_url_close)s.") % {'x_url_open' : '' % args['ln'], 'x_url_close' : ''} + "

    " return page(title=_("Email address successfully activated"), body=body, req=req, language=args['ln'], uid=webuser.getUid(req), lastupdated=__lastupdated__, navmenuid='youraccount', secure_page_p=1) except InvenioWebAccessMailCookieDeletedError, e: body = "

    " + _("You have already confirmed the validity of your email address!") + "

    " if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 1: body += "

    " + _("Please, wait for the administrator to " "enable your account.") + "

    " else: body += "

    " + _("You can now go to %(x_url_open)syour account page%(x_url_close)s.") % {'x_url_open' : '' % args['ln'], 'x_url_close' : ''} + "

    " return page(title=_("Email address successfully activated"), body=body, req=req, language=args['ln'], uid=webuser.getUid(req), lastupdated=__lastupdated__, navmenuid='youraccount', secure_page_p=1) return webuser.page_not_authorized(req, "../youraccount/access", text=_("This request for confirmation of an email " "address is not valid or" " is expired."), navmenuid='youraccount') except InvenioWebAccessMailCookieError: return webuser.page_not_authorized(req, "../youraccount/access", text=_("This request for an authorization is not valid or" " is expired."), navmenuid='youraccount') def resetpassword(self, req, form): args = wash_urlargd(form, { 'k' : (str, ''), 'reset' : (int, 0), 'password' : (str, ''), 'password2' : (str, '') }) _ = gettext_set_language(args['ln']) title = _('Reset password') reset_key = args['k'] try: email = mail_cookie_check_pw_reset(reset_key) except InvenioWebAccessMailCookieDeletedError: return page(title=title, req=req, body=_("This request for resetting a password has already been used."), uid=webuser.getUid(req), navmenuid='youraccount', language=args['ln'], secure_page_p=1) except InvenioWebAccessMailCookieError: return webuser.page_not_authorized(req, "../youraccount/access", text=_("This request for resetting a password is not valid or" " is expired."), navmenuid='youraccount') if email is None or CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 3: return webuser.page_not_authorized(req, "../youraccount/resetpassword", text=_("This request for resetting the password is not valid or" " is expired."), navmenuid='youraccount') if not args['reset']: return page(title=title, body=webaccount.perform_reset_password(args['ln'], email, reset_key), req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') elif args['password'] != args['password2']: msg = _('The two provided passwords aren\'t equal.') return page(title=title, body=webaccount.perform_reset_password(args['ln'], email, reset_key, msg), req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') run_sql('UPDATE user SET password=AES_ENCRYPT(email,%s) WHERE email=%s', (args['password'], email)) mail_cookie_delete_cookie(reset_key) return page(title=title, body=webaccount.perform_back( _("The password was successfully set! " "You can now proceed with the login."), '/youraccount/login?ln=%s' % args['ln'], _('login'), args['ln']), req=req, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount', secure_page_p=1) def display(self, req, form): + return redirect_to_url(req, '%s' % CFG_SITE_SECURE_URL) args = wash_urlargd(form, {}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/display", navmenuid='youraccount') if webuser.isGuestUser(uid): return page(title=_("Your Account"), body=webaccount.perform_info(req, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') username = webuser.get_nickname_or_email(uid) user_info = webuser.collect_user_info(req) bask = user_info['precached_usebaskets'] and webbasket.account_list_baskets(uid, ln=args['ln']) or '' aler = user_info['precached_usealerts'] and webalert.account_list_alerts(uid, ln=args['ln']) or '' sear = webalert.account_list_searches(uid, ln=args['ln']) msgs = user_info['precached_usemessages'] and account_new_mail(uid, ln=args['ln']) or '' grps = user_info['precached_usegroups'] and webgroup.account_group(uid, ln=args['ln']) or '' appr = user_info['precached_useapprove'] sbms = user_info['precached_viewsubmissions'] loan = '' admn = webaccount.perform_youradminactivities(user_info, args['ln']) return page(title=_("Your Account"), body=webaccount.perform_display_account(req, username, bask, aler, sear, msgs, loan, grps, sbms, appr, admn, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def edit(self, req, form): + return redirect_to_url(req, '%s/curator/my_account' % CFG_SITE_SECURE_URL) args = wash_urlargd(form, {"verbose" : (int, 0)}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/edit", navmenuid='youraccount') if webuser.isGuestUser(uid): return webuser.page_not_authorized(req, "../youraccount/edit", text=_("This functionality is forbidden to guest users."), navmenuid='youraccount') body = '' user_info = webuser.collect_user_info(req) if args['verbose'] == 9: keys = user_info.keys() keys.sort() for key in keys: body += "%s:%s
    " % (key, user_info[key]) # set CSRF token: csrf_token, dummy_csrf_token_time = webuser.regenerate_csrf_token_if_needed(req) #check if the user should see bibcatalog user name / passwd in the settings can_config_bibcatalog = (acc_authorize_action(user_info, 'runbibedit')[0] == 0) return page(title= _("Your Settings"), body=body+webaccount.perform_set(webuser.get_email(uid), args['ln'], can_config_bibcatalog, verbose=args['verbose'], csrf_token=csrf_token), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description=_("%s Personalize, Your Settings") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def change(self, req, form): args = wash_urlargd(form, { 'nickname': (str, None), 'email': (str, None), 'old_password': (str, None), 'password': (str, None), 'password2': (str, None), 'login_method': (str, ""), 'group_records' : (int, None), 'latestbox' : (int, None), 'helpbox' : (int, None), 'lang' : (str, None), 'bibcatalog_username' : (str, None), 'bibcatalog_password' : (str, None), 'csrf_token' : (str, None), }) # do not allow non-POST methods in here: if req.method != 'POST': raise apache.SERVER_RETURN(apache.HTTP_METHOD_NOT_ALLOWED) # check CSRF token: if not webuser.is_csrf_token_valid(req, args['csrf_token']): raise apache.SERVER_RETURN(apache.HTTP_FORBIDDEN) ## Wash arguments: args['login_method'] = wash_login_method(args['login_method']) if args['email']: args['email'] = args['email'].lower() ## Load the right message language: _ = gettext_set_language(args['ln']) ## Identify user and load old preferences: uid = webuser.getUid(req) prefs = webuser.get_user_preferences(uid) ## Check rights: if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/change", navmenuid='youraccount') # FIXME: the branching below is far from optimal. Should be # based on the submitted form name ids, to know precisely on # which form the user clicked. Not on the passed values, as # is the case now. The function body is too big and in bad # need of refactoring anyway. ## Will hold the output messages: mess = '' ## Would hold link to previous page and title for the link: act = None linkname = None title = None ## Change login method if needed: if args['login_method'] and CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS < 4 \ and args['login_method'] in CFG_EXTERNAL_AUTHENTICATION: title = _("Settings edited") act = "/youraccount/display?ln=%s" % args['ln'] linkname = _("Show account") if prefs['login_method'] != args['login_method']: if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 4: mess += '

    ' + _("Unable to change login method.") elif not CFG_EXTERNAL_AUTHENTICATION[args['login_method']]: # Switching to internal authentication: we drop any external datas p_email = webuser.get_email(uid) webuser.drop_external_settings(uid) webgroup_dblayer.drop_external_groups(uid) prefs['login_method'] = args['login_method'] webuser.set_user_preferences(uid, prefs) mess += "

    " + _("Switched to internal login method.") + " " mess += _("Please note that if this is the first time that you are using this account " "with the internal login method then the system has set for you " "a randomly generated password. Please click the " "following button to obtain a password reset request " "link sent to you via email:") + '

    ' mess += """

    """ % (p_email, _("Send Password")) else: query = """SELECT email FROM user WHERE id = %i""" res = run_sql(query % uid) if res: email = res[0][0] else: email = None if not email: mess += '

    ' + _("Unable to switch to external login method %s, because your email address is unknown.") % cgi.escape(args['login_method']) else: try: if not CFG_EXTERNAL_AUTHENTICATION[args['login_method']].user_exists(email): mess += '

    ' + _("Unable to switch to external login method %s, because your email address is unknown to the external login system.") % cgi.escape(args['login_method']) else: prefs['login_method'] = args['login_method'] webuser.set_user_preferences(uid, prefs) mess += '

    ' + _("Login method successfully selected.") except AttributeError: mess += '

    ' + _("The external login method %s does not support email address based logins. Please contact the site administrators.") % cgi.escape(args['login_method']) ## Change email or nickname: if args['email'] or args['nickname']: uid2 = webuser.emailUnique(args['email']) uid_with_the_same_nickname = webuser.nicknameUnique(args['nickname']) current_nickname = webuser.get_nickname(uid) if current_nickname and args['nickname'] and \ current_nickname != args['nickname']: # User tried to set nickname while one is already # defined (policy is that nickname is not to be # changed) mess += '

    ' + _("Your nickname has not been updated") elif (CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 2 or (CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS <= 1 and \ webuser.email_valid_p(args['email']))) \ and (args['nickname'] is None or webuser.nickname_valid_p(args['nickname'])) \ and uid2 != -1 and (uid2 == uid or uid2 == 0) \ and uid_with_the_same_nickname != -1 and (uid_with_the_same_nickname == uid or uid_with_the_same_nickname == 0): if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS < 3: change = webuser.updateDataUser(uid, args['email'], args['nickname']) else: return webuser.page_not_authorized(req, "../youraccount/change", navmenuid='youraccount') if change: mess += '

    ' + _("Settings successfully edited.") mess += '

    ' + _("Note that if you have changed your email address, " "you will have to %(x_url_open)sreset your password%(x_url_close)s anew.") % \ {'x_url_open': '' % (CFG_SITE_SECURE_URL + '/youraccount/lost?ln=%s' % args['ln']), 'x_url_close': ''} act = "/youraccount/display?ln=%s" % args['ln'] linkname = _("Show account") title = _("Settings edited") elif args['nickname'] is not None and not webuser.nickname_valid_p(args['nickname']): mess += '

    ' + _("Desired nickname %s is invalid.") % cgi.escape(args['nickname']) mess += " " + _("Please try again.") act = "/youraccount/edit?ln=%s" % args['ln'] linkname = _("Edit settings") title = _("Editing settings failed") elif not webuser.email_valid_p(args['email']): mess += '

    ' + _("Supplied email address %s is invalid.") % cgi.escape(args['email']) mess += " " + _("Please try again.") act = "/youraccount/edit?ln=%s" % args['ln'] linkname = _("Edit settings") title = _("Editing settings failed") elif uid2 == -1 or uid2 != uid and not uid2 == 0: mess += '

    ' + _("Supplied email address %s already exists in the database.") % cgi.escape(args['email']) mess += " " + websession_templates.tmpl_lost_your_password_teaser(args['ln']) mess += " " + _("Or please try again.") act = "/youraccount/edit?ln=%s" % args['ln'] linkname = _("Edit settings") title = _("Editing settings failed") elif uid_with_the_same_nickname == -1 or uid_with_the_same_nickname != uid and not uid_with_the_same_nickname == 0: mess += '

    ' + _("Desired nickname %s is already in use.") % cgi.escape(args['nickname']) mess += " " + _("Please try again.") act = "/youraccount/edit?ln=%s" % args['ln'] linkname = _("Edit settings") title = _("Editing settings failed") ## Change passwords: if args['old_password'] or args['password'] or args['password2']: if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 3: mess += '

    ' + _("Users cannot edit passwords on this site.") else: res = run_sql("SELECT id FROM user " "WHERE AES_ENCRYPT(email,%s)=password AND id=%s", (args['old_password'], uid)) if res: if args['password'] == args['password2']: webuser.updatePasswordUser(uid, args['password']) mess += '

    ' + _("Password successfully edited.") act = "/youraccount/display?ln=%s" % args['ln'] linkname = _("Show account") title = _("Password edited") else: mess += '

    ' + _("Both passwords must match.") mess += " " + _("Please try again.") act = "/youraccount/edit?ln=%s" % args['ln'] linkname = _("Edit settings") title = _("Editing password failed") else: mess += '

    ' + _("Wrong old password inserted.") mess += " " + _("Please try again.") act = "/youraccount/edit?ln=%s" % args['ln'] linkname = _("Edit settings") title = _("Editing password failed") ## Change search-related settings: if args['group_records']: prefs = webuser.get_user_preferences(uid) prefs['websearch_group_records'] = args['group_records'] prefs['websearch_latestbox'] = args['latestbox'] prefs['websearch_helpbox'] = args['helpbox'] webuser.set_user_preferences(uid, prefs) title = _("Settings edited") act = "/youraccount/display?ln=%s" % args['ln'] linkname = _("Show account") mess += '

    ' + _("User settings saved correctly.") ## Change language-related settings: if args['lang']: lang = wash_language(args['lang']) prefs = webuser.get_user_preferences(uid) prefs['language'] = lang args['ln'] = lang _ = gettext_set_language(lang) webuser.set_user_preferences(uid, prefs) title = _("Settings edited") act = "/youraccount/display?ln=%s" % args['ln'] linkname = _("Show account") mess += '

    ' + _("User settings saved correctly.") ## Edit cataloging-related settings: if args['bibcatalog_username'] or args['bibcatalog_password']: act = "/youraccount/display?ln=%s" % args['ln'] linkname = _("Show account") if ((len(args['bibcatalog_username']) == 0) or (len(args['bibcatalog_password']) == 0)): title = _("Editing bibcatalog authorization failed") mess += '

    ' + _("Empty username or password") else: title = _("Settings edited") prefs['bibcatalog_username'] = args['bibcatalog_username'] prefs['bibcatalog_password'] = args['bibcatalog_password'] webuser.set_user_preferences(uid, prefs) mess += '

    ' + _("User settings saved correctly.") if not mess: mess = _("Unable to update settings.") if not act: act = "/youraccount/edit?ln=%s" % args['ln'] if not linkname: linkname = _("Edit settings") if not title: title = _("Editing settings failed") ## Finally, output the results: return page(title=title, body=webaccount.perform_back(mess, act, linkname, args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def lost(self, req, form): args = wash_urlargd(form, {}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/lost", navmenuid='youraccount') return page(title=_("Lost your password?"), body=webaccount.perform_lost(args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def send_email(self, req, form): # set all the declared query fields as local variables args = wash_urlargd(form, {'p_email': (str, None)}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/send_email", navmenuid='youraccount') user_prefs = webuser.get_user_preferences(webuser.emailUnique(args['p_email'])) if user_prefs: if user_prefs['login_method'] in CFG_EXTERNAL_AUTHENTICATION and \ CFG_EXTERNAL_AUTHENTICATION[user_prefs['login_method']] is not None: eMsg = _("Cannot send password reset request since you are using external authentication system.") return page(title=_("Your Account"), body=webaccount.perform_emailMessage(eMsg, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') try: reset_key = mail_cookie_create_pw_reset(args['p_email'], cookie_timeout=timedelta(days=CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS)) except InvenioWebAccessMailCookieError: reset_key = None if reset_key is None: eMsg = _("The entered email address does not exist in the database.") return page(title=_("Your Account"), body=webaccount.perform_emailMessage(eMsg, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') ip_address = req.remote_host or req.remote_ip if not send_email(CFG_SITE_SUPPORT_EMAIL, args['p_email'], "%s %s" % (_("Password reset request for"), CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), websession_templates.tmpl_account_reset_password_email_body( args['p_email'],reset_key, ip_address, args['ln'])): eMsg = _("The entered email address is incorrect, please check that it is written correctly (e.g. johndoe@example.com).") return page(title=_("Incorrect email address"), body=webaccount.perform_emailMessage(eMsg, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') return page(title=_("Reset password link sent"), body=webaccount.perform_emailSent(args['p_email'], args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def youradminactivities(self, req, form): args = wash_urlargd(form, {}) uid = webuser.getUid(req) user_info = webuser.collect_user_info(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/youradminactivities", navmenuid='admin') return page(title=_("Your Administrative Activities"), body=webaccount.perform_youradminactivities(user_info, args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='admin') def delete(self, req, form): args = wash_urlargd(form, {}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/delete", navmenuid='youraccount') return page(title=_("Delete Account"), body=webaccount.perform_delete(args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def logout(self, req, form): args = wash_urlargd(form, {}) uid = webuser.logoutUser(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/logout", navmenuid='youraccount') if CFG_EXTERNAL_AUTH_USING_SSO: return redirect_to_url(req, CFG_EXTERNAL_AUTH_LOGOUT_SSO) return page(title=_("Logout"), body=webaccount.perform_logout(req, args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%s, personalize") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def robotlogout(self, req, form): """ Implement logout method for external service providers. """ webuser.logoutUser(req) redirect_to_url(req, "%s/img/pix.png" % CFG_SITE_URL) def robotlogin(self, req, form): """ Implement authentication method for external service providers. """ from invenio.external_authentication import InvenioWebAccessExternalAuthError args = wash_urlargd(form, { 'login_method': (str, None), 'remember_me' : (str, ''), 'referer': (str, ''), 'p_un': (str, ''), 'p_pw': (str, '') }) # sanity checks: args['login_method'] = wash_login_method(args['login_method']) args['remember_me'] = args['remember_me'] != '' locals().update(args) if CFG_ACCESS_CONTROL_LEVEL_SITE > 0: return webuser.page_not_authorized(req, "../youraccount/login?ln=%s" % args['ln'], navmenuid='youraccount') uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) try: (iden, args['p_un'], args['p_pw'], msgcode) = webuser.loginUser(req, args['p_un'], args['p_pw'], args['login_method']) except InvenioWebAccessExternalAuthError, err: return page("Error", body=str(err)) if len(iden)>0: uid = webuser.update_Uid(req, args['p_un'], args['remember_me']) uid2 = webuser.getUid(req) if uid2 == -1: webuser.logoutUser(req) return webuser.page_not_authorized(req, "../youraccount/login?ln=%s" % args['ln'], uid=uid, navmenuid='youraccount') # login successful! if args['referer']: redirect_to_url(req, args['referer']) else: return self.display(req, form) else: mess = CFG_WEBACCESS_WARNING_MSGS[msgcode] % cgi.escape(args['login_method']) if msgcode == 14: if webuser.username_exists_p(args['p_un']): mess = CFG_WEBACCESS_WARNING_MSGS[15] % cgi.escape(args['login_method']) act = '/youraccount/login%s' % make_canonical_urlargd({'ln' : args['ln'], 'referer' : args['referer']}, {}) return page(title=_("Login"), body=webaccount.perform_back(mess, act, _("login"), args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords="%s , personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') - - def login(self, req, form): args = wash_urlargd(form, { 'p_un': (str, None), 'p_pw': (str, None), + 'key': (str, None), 'login_method': (str, None), 'action': (str, ''), 'remember_me' : (str, ''), 'referer': (str, '')}) # sanity checks: args['login_method'] = wash_login_method(args['login_method']) if args['p_un']: args['p_un'] = args['p_un'].strip() + if args['key']: + args['key'] = args['key'].strip() args['remember_me'] = args['remember_me'] != '' locals().update(args) if CFG_ACCESS_CONTROL_LEVEL_SITE > 0: return webuser.page_not_authorized(req, "../youraccount/login?ln=%s" % args['ln'], navmenuid='youraccount') + if not args['key']: + redirect_url = CFG_SITE_URL + '/youraccount/login%s' % make_canonical_urlargd({'ln' : args['ln'], 'referer' : args['referer']}, {}) + + tequila_client = TequilaClient(EPFLConfig(allow_guests=True, + redirect_to = redirect_url, + service = "Infoscience")) + + return redirect_to_url(req, tequila_client.login_url()) + uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if args['action']: cookie = args['action'] try: action, arguments = mail_cookie_check_authorize_action(cookie) except InvenioWebAccessMailCookieError: pass if not CFG_EXTERNAL_AUTH_USING_SSO: - if args['p_un'] is None or not args['login_method']: - return page(title=_("Login"), - body=webaccount.create_login_page_box(args['referer'], args['ln']), - navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", - description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), - keywords="%s , personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), - uid=uid, - req=req, - secure_page_p=1, - language=args['ln'], - lastupdated=__lastupdated__, - navmenuid='youraccount') - (iden, args['p_un'], args['p_pw'], msgcode) = webuser.loginUser(req, args['p_un'], args['p_pw'], args['login_method']) + if args['key']: + (iden, args['p_un'], args['p_pw'], msgcode) = webuser.loginUser(req, args['key'], '', "EPFL") + else: + if args['p_un'] is None or not args['login_method']: + return page(title=_("Login"), + body=webaccount.create_login_page_box(args['referer'], args['ln']), + navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", + description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), + keywords="%s , personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), + uid=uid, + req=req, + secure_page_p=1, + language=args['ln'], + lastupdated=__lastupdated__, + navmenuid='youraccount') + (iden, args['p_un'], args['p_pw'], msgcode) = webuser.loginUser(req, args['p_un'], args['p_pw'], args['login_method']) else: # Fake parameters for p_un & p_pw because SSO takes them from the environment (iden, args['p_un'], args['p_pw'], msgcode) = webuser.loginUser(req, '', '', CFG_EXTERNAL_AUTH_USING_SSO) args['remember_me'] = False if len(iden)>0: uid = webuser.update_Uid(req, args['p_un'], args['remember_me']) uid2 = webuser.getUid(req) if uid2 == -1: webuser.logoutUser(req) return webuser.page_not_authorized(req, "../youraccount/login?ln=%s" % args['ln'], uid=uid, navmenuid='youraccount') # login successful! if args['referer']: redirect_to_url(req, args['referer']) else: return self.display(req, form) else: mess = CFG_WEBACCESS_WARNING_MSGS[msgcode] % cgi.escape(args['login_method']) if msgcode == 14: if webuser.username_exists_p(args['p_un']): mess = CFG_WEBACCESS_WARNING_MSGS[15] % cgi.escape(args['login_method']) act = '/youraccount/login%s' % make_canonical_urlargd({'ln' : args['ln'], 'referer' : args['referer']}, {}) return page(title=_("Login"), body=webaccount.perform_back(mess, act, _("login"), args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords="%s , personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') def register(self, req, form): args = wash_urlargd(form, { 'p_nickname': (str, None), 'p_email': (str, None), 'p_pw': (str, None), 'p_pw2': (str, None), 'action': (str, "login"), 'referer': (str, "")}) if CFG_ACCESS_CONTROL_LEVEL_SITE > 0: return webuser.page_not_authorized(req, "../youraccount/register?ln=%s" % args['ln'], navmenuid='youraccount') uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if args['p_nickname'] is None or args['p_email'] is None: return page(title=_("Register"), body=webaccount.create_register_page_box(args['referer'], args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description=_("%s Personalize, Main page") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords="%s , personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') mess = "" act = "" if args['p_pw'] == args['p_pw2']: ruid = webuser.registerUser(req, args['p_email'], args['p_pw'], args['p_nickname'], ln=args['ln']) else: ruid = -2 if ruid == 0: mess = _("Your account has been successfully created.") title = _("Account created") if CFG_ACCESS_CONTROL_NOTIFY_USER_ABOUT_NEW_ACCOUNT == 1: mess += " " + _("In order to confirm its validity, an email message containing an account activation key has been sent to the given email address.") mess += " " + _("Please follow instructions presented there in order to complete the account registration process.") if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 1: mess += " " + _("A second email will be sent when the account has been activated and can be used.") elif CFG_ACCESS_CONTROL_NOTIFY_USER_ABOUT_NEW_ACCOUNT != 1: uid = webuser.update_Uid(req, args['p_email']) mess += " " + _("You can now access your %(x_url_open)saccount%(x_url_close)s.") %\ {'x_url_open': '', 'x_url_close': ''} elif ruid == -2: mess = _("Both passwords must match.") mess += " " + _("Please try again.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") elif ruid == 1: mess = _("Supplied email address %s is invalid.") % cgi.escape(args['p_email']) mess += " " + _("Please try again.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") elif ruid == 2: mess = _("Desired nickname %s is invalid.") % cgi.escape(args['p_nickname']) mess += " " + _("Please try again.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") elif ruid == 3: mess = _("Supplied email address %s already exists in the database.") % cgi.escape(args['p_email']) mess += " " + websession_templates.tmpl_lost_your_password_teaser(args['ln']) mess += " " + _("Or please try again.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") elif ruid == 4: mess = _("Desired nickname %s already exists in the database.") % cgi.escape(args['p_nickname']) mess += " " + _("Please try again.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") elif ruid == 5: mess = _("Users cannot register themselves, only admin can register them.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") elif ruid == 6: mess = _("The site is having troubles in sending you an email for confirming your email address.") + _("The error has been logged and will be taken in consideration as soon as possible.") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") else: # this should never happen mess = _("Internal Error") act = "/youraccount/register?ln=%s" % args['ln'] title = _("Registration failure") return page(title=title, body=webaccount.perform_back(mess,act, _("register"), args['ln']), navtrail="""""" % (CFG_SITE_SECURE_URL, args['ln']) + _("Your Account") + """""", description=_("%s Personalize, Main page") % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords="%s , personalize" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated=__lastupdated__, navmenuid='youraccount') class WebInterfaceYourTicketsPages(WebInterfaceDirectory): #support for /yourtickets url _exports = ['', 'display'] def __call__(self, req, form): #if there is no trailing slash self.index(req, form) def index(self, req, form): #take all the parameters.. unparsed_uri = req.unparsed_uri qstr = "" if unparsed_uri.count('?') > 0: dummy, qstr = unparsed_uri.split('?') qstr = '?'+qstr redirect_to_url(req, '/yourtickets/display'+qstr) def display(self, req, form): #show tickets for this user argd = wash_urlargd(form, {'ln': (str, ''), 'start': (int, 1) }) uid = webuser.getUid(req) ln = argd['ln'] start = argd['start'] _ = gettext_set_language(ln) body = bibcatalog_templates.tmpl_your_tickets(uid, ln, start) return page(title=_("Your tickets"), body=body, navtrail="""""" % (CFG_SITE_SECURE_URL, argd['ln']) + _("Your Account") + """""", uid=uid, req=req, language=argd['ln'], lastupdated=__lastupdated__, secure_page_p=1) class WebInterfaceYourGroupsPages(WebInterfaceDirectory): _exports = ['', 'display', 'create', 'join', 'leave', 'edit', 'members'] def index(self, req, form): redirect_to_url(req, '/yourgroups/display') def display(self, req, form): """ Displays groups the user is admin of and the groups the user is member of(but not admin) @param ln: language @return: the page for all the groups """ argd = wash_urlargd(form, {}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(argd['ln']) if uid == -1 or webuser.isGuestUser(uid) or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../yourgroups/display", navmenuid='yourgroups') user_info = webuser.collect_user_info(req) if not user_info['precached_usegroups']: return webuser.page_not_authorized(req, "../", \ text = _("You are not authorized to use groups.")) (body, errors, warnings) = webgroup.perform_request_groups_display(uid=uid, ln=argd['ln']) return page(title = _("Your Groups"), body = body, navtrail = webgroup.get_navtrail(argd['ln']), uid = uid, req = req, language = argd['ln'], lastupdated = __lastupdated__, errors = errors, warnings = warnings, navmenuid = 'yourgroups', secure_page_p = 1) def create(self, req, form): """create(): interface for creating a new group @param group_name: : name of the new webgroup.Must be filled @param group_description: : description of the new webgroup.(optionnal) @param join_policy: : join policy of the new webgroup.Must be chosen @param *button: which button was pressed @param ln: language @return: the compose page Create group """ argd = wash_urlargd(form, {'group_name': (str, ""), 'group_description': (str, ""), 'join_policy': (str, ""), 'create_button':(str, ""), 'cancel':(str, "") }) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(argd['ln']) if uid == -1 or webuser.isGuestUser(uid) or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../yourgroups/create", navmenuid='yourgroups') user_info = webuser.collect_user_info(req) if not user_info['precached_usegroups']: return webuser.page_not_authorized(req, "../", \ text = _("You are not authorized to use groups.")) if argd['cancel']: url = CFG_SITE_URL + '/yourgroups/display?ln=%s' url %= argd['ln'] redirect_to_url(req, url) if argd['create_button'] : (body, errors, warnings)= webgroup.perform_request_create_group(uid=uid, group_name=argd['group_name'], group_description=argd['group_description'], join_policy=argd['join_policy'], ln = argd['ln']) else: (body, errors, warnings) = webgroup.perform_request_input_create_group(group_name=argd['group_name'], group_description=argd['group_description'], join_policy=argd['join_policy'], ln=argd['ln']) title = _("Create new group") return page(title = title, body = body, navtrail = webgroup.get_navtrail(argd['ln'], title), uid = uid, req = req, language = argd['ln'], lastupdated = __lastupdated__, errors = errors, warnings = warnings, navmenuid = 'yourgroups', secure_page_p = 1) def join(self, req, form): """join(): interface for joining a new group @param grpID: : list of the group the user wants to become a member. The user must select only one group. @param group_name: : will search for groups matching group_name @param *button: which button was pressed @param ln: language @return: the compose page Join group """ argd = wash_urlargd(form, {'grpID':(list, []), 'group_name':(str, ""), 'find_button':(str, ""), 'join_button':(str, ""), 'cancel':(str, "") }) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(argd['ln']) if uid == -1 or webuser.isGuestUser(uid) or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../yourgroups/join", navmenuid='yourgroups') user_info = webuser.collect_user_info(req) if not user_info['precached_usegroups']: return webuser.page_not_authorized(req, "../", \ text = _("You are not authorized to use groups.")) if argd['cancel']: url = CFG_SITE_URL + '/yourgroups/display?ln=%s' url %= argd['ln'] redirect_to_url(req, url) if argd['join_button']: search = 0 if argd['group_name']: search = 1 (body, errors, warnings) = webgroup.perform_request_join_group(uid, argd['grpID'], argd['group_name'], search, argd['ln']) else: search = 0 if argd['find_button']: search = 1 (body, errors, warnings) = webgroup.perform_request_input_join_group(uid, argd['group_name'], search, ln=argd['ln']) title = _("Join New Group") return page(title = title, body = body, navtrail = webgroup.get_navtrail(argd['ln'], title), uid = uid, req = req, language = argd['ln'], lastupdated = __lastupdated__, errors = errors, warnings = warnings, navmenuid = 'yourgroups', secure_page_p = 1) def leave(self, req, form): """leave(): interface for leaving a group @param grpID: : group the user wants to leave. @param group_name: : name of the group the user wants to leave @param *button: which button was pressed @param confirmed: : the user is first asked to confirm @param ln: language @return: the compose page Leave group """ argd = wash_urlargd(form, {'grpID':(int, 0), 'group_name':(str, ""), 'leave_button':(str, ""), 'cancel':(str, ""), 'confirmed': (int, 0) }) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(argd['ln']) if uid == -1 or webuser.isGuestUser(uid) or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../yourgroups/leave", navmenuid='yourgroups') user_info = webuser.collect_user_info(req) if not user_info['precached_usegroups']: return webuser.page_not_authorized(req, "../", \ text = _("You are not authorized to use groups.")) if argd['cancel']: url = CFG_SITE_URL + '/yourgroups/display?ln=%s' url %= argd['ln'] redirect_to_url(req, url) if argd['leave_button']: (body, errors, warnings) = webgroup.perform_request_leave_group(uid, argd['grpID'], argd['confirmed'], argd['ln']) else: (body, errors, warnings) = webgroup.perform_request_input_leave_group(uid=uid, ln=argd['ln']) title = _("Leave Group") return page(title = title, body = body, navtrail = webgroup.get_navtrail(argd['ln'], title), uid = uid, req = req, language = argd['ln'], lastupdated = __lastupdated__, errors = errors, warnings = warnings, navmenuid = 'yourgroups', secure_page_p = 1) def edit(self, req, form): """edit(): interface for editing group @param grpID: : group ID @param group_name: : name of the new webgroup.Must be filled @param group_description: : description of the new webgroup.(optionnal) @param join_policy: : join policy of the new webgroup.Must be chosen @param update: button update group pressed @param delete: button delete group pressed @param cancel: button cancel pressed @param confirmed: : the user is first asked to confirm before deleting @param ln: language @return: the main page displaying all the groups """ argd = wash_urlargd(form, {'grpID': (int, 0), 'update': (str, ""), 'cancel': (str, ""), 'delete': (str, ""), 'group_name': (str, ""), 'group_description': (str, ""), 'join_policy': (str, ""), 'confirmed': (int, 0) }) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(argd['ln']) if uid == -1 or webuser.isGuestUser(uid) or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../yourgroups/display", navmenuid='yourgroups') user_info = webuser.collect_user_info(req) if not user_info['precached_usegroups']: return webuser.page_not_authorized(req, "../", \ text = _("You are not authorized to use groups.")) if argd['cancel']: url = CFG_SITE_URL + '/yourgroups/display?ln=%s' url %= argd['ln'] redirect_to_url(req, url) elif argd['delete']: (body, errors, warnings) = webgroup.perform_request_delete_group(uid=uid, grpID=argd['grpID'], confirmed=argd['confirmed']) elif argd['update']: (body, errors, warnings) = webgroup.perform_request_update_group(uid= uid, grpID=argd['grpID'], group_name=argd['group_name'], group_description=argd['group_description'], join_policy=argd['join_policy'], ln=argd['ln']) else : (body, errors, warnings)= webgroup.perform_request_edit_group(uid=uid, grpID=argd['grpID'], ln=argd['ln']) title = _("Edit Group") return page(title = title, body = body, navtrail = webgroup.get_navtrail(argd['ln'], title), uid = uid, req = req, language = argd['ln'], lastupdated = __lastupdated__, errors = errors, warnings = warnings, navmenuid = 'yourgroups', secure_page_p = 1) def members(self, req, form): """member(): interface for managing members of a group @param grpID: : group ID @param add_member: button add_member pressed @param remove_member: button remove_member pressed @param reject_member: button reject__member pressed @param delete: button delete group pressed @param member_id: : ID of the existing member selected @param pending_member_id: : ID of the pending member selected @param cancel: button cancel pressed @param info: : info about last user action @param ln: language @return: the same page with data updated """ argd = wash_urlargd(form, {'grpID': (int, 0), 'cancel': (str, ""), 'add_member': (str, ""), 'remove_member': (str, ""), 'reject_member': (str, ""), 'member_id': (int, 0), 'pending_member_id': (int, 0) }) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(argd['ln']) if uid == -1 or webuser.isGuestUser(uid) or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../yourgroups/display", navmenuid='yourgroups') user_info = webuser.collect_user_info(req) if not user_info['precached_usegroups']: return webuser.page_not_authorized(req, "../", \ text = _("You are not authorized to use groups.")) if argd['cancel']: url = CFG_SITE_URL + '/yourgroups/display?ln=%s' url %= argd['ln'] redirect_to_url(req, url) if argd['remove_member']: (body, errors, warnings) = webgroup.perform_request_remove_member(uid=uid, grpID=argd['grpID'], member_id=argd['member_id'], ln=argd['ln']) elif argd['reject_member']: (body, errors, warnings) = webgroup.perform_request_reject_member(uid=uid, grpID=argd['grpID'], user_id=argd['pending_member_id'], ln=argd['ln']) elif argd['add_member']: (body, errors, warnings) = webgroup.perform_request_add_member(uid=uid, grpID=argd['grpID'], user_id=argd['pending_member_id'], ln=argd['ln']) else: (body, errors, warnings)= webgroup.perform_request_manage_member(uid=uid, grpID=argd['grpID'], ln=argd['ln']) title = _("Edit group members") return page(title = title, body = body, navtrail = webgroup.get_navtrail(argd['ln'], title), uid = uid, req = req, language = argd['ln'], lastupdated = __lastupdated__, errors = errors, warnings = warnings, navmenuid = 'yourgroups', secure_page_p = 1) def wash_login_method(login_method): """ Wash the login_method parameter that came from the web input form. @param login_method: Wanted login_method value as it came from the web input form. @type login_method: string @return: Washed version of login_method. If the login_method value is valid, then return it. If it is not valid, then return `Local' (the default login method). @rtype: string @warning: Beware, 'Local' is hardcoded here! """ if login_method in CFG_EXTERNAL_AUTHENTICATION: return login_method else: - return 'Local' + return 'Local' \ No newline at end of file diff --git a/modules/websession/lib/webuser.py b/modules/websession/lib/webuser.py index 093070dd0..22f80979c 100644 --- a/modules/websession/lib/webuser.py +++ b/modules/websession/lib/webuser.py @@ -1,1269 +1,1292 @@ # -*- coding: utf-8 -*- ## ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2014 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """ This file implements all methods necessary for working with users and sessions in Invenio. Contains methods for logging/registration when a user log/register into the system, checking if it is a guest user or not. At the same time this presents all the stuff it could need with sessions managements, working with websession. It also contains Apache-related user authentication stuff. """ __revision__ = "$Id$" from invenio import webinterface_handler_config as apache import cgi import urllib import urlparse from socket import gaierror import os import crypt import socket import smtplib import re import random import datetime import base64 import binascii import time from invenio.config import \ CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS, \ CFG_ACCESS_CONTROL_LEVEL_GUESTS, \ CFG_ACCESS_CONTROL_LEVEL_SITE, \ CFG_ACCESS_CONTROL_LIMIT_REGISTRATION_TO_DOMAIN, \ CFG_ACCESS_CONTROL_NOTIFY_ADMIN_ABOUT_NEW_ACCOUNTS, \ CFG_ACCESS_CONTROL_NOTIFY_USER_ABOUT_NEW_ACCOUNT, \ CFG_APACHE_GROUP_FILE, \ CFG_APACHE_PASSWORD_FILE, \ CFG_SITE_ADMIN_EMAIL, \ CFG_SITE_LANG, \ CFG_SITE_NAME, \ CFG_SITE_NAME_INTL, \ CFG_SITE_SUPPORT_EMAIL, \ CFG_SITE_SECURE_URL, \ CFG_TMPDIR, \ CFG_SITE_URL, \ CFG_WEBSESSION_DIFFERENTIATE_BETWEEN_GUESTS, \ CFG_WEBSESSION_ADDRESS_ACTIVATION_EXPIRE_IN_DAYS, \ CFG_CERN_SITE, \ CFG_WEBSEARCH_PERMITTED_RESTRICTED_COLLECTIONS_LEVEL try: from invenio.session import get_session except ImportError: pass from invenio.dbquery import run_sql, OperationalError, \ serialize_via_marshal, deserialize_via_marshal from invenio.access_control_admin import acc_get_role_id, acc_get_action_roles, acc_get_action_id, acc_is_user_in_role, acc_find_possible_activities from invenio.access_control_mailcookie import mail_cookie_create_mail_activation from invenio.access_control_firerole import acc_firerole_check_user, load_role_definition from invenio.access_control_config import SUPERADMINROLE, CFG_EXTERNAL_AUTH_USING_SSO from invenio.messages import gettext_set_language, wash_languages, wash_language from invenio.mailutils import send_email from invenio.errorlib import register_exception from invenio.webgroup_dblayer import get_groups from invenio.external_authentication import InvenioWebAccessExternalAuthError from invenio.access_control_config import CFG_EXTERNAL_AUTHENTICATION, \ CFG_WEBACCESS_MSGS, CFG_WEBACCESS_WARNING_MSGS, CFG_EXTERNAL_AUTH_DEFAULT import invenio.template tmpl = invenio.template.load('websession') re_invalid_nickname = re.compile(""".*[,'@]+.*""") # pylint: disable=C0301 def createGuestUser(): """Create a guest user , insert into user null values in all fields createGuestUser() -> GuestUserID """ if CFG_ACCESS_CONTROL_LEVEL_GUESTS == 0: try: return run_sql("insert into user (email, note) values ('', '1')") except OperationalError: return None else: try: return run_sql("insert into user (email, note) values ('', '0')") except OperationalError: return None def page_not_authorized(req, referer='', uid='', text='', navtrail='', ln=CFG_SITE_LANG, navmenuid=""): """Show error message when user is not authorized to do something. @param referer: in case the displayed message propose a login link, this is the url to return to after logging in. If not specified it is guessed from req. @param uid: the uid of the user. If not specified it is guessed from req. @param text: the message to be displayed. If not specified it will be guessed from the context. """ from invenio.webpage import page _ = gettext_set_language(ln) - - if not referer: - referer = req.unparsed_uri - - if not CFG_ACCESS_CONTROL_LEVEL_SITE: - title = CFG_WEBACCESS_MSGS[5] - if not uid: - uid = getUid(req) - try: - res = run_sql("SELECT email FROM user WHERE id=%s AND note=1" % uid) - - if res and res[0][0]: - if text: - body = text - else: - body = "%s %s" % (CFG_WEBACCESS_WARNING_MSGS[9] % cgi.escape(res[0][0]), - ("%s %s" % (CFG_WEBACCESS_MSGS[0] % urllib.quote(referer), CFG_WEBACCESS_MSGS[1]))) - else: - if text: - body = text - else: - if CFG_ACCESS_CONTROL_LEVEL_GUESTS == 1: - body = CFG_WEBACCESS_MSGS[3] - else: - body = CFG_WEBACCESS_WARNING_MSGS[4] + CFG_WEBACCESS_MSGS[2] - - except OperationalError, e: - body = _("Database problem") + ': ' + str(e) - - - elif CFG_ACCESS_CONTROL_LEVEL_SITE == 1: - title = CFG_WEBACCESS_MSGS[8] - body = "%s %s" % (CFG_WEBACCESS_MSGS[7], CFG_WEBACCESS_MSGS[2]) - - elif CFG_ACCESS_CONTROL_LEVEL_SITE == 2: - title = CFG_WEBACCESS_MSGS[6] - body = "%s %s" % (CFG_WEBACCESS_MSGS[4], CFG_WEBACCESS_MSGS[2]) + + title = "Maintenance" + body = """ +

    +
    +

    %(title)s

    +

    %(message)s

    + +

    %(contact)s infoscience@epfl.ch.

    +
    + +""" % {'status': _("Maintenance status"), + 'title': _("Infoscience is currently down for maintenance."), + 'message': _("We expect to be back online shortly, thanks for your patience."), + 'contact': _("In case of trouble, please contact"),} + + #if not referer: + # referer = req.unparsed_uri + # + #if not CFG_ACCESS_CONTROL_LEVEL_SITE: + # title = CFG_WEBACCESS_MSGS[5] + # if not uid: + # uid = getUid(req) + # try: + # res = run_sql("SELECT email FROM user WHERE id=%s AND note=1" % uid) + # + # if res and res[0][0]: + # if text: + # body = text + # else: + # body = "%s %s" % (CFG_WEBACCESS_WARNING_MSGS[9] % cgi.escape(res[0][0]), + # ("%s %s" % (CFG_WEBACCESS_MSGS[0] % urllib.quote(referer), CFG_WEBACCESS_MSGS[1]))) + # else: + # if text: + # body = text + # else: + # if CFG_ACCESS_CONTROL_LEVEL_GUESTS == 1: + # body = CFG_WEBACCESS_MSGS[3] + # else: + # body = CFG_WEBACCESS_WARNING_MSGS[4] + CFG_WEBACCESS_MSGS[2] + # + # except OperationalError, e: + # body = _("Database problem") + ': ' + str(e) + # + # + #elif CFG_ACCESS_CONTROL_LEVEL_SITE == 1: + # title = CFG_WEBACCESS_MSGS[8] + # body = "%s %s" % (CFG_WEBACCESS_MSGS[7], CFG_WEBACCESS_MSGS[2]) + # + #elif CFG_ACCESS_CONTROL_LEVEL_SITE == 2: + # title = CFG_WEBACCESS_MSGS[6] + # body = "%s %s" % (CFG_WEBACCESS_MSGS[4], CFG_WEBACCESS_MSGS[2]) return page(title=title, language=ln, uid=getUid(req), body=body, navtrail=navtrail, req=req, - navmenuid=navmenuid) + navmenuid="503", + rssurl="http://blogs.epfl.ch/public/export?blog=infoscience") def getUid(req): """Return user ID taking it from the cookie of the request. Includes control mechanism for the guest users, inserting in the database table when need be, raising the cookie back to the client. User ID is set to 0 when client refuses cookie or we are in the read-only site operation mode. User ID is set to -1 when we are in the permission denied site operation mode. getUid(req) -> userId """ if hasattr(req, '_user_info'): return req._user_info['uid'] if CFG_ACCESS_CONTROL_LEVEL_SITE == 1: return 0 if CFG_ACCESS_CONTROL_LEVEL_SITE == 2: return -1 guest = 0 session = get_session(req) uid = session.get('uid', -1) if uid == -1: # first time, so create a guest user if CFG_WEBSESSION_DIFFERENTIATE_BETWEEN_GUESTS: uid = session['uid'] = createGuestUser() guest = 1 else: if CFG_ACCESS_CONTROL_LEVEL_GUESTS == 0: session['uid'] = 0 return 0 else: return -1 else: if not hasattr(req, '_user_info') and 'user_info' in session: req._user_info = session['user_info'] req._user_info = collect_user_info(req, refresh=True) if guest == 0: guest = isGuestUser(uid) if guest: if CFG_ACCESS_CONTROL_LEVEL_GUESTS == 0: return uid elif CFG_ACCESS_CONTROL_LEVEL_GUESTS >= 1: return -1 else: res = run_sql("SELECT note FROM user WHERE id=%s", (uid, )) if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 0: return uid elif CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 1 and res and res[0][0] in [1, "1"]: return uid else: return -1 def setUid(req, uid, remember_me=False): """It sets the userId into the session, and raise the cookie to the client. """ if hasattr(req, '_user_info'): del req._user_info session = get_session(req) session['uid'] = uid if remember_me: session.set_timeout(86400) session.set_remember_me() if uid > 0: user_info = collect_user_info(req, login_time=True) session['user_info'] = user_info req._user_info = user_info else: del session['user_info'] session.save() return uid def session_param_del(req, key): """ Remove a given key from the session. """ session = get_session(req) del session[key] session.save() def session_param_set(req, key, value): """ Associate a VALUE to the session param KEY for the current session. """ session = get_session(req) session[key] = value session.save() def session_param_get(req, key): """ Return session parameter value associated with session parameter KEY for the current session. If the key doesn't exists raise KeyError. """ session = get_session(req) return session[key] def session_param_list(req): """ List all available session parameters. """ session = get_session(req) return session.keys() def get_last_login(uid): """Return the last_login datetime for uid if any, otherwise return the Epoch.""" res = run_sql('SELECT last_login FROM user WHERE id=%s', (uid, ), 1) if res and res[0][0]: return res[0][0] else: return datetime.datetime(1970, 1, 1) def get_user_info(uid, ln=CFG_SITE_LANG): """Get infos for a given user. @param uid: user id (int) @return: tuple: (uid, nickname, display_name) """ _ = gettext_set_language(ln) query = """SELECT id, nickname FROM user WHERE id=%s""" res = run_sql(query, (uid, )) if res: if res[0]: user = list(res[0]) if user[1]: user.append(user[1]) else: user[1] = str(user[0]) user.append(_("user") + ' #' + str(user[0])) return tuple(user) return (uid, '', _("N/A")) def get_uid_from_email(email): """Return the uid corresponding to an email. Return -1 when the email does not exists.""" try: res = run_sql("SELECT id FROM user WHERE email=%s", (email, )) if res: return res[0][0] else: return -1 except OperationalError: register_exception() return -1 def isGuestUser(uid): """It Checks if the userId corresponds to a guestUser or not isGuestUser(uid) -> boolean """ out = 1 try: res = run_sql("SELECT email FROM user WHERE id=%s LIMIT 1", (uid,), 1) if res: if res[0][0]: out = 0 except OperationalError: register_exception() return out def isUserSubmitter(user_info): """Return True if the user is a submitter for something; False otherwise.""" u_email = get_email(user_info['uid']) res = run_sql("SELECT email FROM sbmSUBMISSIONS WHERE email=%s LIMIT 1", (u_email,), 1) return len(res) > 0 def isUserReferee(user_info): """Return True if the user is a referee for something; False otherwise.""" if CFG_CERN_SITE: return True else: for (role_id, role_name, role_description) in acc_get_action_roles(acc_get_action_id('referee')): if acc_is_user_in_role(user_info, role_id): return True return False def isUserAdmin(user_info): """Return True if the user has some admin rights; False otherwise.""" return acc_find_possible_activities(user_info) != {} def isUserSuperAdmin(user_info): """Return True if the user is superadmin; False otherwise.""" if run_sql("""SELECT r.id FROM accROLE r LEFT JOIN user_accROLE ur ON r.id = ur.id_accROLE WHERE r.name = %s AND ur.id_user = %s AND ur.expiration>=NOW() LIMIT 1""", (SUPERADMINROLE, user_info['uid']), 1): return True return acc_firerole_check_user(user_info, load_role_definition(acc_get_role_id(SUPERADMINROLE))) def nickname_valid_p(nickname): """Check whether wanted NICKNAME supplied by the user is valid. At the moment we just check whether it is not empty, does not contain blanks or @, is not equal to `guest', etc. This check relies on re_invalid_nickname regexp (see above) Return 1 if nickname is okay, return 0 if it is not. """ if nickname and \ not(nickname.startswith(' ') or nickname.endswith(' ')) and \ nickname.lower() != 'guest': if not re_invalid_nickname.match(nickname): return 1 return 0 def email_valid_p(email): """Check whether wanted EMAIL address supplied by the user is valid. At the moment we just check whether it contains '@' and whether it doesn't contain blanks. We also check the email domain if CFG_ACCESS_CONTROL_LIMIT_REGISTRATION_TO_DOMAIN is set. Return 1 if email is okay, return 0 if it is not. """ if (email.find("@") <= 0) or (email.find(" ") > 0): return 0 elif CFG_ACCESS_CONTROL_LIMIT_REGISTRATION_TO_DOMAIN: if not email.endswith(CFG_ACCESS_CONTROL_LIMIT_REGISTRATION_TO_DOMAIN): return 0 return 1 def confirm_email(email): """Confirm the email. It returns None when there are problems, otherwise it return the uid involved.""" if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 0: activated = 1 elif CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 1: activated = 0 elif CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 2: return -1 run_sql('UPDATE user SET note=%s where email=%s', (activated, email)) res = run_sql('SELECT id FROM user where email=%s', (email, )) if res: if CFG_ACCESS_CONTROL_NOTIFY_ADMIN_ABOUT_NEW_ACCOUNTS: send_new_admin_account_warning(email, CFG_SITE_ADMIN_EMAIL) return res[0][0] else: return None def registerUser(req, email, passw, nickname, register_without_nickname=False, login_method=None, ln=CFG_SITE_LANG): """Register user with the desired values of NICKNAME, EMAIL and PASSW. If REGISTER_WITHOUT_NICKNAME is set to True, then ignore desired NICKNAME and do not set any. This is suitable for external authentications so that people can login without having to register an internal account first. Return 0 if the registration is successful, 1 if email is not valid, 2 if nickname is not valid, 3 if email is already in the database, 4 if nickname is already in the database, 5 when users cannot register themselves because of the site policy, 6 when the site is having problem contacting the user. If login_method is None or is equal to the key corresponding to local authentication, then CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS is taken in account for deciding the behaviour about registering. """ # is email valid? email = email.lower() if not email_valid_p(email): return 1 _ = gettext_set_language(ln) # is email already taken? res = run_sql("SELECT email FROM user WHERE email=%s", (email,)) if len(res) > 0: return 3 if register_without_nickname: # ignore desired nick and use default empty string one: nickname = "" else: # is nickname valid? if not nickname_valid_p(nickname): return 2 # is nickname already taken? res = run_sql("SELECT nickname FROM user WHERE nickname=%s", (nickname,)) if len(res) > 0: return 4 activated = 1 # By default activated if not login_method or not CFG_EXTERNAL_AUTHENTICATION[login_method]: # local login if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 2: return 5 elif CFG_ACCESS_CONTROL_NOTIFY_USER_ABOUT_NEW_ACCOUNT: activated = 2 # Email confirmation required elif CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 1: activated = 0 # Administrator confirmation required if CFG_ACCESS_CONTROL_NOTIFY_USER_ABOUT_NEW_ACCOUNT: address_activation_key = mail_cookie_create_mail_activation( email, cookie_timeout=datetime.timedelta( days=CFG_WEBSESSION_ADDRESS_ACTIVATION_EXPIRE_IN_DAYS ) ) ip_address = req.remote_host or req.remote_ip try: if not send_email(CFG_SITE_SUPPORT_EMAIL, email, _("Account registration at %s") % CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME), tmpl.tmpl_account_address_activation_email_body(email, address_activation_key, ip_address, ln)): return 1 except (smtplib.SMTPException, socket.error): return 6 # okay, go on and register the user: user_preference = get_default_user_preferences() uid = run_sql("INSERT INTO user (nickname, email, password, note, settings, last_login) " "VALUES (%s,%s,AES_ENCRYPT(email,%s),%s,%s, NOW())", (nickname, email, passw, activated, serialize_via_marshal(user_preference))) if activated == 1: # Ok we consider the user as logged in :-) setUid(req, uid) return 0 def updateDataUser(uid, email, nickname): """ Update user data. Used when a user changed his email or password or nickname. """ email = email.lower() if email == 'guest': return 0 if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS < 2: run_sql("update user set email=%s where id=%s", (email, uid)) if nickname and nickname != '': run_sql("update user set nickname=%s where id=%s", (nickname, uid)) return 1 def updatePasswordUser(uid, password): """Update the password of a user.""" if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS < 3: run_sql("update user set password=AES_ENCRYPT(email,%s) where id=%s", (password, uid)) return 1 def loginUser(req, p_un, p_pw, login_method): """It is a first simple version for the authentication of user. It returns the id of the user, for checking afterwards if the login is correct """ # p_un passed may be an email or a nickname: p_email = get_email_from_username(p_un) # go on with the old stuff based on p_email: if not login_method in CFG_EXTERNAL_AUTHENTICATION: return ([], p_email, p_pw, 12) if CFG_EXTERNAL_AUTHENTICATION[login_method]: # External Authenthication try: p_email = CFG_EXTERNAL_AUTHENTICATION[login_method].auth_user(p_email, p_pw, req) or CFG_EXTERNAL_AUTHENTICATION[login_method].auth_user(p_un, p_pw, req) ## We try to login with either the email of the nickname if p_email: p_email = p_email.lower() else: return([], p_email, p_pw, 15) except InvenioWebAccessExternalAuthError: register_exception(req=req, alert_admin=True) raise if p_email: # Authenthicated externally query_result = run_sql("SELECT id from user where email=%s", (p_email,)) if not query_result: # First time user p_pw_local = int(random.random() * 1000000) p_nickname = '' if CFG_EXTERNAL_AUTHENTICATION[login_method].enforce_external_nicknames: try: # Let's discover the external nickname! p_nickname = CFG_EXTERNAL_AUTHENTICATION[login_method].fetch_user_nickname(p_email, p_pw, req) except (AttributeError, NotImplementedError): pass except: register_exception(req=req, alert_admin=True) raise res = registerUser(req, p_email, p_pw_local, p_nickname, register_without_nickname=p_nickname == '', login_method=login_method) if res == 4 or res == 2: # The nickname was already taken res = registerUser(req, p_email, p_pw_local, '', register_without_nickname=True, login_method=login_method) query_result = run_sql("SELECT id from user where email=%s", (p_email,)) elif res == 0: # Everything was ok, with or without nickname. query_result = run_sql("SELECT id from user where email=%s", (p_email,)) elif res == 6: # error in contacting the user via email return([], p_email, p_pw_local, 19) else: return([], p_email, p_pw_local, 13) try: groups = CFG_EXTERNAL_AUTHENTICATION[login_method].fetch_user_groups_membership(p_email, p_pw, req) # groups is a dictionary {group_name : group_description,} new_groups = {} for key, value in groups.items(): new_groups[key + " [" + str(login_method) + "]"] = value groups = new_groups except (AttributeError, NotImplementedError): pass except: register_exception(req=req, alert_admin=True) return([], p_email, p_pw, 16) else: # Groups synchronization if groups: userid = query_result[0][0] from invenio.webgroup import synchronize_external_groups synchronize_external_groups(userid, groups, login_method) user_prefs = get_user_preferences(query_result[0][0]) if not CFG_EXTERNAL_AUTHENTICATION[login_method]: ## I.e. if the login method is not of robot type: if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS >= 4: # Let's prevent the user to switch login_method if user_prefs.has_key("login_method") and \ user_prefs["login_method"] != login_method: return([], p_email, p_pw, 11) user_prefs["login_method"] = login_method # Cleaning external settings for key in user_prefs.keys(): if key.startswith('EXTERNAL_'): del user_prefs[key] try: # Importing external settings new_prefs = CFG_EXTERNAL_AUTHENTICATION[login_method].fetch_user_preferences(p_email, p_pw, req) for key, value in new_prefs.items(): user_prefs['EXTERNAL_' + key] = value except (AttributeError, NotImplementedError): pass except InvenioWebAccessExternalAuthError: register_exception(req=req, alert_admin=True) return([], p_email, p_pw, 16) # Storing settings set_user_preferences(query_result[0][0], user_prefs) else: return ([], p_un, p_pw, 10) else: # Internal Authenthication if not p_pw: p_pw = '' query_result = run_sql("SELECT id,email,note from user where email=%s and password=AES_ENCRYPT(email,%s)", (p_email, p_pw,)) if query_result: #FIXME drop external groups and settings note = query_result[0][2] if note == '1': # Good account preferred_login_method = get_user_preferences(query_result[0][0])['login_method'] p_email = query_result[0][1].lower() if login_method != preferred_login_method: if preferred_login_method in CFG_EXTERNAL_AUTHENTICATION: return ([], p_email, p_pw, 11) elif note == '2': # Email address need to be confirmed by user return ([], p_email, p_pw, 17) elif note == '0': # Account need to be confirmed by administrator return ([], p_email, p_pw, 18) else: return ([], p_email, p_pw, 14) # Login successful! Updating the last access time run_sql("UPDATE user SET last_login=NOW() WHERE email=%s", (p_email, )) return (query_result, p_email, p_pw, 0) def drop_external_settings(userId): """Drop the external (EXTERNAL_) settings of userid.""" prefs = get_user_preferences(userId) for key in prefs.keys(): if key.startswith('EXTERNAL_'): del prefs[key] set_user_preferences(userId, prefs) def logoutUser(req): """It logout the user of the system, creating a guest user. """ session = get_session(req) if CFG_WEBSESSION_DIFFERENTIATE_BETWEEN_GUESTS: uid = createGuestUser() session['uid'] = uid session.save() else: uid = 0 session.invalidate() if hasattr(req, '_user_info'): delattr(req, '_user_info') return uid def username_exists_p(username): """Check if USERNAME exists in the system. Username may be either nickname or email. Return 1 if it does exist, 0 if it does not. """ if username == "": # return not exists if asked for guest users return 0 res = run_sql("SELECT email FROM user WHERE email=%s", (username,)) + \ run_sql("SELECT email FROM user WHERE nickname=%s", (username,)) if len(res) > 0: return 1 return 0 def emailUnique(p_email): """Check if the email address only exists once. If yes, return userid, if not, -1 """ query_result = run_sql("select id, email from user where email=%s", (p_email,)) if len(query_result) == 1: return query_result[0][0] elif len(query_result) == 0: return 0 return -1 def nicknameUnique(p_nickname): """Check if the nickname only exists once. If yes, return userid, if not, -1 """ query_result = run_sql("select id, nickname from user where nickname=%s", (p_nickname,)) if len(query_result) == 1: return query_result[0][0] elif len(query_result) == 0: return 0 return -1 def update_Uid(req, p_email, remember_me=False): """It updates the userId of the session. It is used when a guest user is logged in succesfully in the system with a given email and password. As a side effect it will discover all the restricted collection to which the user has right to """ query_ID = int(run_sql("select id from user where email=%s", (p_email,))[0][0]) setUid(req, query_ID, remember_me) return query_ID def send_new_admin_account_warning(new_account_email, send_to, ln=CFG_SITE_LANG): """Send an email to the address given by send_to about the new account new_account_email.""" _ = gettext_set_language(ln) sub = _("New account on") + " '%s'" % CFG_SITE_NAME if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 1: sub += " - " + _("PLEASE ACTIVATE") body = _("A new account has been created on") + " '%s'" % CFG_SITE_NAME if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS == 1: body += _(" and is awaiting activation") body += ":\n\n" body += _(" Username/Email") + ": %s\n\n" % new_account_email body += _("You can approve or reject this account request at") + ": %s/admin/webaccess/webaccessadmin.py/manageaccounts\n" % CFG_SITE_URL return send_email(CFG_SITE_SUPPORT_EMAIL, send_to, subject=sub, content=body) def get_email(uid): """Return email address of the user uid. Return string 'guest' in case the user is not found.""" out = "guest" res = run_sql("SELECT email FROM user WHERE id=%s", (uid,), 1) if res and res[0][0]: out = res[0][0].lower() return out def get_email_from_username(username): """Return email address of the user corresponding to USERNAME. The username may be either nickname or email. Return USERNAME untouched if not found in the database or if found several matching entries. """ if username == '': return '' out = username res = run_sql("SELECT email FROM user WHERE email=%s", (username,), 1) + \ run_sql("SELECT email FROM user WHERE nickname=%s", (username,), 1) if res and len(res) == 1: out = res[0][0].lower() return out #def get_password(uid): #"""Return password of the user uid. Return None in case #the user is not found.""" #out = None #res = run_sql("SELECT password FROM user WHERE id=%s", (uid,), 1) #if res and res[0][0] != None: #out = res[0][0] #return out def get_nickname(uid): """Return nickname of the user uid. Return None in case the user is not found.""" out = None res = run_sql("SELECT nickname FROM user WHERE id=%s", (uid,), 1) if res and res[0][0]: out = res[0][0] return out def get_nickname_or_email(uid): """Return nickname (preferred) or the email address of the user uid. Return string 'guest' in case the user is not found.""" out = "guest" res = run_sql("SELECT nickname, email FROM user WHERE id=%s", (uid,), 1) if res and res[0]: if res[0][0]: out = res[0][0] elif res[0][1]: out = res[0][1].lower() return out def create_userinfobox_body(req, uid, language="en"): """Create user info box body for user UID in language LANGUAGE.""" if req: if req.is_https(): url_referer = CFG_SITE_SECURE_URL + req.unparsed_uri else: url_referer = CFG_SITE_URL + req.unparsed_uri if '/youraccount/logout' in url_referer: url_referer = '' else: url_referer = CFG_SITE_URL user_info = collect_user_info(req) try: return tmpl.tmpl_create_userinfobox(ln=language, url_referer=url_referer, guest = isGuestUser(uid), username = get_nickname_or_email(uid), submitter = user_info['precached_viewsubmissions'], referee = user_info['precached_useapprove'], admin = user_info['precached_useadmin'], usebaskets = user_info['precached_usebaskets'], usemessages = user_info['precached_usemessages'], usealerts = user_info['precached_usealerts'], usegroups = user_info['precached_usegroups'], useloans = user_info['precached_useloans'], usestats = user_info['precached_usestats'] ) except OperationalError: return "" def create_useractivities_menu(req, uid, navmenuid, ln="en"): """Create user activities menu. @param req: request object @param uid: user id @type uid: int @param navmenuid: the section of the website this page belongs (search, submit, baskets, etc.) @type navmenuid: string @param ln: language @type ln: string @return: HTML menu of the user activities @rtype: string """ if req: if req.is_https(): url_referer = CFG_SITE_SECURE_URL + req.unparsed_uri else: url_referer = CFG_SITE_URL + req.unparsed_uri if '/youraccount/logout' in url_referer: url_referer = '' else: url_referer = CFG_SITE_URL user_info = collect_user_info(req) is_user_menu_selected = False if navmenuid == 'personalize' or \ navmenuid.startswith('your') and \ navmenuid != 'youraccount': is_user_menu_selected = True try: - return tmpl.tmpl_create_useractivities_menu( + return tmpl.tmpl_create_useractivities_menu(user_info=user_info, ln=ln, selected=is_user_menu_selected, url_referer=url_referer, guest = isGuestUser(uid), username = get_nickname_or_email(uid), submitter = user_info['precached_viewsubmissions'], referee = user_info['precached_useapprove'], admin = user_info['precached_useadmin'], usebaskets = user_info['precached_usebaskets'], usemessages = user_info['precached_usemessages'], usealerts = user_info['precached_usealerts'], usegroups = user_info['precached_usegroups'], useloans = user_info['precached_useloans'], usestats = user_info['precached_usestats'] ) except OperationalError: return "" def create_adminactivities_menu(req, uid, navmenuid, ln="en"): """Create admin activities menu. @param req: request object @param uid: user id @type uid: int @param navmenuid: the section of the website this page belongs (search, submit, baskets, etc.) @type navmenuid: string @param ln: language @type ln: string @return: HTML menu of the user activities @rtype: string """ _ = gettext_set_language(ln) if req: if req.is_https(): url_referer = CFG_SITE_SECURE_URL + req.unparsed_uri else: url_referer = CFG_SITE_URL + req.unparsed_uri if '/youraccount/logout' in url_referer: url_referer = '' else: url_referer = CFG_SITE_URL user_info = collect_user_info(req) activities = acc_find_possible_activities(user_info, ln) # For BibEdit and BibDocFile menu items, take into consideration # current record whenever possible if activities.has_key(_("Run Record Editor")) or \ activities.has_key(_("Run Document File Manager")) and \ user_info['uri'].startswith('/record/'): try: # Get record ID and try to cast it to an int current_record_id = int(urlparse.urlparse(user_info['uri'])[2].split('/')[2]) except: pass else: if activities.has_key(_("Run Record Editor")): activities[_("Run Record Editor")] = activities[_("Run Record Editor")] + '&#state=edit&recid=' + str(current_record_id) if activities.has_key(_("Run File Manager")): activities[_("Run File Manager")] = activities[_("Run File Manager")] + '&recid=' + str(current_record_id) try: return tmpl.tmpl_create_adminactivities_menu( ln=ln, selected=navmenuid == 'admin', url_referer=url_referer, guest = isGuestUser(uid), username = get_nickname_or_email(uid), submitter = user_info['precached_viewsubmissions'], referee = user_info['precached_useapprove'], admin = user_info['precached_useadmin'], usebaskets = user_info['precached_usebaskets'], usemessages = user_info['precached_usemessages'], usealerts = user_info['precached_usealerts'], usegroups = user_info['precached_usegroups'], useloans = user_info['precached_useloans'], usestats = user_info['precached_usestats'], activities = activities ) except OperationalError: return "" def list_registered_users(): """List all registered users.""" return run_sql("SELECT id,email FROM user where email!=''") def list_users_in_role(role): """List all users of a given role (see table accROLE) @param role: role of user (string) @return: list of uids """ res = run_sql("""SELECT uacc.id_user FROM user_accROLE uacc JOIN accROLE acc ON uacc.id_accROLE=acc.id WHERE acc.name=%s""", (role,)) if res: return map(lambda x: int(x[0]), res) return [] def list_users_in_roles(role_list): """List all users of given roles (see table accROLE) @param role_list: list of roles [string] @return: list of uids """ if not(type(role_list) is list or type(role_list) is tuple): role_list = [role_list] query = """SELECT DISTINCT(uacc.id_user) FROM user_accROLE uacc JOIN accROLE acc ON uacc.id_accROLE=acc.id """ query_addons = "" query_params = () if len(role_list) > 0: query_params = role_list query_addons = " WHERE " for role in role_list[:-1]: query_addons += "acc.name=%s OR " query_addons += "acc.name=%s" res = run_sql(query + query_addons, query_params) if res: return map(lambda x: int(x[0]), res) return [] def get_uid_based_on_pref(prefname, prefvalue): """get the user's UID based where his/her preference prefname has value prefvalue in preferences""" prefs = run_sql("SELECT id, settings FROM user WHERE settings is not NULL") the_uid = None for pref in prefs: try: settings = deserialize_via_marshal(pref[1]) if (settings.has_key(prefname)) and (settings[prefname] == prefvalue): the_uid = pref[0] except: pass return the_uid def get_user_preferences(uid): pref = run_sql("SELECT id, settings FROM user WHERE id=%s", (uid,)) if pref: try: return deserialize_via_marshal(pref[0][1]) except: pass return get_default_user_preferences() # empty dict mean no preferences def set_user_preferences(uid, pref): assert(type(pref) == type({})) run_sql("UPDATE user SET settings=%s WHERE id=%s", (serialize_via_marshal(pref), uid)) def get_default_user_preferences(): user_preference = { 'login_method': ''} if CFG_EXTERNAL_AUTH_DEFAULT in CFG_EXTERNAL_AUTHENTICATION: user_preference['login_method'] = CFG_EXTERNAL_AUTH_DEFAULT return user_preference def get_preferred_user_language(req): def _get_language_from_req_header(accept_language_header): """Extract langs info from req.headers_in['Accept-Language'] which should be set to something similar to: 'fr,en-us;q=0.7,en;q=0.3' """ tmp_langs = {} for lang in accept_language_header.split(','): lang = lang.split(';q=') if len(lang) == 2: lang[1] = lang[1].replace('"', '') # Hack for Yeti robot try: tmp_langs[float(lang[1])] = lang[0] except ValueError: pass else: tmp_langs[1.0] = lang[0] ret = [] priorities = tmp_langs.keys() priorities.sort() priorities.reverse() for priority in priorities: ret.append(tmp_langs[priority]) return ret uid = getUid(req) guest = isGuestUser(uid) new_lang = None preferred_lang = None if not guest: user_preferences = get_user_preferences(uid) preferred_lang = new_lang = user_preferences.get('language', None) if not new_lang: try: new_lang = wash_languages(cgi.parse_qs(req.args)['ln']) except (TypeError, AttributeError, KeyError): pass if not new_lang: try: new_lang = wash_languages(_get_language_from_req_header(req.headers_in['Accept-Language'])) except (TypeError, AttributeError, KeyError): pass new_lang = wash_language(new_lang) if new_lang != preferred_lang and not guest: user_preferences['language'] = new_lang set_user_preferences(uid, user_preferences) return new_lang def collect_user_info(req, login_time=False, refresh=False): """Given the mod_python request object rec or a uid it returns a dictionary containing at least the keys uid, nickname, email, groups, plus any external keys in the user preferences (collected at login time and built by the different external authentication plugins) and if the mod_python request object is provided, also the remote_ip, remote_host, referer, agent fields. NOTE: if req is a mod_python request object, the user_info dictionary is saved into req._user_info (for caching purpouses) setApacheUser & setUid will properly reset it. """ from invenio.search_engine import get_permitted_restricted_collections user_info = { 'remote_ip' : '', 'remote_host' : '', 'referer' : '', 'uri' : '', 'agent' : '', 'uid' : -1, 'nickname' : '', 'email' : '', 'group' : [], 'guest' : '1', 'session' : None, 'precached_permitted_restricted_collections' : [], 'precached_usebaskets' : False, 'precached_useloans' : False, 'precached_usegroups' : False, 'precached_usealerts' : False, 'precached_usemessages' : False, 'precached_viewsubmissions' : False, 'precached_useapprove' : False, 'precached_useadmin' : False, 'precached_usestats' : False, } try: is_req = False if not req: uid = -1 elif type(req) in (type(1), type(1L)): ## req is infact a user identification uid = req elif type(req) is dict: ## req is by mistake already a user_info try: assert(req.has_key('uid')) assert(req.has_key('email')) assert(req.has_key('nickname')) except AssertionError: ## mmh... misuse of collect_user_info. Better warn the admin! register_exception(alert_admin=True) user_info.update(req) return user_info else: is_req = True uid = getUid(req) if hasattr(req, '_user_info') and not login_time: user_info = req._user_info if not refresh: return req._user_info req._user_info = user_info try: user_info['remote_ip'] = req.remote_ip except gaierror: #FIXME: we should support IPV6 too. (hint for FireRole) pass user_info['session'] = get_session(req).sid() user_info['remote_host'] = req.remote_host or '' user_info['referer'] = req.headers_in.get('Referer', '') user_info['uri'] = req.unparsed_uri or () user_info['agent'] = req.headers_in.get('User-Agent', 'N/A') user_info['uid'] = uid user_info['nickname'] = get_nickname(uid) or '' user_info['email'] = get_email(uid) or '' user_info['group'] = [] user_info['guest'] = str(isGuestUser(uid)) if user_info['guest'] == '0': user_info['group'] = [group[1] for group in get_groups(uid)] prefs = get_user_preferences(uid) login_method = prefs['login_method'] ## NOTE: we fall back to default login_method if the login_method ## specified in the user settings does not exist (e.g. after ## a migration.) login_object = CFG_EXTERNAL_AUTHENTICATION.get(login_method, CFG_EXTERNAL_AUTHENTICATION[CFG_EXTERNAL_AUTH_DEFAULT]) if login_object and ((datetime.datetime.now() - get_last_login(uid)).seconds > 3600): ## The user uses an external authentication method and it's a bit since ## she has not performed a login if not CFG_EXTERNAL_AUTH_USING_SSO or ( is_req and req.is_https()): ## If we're using SSO we must be sure to be in HTTPS ## otherwise we can't really read anything, hence ## it's better skeep the synchronization try: groups = login_object.fetch_user_groups_membership(user_info['email'], req=req) # groups is a dictionary {group_name : group_description,} new_groups = {} for key, value in groups.items(): new_groups[key + " [" + str(login_method) + "]"] = value groups = new_groups except (AttributeError, NotImplementedError, TypeError, InvenioWebAccessExternalAuthError): pass else: # Groups synchronization from invenio.webgroup import synchronize_external_groups synchronize_external_groups(uid, groups, login_method) user_info['group'] = [group[1] for group in get_groups(uid)] try: # Importing external settings new_prefs = login_object.fetch_user_preferences(user_info['email'], req=req) for key, value in new_prefs.items(): prefs['EXTERNAL_' + key] = value except (AttributeError, NotImplementedError, TypeError, InvenioWebAccessExternalAuthError): pass else: set_user_preferences(uid, prefs) prefs = get_user_preferences(uid) run_sql('UPDATE user SET last_login=NOW() WHERE id=%s', (uid, )) if prefs: for key, value in prefs.iteritems(): user_info[key.lower()] = value if login_time: ## Heavy computational information from invenio.access_control_engine import acc_authorize_action if CFG_WEBSEARCH_PERMITTED_RESTRICTED_COLLECTIONS_LEVEL > 0: user_info['precached_permitted_restricted_collections'] = get_permitted_restricted_collections(user_info) user_info['precached_usebaskets'] = acc_authorize_action(user_info, 'usebaskets')[0] == 0 user_info['precached_useloans'] = acc_authorize_action(user_info, 'useloans')[0] == 0 user_info['precached_usegroups'] = acc_authorize_action(user_info, 'usegroups')[0] == 0 user_info['precached_usealerts'] = acc_authorize_action(user_info, 'usealerts')[0] == 0 user_info['precached_usemessages'] = acc_authorize_action(user_info, 'usemessages')[0] == 0 user_info['precached_usestats'] = acc_authorize_action(user_info, 'runwebstatadmin')[0] == 0 user_info['precached_viewsubmissions'] = isUserSubmitter(user_info) user_info['precached_useapprove'] = isUserReferee(user_info) user_info['precached_useadmin'] = isUserAdmin(user_info) except Exception, e: register_exception() return user_info def generate_csrf_token(req): """Generate a new CSRF token and store it in the user session. Generate random CSRF token for the current user and store it in the current session. Also, store the time stamp when it was generated. Return tuple (csrf_token, csrf_token_time). """ csrf_token = binascii.hexlify(os.urandom(32)) csrf_token_time = time.time() session_param_set(req, 'csrf_token', csrf_token) session_param_set(req, 'csrf_token_time', csrf_token_time) return (csrf_token, csrf_token_time) def regenerate_csrf_token_if_needed(req, token_expiry=300): """Regenerate CSRF token, if necessary, and store it in session. Check whether user session has stored CSRF token, and whether it is still not expired, i.e. whether not more than `token_expiry` seconds elapsed since current session's CSRF token was created. If not, then create new one. Return tuple (csrf_token, csrf_token_time). """ try: csrf_token = session_param_get(req, 'csrf_token') csrf_token_time = session_param_get(req, 'csrf_token_time') except KeyError: csrf_token, csrf_token_time = generate_csrf_token(req) if csrf_token_time + token_expiry < time.time(): csrf_token, csrf_token_time = generate_csrf_token(req) return (csrf_token, csrf_token_time) def is_csrf_token_valid(req, token_value, token_expiry=300): """Check whether CSRF token is still valid. Take CSRF token value from current session and check whether it is equal to the passed `token_value`. Also, check whether it has not expired yet, i.e. whether not more than `token_expiry` seconds elapsed since current session's CSRF token was created. Return True if everything is OK, False otherwise. """ # retrieve CSRF token from session: try: csrf_token = session_param_get(req, 'csrf_token') except KeyError: return False # retrieve CSRF token's timestamp from session: try: csrf_token_time = session_param_get(req, 'csrf_token_time') except KeyError: return False # is session's CSRF token not yet expired? if csrf_token_time + token_expiry < time.time(): return False # is session's CSRF token equal to given value? if not token_value or token_value != csrf_token: return False # OK, every test passed, we are good: return True diff --git a/modules/webstyle/lib/Makefile.am b/modules/webstyle/lib/Makefile.am index a035342ac..db58d1aad 100644 --- a/modules/webstyle/lib/Makefile.am +++ b/modules/webstyle/lib/Makefile.am @@ -1,42 +1,43 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. pylibdir=$(libdir)/python/invenio wsgiwebdir=$(localstatedir)/www-wsgi/ pylib_DATA = webdoc.py \ webdoc_tests.py \ webdoc_webinterface.py \ webpage.py \ template.py \ webstyle_templates.py \ webstyle_regression_tests.py \ webinterface_handler.py \ webinterface_tests.py \ webinterface_layout.py \ fckeditor_invenio_connector.py \ webinterface_handler_wsgi.py \ webinterface_handler_wsgi_utils.py \ webinterface_handler_config.py \ httptest_webinterface.py \ + webstyle_templates_epfl.py \ ping_webinterface.py wsgiweb_DATA = invenio.wsgi EXTRA_DIST = $(pylib_DATA) $(wsgiweb_DATA) CLEANFILES = *~ *.tmp *.pyc diff --git a/modules/webstyle/lib/webstyle_templates_epfl.py b/modules/webstyle/lib/webstyle_templates_epfl.py new file mode 100644 index 000000000..bb8ea0159 --- /dev/null +++ b/modules/webstyle/lib/webstyle_templates_epfl.py @@ -0,0 +1,1114 @@ +# -*- coding: utf-8 -*- +""" +EPFL templates. +Webstyle handles header, general page design and main navigation. +""" +import urllib, cgi +from datetime import datetime + +from invenio.config import CFG_SITE_LANG, CFG_SITE_URL, CFG_SITE_SECURE_URL, CFG_SITE_NAME, CFG_SITE_NAME_INTL, CFG_SITE_SUPPORT_EMAIL, CFG_VERSION +from invenio.messages import gettext_set_language +from invenio.urlutils import make_canonical_urlargd, create_html_link +from invenio.webuser import collect_user_info +from invenio import webstyle_templates +from xml.sax import saxutils + +class Template(webstyle_templates.Template): + """EPFL template""" + + def tmpl_pageheader(self, req, ln=CFG_SITE_LANG, headertitle="", + description="", keywords="", userinfobox="", + useractivities_menu="", adminactivities_menu="", + navtrailbox="", pageheaderadd="", uid=0, + secure_page_p=0, navmenuid="admin", metaheaderadd="", + rssurl='', body_css_classes=None): + if secure_page_p: + external_scripts = """ + + + + """ + else: + # secure_page_p seems to be empty all the time... Therefore, we + # return https all the time. + external_scripts = """ + + + + """ + + rss = '' + if rssurl: + rss = '' % (CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME), rssurl) + + out = """\ + + + + + %(title)s + + %(rss)s + + + +%(external_scripts)s + + + +%(signature)s +%(metaheaderadd)s + + +%(header)s +
    +%(breadcrumbs)s +%(language)s +
    +

    Infoscience

    + %(message)s +%(navigation)s +""" % {'signature': epfl_header_version(), + 'body_css_classes' : body_css_classes and ' class="%s"' % ' '.join(body_css_classes) or '', + 'ln' : ln, + 'sitename': CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME), + 'sitesupportemail': CFG_SITE_SUPPORT_EMAIL, + 'siteurl': CFG_SITE_URL, + 'rss': rss, + 'unAPIurl': '%s/unapi' % CFG_SITE_URL, + 'metaheaderadd': metaheaderadd, + 'header': epfl_header(ln), + 'title': saxutils.unescape(headertitle), + 'breadcrumbs': navtrailbox, + 'language': self.tmpl_language_selection_box(req, ln), + 'navigation': self.get_navigation(req, useractivities_menu, adminactivities_menu, navmenuid, ln), + 'external_scripts': external_scripts, + 'message': '' #self.maintenance_warning(ln), + } + return out + + def maintenance_warning(self, ln=CFG_SITE_LANG): + return """ +
    + + +

    %(warning)s

    %(message)s

    """ % { + 'warning': ln=='en' and 'Maintenance notice' or 'Avis de maintenance', + 'message': ln=='en' and "Due to the moving of its main server, Infoscience will be set in read-only mode from Wednesday, 20th at 18:00 to Friday 22nd at 9:00. We apologize for the inconvenience. Exports of publication lists on your web sites will not be affected." or "Infoscience ne sera accessible qu'en lecture entre le mercredi 20 à 18h et le vendredi 22 à 9h à cause d'un déplacement de serveur. Nous vous prions de nous excuser pour les désagréments. Les exports de listes de publications vers vos sites web continueront de fonctionner."} + + + + def tmpl_pagefooter(self, req=None, ln=CFG_SITE_LANG, lastupdated=None, pagefooteradd="", ): + _ = gettext_set_language(ln) + + out = """ +
    + +%(pagefooteradd)s + +""" % { + 'about': ln=='fr' and 'a-propos' or 'about', + 'about_label': _("About Infoscience"), + 'contact_label': _("Contact"), + 'accessibility_label': _("Accessibility"), + 'login_link': self.get_login_link(req, ln), + 'ln': ln, + 'pagefooteradd': pagefooteradd, + 'year': datetime.now().year, + 'version': CFG_VERSION, + } + return out + + def get_login_link(self, req, ln=CFG_SITE_LANG): + _ = gettext_set_language(ln) + if req: + if req.subprocess_env.has_key('HTTPS') \ + and req.subprocess_env['HTTPS'] == 'on': + url_referer = CFG_SITE_SECURE_URL + req.unparsed_uri + else: + url_referer = CFG_SITE_URL + req.unparsed_uri + if '/youraccount/logout' in url_referer: + url_referer = '' + else: + url_referer = CFG_SITE_URL + + user_info = collect_user_info(req) + if int(user_info.get('guest', '1')): + login_link = '%(login)s' % { + 'sitesecureurl': CFG_SITE_SECURE_URL, + 'ln' : ln, + 'referer' : url_referer and ('&referer=%s' % urllib.quote(url_referer)) or '', + 'login' : _('Login') + } + else: + login_link = """%(logout)s""" % {'ln' : ln, + 'logout' : _("Logout (%(username)s)") % {'username': user_info.get('external_uid', [None])[0] or user_info.get('email')} + } + return login_link + + + + def tmpl_page(self, req=None, ln=CFG_SITE_LANG, description="", + keywords="", userinfobox="", useractivities_menu="", + adminactivities_menu="", navtrailbox="", + pageheaderadd="", boxlefttop="", boxlefttopadd="", + boxleftbottom="", boxleftbottomadd="", + boxrighttop="", boxrighttopadd="", + boxrightbottom="", boxrightbottomadd="", + titleprologue="", title="", titleepilogue="", + body="", lastupdated=None, pagefooteradd="", uid=0, + secure_page_p=0, navmenuid="", metaheaderadd="", + rssurl=CFG_SITE_URL+"/rss", + show_title_p=True, body_css_classes=None): + + """Creates a complete page + Parameters: + - 'ln' *string* - The language to display + - 'description' *string* - description goes to the metadata in the header of the HTML page + - 'keywords' *string* - keywords goes to the metadata in the header of the HTML page + - 'userinfobox' *string* - the HTML code for the user information box + - 'useractivities_menu' *string* - the HTML code for the user activities menu + - 'adminactivities_menu' *string* - the HTML code for the admin activities menu + - 'navtrailbox' *string* - the HTML code for the navigation trail box + - 'pageheaderadd' *string* - additional page header HTML code + - 'boxlefttop' *string* - left-top box HTML code + - 'boxlefttopadd' *string* - additional left-top box HTML code + - 'boxleftbottom' *string* - left-bottom box HTML code + - 'boxleftbottomadd' *string* - additional left-bottom box HTML code + - 'boxrighttop' *string* - right-top box HTML code + - 'boxrighttopadd' *string* - additional right-top box HTML code + - 'boxrightbottom' *string* - right-bottom box HTML code + - 'boxrightbottomadd' *string* - additional right-bottom box HTML code + - 'title' *string* - the title of the page + - 'titleprologue' *string* - what to print before page title + - 'titleepilogue' *string* - what to print after page title + - 'body' *string* - the body of the page + - 'lastupdated' *string* - when the page was last updated + - 'uid' *int* - user ID + - 'pagefooteradd' *string* - additional page footer HTML code + - 'secure_page_p' *int* (0 or 1) - are we to use HTTPS friendly page elements or not? + - 'navmenuid' *string* - the id of the navigation item to highlight for this page + - 'metaheaderadd' *string* - list of further tags to add to the part of the page + - 'rssurl' *string* - the url of the RSS feed for this page + - 'show_title_p' *int* (0 or 1) - do we display the page title in the body of the page? + - 'body_css_classes' *list* - list of classes to add to the body tag + Output: + - HTML code of the page + """ + # load the right message language + _ = gettext_set_language(ln) + if title == CFG_SITE_NAME: + title = _("Infoscience: Scientific publications of EPFL") + else: + title = title + ' - Infoscience' + + header = self.tmpl_pageheader(req, + ln = ln, + headertitle = title, + description = description, + keywords = keywords, + metaheaderadd = metaheaderadd, + userinfobox = userinfobox, + navtrailbox = navtrailbox, + pageheaderadd = pageheaderadd, + secure_page_p = secure_page_p, + navmenuid=navmenuid, + rssurl=rssurl, + body_css_classes=body_css_classes, + useractivities_menu=useractivities_menu, + adminactivities_menu=adminactivities_menu) + + footer = self.tmpl_pagefooter(req, ln=ln, lastupdated=lastupdated, pagefooteradd=pagefooteradd) + if navmenuid == 'search': + #IDEE: trouver un moyen de reconnaitre webcoll: navmenuid=search; délégation de content, right col + # search: navmenuid=search; délégation de content et right-col + body = body + + elif navmenuid == 'yourbaskets': + body = body + + elif navmenuid == 'youralerts': + body = body + + elif navmenuid == '503': + body = body + + elif boxlefttop or boxlefttopadd or boxleftbottom or boxleftbottomadd or \ + boxrighttop or boxrighttopadd or boxrightbottom or boxrightbottomadd: + body = """ +
    +

    %(title)s

    +%(body)s +
    +
    +%(blt)s +%(blta)s +%(blba)s +%(blb)s +%(brt)s +%(brta)s +%(brba)s +%(brb)s +
    +
    """ % {'title': title, 'body': body, 'navmenuid':navmenuid, + 'blt': boxlefttop, 'blta': boxlefttopadd, + 'blb': boxleftbottom, 'blba': boxleftbottomadd, + 'brt': boxrighttop, 'brta': boxrighttopadd, + 'brb': boxrightbottom, 'brba': boxrightbottomadd } + + + else: + body = """ +
    +

    %(title)s

    +%(body)s +
    +""" % {'title': title, 'body': body, 'navmenuid':navmenuid} + + out = """ +%(header)s +%(body)s +%(footer)s + + + """ % {'header': header, + 'title': title, + 'navigation': self.get_navigation(req, useractivities_menu, adminactivities_menu, navmenuid, ln), + 'body': body, + 'footer': footer, + } + + return out + + def tmpl_language_selection_box(self, req, language=CFG_SITE_LANG): + """Take URLARGS and LANGUAGE and return textual language + selection box for the given page. + Parameters: + - 'req' - The mod_python request object + - 'language' *string* - The selected language + """ + _ = gettext_set_language(language) + argd = {} + if req and req.args: + argd.update(cgi.parse_qs(req.args)) + + if language == 'en': + out = """ + """ + argd['ln'] = 'fr' + else: + out = """ + """ + argd['ln'] = 'en' + return out % (_("Choose your language"), + urllib.quote(req.uri, '/:?') + make_canonical_urlargd(argd, {})) + + + def get_navigation(self, req, useractivities_menu='', adminactivities_menu='', navmenuid='', ln=CFG_SITE_LANG): + _ = gettext_set_language(ln) + search_menu_cls = '' + browse_menu_cls = '' + account_menu_cls = '' + admin_menu_cls = '' + if req.uri.strip() == '/' : + search_menu_cls = '' + elif req.uri.startswith('/collection/'): + browse_menu_cls = 'current' + elif navmenuid == 'search': + search_menu_cls = 'current' + elif navmenuid.startswith('your') or navmenuid == 'personalize': + account_menu_cls = 'current' + elif navmenuid in ['stats', 'collection population', 'search frequency', 'search type distribution', 'download frequency', 'custom event', 'custom event help', 'export', 'batchuploader', 'admin']: + admin_menu_cls = 'current' + + if adminactivities_menu: + admin_menu = """ + """ % {'admin_menu_cls': admin_menu_cls, + 'admin_menu': adminactivities_menu, + 'ln': ln} + else: + admin_menu = '' + + if useractivities_menu: + account_menu = """ + + """ % {'label1': _("My account"), + 'site_url' : CFG_SITE_URL, + 'account_menu_cls': account_menu_cls, + 'account_menu': useractivities_menu, + 'ln': ln} + else: + account_menu = '' + + out = """ + """ + return out % { + 'secure_domain': CFG_SITE_SECURE_URL, + 'search_menu_cls': search_menu_cls, + 'browse_menu_cls': browse_menu_cls, + 'account_menu_cls': account_menu_cls, + 'admin_menu': admin_menu, + 'account_menu': account_menu, + 'ln': ln, + 'search_label': _("Search"), + 'browse_label': _("Browse"), + 'by_school': _("Publications by school"), + 'ENAC': _("ENAC - Architecture, Civil and Environmental Engineering"), + 'IC': _("I&C - Computer & Communication Sciences"), + 'SB': _("SB - Basic Sciences"), + 'STI': _("STI - Engineering"), + 'SV': _("SV - Life Sciences"), + 'CDM': _("CDM - Management of Technology"), + 'CDH': _("CDH - College of Humanities"), + 'ENT': _("ENT - Transdisciplinary Entities"), + 'by_doctype': _("Publications by document type"), + 'ARTICLE': _("Journal Articles"), + 'CONF': _("Conference Papers"), + 'THESIS': _("Theses"), + 'REPORT': _("Reports"), + 'submit_label': _("Deposit / Publish"), + 'help_label': _("Help"), + 'about': _('About Infoscience'), + 'openaccess': _('Open Access & Copyright'), + 'start': _('Start using Infoscience'), + 'add': _('Add a document'), + 'doctypes': _("Document types"), + 'status': _("Publication status"), + 'manage': _("Manage publications"), + 'edit': _("Edit a publication"), + 'remove': _("Remove a publication"), + 'export': _('Export a publication list'), + 'manage_a': _("Manage my account"), + 'basket': _("Create a personal collection"), + 'people': _('Display my publications in people@EPFL'), + 'about_p': ln=='fr' and 'a-propos' or 'about', + 'openaccess_p': ln=='fr' and 'libre-acces' or 'open-access', + 'deposit_p': ln=='fr' and 'deposer' or 'deposit', + 'start_p': ln=='fr' and 'deposer/demarrer' or 'deposit/start', + 'add_p': ln=='fr' and 'deposer/nouveau' or 'deposit/new', + 'doctypes_p': ln=='fr' and 'deposer/types-de-documents' or 'deposit/document-types', + 'status_p': ln=='fr' and 'deposer/statut' or 'deposit/status', + 'search_p': ln=='fr' and 'rechercher' or 'search', + 'manage_p': ln=='fr' and 'gerer-les-publications' or 'manage-publications', + 'edit_p': ln=='fr' and 'gerer-les-publications/editer' or 'manage-publications/edit', + 'remove_p': ln=='fr' and 'gerer-les-publications/supprimer' or 'manage-publications/remove', + 'export_p': ln=='fr' and 'gerer-les-publications/exporter' or 'manage-publications/export', + 'manage_a_p': ln=='fr' and 'gerer-mon-compte' or 'manage-my-account', + 'basket_p': ln=='fr' and 'gerer-mon-compte/collections' or 'manage-my-account/collections', + 'people_p': ln=='fr' and 'gerer-les-publications/people' or 'manage-publications/people', + } + + def tmpl_navtrailbox_body(self, ln, title, previous_links, separator, prolog, epilog): + """Create navigation trail box body + Parameters: + - 'ln' *string* - The language to display + - 'title' *string* - page title; + - 'previous_links' *string* - the trail content from site title until current page (both ends exclusive) + - 'prolog' *string* - HTML code to prefix the navtrail item with + - 'epilog' *string* - HTML code to suffix the navtrail item with + - 'separator' *string* - HTML code that separates two navtrail items + Output: + - text containing the navtrail + """ + _ = gettext_set_language(ln) + previous_links = previous_links.strip() + title = title.strip() + + if title == CFG_SITE_NAME: + # Homepage + return """ + """ % create_html_link('http://www.epfl.ch', {}, 'EPFL', {'title': _("EPFL Homepage")}) + + if previous_links and not previous_links.startswith(' +
  • %s
  • +
  • %s
  • + %s + %s + """ + return out % (create_html_link('http://www.epfl.ch', {}, 'EPFL', {'title': _("EPFL Homepage")}), + create_html_link('/', {'ln': ln}, 'Infoscience', {'title': _("Infoscience Homepage")}), + previous_links, + title) + + + + def detailed_record_container_top(self, recid, tabs, ln=CFG_SITE_LANG, + show_similar_rec_p=True, + creationdate=None, + modificationdate=None, show_short_rec_p=True, + citationnum=-1, referencenum=-1): + """Prints the box displayed in detailed records pages, with tabs at the top. + + Returns content as it is if the number of tabs for this record + is smaller than 2 => EPFL: no tabs!""" + return '' + + def detailed_record_container_bottom(self, recid, tabs, ln=CFG_SITE_LANG, + show_similar_rec_p=True, + creationdate=None, + modificationdate=None, show_short_rec_p=True): + """Prints the box displayed in detailed records pages, with tabs at the top. + + Returns content as it is if the number of tabs for this record + is smaller than 2 => EPFL: no tabs + + """ + # If no tabs, returns nothing + return '' + + def detailed_record_mini_panel(self, recid, ln=CFG_SITE_LANG, + format='hd', + files='', + reviews='', + actions=''): + """Displays the actions dock at the bottom of the detailed record + pages. => EFL: no minipane""" + return '' + + + + +def epfl_header(ln): + #remplacer avec globals + if ln == 'fr': + return """ + + + + +
    + + + + + +
    +
    +""" + else: + return """ + + + +
    + + + + + +
    +
    + """ + + +def epfl_header_version(): + return """ + + + + + """ diff --git a/modules/websubmit/lib/bibdocfile.py b/modules/websubmit/lib/bibdocfile.py index 2d1a2d05a..77fb771c5 100644 --- a/modules/websubmit/lib/bibdocfile.py +++ b/modules/websubmit/lib/bibdocfile.py @@ -1,3771 +1,3826 @@ ## This file is part of Invenio. ## Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """ This module implements the low-level API for dealing with fulltext files. - All the files associated to a I{record} (identified by a I{recid}) can be managed via an instance of the C{BibRecDocs} class. - A C{BibRecDocs} is a wrapper of the list of I{documents} attached to the record. - Each document is represented by an instance of the C{BibDoc} class. - A document is identified by a C{docid} and name (C{docname}). The docname must be unique within the record. A document is the set of all the formats and revisions of a piece of information. - A document has a type called C{doctype} and can have a restriction. - Each physical file, i.e. the concretization of a document into a particular I{version} and I{format} is represented by an instance of the C{BibDocFile} class. - The format is infact the extension of the physical file. - A comment and a description and other information can be associated to a BibDocFile. - A C{bibdoc} is a synonim for a document, while a C{bibdocfile} is a synonim for a physical file. @group Main classes: BibRecDocs,BibDoc,BibDocFile @group Other classes: BibDocMoreInfo,Md5Folder,InvenioWebSubmitFileError @group Main functions: decompose_file,stream_file,bibdocfile_*,download_url @group Configuration Variables: CFG_* """ __revision__ = "$Id$" import os import re import shutil import filecmp import time import random import socket import urllib2 import urllib import tempfile import cPickle import base64 import binascii import cgi import sys if sys.hexversion < 0x2060000: from md5 import md5 else: from hashlib import md5 try: import magic if hasattr(magic, "open"): CFG_HAS_MAGIC = 1 elif hasattr(magic, "Magic"): CFG_HAS_MAGIC = 2 except ImportError: CFG_HAS_MAGIC = 0 from datetime import datetime from mimetypes import MimeTypes from thread import get_ident from invenio import webinterface_handler_config as apache ## Let's set a reasonable timeout for URL request (e.g. FFT) socket.setdefaulttimeout(40) if sys.hexversion < 0x2040000: # pylint: disable=W0622 from sets import Set as set # pylint: enable=W0622 from invenio.shellutils import escape_shell_arg from invenio.dbquery import run_sql, DatabaseError, blob_to_string from invenio.errorlib import register_exception from invenio.bibrecord import record_get_field_instances, \ field_get_subfield_values, field_get_subfield_instances, \ encode_for_xml from invenio.urlutils import create_url from invenio.textutils import nice_size from invenio.access_control_engine import acc_authorize_action from invenio.webuser import collect_user_info from invenio.access_control_admin import acc_is_user_in_role, acc_get_role_id from invenio.access_control_firerole import compile_role_definition, acc_firerole_check_user from invenio.access_control_config import SUPERADMINROLE, CFG_WEBACCESS_WARNING_MSGS from invenio.config import CFG_SITE_LANG, CFG_SITE_URL, \ CFG_WEBDIR, CFG_WEBSUBMIT_FILEDIR,\ CFG_WEBSUBMIT_ADDITIONAL_KNOWN_FILE_EXTENSIONS, \ CFG_WEBSUBMIT_FILESYSTEM_BIBDOC_GROUP_LIMIT, CFG_SITE_SECURE_URL, \ CFG_BIBUPLOAD_FFT_ALLOWED_LOCAL_PATHS, \ CFG_TMPDIR, CFG_PATH_MD5SUM, \ CFG_WEBSUBMIT_STORAGEDIR, \ CFG_BIBDOCFILE_USE_XSENDFILE, \ CFG_BIBDOCFILE_MD5_CHECK_PROBABILITY from invenio.websubmit_config import CFG_WEBSUBMIT_ICON_SUBFORMAT_RE, \ CFG_WEBSUBMIT_DEFAULT_ICON_SUBFORMAT import invenio.template websubmit_templates = invenio.template.load('websubmit') websearch_templates = invenio.template.load('websearch') #: block size when performing I/O. CFG_BIBDOCFILE_BLOCK_SIZE = 1024 * 8 #: threshold used do decide when to use Python MD5 of CLI MD5 algorithm. CFG_BIBDOCFILE_MD5_THRESHOLD = 256 * 1024 #: chunks loaded by the Python MD5 algorithm. CFG_BIBDOCFILE_MD5_BUFFER = 1024 * 1024 #: whether to normalize e.g. ".JPEG" and ".jpg" into .jpeg. CFG_BIBDOCFILE_STRONG_FORMAT_NORMALIZATION = False #: flags that can be associated to files. CFG_BIBDOCFILE_AVAILABLE_FLAGS = ( 'PDF/A', 'STAMPED', 'PDFOPT', 'HIDDEN', 'CONVERTED', 'PERFORM_HIDE_PREVIOUS', 'OCRED' ) #: constant used if FFT correct with the obvious meaning. KEEP_OLD_VALUE = 'KEEP-OLD-VALUE' _mimes = MimeTypes(strict=False) _mimes.suffix_map.update({'.tbz2' : '.tar.bz2'}) _mimes.encodings_map.update({'.bz2' : 'bzip2'}) _magic_cookies = {} if CFG_HAS_MAGIC == 1: def _get_magic_cookies(): """ @return: a tuple of magic object. @rtype: (MAGIC_NONE, MAGIC_COMPRESS, MAGIC_MIME, MAGIC_COMPRESS + MAGIC_MIME) @note: ... not real magic. Just see: man file(1) """ thread_id = get_ident() if thread_id not in _magic_cookies: _magic_cookies[thread_id] = { magic.MAGIC_NONE: magic.open(magic.MAGIC_NONE), magic.MAGIC_COMPRESS: magic.open(magic.MAGIC_COMPRESS), magic.MAGIC_MIME: magic.open(magic.MAGIC_MIME), magic.MAGIC_COMPRESS + magic.MAGIC_MIME: magic.open(magic.MAGIC_COMPRESS + magic.MAGIC_MIME), magic.MAGIC_MIME_TYPE: magic.open(magic.MAGIC_MIME_TYPE), } for key in _magic_cookies[thread_id].keys(): _magic_cookies[thread_id][key].load() return _magic_cookies[thread_id] elif CFG_HAS_MAGIC == 2: def _magic_wrapper(local_path, mime=True, mime_encoding=False): thread_id = get_ident() if (thread_id, mime, mime_encoding) not in _magic_cookies: magic_object = _magic_cookies[thread_id, mime, mime_encoding] = magic.Magic(mime=mime, mime_encoding=mime_encoding) else: magic_object = _magic_cookies[thread_id, mime, mime_encoding] return magic_object.from_file(local_path) def _generate_extensions(): """ Generate the regular expression to match all the known extensions. @return: the regular expression. @rtype: regular expression object """ _tmp_extensions = _mimes.encodings_map.keys() + \ _mimes.suffix_map.keys() + \ _mimes.types_map[1].keys() + \ CFG_WEBSUBMIT_ADDITIONAL_KNOWN_FILE_EXTENSIONS extensions = [] for ext in _tmp_extensions: if ext.startswith('.'): extensions.append(ext) else: extensions.append('.' + ext) extensions.sort() extensions.reverse() extensions = set([ext.lower() for ext in extensions]) extensions = '\\' + '$|\\'.join(extensions) + '$' extensions = extensions.replace('+', '\\+') return re.compile(extensions, re.I) #: Regular expression to recognized extensions. _extensions = _generate_extensions() class InvenioWebSubmitFileError(Exception): """ Exception raised in case of errors related to fulltext files. """ pass def file_strip_ext(afile, skip_version=False, only_known_extensions=False, allow_subformat=True): """ Strip in the best way the extension from a filename. >>> file_strip_ext("foo.tar.gz") 'foo' >>> file_strip_ext("foo.buz.gz") 'foo.buz' >>> file_strip_ext("foo.buz") 'foo' >>> file_strip_ext("foo.buz", only_known_extensions=True) 'foo.buz' >>> file_strip_ext("foo.buz;1", skip_version=False, ... only_known_extensions=True) 'foo.buz;1' >>> file_strip_ext("foo.gif;icon") 'foo' >>> file_strip_ext("foo.gif:icon", allow_subformat=False) 'foo.gif:icon' @param afile: the path/name of a file. @type afile: string @param skip_version: whether to skip a trailing ";version". @type skip_version: bool @param only_known_extensions: whether to strip out only known extensions or to consider as extension anything that follows a dot. @type only_known_extensions: bool @param allow_subformat: whether to consider also subformats as part of the extension. @type allow_subformat: bool @return: the name/path without the extension (and version). @rtype: string """ if skip_version or allow_subformat: afile = afile.split(';')[0] nextfile = _extensions.sub('', afile) if nextfile == afile and not only_known_extensions: nextfile = os.path.splitext(afile)[0] while nextfile != afile: afile = nextfile nextfile = _extensions.sub('', afile) return nextfile def normalize_format(format, allow_subformat=True): """ Normalize the format, e.g. by adding a dot in front. @param format: the format/extension to be normalized. @type format: string @param allow_subformat: whether to consider also subformats as part of the extension. @type allow_subformat: bool @return: the normalized format. @rtype; string """ + + # Infoscience modification + # allow language and allow unicode format + if '&' in format: + format = format.split('&')[0] if allow_subformat: subformat = format[format.rfind(';'):] format = format[:format.rfind(';')] else: subformat = '' if format and format[0] != '.': format = '.' + format if CFG_BIBDOCFILE_STRONG_FORMAT_NORMALIZATION: if format not in ('.Z', '.H', '.C', '.CC'): format = format.lower() format = { '.jpg' : '.jpeg', '.htm' : '.html', '.tif' : '.tiff' }.get(format, format) + if type(format) is unicode: + format = format.encode('utf-8') + if type(subformat) is unicode: + subformat = subformat.encode('utf-8') return format + subformat def guess_format_from_url(url): """ Given a URL tries to guess it's extension. Different method will be used, including HTTP HEAD query, downloading the resource and using mime @param url: the URL for which the extension shuld be guessed. @type url: string @return: the recognized extension or '.bin' if it's impossible to recognize it. @rtype: string """ def parse_content_disposition(text): for item in text.split(';'): item = item.strip() if item.strip().startswith('filename='): return item[len('filename="'):-len('"')] def parse_content_type(text): return text.split(';')[0].strip() def guess_via_magic(local_path): try: if CFG_HAS_MAGIC == 1: magic_cookie = _get_magic_cookies()[magic.MAGIC_MIME_TYPE] mimetype = magic_cookie.file(local_path) elif CFG_HAS_MAGIC == 2: mimetype = _magic_wrapper(local_path, mime=True, mime_encoding=False) if CFG_HAS_MAGIC: ext = _mimes.guess_extension(mimetype) if ext: ## Normalize some common magic mis-interpreation ext = {'.asc': '.txt', '.obj': '.bin'}.get(ext, ext) return normalize_format(ext) except Exception: pass ## Let's try to guess the extension by considering the URL as a filename ext = decompose_file(url, skip_version=True, only_known_extensions=True)[2] if ext.startswith('.'): return ext if is_url_a_local_file(url): ## The URL corresponds to a local file, so we can safely consider ## traditional extensions after the dot. ext = decompose_file(url, skip_version=True, only_known_extensions=False)[2] if ext.startswith('.'): return ext ## No extensions? Let's use Magic. ext = guess_via_magic(url) if ext: return ext else: ## Since the URL is remote, let's try to perform a HEAD request ## and see the corresponding headers info = urllib2.urlopen(url).info() content_disposition = info.getheader('Content-Disposition') if content_disposition: filename = parse_content_disposition(content_disposition) if filename: return decompose_file(filename)[2] content_type = info.getheader('Content-Type') if content_type: content_type = parse_content_type(content_type) if content_type not in ('text/plain', 'application/octet-stream'): ## We actually ignore these mimetypes since they are the ## defaults often returned by Apache in case the mimetype ## was not known ext = _mimes.guess_extension(content_type) if ext: ## Normalize some common magic mis-interpreation ext = {'.asc': '.txt', '.obj': '.bin'}.get(ext, ext) return normalize_format(ext) if CFG_HAS_MAGIC: ## Last solution: let's download the remote resource ## and use the Python magic library to guess the extension filename = "" try: try: filename = download_url(url, format='') ext = guess_via_magic(filename) if ext: return ext except Exception: pass finally: if os.path.exists(filename): ## Let's free space os.remove(filename) return ".bin" _docname_re = re.compile(r'[^-\w.]*') def normalize_docname(docname): """ Normalize the docname. At the moment the normalization is just returning the same string. @param docname: the docname to be normalized. @type docname: string @return: the normalized docname. @rtype: string """ - #return _docname_re.sub('', docname) + if type(docname) is unicode: + docname = docname.encode('utf-8') return docname def normalize_version(version): """ Normalize the version. The version can be either an integer or the keyword 'all'. Any other value will be transformed into the empty string. @param version: the version (either a number or 'all'). @type version: integer or string @return: the normalized version. @rtype: string """ try: int(version) except ValueError: if version.lower().strip() == 'all': return 'all' else: return '' return str(version) def decompose_file(afile, skip_version=False, only_known_extensions=False, allow_subformat=True): """ Decompose a file/path into its components dirname, basename and extension. >>> decompose_file('/tmp/foo.tar.gz') ('/tmp', 'foo', '.tar.gz') >>> decompose_file('/tmp/foo.tar.gz;1', skip_version=True) ('/tmp', 'foo', '.tar.gz') >>> decompose_file('http://www.google.com/index.html') ('http://www.google.com', 'index', '.html') @param afile: the path/name of a file. @type afile: string @param skip_version: whether to skip a trailing ";version". @type skip_version: bool @param only_known_extensions: whether to strip out only known extensions or to consider as extension anything that follows a dot. @type only_known_extensions: bool @param allow_subformat: whether to consider also subformats as part of the extension. @type allow_subformat: bool @return: a tuple with the directory name, the docname and extension. @rtype: (dirname, docname, extension) @note: if a URL is provided, the scheme will be part of the dirname. @see: L{file_strip_ext} for the algorithm used to retrieve the extension. """ + if type(afile) is unicode: + afile = afile.encode('utf-8') if skip_version: version = afile.split(';')[-1] try: int(version) afile = afile[:-len(version)-1] except ValueError: pass basename = os.path.basename(afile) dirname = afile[:-len(basename)-1] base = file_strip_ext( basename, only_known_extensions=only_known_extensions, allow_subformat=allow_subformat) extension = basename[len(base) + 1:] if extension: extension = '.' + extension return (dirname, base, extension) def decompose_file_with_version(afile): """ Decompose a file into dirname, basename, extension and version. >>> decompose_file_with_version('/tmp/foo.tar.gz;1') ('/tmp', 'foo', '.tar.gz', 1) @param afile: the path/name of a file. @type afile: string @return: a tuple with the directory name, the docname, extension and version. @rtype: (dirname, docname, extension, version) @raise ValueError: in case version does not exist it will. @note: if a URL is provided, the scheme will be part of the dirname. """ version_str = afile.split(';')[-1] version = int(version_str) afile = afile[:-len(version_str)-1] basename = os.path.basename(afile) dirname = afile[:-len(basename)-1] base = file_strip_ext(basename) extension = basename[len(base) + 1:] if extension: extension = '.' + extension return (dirname, base, extension, version) def get_subformat_from_format(format): """ @return the subformat if any. @rtype: string >>> get_superformat_from_format('foo;bar') 'bar' >>> get_superformat_from_format('foo') '' """ try: return format[format.rindex(';') + 1:] except ValueError: return '' def get_superformat_from_format(format): """ @return the superformat if any. @rtype: string >>> get_superformat_from_format('foo;bar') 'foo' >>> get_superformat_from_format('foo') 'foo' """ try: return format[:format.rindex(';')] except ValueError: return format def propose_next_docname(docname): """ Given a I{docname}, suggest a new I{docname} (useful when trying to generate a unique I{docname}). >>> propose_next_docname('foo') 'foo_1' >>> propose_next_docname('foo_1') 'foo_2' >>> propose_next_docname('foo_10') 'foo_11' @param docname: the base docname. @type docname: string @return: the next possible docname based on the given one. @rtype: string """ if '_' in docname: split_docname = docname.split('_') try: split_docname[-1] = str(int(split_docname[-1]) + 1) docname = '_'.join(split_docname) except ValueError: docname += '_1' else: docname += '_1' return docname class BibRecDocs: """ This class represents all the files attached to one record. @param recid: the record identifier. @type recid: integer @param deleted_too: whether to consider deleted documents as normal documents (useful when trying to recover deleted information). @type deleted_too: bool @param human_readable: whether numbers should be printed in human readable format (e.g. 2048 bytes -> 2Kb) @ivar id: the record identifier as passed to the constructor. @type id: integer @ivar human_readable: the human_readable flag as passed to the constructor. @type human_readable: bool @ivar deleted_too: the deleted_too flag as passed to the constructor. @type deleted_too: bool @ivar bibdocs: the list of documents attached to the record. @type bibdocs: list of BibDoc """ def __init__(self, recid, deleted_too=False, human_readable=False): try: self.id = int(recid) except ValueError: raise ValueError("BibRecDocs: recid is %s but must be an integer." % repr(recid)) self.human_readable = human_readable self.deleted_too = deleted_too self.bibdocs = [] self.build_bibdoc_list() def __repr__(self): """ @return: the canonical string representation of the C{BibRecDocs}. @rtype: string """ return 'BibRecDocs(%s%s%s)' % (self.id, self.deleted_too and ', True' or '', self.human_readable and ', True' or '' ) def __str__(self): """ @return: an easy to be I{grepped} string representation of the whole C{BibRecDocs} content. @rtype: string """ out = '%i::::total bibdocs attached=%i\n' % (self.id, len(self.bibdocs)) out += '%i::::total size latest version=%s\n' % (self.id, nice_size(self.get_total_size_latest_version())) out += '%i::::total size all files=%s\n' % (self.id, nice_size(self.get_total_size())) for bibdoc in self.bibdocs: out += str(bibdoc) return out def empty_p(self): """ @return: True when the record has no attached documents. @rtype: bool """ return len(self.bibdocs) == 0 def deleted_p(self): """ @return: True if the corresponding record has been deleted. @rtype: bool """ from invenio.search_engine import record_exists return record_exists(self.id) == -1 def get_xml_8564(self): """ Return a snippet of I{MARCXML} representing the I{8564} fields corresponding to the current state. @return: the MARCXML representation. @rtype: string """ from invenio.search_engine import get_record out = '' record = get_record(self.id) fields = record_get_field_instances(record, '856', '4', ' ') for field in fields: urls = field_get_subfield_values(field, 'u') if urls and not bibdocfile_url_p(urls[0]): out += '\t\n' for subfield, value in field_get_subfield_instances(field): out += '\t\t%s\n' % (subfield, encode_for_xml(value)) out += '\t\n' for afile in self.list_latest_files(list_hidden=False): out += '\t\n' url = afile.get_url() description = afile.get_description() comment = afile.get_comment() if url: out += '\t\t%s\n' % encode_for_xml(url) if description: out += '\t\t%s\n' % encode_for_xml(description) if comment: out += '\t\t%s\n' % encode_for_xml(comment) out += '\t\n' return out def get_total_size_latest_version(self): """ Returns the total size used on disk by all the files belonging to this record and corresponding to the latest version. @return: the total size. @rtype: integer """ size = 0 for bibdoc in self.bibdocs: size += bibdoc.get_total_size_latest_version() return size def get_total_size(self): """ Return the total size used on disk of all the files belonging to this record of any version (not only the last as in L{get_total_size_latest_version}). @return: the total size. @rtype: integer """ size = 0 for bibdoc in self.bibdocs: size += bibdoc.get_total_size() return size def build_bibdoc_list(self): """ This method must be called everytime a I{bibdoc} is added, removed or modified. """ self.bibdocs = [] if self.deleted_too: res = run_sql("""SELECT id_bibdoc, type FROM bibrec_bibdoc JOIN bibdoc ON id=id_bibdoc WHERE id_bibrec=%s ORDER BY docname ASC""", (self.id,)) else: res = run_sql("""SELECT id_bibdoc, type FROM bibrec_bibdoc JOIN bibdoc ON id=id_bibdoc WHERE id_bibrec=%s AND status<>'DELETED' ORDER BY docname ASC""", (self.id,)) for row in res: cur_doc = BibDoc(docid=row[0], recid=self.id, doctype=row[1], human_readable=self.human_readable) self.bibdocs.append(cur_doc) def list_bibdocs(self, doctype=''): """ Returns the list all bibdocs object belonging to a recid. If C{doctype} is set, it returns just the bibdocs of that doctype. @param doctype: the optional doctype. @type doctype: string @return: the list of bibdocs. @rtype: list of BibDoc """ if not doctype: return self.bibdocs else: return [bibdoc for bibdoc in self.bibdocs if doctype == bibdoc.doctype] def get_bibdoc_names(self, doctype=''): """ Returns all the names of the documents associated with the bibdoc. If C{doctype} is set, restrict the result to all the matching doctype. @param doctype: the optional doctype. @type doctype: string @return: the list of document names. @rtype: list of string """ return [bibdoc.docname for bibdoc in self.list_bibdocs(doctype)] def check_file_exists(self, path): """ Check if a file with the same content of the file pointed in C{path} is already attached to this record. @param path: the file to be checked against. @type path: string @return: True if a file with the requested content is already attached to the record. @rtype: bool """ size = os.path.getsize(path) # Let's consider all the latest files files = self.list_latest_files() # Let's consider all the latest files with same size potential = [afile for afile in files if afile.get_size() == size] if potential: checksum = calculate_md5(path) # Let's consider all the latest files with the same size and the # same checksum potential = [afile for afile in potential if afile.get_checksum() == checksum] if potential: potential = [afile for afile in potential if filecmp.cmp(afile.get_full_path(), path)] if potential: return True else: # Gosh! How unlucky, same size, same checksum but not same # content! pass return False def propose_unique_docname(self, docname): """ Given C{docname}, return a new docname that is not already attached to the record. @param docname: the reference docname. @type docname: string @return: a docname not already attached. @rtype: string """ docname = normalize_docname(docname) goodname = docname i = 1 while goodname in self.get_bibdoc_names(): i += 1 goodname = "%s_%s" % (docname, i) return goodname def merge_bibdocs(self, docname1, docname2): """ This method merge C{docname2} into C{docname1}. 1. Given all the formats of the latest version of the files attached to C{docname2}, these files are added as new formats into C{docname1}. 2. C{docname2} is marked as deleted. @raise InvenioWebSubmitFileError: if at least one format in C{docname2} already exists in C{docname1}. (In this case the two bibdocs are preserved) @note: comments and descriptions are also copied. @note: if C{docname2} has a I{restriction}(i.e. if the I{status} is set) and C{docname1} doesn't, the restriction is imported. """ bibdoc1 = self.get_bibdoc(docname1) bibdoc2 = self.get_bibdoc(docname2) ## Check for possibility for bibdocfile in bibdoc2.list_latest_files(): format = bibdocfile.get_format() if bibdoc1.format_already_exists_p(format): raise InvenioWebSubmitFileError('Format %s already exists in bibdoc %s of record %s. It\'s impossible to merge bibdoc %s into it.' % (format, docname1, self.id, docname2)) ## Importing restriction if needed. restriction1 = bibdoc1.get_status() restriction2 = bibdoc2.get_status() if restriction2 and not restriction1: bibdoc1.set_status(restriction2) ## Importing formats for bibdocfile in bibdoc2.list_latest_files(): format = bibdocfile.get_format() comment = bibdocfile.get_comment() description = bibdocfile.get_description() bibdoc1.add_file_new_format(bibdocfile.get_full_path(), description=description, comment=comment, format=format) ## Finally deleting old bibdoc2 bibdoc2.delete() self.build_bibdoc_list() def get_docid(self, docname): """ @param docname: the document name. @type docname: string @return: the identifier corresponding to the given C{docname}. @rtype: integer @raise InvenioWebSubmitFileError: if the C{docname} does not corresponds to a document attached to this record. """ for bibdoc in self.bibdocs: if bibdoc.docname == docname: return bibdoc.id raise InvenioWebSubmitFileError, "Recid '%s' is not connected with a " \ "docname '%s'" % (self.id, docname) def get_docname(self, docid): """ @param docid: the document identifier. @type docid: integer @return: the name of the document corresponding to the given document identifier. @rtype: string @raise InvenioWebSubmitFileError: if the C{docid} does not corresponds to a document attached to this record. """ for bibdoc in self.bibdocs: if bibdoc.id == docid: - return bibdoc.docname + return bibdoc.get_docname() raise InvenioWebSubmitFileError, "Recid '%s' is not connected with a " \ "docid '%s'" % (self.id, docid) def has_docname_p(self, docname): """ @param docname: the document name, @type docname: string @return: True if a document with the given name is attached to this record. @rtype: bool """ for bibdoc in self.bibdocs: if bibdoc.docname == docname: return True return False def get_bibdoc(self, docname): """ @return: the bibdoc with a particular docname associated with this recid""" for bibdoc in self.bibdocs: - if bibdoc.docname == docname: + if bibdoc.get_docname() == normalize_docname(docname): return bibdoc - raise InvenioWebSubmitFileError, "Recid '%s' is not connected with " \ - " docname '%s'" % (self.id, docname) + raise InvenioWebSubmitFileError, "Recid '%s' is not connected with docname" % self.id def delete_bibdoc(self, docname): """ Deletes the document with the specified I{docname}. @param docname: the document name. @type docname: string """ for bibdoc in self.bibdocs: if bibdoc.docname == docname: bibdoc.delete() self.build_bibdoc_list() def add_bibdoc(self, doctype="Main", docname='file', never_fail=False): """ Add a new empty document object (a I{bibdoc}) to the list of documents of this record. @param doctype: the document type. @type doctype: string @param docname: the document name. @type docname: string @param never_fail: if True, this procedure will not fail, even if a document with the given name is already attached to this record. In this case a new name will be generated (see L{propose_unique_docname}). @type never_fail: bool @return: the newly created document object. @rtype: BibDoc @raise InvenioWebSubmitFileError: in case of any error. """ try: docname = normalize_docname(docname) if never_fail: docname = self.propose_unique_docname(docname) if docname in self.get_bibdoc_names(): raise InvenioWebSubmitFileError, "%s has already a bibdoc with docname %s" % (self.id, docname) else: bibdoc = BibDoc(recid=self.id, doctype=doctype, docname=docname, human_readable=self.human_readable) self.build_bibdoc_list() return bibdoc except Exception, e: register_exception() raise InvenioWebSubmitFileError(str(e)) def add_new_file(self, fullpath, doctype="Main", docname=None, never_fail=False, description=None, comment=None, format=None, flags=None): """ Directly add a new file to this record. Adds a new file with the following policy: - if the C{docname} is not set it is retrieved from the name of the file. - If a bibdoc with the given docname doesn't already exist, it is created and the file is added to it. - It it exist but it doesn't contain the format that is being added, the new format is added. - If the format already exists then if C{never_fail} is True a new bibdoc is created with a similar name but with a progressive number as a suffix and the file is added to it (see L{propose_unique_docname}). @param fullpath: the filesystme path of the document to be added. @type fullpath: string @param doctype: the type of the document. @type doctype: string @param docname: the document name. @type docname: string @param never_fail: if True, this procedure will not fail, even if a document with the given name is already attached to this record. In this case a new name will be generated (see L{propose_unique_docname}). @type never_fail: bool @param description: an optional description of the file. @type description: string @param comment: an optional comment to the file. @type comment: string @param format: the extension of the file. If not specified it will be guessed (see L{guess_format_from_url}). @type format: string @param flags: a set of flags to be associated with the file (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}) @type flags: list of string @return: the elaborated document object. @rtype: BibDoc @raise InvenioWebSubmitFileError: in case of error. """ if docname is None: docname = decompose_file(fullpath)[1] if format is None: format = decompose_file(fullpath)[2] docname = normalize_docname(docname) try: bibdoc = self.get_bibdoc(docname) except InvenioWebSubmitFileError: # bibdoc doesn't already exists! bibdoc = self.add_bibdoc(doctype, docname, False) bibdoc.add_file_new_version(fullpath, description=description, comment=comment, format=format, flags=flags) self.build_bibdoc_list() else: try: bibdoc.add_file_new_format(fullpath, description=description, comment=comment, format=format, flags=flags) self.build_bibdoc_list() except InvenioWebSubmitFileError, e: # Format already exist! if never_fail: bibdoc = self.add_bibdoc(doctype, docname, True) bibdoc.add_file_new_version(fullpath, description=description, comment=comment, format=format, flags=flags) self.build_bibdoc_list() else: raise return bibdoc def add_new_version(self, fullpath, docname=None, description=None, comment=None, format=None, flags=None): """ Adds a new file to an already existent document object as a new version. @param fullpath: the filesystem path of the file to be added. @type fullpath: string @param docname: the document name. If not specified it will be extracted from C{fullpath} (see L{decompose_file}). @type docname: string @param description: an optional description for the file. @type description: string @param comment: an optional comment to the file. @type comment: string @param format: the extension of the file. If not specified it will be guessed (see L{guess_format_from_url}). @type format: string @param flags: a set of flags to be associated with the file (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}) @type flags: list of string @return: the elaborated document object. @rtype: BibDoc @raise InvenioWebSubmitFileError: in case of error. @note: previous files associated with the same document will be considered obsolete. """ if docname is None: docname = decompose_file(fullpath)[1] if format is None: format = decompose_file(fullpath)[2] if flags is None: flags = [] bibdoc = self.get_bibdoc(docname=docname) bibdoc.add_file_new_version(fullpath, description=description, comment=comment, format=format, flags=flags) self.build_bibdoc_list() return bibdoc def add_new_format(self, fullpath, docname=None, description=None, comment=None, format=None, flags=None): """ Adds a new file to an already existent document object as a new format. @param fullpath: the filesystem path of the file to be added. @type fullpath: string @param docname: the document name. If not specified it will be extracted from C{fullpath} (see L{decompose_file}). @type docname: string @param description: an optional description for the file. @type description: string @param comment: an optional comment to the file. @type comment: string @param format: the extension of the file. If not specified it will be guessed (see L{guess_format_from_url}). @type format: string @param flags: a set of flags to be associated with the file (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}) @type flags: list of string @return: the elaborated document object. @rtype: BibDoc @raise InvenioWebSubmitFileError: in case the same format already exists. """ if docname is None: docname = decompose_file(fullpath)[1] if format is None: format = decompose_file(fullpath)[2] if flags is None: flags = [] bibdoc = self.get_bibdoc(docname=docname) bibdoc.add_file_new_format(fullpath, description=description, comment=comment, format=format, flags=flags) self.build_bibdoc_list() return bibdoc def list_latest_files(self, doctype='', list_hidden=True): """ Returns a list of the latest files. @param doctype: if set, only document of the given type will be listed. @type doctype: string @param list_hidden: if True, will list also files with the C{HIDDEN} flag being set. @type list_hidden: bool @return: the list of latest files. @rtype: list of BibDocFile """ docfiles = [] for bibdoc in self.list_bibdocs(doctype): docfiles += bibdoc.list_latest_files(list_hidden=list_hidden) return docfiles def display(self, docname="", version="", doctype="", ln=CFG_SITE_LANG, verbose=0, display_hidden=True): """ Returns an HTML representation of the the attached documents. @param docname: if set, include only the requested document. @type docname: string @param version: if not set, only the last version will be displayed. If 'all', all versions will be displayed. @type version: string (integer or 'all') @param doctype: is set, include only documents of the requested type. @type doctype: string @param ln: the language code. @type ln: string @param verbose: if greater than 0, includes debug information. @type verbose: integer @param display_hidden: whether to include hidden files as well. @type display_hidden: bool @return: the formatted representation. @rtype: HTML string """ t = "" if docname: try: bibdocs = [self.get_bibdoc(docname)] except InvenioWebSubmitFileError: bibdocs = self.list_bibdocs(doctype) else: bibdocs = self.list_bibdocs(doctype) if bibdocs: types = list_types_from_array(bibdocs) fulltypes = [] for mytype in types: if mytype in ('Plot', 'PlotMisc'): # FIXME: quick hack to ignore plot-like doctypes # on Files tab continue fulltype = { 'name' : mytype, 'content' : [], } for bibdoc in bibdocs: if mytype == bibdoc.get_type(): fulltype['content'].append(bibdoc.display(version, ln=ln, display_hidden=display_hidden)) fulltypes.append(fulltype) if verbose >= 9: verbose_files = str(self) else: verbose_files = '' t = websubmit_templates.tmpl_bibrecdoc_filelist( ln=ln, types = fulltypes, verbose_files=verbose_files ) return t def fix(self, docname): """ Algorithm that transform a broken/old bibdoc into a coherent one. Think of it as being the fsck of BibDocs. - All the files in the bibdoc directory will be renamed according to the document name. Proper .recid, .type, .md5 files will be created/updated. - In case of more than one file with the same format version a new bibdoc will be created in order to put does files. @param docname: the document name that need to be fixed. @type docname: string @return: the list of newly created bibdocs if any. @rtype: list of BibDoc @raise InvenioWebSubmitFileError: in case of issues that can not be fixed automatically. """ bibdoc = self.get_bibdoc(docname) versions = {} res = [] new_bibdocs = [] # List of files with the same version/format of # existing file which need new bibdoc. counter = 0 zero_version_bug = False if os.path.exists(bibdoc.basedir): for filename in os.listdir(bibdoc.basedir): if filename[0] != '.' and ';' in filename: name, version = filename.split(';') try: version = int(version) except ValueError: # Strange name register_exception() raise InvenioWebSubmitFileError, "A file called %s exists under %s. This is not a valid name. After the ';' there must be an integer representing the file version. Please, manually fix this file either by renaming or by deleting it." % (filename, bibdoc.basedir) if version == 0: zero_version_bug = True format = name[len(file_strip_ext(name)):] format = normalize_format(format) if not versions.has_key(version): versions[version] = {} new_name = 'FIXING-%s-%s' % (str(counter), name) try: shutil.move('%s/%s' % (bibdoc.basedir, filename), '%s/%s' % (bibdoc.basedir, new_name)) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Error in renaming '%s' to '%s': '%s'" % ('%s/%s' % (bibdoc.basedir, filename), '%s/%s' % (bibdoc.basedir, new_name), e) if versions[version].has_key(format): new_bibdocs.append((new_name, version)) else: versions[version][format] = new_name counter += 1 elif filename[0] != '.': # Strange name register_exception() raise InvenioWebSubmitFileError, "A file called %s exists under %s. This is not a valid name. There should be a ';' followed by an integer representing the file version. Please, manually fix this file either by renaming or by deleting it." % (filename, bibdoc.basedir) else: # we create the corresponding storage directory old_umask = os.umask(022) os.makedirs(bibdoc.basedir) # and save the father record id if it exists try: if self.id != "": recid_fd = open("%s/.recid" % bibdoc.basedir, "w") recid_fd.write(str(self.id)) recid_fd.close() if bibdoc.doctype != "": type_fd = open("%s/.type" % bibdoc.basedir, "w") type_fd.write(str(bibdoc.doctype)) type_fd.close() except Exception, e: register_exception() raise InvenioWebSubmitFileError, e os.umask(old_umask) if not versions: bibdoc.delete() else: for version, formats in versions.iteritems(): if zero_version_bug: version += 1 for format, filename in formats.iteritems(): destination = '%s%s;%i' % (docname, format, version) try: shutil.move('%s/%s' % (bibdoc.basedir, filename), '%s/%s' % (bibdoc.basedir, destination)) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Error in renaming '%s' to '%s': '%s'" % ('%s/%s' % (bibdoc.basedir, filename), '%s/%s' % (bibdoc.basedir, destination), e) try: recid_fd = open("%s/.recid" % bibdoc.basedir, "w") recid_fd.write(str(self.id)) recid_fd.close() type_fd = open("%s/.type" % bibdoc.basedir, "w") type_fd.write(str(bibdoc.doctype)) type_fd.close() except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Error in creating .recid and .type file for '%s' folder: '%s'" % (bibdoc.basedir, e) self.build_bibdoc_list() res = [] for (filename, version) in new_bibdocs: if zero_version_bug: version += 1 new_bibdoc = self.add_bibdoc(doctype=bibdoc.doctype, docname=docname, never_fail=True) new_bibdoc.add_file_new_format('%s/%s' % (bibdoc.basedir, filename), version) res.append(new_bibdoc) try: os.remove('%s/%s' % (bibdoc.basedir, filename)) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Error in removing '%s': '%s'" % ('%s/%s' % (bibdoc.basedir, filename), e) Md5Folder(bibdoc.basedir).update(only_new=False) bibdoc._build_file_list() self.build_bibdoc_list() for bibdoc in self.bibdocs: if not run_sql('SELECT more_info FROM bibdoc WHERE id=%s', (bibdoc.id,)): ## Import from MARC only if the bibdoc has never had ## its more_info initialized. try: bibdoc.import_descriptions_and_comments_from_marc() except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Error in importing description and comment from %s for record %s: %s" % (repr(bibdoc), self.id, e) return res def check_format(self, docname): """ Check for any format related issue. In case L{CFG_WEBSUBMIT_ADDITIONAL_KNOWN_FILE_EXTENSIONS} is altered or Python version changes, it might happen that a docname contains files which are no more docname + .format ; version, simply because the .format is now recognized (and it was not before, so it was contained into the docname). This algorithm verify if it is necessary to fix (seel L{fix_format}). @param docname: the document name whose formats should be verified. @type docname: string @return: True if format is correct. False if a fix is needed. @rtype: bool @raise InvenioWebSubmitFileError: in case of any error. """ bibdoc = self.get_bibdoc(docname) correct_docname = decompose_file(docname + '.pdf')[1] if docname != correct_docname: return False for filename in os.listdir(bibdoc.basedir): if not filename.startswith('.'): try: dummy, dummy, format, version = decompose_file_with_version(filename) except Exception: raise InvenioWebSubmitFileError('Incorrect filename "%s" for docname %s for recid %i' % (filename, docname, self.id)) if '%s%s;%i' % (correct_docname, format, version) != filename: return False return True def check_duplicate_docnames(self): """ Check wethever the record is connected with at least tho documents with the same name. @return: True if everything is fine. @rtype: bool """ docnames = set() for docname in self.get_bibdoc_names(): if docname in docnames: return False else: docnames.add(docname) return True def uniformize_bibdoc(self, docname): """ This algorithm correct wrong file name belonging to a bibdoc. @param docname: the document name whose formats should be verified. @type docname: string """ bibdoc = self.get_bibdoc(docname) for filename in os.listdir(bibdoc.basedir): if not filename.startswith('.'): try: dummy, dummy, format, version = decompose_file_with_version(filename) except ValueError: register_exception(alert_admin=True, prefix= "Strange file '%s' is stored in %s" % (filename, bibdoc.basedir)) else: os.rename(os.path.join(bibdoc.basedir, filename), os.path.join(bibdoc.basedir, '%s%s;%i' % (docname, format, version))) Md5Folder(bibdoc.basedir).update() bibdoc.touch() bibdoc._build_file_list('rename') def fix_format(self, docname, skip_check=False): """ Fixes format related inconsistencies. @param docname: the document name whose formats should be verified. @type docname: string @param skip_check: if True assume L{check_format} has already been called and the need for fix has already been found. If False, will implicitly call L{check_format} and skip fixing if no error is found. @type skip_check: bool @return: in case merging two bibdocs is needed but it's not possible. @rtype: bool """ if not skip_check: if self.check_format(docname): return True bibdoc = self.get_bibdoc(docname) correct_docname = decompose_file(docname + '.pdf')[1] need_merge = False if correct_docname != docname: need_merge = self.has_docname_p(correct_docname) if need_merge: proposed_docname = self.propose_unique_docname(correct_docname) run_sql('UPDATE bibdoc SET docname=%s WHERE id=%s', (proposed_docname, bibdoc.id)) self.build_bibdoc_list() self.uniformize_bibdoc(proposed_docname) try: self.merge_bibdocs(docname, proposed_docname) except InvenioWebSubmitFileError: return False else: run_sql('UPDATE bibdoc SET docname=%s WHERE id=%s', (correct_docname, bibdoc.id)) self.build_bibdoc_list() self.uniformize_bibdoc(correct_docname) else: self.uniformize_bibdoc(docname) return True def fix_duplicate_docnames(self, skip_check=False): """ Algotirthm to fix duplicate docnames. If a record is connected with at least two bibdoc having the same docname, the algorithm will try to merge them. @param skip_check: if True assume L{check_duplicate_docnames} has already been called and the need for fix has already been found. If False, will implicitly call L{check_duplicate_docnames} and skip fixing if no error is found. @type skip_check: bool """ if not skip_check: if self.check_duplicate_docnames(): return docnames = set() for bibdoc in self.list_bibdocs(): docname = bibdoc.docname if docname in docnames: new_docname = self.propose_unique_docname(bibdoc.docname) bibdoc.change_name(new_docname) self.merge_bibdocs(docname, new_docname) docnames.add(docname) class BibDoc: """ This class represents one document (i.e. a set of files with different formats and with versioning information that consitutes a piece of information. To instanciate a new document, the recid and the docname are mandatory. To instanciate an already existing document, either the recid and docname or the docid alone are sufficient to retrieve it. @param docid: the document identifier. @type docid: integer @param recid: the record identifier of the record to which this document belongs to. If the C{docid} is specified the C{recid} is automatically retrieven from the database. @type recid: integer @param docname: the document name. @type docname: string @param doctype: the document type (used when instanciating a new document). @type doctype: string @param human_readable: whether sizes should be represented in a human readable format. @type human_readable: bool @raise InvenioWebSubmitFileError: in case of error. """ def __init__ (self, docid=None, recid=None, docname=None, doctype='Main', human_readable=False): """Constructor of a bibdoc. At least the docid or the recid/docname pair is needed.""" # docid is known, the document already exists if docname: docname = normalize_docname(docname) self.docfiles = [] self.md5s = None self.related_files = [] self.human_readable = human_readable if docid: if not recid: res = run_sql("SELECT id_bibrec,type FROM bibrec_bibdoc WHERE id_bibdoc=%s LIMIT 1", (docid,), 1) if res: recid = res[0][0] doctype = res[0][1] else: res = run_sql("SELECT id_bibdoc1,type FROM bibdoc_bibdoc WHERE id_bibdoc2=%s LIMIT 1", (docid,), 1) if res: main_docid = res[0][0] doctype = res[0][1] res = run_sql("SELECT id_bibrec,type FROM bibrec_bibdoc WHERE id_bibdoc=%s LIMIT 1", (main_docid,), 1) if res: recid = res[0][0] else: raise InvenioWebSubmitFileError, "The docid %s associated with docid %s is not associated with any record" % (main_docid, docid) else: raise InvenioWebSubmitFileError, "The docid %s is not associated to any recid or other docid" % docid else: res = run_sql("SELECT type FROM bibrec_bibdoc WHERE id_bibrec=%s AND id_bibdoc=%s LIMIT 1", (recid, docid,), 1) if res: doctype = res[0][0] else: #this bibdoc isn't associated with the corresponding bibrec. raise InvenioWebSubmitFileError, "Docid %s is not associated with the recid %s" % (docid, recid) # gather the other information res = run_sql("SELECT id,status,docname,creation_date,modification_date,text_extraction_date,more_info FROM bibdoc WHERE id=%s LIMIT 1", (docid,), 1) if res: self.cd = res[0][3] self.md = res[0][4] self.td = res[0][5] self.recid = recid self.docname = res[0][2] self.id = docid self.status = res[0][1] self.more_info = BibDocMoreInfo(docid, blob_to_string(res[0][6])) self.basedir = _make_base_dir(self.id) self.doctype = doctype else: # this bibdoc doesn't exist raise InvenioWebSubmitFileError, "The docid %s does not exist." % docid # else it is a new document else: if not docname: raise InvenioWebSubmitFileError, "You should specify the docname when creating a new bibdoc" else: self.recid = recid self.doctype = doctype self.docname = docname self.status = '' if recid: res = run_sql("SELECT b.id FROM bibrec_bibdoc bb JOIN bibdoc b on bb.id_bibdoc=b.id WHERE bb.id_bibrec=%s AND b.docname=%s LIMIT 1", (recid, docname), 1) if res: raise InvenioWebSubmitFileError, "A bibdoc called %s already exists for recid %s" % (docname, recid) self.id = run_sql("INSERT INTO bibdoc (status,docname,creation_date,modification_date) " "values(%s,%s,NOW(),NOW())", (self.status, docname)) if self.id: # we link the document to the record if a recid was # specified self.more_info = BibDocMoreInfo(self.id) res = run_sql("SELECT creation_date, modification_date, text_extraction_date FROM bibdoc WHERE id=%s", (self.id,)) self.cd = res[0][0] self.md = res[0][1] self.td = res[0][2] else: raise InvenioWebSubmitFileError, "New docid cannot be created" try: self.basedir = _make_base_dir(self.id) # we create the corresponding storage directory if not os.path.exists(self.basedir): old_umask = os.umask(022) os.makedirs(self.basedir) # and save the father record id if it exists try: if self.recid: recid_fd = open("%s/.recid" % self.basedir, "w") recid_fd.write(str(self.recid)) recid_fd.close() if self.doctype: type_fd = open("%s/.type" % self.basedir, "w") type_fd.write(str(self.doctype)) type_fd.close() except Exception, e: register_exception(alert_admin=True) raise InvenioWebSubmitFileError, e os.umask(old_umask) if self.recid: run_sql("INSERT INTO bibrec_bibdoc (id_bibrec, id_bibdoc, type) VALUES (%s,%s,%s)", (recid, self.id, self.doctype,)) except Exception, e: run_sql('DELETE FROM bibdoc WHERE id=%s', (self.id, )) run_sql('DELETE FROM bibrec_bibdoc WHERE id_bibdoc=%s', (self.id, )) register_exception(alert_admin=True) raise InvenioWebSubmitFileError, e # build list of attached files self._build_file_list('init') # link with related_files self._build_related_file_list() def __repr__(self): """ @return: the canonical string representation of the C{BibDoc}. @rtype: string """ return 'BibDoc(%s, %s, %s, %s, %s)' % (repr(self.id), repr(self.recid), repr(self.docname), repr(self.doctype), repr(self.human_readable)) def __str__(self): """ @return: an easy to be I{grepped} string representation of the whole C{BibDoc} content. @rtype: string """ out = '%s:%i:::docname=%s\n' % (self.recid or '', self.id, self.docname) out += '%s:%i:::doctype=%s\n' % (self.recid or '', self.id, self.doctype) out += '%s:%i:::status=%s\n' % (self.recid or '', self.id, self.status) out += '%s:%i:::basedir=%s\n' % (self.recid or '', self.id, self.basedir) out += '%s:%i:::creation date=%s\n' % (self.recid or '', self.id, self.cd) out += '%s:%i:::modification date=%s\n' % (self.recid or '', self.id, self.md) out += '%s:%i:::text extraction date=%s\n' % (self.recid or '', self.id, self.td) out += '%s:%i:::total file attached=%s\n' % (self.recid or '', self.id, len(self.docfiles)) if self.human_readable: out += '%s:%i:::total size latest version=%s\n' % (self.recid or '', self.id, nice_size(self.get_total_size_latest_version())) out += '%s:%i:::total size all files=%s\n' % (self.recid or '', self.id, nice_size(self.get_total_size())) else: out += '%s:%i:::total size latest version=%s\n' % (self.recid or '', self.id, self.get_total_size_latest_version()) out += '%s:%i:::total size all files=%s\n' % (self.recid or '', self.id, self.get_total_size()) for docfile in self.docfiles: out += str(docfile) return out def format_already_exists_p(self, format): """ @param format: a format to be checked. @type format: string @return: True if a file of the given format already exists among the latest files. @rtype: bool """ format = normalize_format(format) for afile in self.list_latest_files(): if format == afile.get_format(): return True return False def get_status(self): """ @return: the status information. @rtype: string """ return self.status def get_text(self, version=None): """ @param version: the requested version. If not set, the latest version will be used. @type version: integer @return: the textual content corresponding to the specified version of the document. @rtype: string """ if version is None: version = self.get_latest_version() if self.has_text(version): return open(os.path.join(self.basedir, '.text;%i' % version)).read() else: return "" def get_text_path(self, version=None): """ @param version: the requested version. If not set, the latest version will be used. @type version: int @return: the full path to the textual content corresponding to the specified version of the document. @rtype: string """ if version is None: version = self.get_latest_version() if self.has_text(version): return os.path.join(self.basedir, '.text;%i' % version) else: return "" def extract_text(self, version=None, perform_ocr=False, ln='en'): """ Try what is necessary to extract the textual information of a document. @param version: the version of the document for which text is required. If not specified the text will be retrieved from the last version. @type version: integer @param perform_ocr: whether to perform OCR. @type perform_ocr: bool @param ln: a two letter language code to give as a hint to the OCR procedure. @type ln: string @raise InvenioWebSubmitFileError: in case of error. @note: the text is extracted and cached for later use. Use L{get_text} to retrieve it. """ from invenio.websubmit_file_converter import get_best_format_to_extract_text_from, convert_file, InvenioWebSubmitFileConverterError if version is None: version = self.get_latest_version() docfiles = self.list_version_files(version) ## We try to extract text only from original or OCRed documents. filenames = [docfile.get_full_path() for docfile in docfiles if 'CONVERTED' not in docfile.flags or 'OCRED' in docfile.flags] try: filename = get_best_format_to_extract_text_from(filenames) except InvenioWebSubmitFileConverterError: ## We fall back on considering all the documents filenames = [docfile.get_full_path() for docfile in docfiles] try: filename = get_best_format_to_extract_text_from(filenames) except InvenioWebSubmitFileConverterError: open(os.path.join(self.basedir, '.text;%i' % version), 'w').write('') return try: convert_file(filename, os.path.join(self.basedir, '.text;%i' % version), '.txt', perform_ocr=perform_ocr, ln=ln) if version == self.get_latest_version(): run_sql("UPDATE bibdoc SET text_extraction_date=NOW() WHERE id=%s", (self.id, )) except InvenioWebSubmitFileConverterError, e: register_exception(alert_admin=True, prefix="Error in extracting text from bibdoc %i, version %i" % (self.id, version)) raise InvenioWebSubmitFileError, str(e) def touch(self): """ Update the modification time of the bibdoc (as in the UNIX command C{touch}). """ run_sql('UPDATE bibdoc SET modification_date=NOW() WHERE id=%s', (self.id, )) #if self.recid: #run_sql('UPDATE bibrec SET modification_date=NOW() WHERE id=%s', (self.recid, )) def set_status(self, new_status): """ Set a new status. A document with a status information is a restricted document that can be accessed only to user which as an authorization to the I{viewrestrdoc} WebAccess action with keyword status with value C{new_status}. @param new_status: the new status. If empty the document will be unrestricted. @type new_status: string @raise InvenioWebSubmitFileError: in case the reserved word 'DELETED' is used. """ if new_status != KEEP_OLD_VALUE: if new_status == 'DELETED': raise InvenioWebSubmitFileError('DELETED is a reserved word and can not be used for setting the status') run_sql('UPDATE bibdoc SET status=%s WHERE id=%s', (new_status, self.id)) self.status = new_status self.touch() self._build_file_list() self._build_related_file_list() def add_file_new_version(self, filename, description=None, comment=None, format=None, flags=None): """ Add a new version of a file. If no physical file is already attached to the document a the given file will have version 1. Otherwise the new file will have the current version number plus one. @param filename: the local path of the file. @type filename: string @param description: an optional description for the file. @type description: string @param comment: an optional comment to the file. @type comment: string @param format: the extension of the file. If not specified it will be retrieved from the filename (see L{decompose_file}). @type format: string @param flags: a set of flags to be associated with the file (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}) @type flags: list of string @raise InvenioWebSubmitFileError: in case of error. """ try: latestVersion = self.get_latest_version() if latestVersion == 0: myversion = 1 else: myversion = latestVersion + 1 if os.path.exists(filename): if not os.path.getsize(filename) > 0: raise InvenioWebSubmitFileError, "%s seems to be empty" % filename if format is None: format = decompose_file(filename)[2] else: format = normalize_format(format) - destination = "%s/%s%s;%i" % (self.basedir, self.docname, format, myversion) + destination = os.path.join(self.get_base_dir(), self.get_docname() + format + ';' + str(myversion)) try: shutil.copyfile(filename, destination) os.chmod(destination, 0644) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while copying '%s' to '%s': '%s'" % (filename, destination, e) self.more_info.set_description(description, format, myversion) self.more_info.set_comment(comment, format, myversion) if flags is None: flags = [] for flag in flags: if flag == 'PERFORM_HIDE_PREVIOUS': for afile in self.list_all_files(): format = afile.get_format() version = afile.get_version() if version < myversion: self.more_info.set_flag('HIDDEN', format, myversion) else: self.more_info.set_flag(flag, format, myversion) else: raise InvenioWebSubmitFileError, "'%s' does not exists!" % filename finally: self.touch() Md5Folder(self.basedir).update() self._build_file_list() def add_file_new_format(self, filename, version=None, description=None, comment=None, format=None, flags=None): """ Add a file as a new format. @param filename: the local path of the file. @type filename: string @param version: an optional specific version to which the new format should be added. If None, the last version will be used. @type version: integer @param description: an optional description for the file. @type description: string @param comment: an optional comment to the file. @type comment: string @param format: the extension of the file. If not specified it will be retrieved from the filename (see L{decompose_file}). @type format: string @param flags: a set of flags to be associated with the file (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}) @type flags: list of string @raise InvenioWebSubmitFileError: if the given format already exists. """ try: if version is None: version = self.get_latest_version() if version == 0: version = 1 if os.path.exists(filename): if not os.path.getsize(filename) > 0: raise InvenioWebSubmitFileError, "%s seems to be empty" % filename if format is None: format = decompose_file(filename)[2] else: format = normalize_format(format) - destination = "%s/%s%s;%i" % (self.basedir, self.docname, format, version) + filename = self.get_docname() + format + filename += ';' + str(version) + destination = os.path.join(self.get_base_dir(), filename) if os.path.exists(destination): raise InvenioWebSubmitFileError, "A file for docname '%s' for the recid '%s' already exists for the format '%s'" % (self.docname, self.recid, format) try: shutil.copyfile(filename, destination) os.chmod(destination, 0644) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while copying '%s' to '%s': '%s'" % (filename, destination, e) self.more_info.set_comment(comment, format, version) self.more_info.set_description(description, format, version) if flags is None: flags = [] for flag in flags: if flag != 'PERFORM_HIDE_PREVIOUS': self.more_info.set_flag(flag, format, version) else: raise InvenioWebSubmitFileError, "'%s' does not exists!" % filename finally: Md5Folder(self.basedir).update() self.touch() self._build_file_list() def purge(self): """ Physically removes all the previous version of the given bibdoc. Everything but the last formats will be erased. """ version = self.get_latest_version() if version > 1: for afile in self.docfiles: if afile.get_version() < version: self.more_info.unset_comment(afile.get_format(), afile.get_version()) self.more_info.unset_description(afile.get_format(), afile.get_version()) for flag in CFG_BIBDOCFILE_AVAILABLE_FLAGS: self.more_info.unset_flag(flag, afile.get_format(), afile.get_version()) try: os.remove(afile.get_full_path()) except Exception, e: register_exception() Md5Folder(self.basedir).update() self.touch() self._build_file_list() def expunge(self): """ Physically remove all the traces of a given document. @note: an expunged BibDoc object shouldn't be used anymore or the result might be unpredicted. """ del self.md5s del self.more_info os.system('rm -rf %s' % escape_shell_arg(self.basedir)) run_sql('DELETE FROM bibrec_bibdoc WHERE id_bibdoc=%s', (self.id, )) run_sql('DELETE FROM bibdoc_bibdoc WHERE id_bibdoc1=%s OR id_bibdoc2=%s', (self.id, self.id)) run_sql('DELETE FROM bibdoc WHERE id=%s', (self.id, )) run_sql('INSERT DELAYED INTO hstDOCUMENT(action, id_bibdoc, docname, doctimestamp) VALUES("EXPUNGE", %s, %s, NOW())', (self.id, self.docname)) del self.docfiles del self.id del self.cd del self.md del self.td del self.basedir del self.recid del self.doctype del self.docname def revert(self, version): """ Revert the document to a given version. All the formats corresponding to that version are copied forward to a new version. @param version: the version to revert to. @type version: integer @raise InvenioWebSubmitFileError: in case of errors """ try: version = int(version) new_version = self.get_latest_version() + 1 for docfile in self.list_version_files(version): - destination = "%s/%s%s;%i" % (self.basedir, self.docname, docfile.get_format(), new_version) + destination = os.path.join(self.get_base_dir(), self.get_docname() + docfile.get_format() + ';' + str(new_version)) if os.path.exists(destination): raise InvenioWebSubmitFileError, "A file for docname '%s' for the recid '%s' already exists for the format '%s'" % (self.docname, self.recid, docfile.get_format()) try: shutil.copyfile(docfile.get_full_path(), destination) os.chmod(destination, 0644) self.more_info.set_comment(self.more_info.get_comment(docfile.get_format(), version), docfile.get_format(), new_version) self.more_info.set_description(self.more_info.get_description(docfile.get_format(), version), docfile.get_format(), new_version) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while copying '%s' to '%s': '%s'" % (docfile.get_full_path(), destination, e) finally: Md5Folder(self.basedir).update() self.touch() self._build_file_list() def import_descriptions_and_comments_from_marc(self, record=None): """ Import descriptions and comments from the corresponding MARC metadata. @param record: the record (if None it will be calculated). @type record: bibrecord recstruct @note: If record is passed it is directly used, otherwise it is retrieved from the MARCXML stored in the database. """ ## Let's get the record from invenio.search_engine import get_record if record is None: record = get_record(self.id) fields = record_get_field_instances(record, '856', '4', ' ') global_comment = None global_description = None local_comment = {} local_description = {} for field in fields: url = field_get_subfield_values(field, 'u') if url: ## Given a url url = url[0] if url == '%s/record/%s/files/' % (CFG_SITE_URL, self.recid): ## If it is a traditional /record/1/files/ one ## We have global description/comment for all the formats description = field_get_subfield_values(field, 'y') if description: global_description = description[0] comment = field_get_subfield_values(field, 'z') if comment: global_comment = comment[0] elif bibdocfile_url_p(url): ## Otherwise we have description/comment per format dummy, docname, format = decompose_bibdocfile_url(url) if docname == self.docname: description = field_get_subfield_values(field, 'y') if description: local_description[format] = description[0] comment = field_get_subfield_values(field, 'z') if comment: local_comment[format] = comment[0] ## Let's update the tables version = self.get_latest_version() for docfile in self.list_latest_files(): format = docfile.get_format() if format in local_comment: self.set_comment(local_comment[format], format, version) else: self.set_comment(global_comment, format, version) if format in local_description: self.set_description(local_description[format], format, version) else: self.set_description(global_description, format, version) self._build_file_list('init') def get_icon(self, subformat_re=CFG_WEBSUBMIT_ICON_SUBFORMAT_RE, display_hidden=True): """ @param subformat_re: by default the convention is that L{CFG_WEBSUBMIT_ICON_SUBFORMAT_RE} is used as a subformat indicator to mean that a particular format is to be used as an icon. Specifiy a different subformat if you need to use a different convention. @type subformat_re: compiled regular expression @return: the bibdocfile corresponding to the icon of this document, or None if any icon exists for this document. @rtype: BibDocFile @warning: before I{subformat} were introduced this method was returning a BibDoc, while now is returning a BibDocFile. Check if your client code is compatible with this. """ for docfile in self.list_latest_files(list_hidden=display_hidden): if subformat_re.match(docfile.get_subformat()): return docfile return None def add_icon(self, filename, format=None, subformat=CFG_WEBSUBMIT_DEFAULT_ICON_SUBFORMAT): """ Attaches icon to this document. @param filename: the local filesystem path to the icon. @type filename: string @param format: an optional format for the icon. If not specified it will be calculated after the filesystem path. @type format: string @param subformat: by default the convention is that CFG_WEBSUBMIT_DEFAULT_ICON_SUBFORMAT is used as a subformat indicator to mean that a particular format is to be used as an icon. Specifiy a different subformat if you need to use a different convention. @type subformat: string @raise InvenioWebSubmitFileError: in case of errors. """ #first check if an icon already exists if not format: format = decompose_file(filename)[2] if subformat: format += ";%s" % subformat self.add_file_new_format(filename, format=format) def delete_icon(self, subformat_re=CFG_WEBSUBMIT_ICON_SUBFORMAT_RE): """ @param subformat_re: by default the convention is that L{CFG_WEBSUBMIT_ICON_SUBFORMAT_RE} is used as a subformat indicator to mean that a particular format is to be used as an icon. Specifiy a different subformat if you need to use a different convention. @type subformat: compiled regular expression Removes the icon attached to the document if it exists. """ for docfile in self.list_latest_files(): if subformat_re.match(docfile.get_subformat()): self.delete_file(docfile.get_format(), docfile.get_version()) def display(self, version="", ln=CFG_SITE_LANG, display_hidden=True): """ Returns an HTML representation of the this document. @param version: if not set, only the last version will be displayed. If 'all', all versions will be displayed. @type version: string (integer or 'all') @param ln: the language code. @type ln: string @param display_hidden: whether to include hidden files as well. @type display_hidden: bool @return: the formatted representation. @rtype: HTML string """ t = "" if version == "all": docfiles = self.list_all_files(list_hidden=display_hidden) elif version != "": version = int(version) docfiles = self.list_version_files(version, list_hidden=display_hidden) else: docfiles = self.list_latest_files(list_hidden=display_hidden) icon = self.get_icon(display_hidden=display_hidden) if icon: imageurl = icon.get_url() else: imageurl = "%s/img/smallfiles.gif" % CFG_SITE_URL versions = [] for version in list_versions_from_array(docfiles): currversion = { 'version' : version, 'previous' : 0, 'content' : [] } if version == self.get_latest_version() and version != 1: currversion['previous'] = 1 for docfile in docfiles: if docfile.get_version() == version: currversion['content'].append(docfile.display(ln = ln)) versions.append(currversion) if versions: return websubmit_templates.tmpl_bibdoc_filelist( ln = ln, versions = versions, imageurl = imageurl, docname = self.docname, recid = self.recid ) else: return "" def change_name(self, newname): """ Renames this document name. @param newname: the new name. @type newname: string @raise InvenioWebSubmitFileError: if the new name corresponds to a document already attached to the record owning this document. """ try: newname = normalize_docname(newname) res = run_sql("SELECT b.id FROM bibrec_bibdoc bb JOIN bibdoc b on bb.id_bibdoc=b.id WHERE bb.id_bibrec=%s AND b.docname=%s", (self.recid, newname)) if res: raise InvenioWebSubmitFileError, "A bibdoc called %s already exists for recid %s" % (newname, self.recid) try: for f in os.listdir(self.basedir): if not f.startswith('.'): try: (dummy, base, extension, version) = decompose_file_with_version(f) except ValueError: register_exception(alert_admin=True, prefix="Strange file '%s' is stored in %s" % (f, self.basedir)) else: shutil.move(os.path.join(self.basedir, f), os.path.join(self.basedir, '%s%s;%i' % (newname, extension, version))) except Exception, e: register_exception() raise InvenioWebSubmitFileError("Error in renaming the bibdoc %s to %s for recid %s: %s" % (self.docname, newname, self.recid, e)) run_sql("update bibdoc set docname=%s where id=%s", (newname, self.id,)) self.docname = newname finally: Md5Folder(self.basedir).update() self.touch() self._build_file_list('rename') self._build_related_file_list() def set_comment(self, comment, format, version=None): """ Updates the comment of a specific format/version of the document. @param comment: the new comment. @type comment: string @param format: the specific format for which the comment should be updated. @type format: string @param version: the specific version for which the comment should be updated. If not specified the last version will be used. @type version: integer """ if version is None: version = self.get_latest_version() format = normalize_format(format) self.more_info.set_comment(comment, format, version) self.touch() self._build_file_list('init') def set_description(self, description, format, version=None): """ Updates the description of a specific format/version of the document. @param description: the new description. @type description: string @param format: the specific format for which the description should be updated. @type format: string @param version: the specific version for which the description should be updated. If not specified the last version will be used. @type version: integer """ if version is None: version = self.get_latest_version() format = normalize_format(format) self.more_info.set_description(description, format, version) self.touch() self._build_file_list('init') def set_flag(self, flagname, format, version=None): """ Sets a flag for a specific format/version of the document. @param flagname: a flag from L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}. @type flagname: string @param format: the specific format for which the flag should be set. @type format: string @param version: the specific version for which the flag should be set. If not specified the last version will be used. @type version: integer """ if version is None: version = self.get_latest_version() format = normalize_format(format) self.more_info.set_flag(flagname, format, version) self.touch() self._build_file_list('init') def has_flag(self, flagname, format, version=None): """ Checks if a particular flag for a format/version is set. @param flagname: a flag from L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}. @type flagname: string @param format: the specific format for which the flag should be set. @type format: string @param version: the specific version for which the flag should be set. If not specified the last version will be used. @type version: integer @return: True if the flag is set. @rtype: bool """ if version is None: version = self.get_latest_version() format = normalize_format(format) return self.more_info.has_flag(flagname, format, version) def unset_flag(self, flagname, format, version=None): """ Unsets a flag for a specific format/version of the document. @param flagname: a flag from L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}. @type flagname: string @param format: the specific format for which the flag should be unset. @type format: string @param version: the specific version for which the flag should be unset. If not specified the last version will be used. @type version: integer """ if version is None: version = self.get_latest_version() format = normalize_format(format) self.more_info.unset_flag(flagname, format, version) self.touch() self._build_file_list('init') def get_comment(self, format, version=None): """ Retrieve the comment of a specific format/version of the document. @param format: the specific format for which the comment should be retrieved. @type format: string @param version: the specific version for which the comment should be retrieved. If not specified the last version will be used. @type version: integer @return: the comment. @rtype: string """ if version is None: version = self.get_latest_version() format = normalize_format(format) return self.more_info.get_comment(format, version) def get_description(self, format, version=None): """ Retrieve the description of a specific format/version of the document. @param format: the specific format for which the description should be retrieved. @type format: string @param version: the specific version for which the description should be retrieved. If not specified the last version will be used. @type version: integer @return: the description. @rtype: string """ if version is None: version = self.get_latest_version() format = normalize_format(format) return self.more_info.get_description(format, version) def hidden_p(self, format, version=None): """ Returns True if the file specified by the given format/version is hidden. @param format: the specific format for which the description should be retrieved. @type format: string @param version: the specific version for which the description should be retrieved. If not specified the last version will be used. @type version: integer @return: True if hidden. @rtype: bool """ if version is None: version = self.get_latest_version() return self.more_info.has_flag('HIDDEN', format, version) def get_docname(self): - """ - @return: the name of this document. - @rtype: string - """ + """retrieve bibdoc name""" + if type(self.docname) is unicode: + return self.docname.encode('utf-8') return self.docname def get_base_dir(self): - """ - @return: the base directory on the local filesystem for this document - (e.g. C{/soft/cdsweb/var/data/files/g0/123}) - @rtype: string - """ + """retrieve bibdoc base directory, e.g. /soft/cdsweb/var/data/files/123""" + if type(self.basedir) is unicode: + return self.basedir.encode('utf-8') return self.basedir def get_type(self): """ @return: the type of this document. @rtype: string""" return self.doctype def get_recid(self): """ @return: the record id of the record to which this document is attached. @rtype: integer """ return self.recid def get_id(self): """ @return: the id of this document. @rtype: integer """ return self.id def pdf_a_p(self): """ @return: True if this document contains a PDF in PDF/A format. @rtype: bool""" return self.has_flag('PDF/A', 'pdf') def has_text(self, require_up_to_date=False, version=None): """ Return True if the text of this document has already been extracted. @param require_up_to_date: if True check the text was actually extracted after the most recent format of the given version. @type require_up_to_date: bool @param version: a version for which the text should have been extracted. If not specified the latest version is considered. @type version: integer @return: True if the text has already been extracted. @rtype: bool """ if version is None: version = self.get_latest_version() if os.path.exists(os.path.join(self.basedir, '.text;%i' % version)): if not require_up_to_date: return True else: docfiles = self.list_version_files(version) text_md = datetime.fromtimestamp(os.path.getmtime(os.path.join(self.basedir, '.text;%i' % version))) for docfile in docfiles: if text_md <= docfile.md: return False return True return False def get_file(self, format, version=""): """ Returns a L{BibDocFile} instance of this document corresponding to the specific format and version. @param format: the specific format. @type format: string @param version: the specific version for which the description should be retrieved. If not specified the last version will be used. @type version: integer @return: the L{BibDocFile} instance. @rtype: BibDocFile """ if version == "": docfiles = self.list_latest_files() else: version = int(version) docfiles = self.list_version_files(version) format = normalize_format(format) for docfile in docfiles: if (docfile.get_format()==format or not format): return docfile ## Let's skip the subformat specification and consider just the ## superformat superformat = get_superformat_from_format(format) for docfile in docfiles: if get_superformat_from_format(docfile.get_format()) == superformat: return docfile raise InvenioWebSubmitFileError, "No file called '%s' of format '%s', version '%s'" % (self.docname, format, version) def list_versions(self): """ @return: the list of existing version numbers for this document. @rtype: list of integer """ versions = [] for docfile in self.docfiles: if not docfile.get_version() in versions: versions.append(docfile.get_version()) versions.sort() return versions def delete(self): """ Delete this document. @see: L{undelete} for how to undelete the document. @raise InvenioWebSubmitFileError: in case of errors. """ try: today = datetime.today() self.change_name('DELETED-%s%s-%s' % (today.strftime('%Y%m%d%H%M%S'), today.microsecond, self.docname)) run_sql("UPDATE bibdoc SET status='DELETED' WHERE id=%s", (self.id,)) self.status = 'DELETED' except Exception, e: register_exception() raise InvenioWebSubmitFileError, "It's impossible to delete bibdoc %s: %s" % (self.id, e) def deleted_p(self): """ @return: True if this document has been deleted. @rtype: bool """ return self.status == 'DELETED' def empty_p(self): """ @return: True if this document is empty, i.e. it has no bibdocfile connected. @rtype: bool """ return len(self.docfiles) == 0 def undelete(self, previous_status=''): """ Undelete a deleted file (only if it was actually deleted via L{delete}). The previous C{status}, i.e. the restriction key can be provided. Otherwise the undeleted document will be public. @param previous_status: the previous status the should be restored. @type previous_status: string @raise InvenioWebSubmitFileError: in case of any error. """ bibrecdocs = BibRecDocs(self.recid) try: run_sql("UPDATE bibdoc SET status=%s WHERE id=%s AND status='DELETED'", (previous_status, self.id)) except Exception, e: raise InvenioWebSubmitFileError, "It's impossible to undelete bibdoc %s: %s" % (self.id, e) if self.docname.startswith('DELETED-'): try: # Let's remove DELETED-20080214144322- in front of the docname original_name = '-'.join(self.docname.split('-')[2:]) original_name = bibrecdocs.propose_unique_docname(original_name) self.change_name(original_name) except Exception, e: raise InvenioWebSubmitFileError, "It's impossible to restore the previous docname %s. %s kept as docname because: %s" % (original_name, self.docname, e) else: raise InvenioWebSubmitFileError, "Strange just undeleted docname isn't called DELETED-somedate-docname but %s" % self.docname def delete_file(self, format, version): """ Delete a specific format/version of this document on the filesystem. @param format: the particular format to be deleted. @type format: string @param version: the particular version to be deleted. @type version: integer @note: this operation is not reversible!""" try: afile = self.get_file(format, version) except InvenioWebSubmitFileError: return try: os.remove(afile.get_full_path()) except OSError: pass self.touch() self._build_file_list() def get_history(self): """ @return: a human readable and parsable string that represent the history of this document. @rtype: string """ ret = [] hst = run_sql("""SELECT action, docname, docformat, docversion, docsize, docchecksum, doctimestamp FROM hstDOCUMENT WHERE id_bibdoc=%s ORDER BY doctimestamp ASC""", (self.id, )) for row in hst: ret.append("%s %s '%s', format: '%s', version: %i, size: %s, checksum: '%s'" % (row[6].strftime('%Y-%m-%d %H:%M:%S'), row[0], row[1], row[2], row[3], nice_size(row[4]), row[5])) return ret def _build_file_list(self, context=''): """ Lists all files attached to the bibdoc. This function should be called everytime the bibdoc is modified. As a side effect it log everything that has happened to the bibdocfiles in the log facility, according to the context: "init": means that the function has been called; for the first time by a constructor, hence no logging is performed "": by default means to log every deleted file as deleted and every added file as added; "rename": means that every appearently deleted file is logged as renamef and every new file as renamet. """ def log_action(action, docid, docname, format, version, size, checksum, timestamp=''): """Log an action into the bibdoclog table.""" try: if timestamp: run_sql('INSERT DELAYED INTO hstDOCUMENT(action, id_bibdoc, docname, docformat, docversion, docsize, docchecksum, doctimestamp) VALUES(%s, %s, %s, %s, %s, %s, %s, %s)', (action, docid, docname, format, version, size, checksum, timestamp)) else: run_sql('INSERT DELAYED INTO hstDOCUMENT(action, id_bibdoc, docname, docformat, docversion, docsize, docchecksum, doctimestamp) VALUES(%s, %s, %s, %s, %s, %s, %s, NOW())', (action, docid, docname, format, version, size, checksum)) except DatabaseError: register_exception() def make_removed_added_bibdocfiles(previous_file_list): """Internal function for build the log of changed files.""" # Let's rebuild the previous situation old_files = {} for bibdocfile in previous_file_list: old_files[(bibdocfile.name, bibdocfile.format, bibdocfile.version)] = (bibdocfile.size, bibdocfile.checksum, bibdocfile.md) # Let's rebuild the new situation new_files = {} for bibdocfile in self.docfiles: new_files[(bibdocfile.name, bibdocfile.format, bibdocfile.version)] = (bibdocfile.size, bibdocfile.checksum, bibdocfile.md) # Let's subtract from added file all the files that are present in # the old list, and let's add to deleted files that are not present # added file. added_files = dict(new_files) deleted_files = {} for key, value in old_files.iteritems(): if added_files.has_key(key): del added_files[key] else: deleted_files[key] = value return (added_files, deleted_files) if context != 'init': previous_file_list = list(self.docfiles) res = run_sql("SELECT status,docname,creation_date," "modification_date,more_info FROM bibdoc WHERE id=%s", (self.id,)) self.cd = res[0][2] self.md = res[0][3] self.docname = res[0][1] self.status = res[0][0] self.more_info = BibDocMoreInfo(self.id, blob_to_string(res[0][4])) self.docfiles = [] if os.path.exists(self.basedir): self.md5s = Md5Folder(self.basedir) files = os.listdir(self.basedir) files.sort() for afile in files: if not afile.startswith('.'): try: filepath = os.path.join(self.basedir, afile) dirname, basename, format, fileversion = decompose_file_with_version(filepath) checksum = self.md5s.get_checksum(afile) # we can append file: self.docfiles.append(BibDocFile(filepath, self.doctype, fileversion, basename, format, self.recid, self.id, self.status, checksum, self.more_info, human_readable=self.human_readable)) except Exception, e: register_exception() if context == 'init': return else: added_files, deleted_files = make_removed_added_bibdocfiles(previous_file_list) deletedstr = "DELETED" addedstr = "ADDED" if context == 'rename': deletedstr = "RENAMEDFROM" addedstr = "RENAMEDTO" for (docname, format, version), (size, checksum, md) in added_files.iteritems(): if context == 'rename': md = '' # No modification time log_action(addedstr, self.id, docname, format, version, size, checksum, md) for (docname, format, version), (size, checksum, md) in deleted_files.iteritems(): if context == 'rename': md = '' # No modification time log_action(deletedstr, self.id, docname, format, version, size, checksum, md) def _build_related_file_list(self): """Lists all files attached to the bibdoc. This function should be called everytime the bibdoc is modified within e.g. its icon. @deprecated: use subformats instead. """ self.related_files = {} res = run_sql("SELECT ln.id_bibdoc2,ln.type,bibdoc.status FROM " "bibdoc_bibdoc AS ln,bibdoc WHERE id=ln.id_bibdoc2 AND " "ln.id_bibdoc1=%s", (self.id,)) for row in res: docid = row[0] doctype = row[1] if row[2] != 'DELETED': if not self.related_files.has_key(doctype): self.related_files[doctype] = [] cur_doc = BibDoc(docid=docid, human_readable=self.human_readable) self.related_files[doctype].append(cur_doc) def get_total_size_latest_version(self): """Return the total size used on disk of all the files belonging to this bibdoc and corresponding to the latest version.""" ret = 0 for bibdocfile in self.list_latest_files(): ret += bibdocfile.get_size() return ret def get_total_size(self): """Return the total size used on disk of all the files belonging to this bibdoc.""" ret = 0 for bibdocfile in self.list_all_files(): ret += bibdocfile.get_size() return ret def list_all_files(self, list_hidden=True): """Returns all the docfiles linked with the given bibdoc.""" if list_hidden: return self.docfiles else: return [afile for afile in self.docfiles if not afile.hidden_p()] def list_latest_files(self, list_hidden=True): """Returns all the docfiles within the last version.""" return self.list_version_files(self.get_latest_version(), list_hidden=list_hidden) def list_version_files(self, version, list_hidden=True): """Return all the docfiles of a particular version.""" version = int(version) return [docfile for docfile in self.docfiles if docfile.get_version() == version and (list_hidden or not docfile.hidden_p())] def get_latest_version(self): """ Returns the latest existing version number for the given bibdoc. If no file is associated to this bibdoc, returns '0'. """ version = 0 for bibdocfile in self.docfiles: if bibdocfile.get_version() > version: version = bibdocfile.get_version() return version def get_file_number(self): """Return the total number of files.""" return len(self.docfiles) def register_download(self, ip_address, version, format, userid=0): """Register the information about a download of a particular file.""" format = normalize_format(format) if format[:1] == '.': format = format[1:] format = format.upper() + if not version: + version = 1 + return run_sql("INSERT DELAYED INTO rnkDOWNLOADS " "(id_bibrec,id_bibdoc,file_version,file_format," "id_user,client_host,download_time) VALUES " "(%s,%s,%s,%s,%s,INET_ATON(%s),NOW())", (self.recid, self.id, version, format, userid, ip_address,)) class BibDocFile: """This class represents a physical file in the Invenio filesystem. It should never be instantiated directly""" def __init__(self, fullpath, doctype, version, name, format, recid, docid, status, checksum, more_info, human_readable=False): self.fullpath = os.path.abspath(fullpath) self.doctype = doctype self.docid = docid self.recid = recid self.version = version self.status = status self.checksum = checksum self.human_readable = human_readable self.description = more_info.get_description(format, version) self.format = normalize_format(format) self.superformat = get_superformat_from_format(self.format) self.subformat = get_subformat_from_format(self.format) if format == "": self.mime = "application/octet-stream" self.encoding = "" self.fullname = name else: self.fullname = "%s%s" % (name, self.superformat) (self.mime, self.encoding) = _mimes.guess_type(self.fullname) if self.mime is None: self.mime = "application/octet-stream" self.more_info = more_info self.comment = more_info.get_comment(format, version) self.flags = more_info.get_flags(format, version) self.hidden = 'HIDDEN' in self.flags self.size = os.path.getsize(fullpath) self.md = datetime.fromtimestamp(os.path.getmtime(fullpath)) try: self.cd = datetime.fromtimestamp(os.path.getctime(fullpath)) except OSError: self.cd = self.md self.name = name self.dir = os.path.dirname(fullpath) if self.subformat: self.url = create_url('%s/record/%s/files/%s%s' % (CFG_SITE_URL, self.recid, self.name, self.superformat), {'subformat' : self.subformat}) self.fullurl = create_url('%s/record/%s/files/%s%s' % (CFG_SITE_URL, self.recid, self.name, self.superformat), {'subformat' : self.subformat, 'version' : self.version}) else: self.url = create_url('%s/record/%s/files/%s%s' % (CFG_SITE_URL, self.recid, self.name, self.superformat), {}) self.fullurl = create_url('%s/record/%s/files/%s%s' % (CFG_SITE_URL, self.recid, self.name, self.superformat), {'version' : self.version}) self.etag = '"%i%s%i"' % (self.docid, self.format, self.version) self.magic = None def __repr__(self): return ('BibDocFile(%s, %s, %i, %s, %s, %i, %i, %s, %s, %s, %s)' % (repr(self.fullpath), repr(self.doctype), self.version, repr(self.name), repr(self.format), self.recid, self.docid, repr(self.status), repr(self.checksum), repr(self.more_info), repr(self.human_readable))) def __str__(self): out = '%s:%s:%s:%s:fullpath=%s\n' % (self.recid, self.docid, self.version, self.format, self.fullpath) out += '%s:%s:%s:%s:fullname=%s\n' % (self.recid, self.docid, self.version, self.format, self.fullname) out += '%s:%s:%s:%s:name=%s\n' % (self.recid, self.docid, self.version, self.format, self.name) out += '%s:%s:%s:%s:subformat=%s\n' % (self.recid, self.docid, self.version, self.format, get_subformat_from_format(self.format)) out += '%s:%s:%s:%s:status=%s\n' % (self.recid, self.docid, self.version, self.format, self.status) out += '%s:%s:%s:%s:checksum=%s\n' % (self.recid, self.docid, self.version, self.format, self.checksum) if self.human_readable: out += '%s:%s:%s:%s:size=%s\n' % (self.recid, self.docid, self.version, self.format, nice_size(self.size)) else: out += '%s:%s:%s:%s:size=%s\n' % (self.recid, self.docid, self.version, self.format, self.size) out += '%s:%s:%s:%s:creation time=%s\n' % (self.recid, self.docid, self.version, self.format, self.cd) out += '%s:%s:%s:%s:modification time=%s\n' % (self.recid, self.docid, self.version, self.format, self.md) out += '%s:%s:%s:%s:magic=%s\n' % (self.recid, self.docid, self.version, self.format, self.get_magic()) out += '%s:%s:%s:%s:mime=%s\n' % (self.recid, self.docid, self.version, self.format, self.mime) out += '%s:%s:%s:%s:encoding=%s\n' % (self.recid, self.docid, self.version, self.format, self.encoding) out += '%s:%s:%s:%s:url=%s\n' % (self.recid, self.docid, self.version, self.format, self.url) out += '%s:%s:%s:%s:fullurl=%s\n' % (self.recid, self.docid, self.version, self.format, self.fullurl) out += '%s:%s:%s:%s:description=%s\n' % (self.recid, self.docid, self.version, self.format, self.description) out += '%s:%s:%s:%s:comment=%s\n' % (self.recid, self.docid, self.version, self.format, self.comment) out += '%s:%s:%s:%s:hidden=%s\n' % (self.recid, self.docid, self.version, self.format, self.hidden) out += '%s:%s:%s:%s:flags=%s\n' % (self.recid, self.docid, self.version, self.format, self.flags) out += '%s:%s:%s:%s:etag=%s\n' % (self.recid, self.docid, self.version, self.format, self.etag) return out def display(self, ln = CFG_SITE_LANG): """Returns a formatted representation of this docfile.""" return websubmit_templates.tmpl_bibdocfile_filelist( ln = ln, recid = self.recid, version = self.version, md = self.md, name = self.name, superformat = self.superformat, subformat = self.subformat, nice_size = nice_size(self.size), description = self.description or '' ) def is_restricted(self, user_info): """Returns restriction state. (see acc_authorize_action return values)""" - if self.status not in ('', 'DELETED'): + def check_private_authorization(): + (code, message) = check_bibdoc_authorization(user_info, 'role:librarian') + if code == 0: + return (code, message) + sciper = user_info.get('external_uniqueidentifier', [None])[0] + if sciper: + from invenio.search_engine import get_fieldvalues + scipers = get_fieldvalues(self.recid, '700__g') + get_fieldvalues(self.recid, '917Z8x') + if sciper in scipers: + return (0, '') + return (1, 'This file is private') + + if self.status == 'LAB': + from invenio.search_engine import get_fieldvalues + labs = get_fieldvalues(self.recid, '909C0p') + if not labs: + return check_private_authorization() + for lab in labs: + (code, message) = check_bibdoc_authorization(user_info, 'role:%s' % lab) + if code == 0: + return (code, message) + return (code, message) + elif self.status == 'RESTRICTED': return check_bibdoc_authorization(user_info, status=self.status) + elif self.status == 'PRIVATE': + return check_private_authorization() elif self.status == 'DELETED': return (1, 'File has ben deleted') else: return (0, '') def is_icon(self, subformat_re=CFG_WEBSUBMIT_ICON_SUBFORMAT_RE): """ @param subformat_re: by default the convention is that L{CFG_WEBSUBMIT_ICON_SUBFORMAT_RE} is used as a subformat indicator to mean that a particular format is to be used as an icon. Specifiy a different subformat if you need to use a different convention. @type subformat: compiled regular expression @return: True if this file is an icon. @rtype: bool """ return bool(subformat_re.match(self.subformat)) def hidden_p(self): return self.hidden def get_url(self): return self.url def get_type(self): return self.doctype def get_path(self): + if type(self.fullpath) is unicode: + return self.fullpath.encode('utf-8') return self.fullpath def get_bibdocid(self): return self.docid def get_name(self): return self.name def get_full_name(self): + if type(self.fullname) is unicode: + return self.fullname.encode('utf-8') return self.fullname - + def get_full_path(self): + if type(self.fullpath) is unicode: + return self.fullpath.encode('utf-8') return self.fullpath - + def get_format(self): return self.format def get_subformat(self): return self.subformat def get_superformat(self): return self.superformat def get_size(self): return self.size def get_version(self): return self.version def get_checksum(self): return self.checksum def get_description(self): - return self.description - + if type(self.description) is unicode: + return self.description.encode('utf-8') + return self.description or "" + def get_comment(self): + if type(self.comment) is unicode: + return self.comment.encode('utf-8') return self.comment def get_content(self): """Returns the binary content of the file.""" content_fd = open(self.fullpath, 'rb') content = content_fd.read() content_fd.close() return content def get_recid(self): """Returns the recid connected with the bibdoc of this file.""" return self.recid def get_status(self): """Returns the status of the file, i.e. either '', 'DELETED' or a restriction keyword.""" return self.status def get_magic(self): """Return all the possible guesses from the magic library about the content of the file.""" if self.magic is None: if CFG_HAS_MAGIC == 1: magic_cookies = _get_magic_cookies() magic_result = [] for key in magic_cookies.keys(): magic_result.append(magic_cookies[key].file(self.fullpath)) self.magic = tuple(magic_result) elif CFG_HAS_MAGIC == 2: magic_result = [] for key in ({'mime': False, 'mime_encoding': False}, {'mime': True, 'mime_encoding': False}, {'mime': False, 'mime_encoding': True}): magic_result.append(_magic_wrapper(self.fullpath, **key)) self.magic = tuple(magic_result) return self.magic def check(self): """Return True if the checksum corresponds to the file.""" return calculate_md5(self.fullpath) == self.checksum def stream(self, req): """Stream the file. Note that no restriction check is being done here, since restrictions have been checked previously inside websubmit_webinterface.py.""" if os.path.exists(self.fullpath): if random.random() < CFG_BIBDOCFILE_MD5_CHECK_PROBABILITY and calculate_md5(self.fullpath) != self.checksum: raise InvenioWebSubmitFileError, "File %s, version %i, for record %s is corrupted!" % (self.fullname, self.version, self.recid) stream_file(req, self.fullpath, "%s%s" % (self.name, self.superformat), self.mime, self.encoding, self.etag, self.checksum, self.fullurl) raise apache.SERVER_RETURN, apache.DONE else: req.status = apache.HTTP_NOT_FOUND raise InvenioWebSubmitFileError, "%s does not exists!" % self.fullpath _RE_STATUS_PARSER = re.compile(r'^(?Pemail|group|egroup|role|firerole|status):\s*(?P.*)$', re.S + re.I) def check_bibdoc_authorization(user_info, status): """ Check if the user is authorized to access a document protected with the given status. L{status} is a string of the form:: auth_type: auth_value where C{auth_type} can have values in:: email, group, role, firerole, status and C{auth_value} has a value interpreted againsta C{auth_type}: - C{email}: the user can access the document if his/her email matches C{auth_value} - C{group}: the user can access the document if one of the groups (local or external) of which he/she is member matches C{auth_value} - C{role}: the user can access the document if he/she belongs to the WebAccess role specified in C{auth_value} - C{firerole}: the user can access the document if he/she is implicitly matched by the role described by the firewall like role definition in C{auth_value} - C{status}: the user can access the document if he/she is authorized to for the action C{viewrestrdoc} with C{status} paramter having value C{auth_value} @note: If no C{auth_type} is specified or if C{auth_type} is not one of the above, C{auth_value} will be set to the value contained in the parameter C{status}, and C{auth_type} will be considered to be C{status}. @param user_info: the user_info dictionary @type: dict @param status: the status of the document. @type status: string @return: a tuple, of the form C{(auth_code, auth_message)} where auth_code is 0 if the authorization is granted and greater than 0 otherwise. @rtype: (int, string) @raise ValueError: in case of unexpected parsing error. """ def parse_status(status): g = _RE_STATUS_PARSER.match(status) if g: return (g.group('type').lower(), g.group('value')) else: return ('status', status) if acc_is_user_in_role(user_info, acc_get_role_id(SUPERADMINROLE)): return (0, CFG_WEBACCESS_WARNING_MSGS[0]) auth_type, auth_value = parse_status(status) if auth_type == 'status': return acc_authorize_action(user_info, 'viewrestrdoc', status=auth_value) elif auth_type == 'email': if not auth_value.lower().strip() == user_info['email'].lower().strip(): return (1, 'You must be member of the group %s in order to access this document' % repr(auth_value)) elif auth_type == 'group': if not auth_value in user_info['group']: return (1, 'You must be member of the group %s in order to access this document' % repr(auth_value)) elif auth_type == 'role': if not acc_is_user_in_role(user_info, acc_get_role_id(auth_value)): return (1, 'You must be member in the role %s in order to access this document' % repr(auth_value)) elif auth_type == 'firerole': if not acc_firerole_check_user(user_info, compile_role_definition(auth_value)): return (1, 'You must be authorized in order to access this document') else: raise ValueError, 'Unexpected authorization type %s for %s' % (repr(auth_type), repr(auth_value)) return (0, CFG_WEBACCESS_WARNING_MSGS[0]) def stream_file(req, fullpath, fullname=None, mime=None, encoding=None, etag=None, md5=None, location=None): """This is a generic function to stream a file to the user. If fullname, mime, encoding, and location are not provided they will be guessed based on req and fullpath. md5 should be passed as an hexadecimal string. """ def normal_streaming(size): req.set_content_length(size) req.send_http_header() if not req.header_only: req.sendfile(fullpath) return "" def single_range(size, the_range): req.set_content_length(the_range[1]) req.headers_out['Content-Range'] = 'bytes %d-%d/%d' % (the_range[0], the_range[0] + the_range[1] - 1, size) req.status = apache.HTTP_PARTIAL_CONTENT req.send_http_header() if not req.header_only: req.sendfile(fullpath, the_range[0], the_range[1]) return "" def multiple_ranges(size, ranges, mime): req.status = apache.HTTP_PARTIAL_CONTENT boundary = '%s%04d' % (time.strftime('THIS_STRING_SEPARATES_%Y%m%d%H%M%S'), random.randint(0, 9999)) req.content_type = 'multipart/byteranges; boundary=%s' % boundary content_length = 0 for arange in ranges: content_length += len('--%s\r\n' % boundary) content_length += len('Content-Type: %s\r\n' % mime) content_length += len('Content-Range: bytes %d-%d/%d\r\n' % (arange[0], arange[0] + arange[1] - 1, size)) content_length += len('\r\n') content_length += arange[1] content_length += len('\r\n') content_length += len('--%s--\r\n' % boundary) req.set_content_length(content_length) req.send_http_header() if not req.header_only: for arange in ranges: req.write('--%s\r\n' % boundary, 0) req.write('Content-Type: %s\r\n' % mime, 0) req.write('Content-Range: bytes %d-%d/%d\r\n' % (arange[0], arange[0] + arange[1] - 1, size), 0) req.write('\r\n', 0) req.sendfile(fullpath, arange[0], arange[1]) req.write('\r\n', 0) req.write('--%s--\r\n' % boundary) req.flush() return "" def parse_date(date): """According to a date can come in three formats (in order of preference): Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format Moreover IE is adding some trailing information after a ';'. Wrong dates should be simpled ignored. This function return the time in seconds since the epoch GMT or None in case of errors.""" if not date: return None try: date = date.split(';')[0].strip() # Because of IE ## Sun, 06 Nov 1994 08:49:37 GMT return time.mktime(time.strptime(date, '%a, %d %b %Y %X %Z')) except: try: ## Sun, 06 Nov 1994 08:49:37 GMT return time.mktime(time.strptime(date, '%A, %d-%b-%y %H:%M:%S %Z')) except: try: ## Sun, 06 Nov 1994 08:49:37 GMT return time.mktime(date) except: return None def parse_ranges(ranges): """According to a (multiple) range request comes in the form: bytes=20-30,40-60,70-,-80 with the meaning: from byte to 20 to 30 inclusive (11 bytes) from byte to 40 to 60 inclusive (21 bytes) from byte 70 to (size - 1) inclusive (size - 70 bytes) from byte size - 80 to (size - 1) inclusive (80 bytes) This function will return the list of ranges in the form: [[first_byte, last_byte], ...] If first_byte or last_byte aren't specified they'll be set to None If the list is not well formatted it will return None """ try: if ranges.startswith('bytes') and '=' in ranges: ranges = ranges.split('=')[1].strip() else: return None ret = [] for arange in ranges.split(','): arange = arange.strip() if arange.startswith('-'): ret.append([None, int(arange[1:])]) elif arange.endswith('-'): ret.append([int(arange[:-1]), None]) else: ret.append(map(int, arange.split('-'))) return ret except: return None def parse_tags(tags): """Return a list of tags starting from a comma separated list.""" return [tag.strip() for tag in tags.split(',')] def fix_ranges(ranges, size): """Complementary to parse_ranges it will transform all the ranges into (first_byte, length), adjusting all the value based on the actual size provided. """ ret = [] for arange in ranges: if (arange[0] is None and arange[1] > 0) or arange[0] < size: if arange[0] is None: arange[0] = size - arange[1] elif arange[1] is None: arange[1] = size - arange[0] else: arange[1] = arange[1] - arange[0] + 1 arange[0] = max(0, arange[0]) arange[1] = min(size - arange[0], arange[1]) if arange[1] > 0: ret.append(arange) return ret def get_normalized_headers(headers): """Strip and lowerize all the keys of the headers dictionary plus strip, lowerize and transform known headers value into their value.""" ret = { 'if-match' : None, 'unless-modified-since' : None, 'if-modified-since' : None, 'range' : None, 'if-range' : None, 'if-none-match' : None, } for key, value in req.headers_in.iteritems(): key = key.strip().lower() value = value.strip() if key in ('unless-modified-since', 'if-modified-since'): value = parse_date(value) elif key == 'range': value = parse_ranges(value) elif key == 'if-range': value = parse_date(value) or parse_tags(value) elif key in ('if-match', 'if-none-match'): value = parse_tags(value) if value: ret[key] = value return ret if CFG_BIBDOCFILE_USE_XSENDFILE: ## If XSendFile is supported by the server, let's use it. if os.path.exists(fullpath): if fullname is None: fullname = os.path.basename(fullpath) req.headers_out["Content-Disposition"] = 'inline; filename="%s"' % fullname.replace('"', '\\"') req.headers_out["X-Sendfile"] = fullpath if mime is None: format = decompose_file(fullpath)[2] (mime, encoding) = _mimes.guess_type(fullpath) if mime is None: mime = "application/octet-stream" req.content_type = mime return "" else: raise apache.SERVER_RETURN, apache.HTTP_NOT_FOUND headers = get_normalized_headers(req.headers_in) if headers['if-match']: if etag is not None and etag not in headers['if-match']: raise apache.SERVER_RETURN, apache.HTTP_PRECONDITION_FAILED if os.path.exists(fullpath): mtime = os.path.getmtime(fullpath) if fullname is None: fullname = os.path.basename(fullpath) if mime is None: (mime, encoding) = _mimes.guess_type(fullpath) if mime is None: mime = "application/octet-stream" if location is None: location = req.uri req.content_type = mime req.encoding = encoding req.filename = fullname req.headers_out["Last-Modified"] = time.strftime('%a, %d %b %Y %X GMT', time.gmtime(mtime)) req.headers_out["Accept-Ranges"] = "bytes" req.headers_out["Content-Location"] = location if etag is not None: req.headers_out["ETag"] = etag if md5 is not None: req.headers_out["Content-MD5"] = base64.encodestring(binascii.unhexlify(md5.upper()))[:-1] req.headers_out["Content-Disposition"] = 'inline; filename="%s"' % fullname.replace('"', '\\"') size = os.path.getsize(fullpath) if not size: try: raise Exception, '%s exists but is empty' % fullpath except Exception: register_exception(req=req, alert_admin=True) raise apache.SERVER_RETURN, apache.HTTP_NOT_FOUND if headers['if-modified-since'] and headers['if-modified-since'] >= mtime: raise apache.SERVER_RETURN, apache.HTTP_NOT_MODIFIED if headers['if-none-match']: if etag is not None and etag in headers['if-none-match']: raise apache.SERVER_RETURN, apache.HTTP_NOT_MODIFIED if headers['unless-modified-since'] and headers['unless-modified-since'] < mtime: return normal_streaming(size) if headers['range']: try: if headers['if-range']: if etag is None or etag not in headers['if-range']: return normal_streaming(size) ranges = fix_ranges(headers['range'], size) except: return normal_streaming(size) if len(ranges) > 1: return multiple_ranges(size, ranges, mime) elif ranges: return single_range(size, ranges[0]) else: raise apache.SERVER_RETURN, apache.HTTP_RANGE_NOT_SATISFIABLE else: return normal_streaming(size) else: raise apache.SERVER_RETURN, apache.HTTP_NOT_FOUND def stream_restricted_icon(req): """Return the content of the "Restricted Icon" file.""" stream_file(req, '%s/img/restricted.gif' % CFG_WEBDIR) raise apache.SERVER_RETURN, apache.DONE def list_types_from_array(bibdocs): """Retrieves the list of types from the given bibdoc list.""" types = [] for bibdoc in bibdocs: if not bibdoc.get_type() in types: types.append(bibdoc.get_type()) return types def list_versions_from_array(docfiles): """Retrieve the list of existing versions from the given docfiles list.""" versions = [] for docfile in docfiles: if not docfile.get_version() in versions: versions.append(docfile.get_version()) versions.sort() versions.reverse() return versions def _make_base_dir(docid): """Given a docid it returns the complete path that should host its files.""" group = "g" + str(int(int(docid) / CFG_WEBSUBMIT_FILESYSTEM_BIBDOC_GROUP_LIMIT)) return os.path.join(CFG_WEBSUBMIT_FILEDIR, group, str(docid)) class Md5Folder: """Manage all the Md5 checksum about a folder""" def __init__(self, folder): """Initialize the class from the md5 checksum of a given path""" self.folder = folder try: self.load() except InvenioWebSubmitFileError: self.md5s = {} self.update() def update(self, only_new = True): """Update the .md5 file with the current files. If only_new is specified then only not already calculated file are calculated.""" if not only_new: self.md5s = {} if os.path.exists(self.folder): for filename in os.listdir(self.folder): if filename not in self.md5s and not filename.startswith('.'): self.md5s[filename] = calculate_md5(os.path.join(self.folder, filename)) self.store() def store(self): """Store the current md5 dictionary into .md5""" try: old_umask = os.umask(022) md5file = open(os.path.join(self.folder, ".md5"), "w") for key, value in self.md5s.items(): + if type(key) is unicode: + key = key.encode('utf-8') + if type(value) is unicode: + value = value.encode('utf-8') md5file.write('%s *%s\n' % (value, key)) md5file.close() os.umask(old_umask) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while storing .md5 for folder '%s': '%s'" % (self.folder, e) def load(self): """Load .md5 into the md5 dictionary""" self.md5s = {} try: md5file = open(os.path.join(self.folder, ".md5"), "r") for row in md5file: md5hash = row[:32] filename = row[34:].strip() self.md5s[filename] = md5hash md5file.close() except IOError: self.update() except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while loading .md5 for folder '%s': '%s'" % (self.folder, e) def check(self, filename = ''): """Check the specified file or all the files for which it exists a hash for being coherent with the stored hash.""" if filename and filename in self.md5s.keys(): try: return self.md5s[filename] == calculate_md5(os.path.join(self.folder, filename)) except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while loading '%s': '%s'" % (os.path.join(self.folder, filename), e) else: for filename, md5hash in self.md5s.items(): try: if calculate_md5(os.path.join(self.folder, filename)) != md5hash: return False except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while loading '%s': '%s'" % (os.path.join(self.folder, filename), e) return True def get_checksum(self, filename): """Return the checksum of a physical file.""" md5hash = self.md5s.get(filename, None) if md5hash is None: self.update() # Now it should not fail! md5hash = self.md5s[filename] return md5hash def calculate_md5_external(filename): """Calculate the md5 of a physical file through md5sum Command Line Tool. This is suitable for file larger than 256Kb.""" try: - md5_result = os.popen(CFG_PATH_MD5SUM + ' -b %s' % escape_shell_arg(filename)) + md5_result = os.popen(CFG_PATH_MD5SUM + ' -b %s' % escape_shell_arg(normalize_docname(filename))) ret = md5_result.read()[:32] md5_result.close() if len(ret) != 32: # Error in running md5sum. Let's fallback to internal # algorithm. return calculate_md5(filename, force_internal=True) else: return ret except Exception, e: raise InvenioWebSubmitFileError, "Encountered an exception while calculating md5 for file '%s': '%s'" % (filename, e) def calculate_md5(filename, force_internal=False): """Calculate the md5 of a physical file. This is suitable for files smaller than 256Kb.""" if not CFG_PATH_MD5SUM or force_internal or os.path.getsize(filename) < CFG_BIBDOCFILE_MD5_THRESHOLD: try: to_be_read = open(filename, "rb") computed_md5 = md5() while True: buf = to_be_read.read(CFG_BIBDOCFILE_MD5_BUFFER) if buf: computed_md5.update(buf) else: break to_be_read.close() return computed_md5.hexdigest() except Exception, e: register_exception() raise InvenioWebSubmitFileError, "Encountered an exception while calculating md5 for file '%s': '%s'" % (filename, e) else: return calculate_md5_external(filename) def bibdocfile_url_to_bibrecdocs(url): """Given an URL in the form CFG_SITE_[SECURE_]URL/record/xxx/files/... it returns a BibRecDocs object for the corresponding recid.""" recid = decompose_bibdocfile_url(url)[0] return BibRecDocs(recid) def bibdocfile_url_to_bibdoc(url): """Given an URL in the form CFG_SITE_[SECURE_]URL/record/xxx/files/... it returns a BibDoc object for the corresponding recid/docname.""" docname = decompose_bibdocfile_url(url)[1] return bibdocfile_url_to_bibrecdocs(url).get_bibdoc(docname) def bibdocfile_url_to_bibdocfile(url): """Given an URL in the form CFG_SITE_[SECURE_]URL/record/xxx/files/... it returns a BibDocFile object for the corresponding recid/docname/format.""" dummy, dummy, format = decompose_bibdocfile_url(url) return bibdocfile_url_to_bibdoc(url).get_file(format) def bibdocfile_url_to_fullpath(url): """Given an URL in the form CFG_SITE_[SECURE_]URL/record/xxx/files/... it returns the fullpath for the corresponding recid/docname/format.""" return bibdocfile_url_to_bibdocfile(url).get_full_path() def bibdocfile_url_p(url): """Return True when the url is a potential valid url pointing to a fulltext owned by a system.""" if url.startswith('%s/getfile.py' % CFG_SITE_URL) or url.startswith('%s/getfile.py' % CFG_SITE_SECURE_URL): return True if not (url.startswith('%s/record/' % CFG_SITE_URL) or url.startswith('%s/record/' % CFG_SITE_SECURE_URL)): return False splitted_url = url.split('/files/') return len(splitted_url) == 2 and splitted_url[0] != '' and splitted_url[1] != '' def get_docid_from_bibdocfile_fullpath(fullpath): """Given a bibdocfile fullpath (e.g. "CFG_WEBSUBMIT_FILEDIR/g0/123/bar.pdf;1") returns the docid (e.g. 123).""" if not fullpath.startswith(os.path.join(CFG_WEBSUBMIT_FILEDIR, 'g')): raise InvenioWebSubmitFileError, "Fullpath %s doesn't correspond to a valid bibdocfile fullpath" % fullpath dirname, base, extension, version = decompose_file_with_version(fullpath) try: return int(dirname.split('/')[-1]) except: raise InvenioWebSubmitFileError, "Fullpath %s doesn't correspond to a valid bibdocfile fullpath" % fullpath def decompose_bibdocfile_fullpath(fullpath): """Given a bibdocfile fullpath (e.g. "CFG_WEBSUBMIT_FILEDIR/g0/123/bar.pdf;1") returns a quadruple (recid, docname, format, version).""" if not fullpath.startswith(os.path.join(CFG_WEBSUBMIT_FILEDIR, 'g')): raise InvenioWebSubmitFileError, "Fullpath %s doesn't correspond to a valid bibdocfile fullpath" % fullpath dirname, base, extension, version = decompose_file_with_version(fullpath) try: docid = int(dirname.split('/')[-1]) bibdoc = BibDoc(docid) recid = bibdoc.get_recid() docname = bibdoc.get_docname() return recid, docname, extension, version except: raise InvenioWebSubmitFileError, "Fullpath %s doesn't correspond to a valid bibdocfile fullpath" % fullpath def decompose_bibdocfile_url(url): """Given a bibdocfile_url return a triple (recid, docname, format).""" if url.startswith('%s/getfile.py' % CFG_SITE_URL) or url.startswith('%s/getfile.py' % CFG_SITE_SECURE_URL): return decompose_bibdocfile_very_old_url(url) if url.startswith('%s/record/' % CFG_SITE_URL): recid_file = url[len('%s/record/' % CFG_SITE_URL):] elif url.startswith('%s/record/' % CFG_SITE_SECURE_URL): recid_file = url[len('%s/record/' % CFG_SITE_SECURE_URL):] else: raise InvenioWebSubmitFileError, "Url %s doesn't correspond to a valid record inside the system." % url recid_file = recid_file.replace('/files/', '/') recid, docname, format = decompose_file(urllib.unquote(recid_file)) if not recid and docname.isdigit(): ## If the URL was something similar to CFG_SITE_URL/record/123 return (int(docname), '', '') return (int(recid), docname, format) re_bibdocfile_old_url = re.compile(r'/record/(\d*)/files/') def decompose_bibdocfile_old_url(url): """Given a bibdocfile old url (e.g. CFG_SITE_URL/record/123/files) it returns the recid.""" g = re_bibdocfile_old_url.search(url) if g: return int(g.group(1)) raise InvenioWebSubmitFileError('%s is not a valid old bibdocfile url' % url) def decompose_bibdocfile_very_old_url(url): """Decompose an old /getfile.py? URL""" if url.startswith('%s/getfile.py' % CFG_SITE_URL) or url.startswith('%s/getfile.py' % CFG_SITE_SECURE_URL): params = urllib.splitquery(url)[1] if params: try: params = cgi.parse_qs(params) if 'docid' in params: docid = int(params['docid'][0]) bibdoc = BibDoc(docid) recid = bibdoc.get_recid() docname = bibdoc.get_docname() elif 'recid' in params: recid = int(params['recid'][0]) if 'name' in params: docname = params['name'][0] else: docname = '' else: raise InvenioWebSubmitFileError('%s has not enough params to correspond to a bibdocfile.' % url) format = normalize_format(params.get('format', [''])[0]) return (recid, docname, format) except Exception, e: raise InvenioWebSubmitFileError('Problem with %s: %s' % (url, e)) else: raise InvenioWebSubmitFileError('%s has no params to correspond to a bibdocfile.' % url) else: raise InvenioWebSubmitFileError('%s is not a valid very old bibdocfile url' % url) def get_docname_from_url(url): """Return a potential docname given a url""" path = urllib2.urlparse.urlsplit(urllib.unquote(url))[2] filename = os.path.split(path)[-1] return file_strip_ext(filename) def get_format_from_url(url): """Return a potential format given a url""" path = urllib2.urlparse.urlsplit(urllib.unquote(url))[2] filename = os.path.split(path)[-1] return filename[len(file_strip_ext(filename)):] def clean_url(url): """Given a local url e.g. a local path it render it a realpath.""" protocol = urllib2.urlparse.urlsplit(url)[0] if protocol in ('', 'file'): path = urllib2.urlparse.urlsplit(urllib.unquote(url))[2] return os.path.abspath(path) else: return url def is_url_a_local_file(url): """Return True if the given URL is pointing to a local file.""" protocol = urllib2.urlparse.urlsplit(url)[0] return protocol in ('', 'file') def check_valid_url(url): """Check for validity of a url or a file.""" try: if is_url_a_local_file(url): path = urllib2.urlparse.urlsplit(urllib.unquote(url))[2] if os.path.abspath(path) != path: raise StandardError, "%s is not a normalized path (would be %s)." % (path, os.path.normpath(path)) for allowed_path in CFG_BIBUPLOAD_FFT_ALLOWED_LOCAL_PATHS + [CFG_TMPDIR, CFG_WEBSUBMIT_STORAGEDIR]: if path.startswith(allowed_path): dummy_fd = open(path) dummy_fd.close() return raise StandardError, "%s is not in one of the allowed paths." % path else: urllib2.urlopen(url) except Exception, e: raise StandardError, "%s is not a correct url: %s" % (url, e) def safe_mkstemp(suffix): """Create a temporary filename that don't have any '.' inside a part from the suffix.""" tmpfd, tmppath = tempfile.mkstemp(suffix=suffix, dir=CFG_TMPDIR) if '.' not in suffix: # Just in case format is empty return tmpfd, tmppath while '.' in os.path.basename(tmppath)[:-len(suffix)]: os.close(tmpfd) os.remove(tmppath) tmpfd, tmppath = tempfile.mkstemp(suffix=suffix, dir=CFG_TMPDIR) return (tmpfd, tmppath) def download_url(url, format=None, sleep=2): """Download a url (if it corresponds to a remote file) and return a local url to it.""" if format is None: format = decompose_file(url)[2] else: format = normalize_format(format) protocol = urllib2.urlparse.urlsplit(url)[0] tmpfd, tmppath = safe_mkstemp(format) try: try: if protocol in ('', 'file'): path = urllib2.urlparse.urlsplit(urllib.unquote(url))[2] if os.path.abspath(path) != path: raise StandardError, "%s is not a normalized path (would be %s)." % (path, os.path.normpath(path)) for allowed_path in CFG_BIBUPLOAD_FFT_ALLOWED_LOCAL_PATHS + [CFG_TMPDIR, CFG_WEBSUBMIT_STORAGEDIR]: if path.startswith(allowed_path): shutil.copy(path, tmppath) if os.path.getsize(tmppath) > 0: return tmppath else: raise StandardError, "%s seems to be empty" % url raise StandardError, "%s is not in one of the allowed paths." % path else: try: from_file = urllib2.urlopen(url) to_file = open(tmppath, 'w') while True: block = from_file.read(CFG_BIBDOCFILE_BLOCK_SIZE) if not block: break to_file.write(block) to_file.close() from_file.close() except Exception, e: raise StandardError, "Error when downloading %s into %s: %s" % (url, tmppath, e) if os.path.getsize(tmppath) > 0: return tmppath else: raise StandardError, "%s seems to be empty" % url except: os.remove(tmppath) raise finally: os.close(tmpfd) class BibDocMoreInfo: """ This class wraps contextual information of the documents, such as the - comments - descriptions - flags. Such information is kept separately per every format/version instance of the corresponding document and is searialized in the database, ready to be retrieved (but not searched). @param docid: the document identifier. @type docid: integer @param more_info: a serialized version of an already existing more_info object. If not specified this information will be readed from the database, and othewise an empty dictionary will be allocated. @raise ValueError: if docid is not a positive integer. @ivar docid: the document identifier as passed to the constructor. @type docid: integer @ivar more_info: the more_info dictionary that will hold all the additional document information. @type more_info: dict of dict of dict @note: in general this class is never instanciated in client code and never used outside bibdocfile module. @note: this class will be extended in the future to hold all the new auxiliary information about a document. """ def __init__(self, docid, more_info=None): if not (type(docid) in (long, int) and docid > 0): raise ValueError("docid is not a positive integer, but %s." % docid) self.docid = docid if more_info is None: res = run_sql('SELECT more_info FROM bibdoc WHERE id=%s', (docid, )) if res and res[0][0]: self.more_info = cPickle.loads(blob_to_string(res[0][0])) else: self.more_info = {} else: self.more_info = cPickle.loads(more_info) if 'descriptions' not in self.more_info: self.more_info['descriptions'] = {} if 'comments' not in self.more_info: self.more_info['comments'] = {} if 'flags' not in self.more_info: self.more_info['flags'] = {} def __repr__(self): """ @return: the canonical string representation of the C{BibDocMoreInfo}. @rtype: string """ return 'BibDocMoreInfo(%i, %s)' % (self.docid, repr(cPickle.dumps(self.more_info))) def flush(self): """ Flush this object to the database. """ run_sql('UPDATE bibdoc SET more_info=%s WHERE id=%s', (cPickle.dumps(self.more_info), self.docid)) def set_flag(self, flagname, format, version): """ Sets a flag. @param flagname: the flag to set (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}). @type flagname: string @param format: the format for which the flag should set. @type format: string @param version: the version for which the flag should set: @type version: integer @raise ValueError: if the flag is not in L{CFG_BIBDOCFILE_AVAILABLE_FLAGS} """ if flagname in CFG_BIBDOCFILE_AVAILABLE_FLAGS: if not flagname in self.more_info['flags']: self.more_info['flags'][flagname] = {} if not version in self.more_info['flags'][flagname]: self.more_info['flags'][flagname][version] = {} if not format in self.more_info['flags'][flagname][version]: self.more_info['flags'][flagname][version][format] = {} self.more_info['flags'][flagname][version][format] = True self.flush() else: raise ValueError, "%s is not in %s" % (flagname, CFG_BIBDOCFILE_AVAILABLE_FLAGS) def get_comment(self, format, version): """ Returns the specified comment. @param format: the format for which the comment should be retrieved. @type format: string @param version: the version for which the comment should be retrieved. @type version: integer @return: the specified comment. @rtype: string """ try: assert(type(version) is int) format = normalize_format(format) return self.more_info['comments'].get(version, {}).get(format) except: register_exception() raise def get_description(self, format, version): """ Returns the specified description. @param format: the format for which the description should be retrieved. @type format: string @param version: the version for which the description should be retrieved. @type version: integer @return: the specified description. @rtype: string """ try: assert(type(version) is int) format = normalize_format(format) - return self.more_info['descriptions'].get(version, {}).get(format) + description = self.more_info['descriptions'].get(version, {}).get(format) + if type(description) is unicode: + return description.encode('utf-8') + else: + return description except: register_exception() raise def has_flag(self, flagname, format, version): """ Return True if the corresponding has been set. @param flagname: the name of the flag (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}). @type flagname: string @param format: the format for which the flag should be checked. @type format: string @param version: the version for which the flag should be checked. @type version: integer @return: True if the flag is set for the given format/version. @rtype: bool @raise ValueError: if the flagname is not in L{CFG_BIBDOCFILE_AVAILABLE_FLAGS} """ if flagname in CFG_BIBDOCFILE_AVAILABLE_FLAGS: return self.more_info['flags'].get(flagname, {}).get(version, {}).get(format, False) else: raise ValueError, "%s is not in %s" % (flagname, CFG_BIBDOCFILE_AVAILABLE_FLAGS) def get_flags(self, format, version): """ Return the list of all the enabled flags. @param format: the format for which the list should be returned. @type format: string @param version: the version for which the list should be returned. @type version: integer @return: the list of enabled flags (from L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}). @rtype: list of string """ return [flag for flag in self.more_info['flags'] if format in self.more_info['flags'][flag].get(version, {})] def set_comment(self, comment, format, version): """ Set a comment. @param comment: the comment to be set. @type comment: string @param format: the format for which the comment should be set. @type format: string @param version: the version for which the comment should be set: @type version: integer """ try: assert(type(version) is int and version > 0) format = normalize_format(format) if comment == KEEP_OLD_VALUE: comment = self.get_comment(format, version) or self.get_comment(format, version - 1) if not comment: self.unset_comment(format, version) self.flush() return if not version in self.more_info['comments']: self.more_info['comments'][version] = {} self.more_info['comments'][version][format] = comment self.flush() except: register_exception() raise def set_description(self, description, format, version): """ Set a description. @param description: the description to be set. @type description: string @param format: the format for which the description should be set. @type format: string @param version: the version for which the description should be set: @type version: integer """ try: assert(type(version) is int and version > 0) format = normalize_format(format) if description == KEEP_OLD_VALUE: description = self.get_description(format, version) or self.get_description(format, version - 1) if not description: self.unset_description(format, version) self.flush() return if not version in self.more_info['descriptions']: self.more_info['descriptions'][version] = {} self.more_info['descriptions'][version][format] = description self.flush() except: register_exception() raise def unset_comment(self, format, version): """ Unset a comment. @param format: the format for which the comment should be unset. @type format: string @param version: the version for which the comment should be unset: @type version: integer """ try: assert(type(version) is int and version > 0) del self.more_info['comments'][version][format] self.flush() except KeyError: pass except: register_exception() raise def unset_description(self, format, version): """ Unset a description. @param format: the format for which the description should be unset. @type format: string @param version: the version for which the description should be unset: @type version: integer """ try: assert(type(version) is int and version > 0) del self.more_info['descriptions'][version][format] self.flush() except KeyError: pass except: register_exception() raise def unset_flag(self, flagname, format, version): """ Unset a flag. @param flagname: the flag to be unset (see L{CFG_BIBDOCFILE_AVAILABLE_FLAGS}). @type flagname: string @param format: the format for which the flag should be unset. @type format: string @param version: the version for which the flag should be unset: @type version: integer @raise ValueError: if the flag is not in L{CFG_BIBDOCFILE_AVAILABLE_FLAGS} """ if flagname in CFG_BIBDOCFILE_AVAILABLE_FLAGS: try: del self.more_info['flags'][flagname][version][format] self.flush() except KeyError: pass else: raise ValueError, "%s is not in %s" % (flagname, CFG_BIBDOCFILE_AVAILABLE_FLAGS) def serialize(self): """ @return: the serialized version of this object. @rtype: string """ return cPickle.dumps(self.more_info) def readfile(filename): """ Read a file. @param filename: the name of the file to be read. @type filename: string @return: the text contained in the file. @rtype: string @note: Returns empty string in case of any error. @note: this function is useful for quick implementation of websubmit functions. """ try: return open(filename).read() except Exception: return '' diff --git a/modules/websubmit/lib/websubmit_webinterface.py b/modules/websubmit/lib/websubmit_webinterface.py index d911f2cb6..de720460f 100644 --- a/modules/websubmit/lib/websubmit_webinterface.py +++ b/modules/websubmit/lib/websubmit_webinterface.py @@ -1,1174 +1,1174 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. __lastupdated__ = """$Date$""" __revision__ = "$Id$" import os import time import cgi import sys import shutil from urllib import urlencode from invenio.config import \ CFG_ACCESS_CONTROL_LEVEL_SITE, \ CFG_SITE_LANG, \ CFG_SITE_NAME, \ CFG_TMPDIR, \ CFG_SITE_NAME_INTL, \ CFG_SITE_URL, \ CFG_SITE_SECURE_URL, \ CFG_WEBSUBMIT_STORAGEDIR, \ CFG_PREFIX, \ CFG_CERN_SITE from invenio import webinterface_handler_config as apache from invenio.dbquery import run_sql from invenio.access_control_config import VIEWRESTRCOLL from invenio.access_control_mailcookie import mail_cookie_create_authorize_action from invenio.access_control_engine import acc_authorize_action from invenio.access_control_admin import acc_is_role from invenio.webpage import page, create_error_box, pageheaderonly, \ pagefooteronly from invenio.webuser import getUid, page_not_authorized, collect_user_info, isGuestUser, isUserSuperAdmin from invenio.websubmit_config import * from invenio.webinterface_handler import wash_urlargd, WebInterfaceDirectory from invenio.urlutils import make_canonical_urlargd, redirect_to_url from invenio.messages import gettext_set_language from invenio.search_engine import \ guess_primary_collection_of_a_record, get_colID, record_exists, \ create_navtrail_links, check_user_can_view_record, record_empty from invenio.bibdocfile import BibRecDocs, normalize_format, file_strip_ext, \ stream_restricted_icon, BibDoc, InvenioWebSubmitFileError, stream_file, \ decompose_file, propose_next_docname, get_subformat_from_format from invenio.errorlib import register_exception from invenio.websubmit_icon_creator import create_icon, InvenioWebSubmitIconCreatorError import invenio.template websubmit_templates = invenio.template.load('websubmit') from invenio.websearchadminlib import get_detailed_page_tabs from invenio.session import get_session import invenio.template webstyle_templates = invenio.template.load('webstyle') websearch_templates = invenio.template.load('websearch') try: from invenio.fckeditor_invenio_connector import FCKeditorConnectorInvenio fckeditor_available = True except ImportError, e: fckeditor_available = False from invenio.websubmit_managedocfiles import \ create_file_upload_interface, \ get_upload_file_interface_javascript, \ get_upload_file_interface_css, \ move_uploaded_files_to_storage class WebInterfaceFilesPages(WebInterfaceDirectory): def __init__(self,recid): self.recid = recid def _lookup(self, component, path): # after /record//files/ every part is used as the file # name filename = component def getfile(req, form): args = wash_urlargd(form, websubmit_templates.files_default_urlargd) ln = args['ln'] _ = gettext_set_language(ln) uid = getUid(req) user_info = collect_user_info(req) verbose = args['verbose'] if verbose >= 1 and not isUserSuperAdmin(user_info): # Only SuperUser can see all the details! verbose = 0 if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE > 1: return page_not_authorized(req, "/record/%s" % self.recid, navmenuid='submit') if record_exists(self.recid) < 1: msg = "

    %s

    " % _("Requested record does not seem to exist.") return warningMsg(msg, req, CFG_SITE_NAME, ln) if record_empty(self.recid): msg = "

    %s

    " % _("Requested record does not seem to have been integrated.") return warningMsg(msg, req, CFG_SITE_NAME, ln) (auth_code, auth_message) = check_user_can_view_record(user_info, self.recid) if auth_code and user_info['email'] == 'guest': cookie = mail_cookie_create_authorize_action(VIEWRESTRCOLL, {'collection' : guess_primary_collection_of_a_record(self.recid)}) target = '/youraccount/login' + \ make_canonical_urlargd({'action': cookie, 'ln' : ln, 'referer' : \ CFG_SITE_URL + user_info['uri']}, {}) return redirect_to_url(req, target, norobot=True) elif auth_code: return page_not_authorized(req, "../", \ text = auth_message) readonly = CFG_ACCESS_CONTROL_LEVEL_SITE == 1 # From now on: either the user provided a specific file # name (and a possible version), or we return a list of # all the available files. In no case are the docids # visible. try: bibarchive = BibRecDocs(self.recid) except InvenioWebSubmitFileError, e: register_exception(req=req, alert_admin=True) msg = "

    %s

    %s

    " % ( _("The system has encountered an error in retrieving the list of files for this document."), _("The error has been logged and will be taken in consideration as soon as possible.")) return warningMsg(msg, req, CFG_SITE_NAME, ln) if bibarchive.deleted_p(): return print_warning(req, _("Requested record does not seem to exist.")) docname = '' format = '' version = '' warn = '' if filename: # We know the complete file name, guess which docid it # refers to ## TODO: Change the extension system according to ext.py from setlink ## and have a uniform extension mechanism... docname = file_strip_ext(filename) format = filename[len(docname):] if format and format[0] != '.': format = '.' + format if args['subformat']: format += ';%s' % args['subformat'] else: docname = args['docname'] if not format: format = args['format'] if args['subformat']: format += ';%s' % args['subformat'] if not version: version = args['version'] # version could be either empty, or all or an integer try: int(version) except ValueError: if version != 'all': version = '' display_hidden = isUserSuperAdmin(user_info) if version != 'all': # search this filename in the complete list of files for doc in bibarchive.list_bibdocs(): if docname == doc.get_docname(): try: try: docfile = doc.get_file(format, version) except InvenioWebSubmitFileError, msg: req.status = apache.HTTP_NOT_FOUND if req.headers_in.get('referer'): ## There must be a broken link somewhere. ## Maybe it's good to alert the admin register_exception(req=req, alert_admin=True) warn += print_warning(_("The format %s does not exist for the given version: %s") % (cgi.escape(format), cgi.escape(str(msg)))) break (auth_code, auth_message) = docfile.is_restricted(user_info) if auth_code != 0: if CFG_WEBSUBMIT_ICON_SUBFORMAT_RE.match(get_subformat_from_format(format)): return stream_restricted_icon(req) if user_info['email'] == 'guest': cookie = mail_cookie_create_authorize_action('viewrestrdoc', {'status' : docfile.get_status()}) target = '/youraccount/login' + \ make_canonical_urlargd({'action': cookie, 'ln' : ln, 'referer' : \ CFG_SITE_URL + user_info['uri']}, {}) redirect_to_url(req, target) else: req.status = apache.HTTP_UNAUTHORIZED warn += print_warning(_("This file is restricted: ") + auth_message) break if not docfile.hidden_p(): if not readonly: ip = str(req.remote_ip) res = doc.register_download(ip, version, format, uid) try: return docfile.stream(req) except InvenioWebSubmitFileError, msg: register_exception(req=req, alert_admin=True) req.status = apache.HTTP_INTERNAL_SERVER_ERROR return warningMsg(_("An error has happened in trying to stream the request file."), req, CFG_SITE_NAME, ln) else: req.status = apache.HTTP_UNAUTHORIZED warn = print_warning(_("The requested file is hidden and can not be accessed.")) except InvenioWebSubmitFileError, msg: register_exception(req=req, alert_admin=True) if docname and format and not warn: req.status = apache.HTTP_NOT_FOUND warn += print_warning(_("Requested file does not seem to exist.")) filelist = bibarchive.display("", version, ln=ln, verbose=verbose, display_hidden=display_hidden) t = warn + websubmit_templates.tmpl_filelist( ln=ln, recid=self.recid, docname=args['docname'], version=version, filelist=filelist) cc = guess_primary_collection_of_a_record(self.recid) unordered_tabs = get_detailed_page_tabs(get_colID(cc), self.recid, ln) ordered_tabs_id = [(tab_id, values['order']) for (tab_id, values) in unordered_tabs.iteritems()] ordered_tabs_id.sort(lambda x,y: cmp(x[1],y[1])) link_ln = '' if ln != CFG_SITE_LANG: link_ln = '?ln=%s' % ln tabs = [(unordered_tabs[tab_id]['label'], \ '%s/record/%s/%s%s' % (CFG_SITE_URL, self.recid, tab_id, link_ln), \ tab_id == 'files', unordered_tabs[tab_id]['enabled']) \ for (tab_id, order) in ordered_tabs_id if unordered_tabs[tab_id]['visible'] == True] top = webstyle_templates.detailed_record_container_top(self.recid, tabs, args['ln']) bottom = webstyle_templates.detailed_record_container_bottom(self.recid, tabs, args['ln']) title, description, keywords = websearch_templates.tmpl_record_page_header_content(req, self.recid, args['ln']) return pageheaderonly(title=title, navtrail=create_navtrail_links(cc=cc, aas=0, ln=ln) + \ - ''' > %s - > %s''' % \ - (CFG_SITE_URL, self.recid, title, _("Access to Fulltext")), + '
  • %s
  • %s
  • ' % \ + (CFG_SITE_URL, self.recid, ln, title, _("Access to Fulltext")), description="", keywords="keywords", uid=uid, language=ln, req=req, navmenuid='search', navtrail_append_title_p=0) + \ - websearch_templates.tmpl_search_pagestart(ln) + \ + websearch_templates.tmpl_search_pagestart(user_info, ln=ln) + \ top + t + bottom + \ websearch_templates.tmpl_search_pageend(ln) + \ pagefooteronly(lastupdated=__lastupdated__, language=ln, req=req) return getfile, [] def __call__(self, req, form): """Called in case of URLs like /record/123/files without trailing slash. """ args = wash_urlargd(form, websubmit_templates.files_default_urlargd) ln = args['ln'] link_ln = '' if ln != CFG_SITE_LANG: link_ln = '?ln=%s' % ln return redirect_to_url(req, '%s/record/%s/files/%s' % (CFG_SITE_URL, self.recid, link_ln)) def websubmit_legacy_getfile(req, form): """ Handle legacy /getfile.py URLs """ args = wash_urlargd(form, { 'recid': (int, 0), 'docid': (int, 0), 'version': (str, ''), 'name': (str, ''), 'format': (str, ''), 'ln' : (str, CFG_SITE_LANG) }) _ = gettext_set_language(args['ln']) def _getfile_py(req, recid=0, docid=0, version="", name="", format="", ln=CFG_SITE_LANG): if not recid: ## Let's obtain the recid from the docid if docid: try: bibdoc = BibDoc(docid=docid) recid = bibdoc.get_recid() except InvenioWebSubmitFileError, e: return warningMsg(_("An error has happened in trying to retrieve the requested file."), req, CFG_SITE_NAME, ln) else: return warningMsg(_('Not enough information to retrieve the document'), req, CFG_SITE_NAME, ln) else: if not name and docid: ## Let's obtain the name from the docid try: bibdoc = BibDoc(docid) name = bibdoc.get_docname() except InvenioWebSubmitFileError, e: return warningMsg(_("An error has happened in trying to retrieving the requested file."), req, CFG_SITE_NAME, ln) format = normalize_format(format) redirect_to_url(req, '%s/record/%s/files/%s%s?ln=%s%s' % (CFG_SITE_URL, recid, name, format, ln, version and 'version=%s' % version or ''), apache.HTTP_MOVED_PERMANENTLY) return _getfile_py(req, **args) # -------------------------------------------------- from invenio.websubmit_engine import home, action, interface, endaction class WebInterfaceSubmitPages(WebInterfaceDirectory): _exports = ['summary', 'sub', 'direct', '', 'attachfile', 'uploadfile', \ 'getuploadedfile', 'managedocfiles', 'managedocfilesasync'] def managedocfiles(self, req, form): """ Display admin interface to manage files of a record """ argd = wash_urlargd(form, { 'ln': (str, ''), 'access': (str, ''), 'recid': (int, None), 'do': (int, 0), 'cancel': (str, None), }) _ = gettext_set_language(argd['ln']) uid = getUid(req) user_info = collect_user_info(req) # Check authorization (auth_code, auth_msg) = acc_authorize_action(req, 'runbibdocfile') if auth_code and user_info['email'] == 'guest': # Ask to login target = '/youraccount/login' + \ make_canonical_urlargd({'ln' : argd['ln'], 'referer' : CFG_SITE_URL + user_info['uri']}, {}) return redirect_to_url(req, target) elif auth_code: return page_not_authorized(req, referer="/submit/managedocfiles", uid=uid, text=auth_msg, ln=argd['ln'], navmenuid="admin") # Prepare navtrail - navtrail = '''Admin Area > %(manage_files)s''' \ + navtrail = '''
  • Admin Area
  • %(manage_files)s
  • ''' \ % {'CFG_SITE_URL': CFG_SITE_URL, 'manage_files': _("Manage Document Files")} body = '' if argd['do'] != 0 and not argd['cancel']: # Apply modifications working_dir = os.path.join(CFG_TMPDIR, 'websubmit_upload_interface_config_' + str(uid), argd['access']) move_uploaded_files_to_storage(working_dir=working_dir, recid=argd['recid'], icon_sizes=['180>','700>'], create_icon_doctypes=['*'], force_file_revision=False) # Clean temporary directory shutil.rmtree(working_dir) # Confirm modifications body += '

    %s

    ' % \ (_('Your modifications to record #%i have been submitted') % argd['recid']) elif argd['cancel']: # Clean temporary directory working_dir = os.path.join(CFG_TMPDIR, 'websubmit_upload_interface_config_' + str(uid), argd['access']) shutil.rmtree(working_dir) body += '

    %s

    ' % \ (_('Your modifications to record #%i have been cancelled') % argd['recid']) if not argd['recid'] or argd['do'] != 0: body += '''
    ''' % {'edit': _('Edit'), 'edit_record': _('Edit record'), 'CFG_SITE_URL': CFG_SITE_URL} access = time.strftime('%Y%m%d_%H%M%S') if argd['recid'] and argd['do'] == 0: # Displaying interface to manage files # Prepare navtrail title, description, keywords = websearch_templates.tmpl_record_page_header_content(req, argd['recid'], argd['ln']) - navtrail = '''Admin Area > - %(manage_files)s > - %(record)s: %(title)s + navtrail = ''' +
  • Admin Area
  • +
  • %(manage_files)s
  • +
  • %(record)s: %(title)s
  • ''' \ % {'CFG_SITE_URL': CFG_SITE_URL, 'title': title, 'manage_files': _("Document File Manager"), 'record': _("Record #%i") % argd['recid']} body += create_file_upload_interface(\ recid=argd['recid'], ln=argd['ln'], uid=uid, sbm_access=access, restrictions_and_desc=CFG_WEBSUBMIT_DOCUMENT_FILE_MANAGER_RESTRICTIONS, doctypes_and_desc=CFG_WEBSUBMIT_DOCUMENT_FILE_MANAGER_DOCTYPES, **CFG_WEBSUBMIT_DOCUMENT_FILE_MANAGER_MISC)[1] body += '''
    ''' % \ {'apply_changes': _("Apply changes"), 'cancel_changes': _("Cancel all changes"), 'recid': argd['recid'], 'access': access, 'ln': argd['ln'], 'CFG_SITE_URL': CFG_SITE_URL} body += websubmit_templates.tmpl_page_do_not_leave_submission_js(argd['ln'], enabled=True) return page(title = _("Document File Manager") + (argd['recid'] and (': ' + _("Record #%i") % argd['recid']) or ''), navtrail=navtrail, navtrail_append_title_p=0, metaheaderadd = get_upload_file_interface_javascript(form_url_params='?access='+access) + \ get_upload_file_interface_css(), body = body, uid = uid, language=argd['ln'], req=req, navmenuid='admin') def managedocfilesasync(self, req, form): "Upload file and returns upload interface" argd = wash_urlargd(form, { 'ln': (str, ''), 'recid': (int, 1), 'doctype': (str, ''), 'access': (str, ''), 'indir': (str, ''), }) user_info = collect_user_info(req) include_headers = False # User submitted either through WebSubmit, or admin interface. if form.has_key('doctype') and form.has_key('indir') \ and form.has_key('access'): # Submitted through WebSubmit. Check rights include_headers = True working_dir = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, argd['indir'], argd['doctype'], argd['access']) try: assert(working_dir == os.path.abspath(working_dir)) except AssertionError: return apache.HTTP_UNAUTHORIZED try: # Retrieve recid from working_dir, safer. recid_fd = file(os.path.join(working_dir, 'SN')) recid = int(recid_fd.read()) recid_fd.close() except: recid = "" try: act_fd = file(os.path.join(working_dir, 'act')) action = act_fd.read() act_fd.close() except: action = "" # Is user authorized to perform this action? (auth_code, auth_msg) = acc_authorize_action(user_info, "submit", doctype=argd['doctype'], act=action) else: # User must be allowed to attach files (auth_code, auth_msg) = acc_authorize_action(user_info, 'runbibdocfile') recid = argd['recid'] if auth_code: return apache.HTTP_UNAUTHORIZED return create_file_upload_interface(recid=recid, ln=argd['ln'], print_outside_form_tag=False, print_envelope=False, form=form, include_headers=include_headers, sbm_indir=argd['indir'], sbm_access=argd['access'], sbm_doctype=argd['doctype'], uid=user_info['uid'])[1] def uploadfile(self, req, form): """ Similar to /submit, but only consider files. Nice for asynchronous Javascript uploads. Should be used to upload a single file. Also try to create an icon, and return URL to file(s) + icon(s) Authentication is performed based on session ID passed as parameter instead of cookie-based authentication, due to the use of this URL by the Flash plugin (to upload multiple files at once), which does not route cookies. FIXME: consider adding /deletefile and /modifyfile functions + parsing of additional parameters to rename files, add comments, restrictions, etc. """ if sys.hexversion < 0x2060000: try: import simplejson as json simplejson_available = True except ImportError: # Okay, no Ajax app will be possible, but continue anyway, # since this package is only recommended, not mandatory. simplejson_available = False else: import json simplejson_available = True argd = wash_urlargd(form, { 'doctype': (str, ''), 'access': (str, ''), 'indir': (str, ''), 'session_id': (str, ''), 'rename': (str, ''), }) curdir = None if not form.has_key("indir") or \ not form.has_key("doctype") or \ not form.has_key("access"): return apache.HTTP_BAD_REQUEST else: curdir = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, argd['indir'], argd['doctype'], argd['access']) user_info = collect_user_info(req) if form.has_key("session_id"): # Are we uploading using Flash, which does not transmit # cookie? The expect to receive session_id as a form # parameter. First check that IP addresses do not # mismatch. A ValueError will be raises if there is # something wrong session = get_session(req=req, sid=argd['session_id']) try: session = get_session(req=req, sid=argd['session_id']) except ValueError, e: return apache.HTTP_BAD_REQUEST # Retrieve user information. We cannot rely on the session here. res = run_sql("SELECT uid FROM session WHERE session_key=%s", (argd['session_id'],)) if len(res): uid = res[0][0] user_info = collect_user_info(uid) try: act_fd = file(os.path.join(curdir, 'act')) action = act_fd.read() act_fd.close() except: act = "" # Is user authorized to perform this action? (auth_code, auth_message) = acc_authorize_action(uid, "submit", verbose=0, doctype=argd['doctype'], act=action) if acc_is_role("submit", doctype=argd['doctype'], act=action) and auth_code != 0: # User cannot submit return apache.HTTP_UNAUTHORIZED else: # Process the upload and get the response added_files = {} for key, formfields in form.items(): filename = key.replace("[]", "") file_to_open = os.path.join(curdir, filename) if hasattr(formfields, "filename") and formfields.filename: dir_to_open = os.path.abspath(os.path.join(curdir, 'files', str(user_info['uid']), key)) try: assert(dir_to_open.startswith(CFG_WEBSUBMIT_STORAGEDIR)) except AssertionError: register_exception(req=req, prefix='curdir="%s", key="%s"' % (curdir, key)) return apache.HTTP_FORBIDDEN if not os.path.exists(dir_to_open): try: os.makedirs(dir_to_open) except: register_exception(req=req, alert_admin=True) return apache.HTTP_FORBIDDEN filename = formfields.filename ## Before saving the file to disc, wash the filename (in particular ## washing away UNIX and Windows (e.g. DFS) paths): filename = os.path.basename(filename.split('\\')[-1]) filename = filename.strip() if filename != "": # Check that file does not already exist n = 1 while os.path.exists(os.path.join(dir_to_open, filename)): #dirname, basename, extension = decompose_file(new_destination_path) basedir, name, extension = decompose_file(filename) new_name = propose_next_docname(name) filename = new_name + extension # This may be dangerous if the file size is bigger than the available memory fp = open(os.path.join(dir_to_open, filename), "w") fp.write(formfields.file.read()) fp.close() fp = open(os.path.join(curdir, "lastuploadedfile"), "w") fp.write(filename) fp.close() fp = open(file_to_open, "w") fp.write(filename) fp.close() try: # Create icon (icon_path, icon_name) = create_icon( { 'input-file' : os.path.join(dir_to_open, filename), 'icon-name' : filename, # extension stripped automatically 'icon-file-format' : 'gif', 'multipage-icon' : False, 'multipage-icon-delay' : 100, 'icon-scale' : "300>", # Resize only if width > 300 'verbosity' : 0, }) icons_dir = os.path.join(os.path.join(curdir, 'icons', str(user_info['uid']), key)) if not os.path.exists(icons_dir): # Create uid/icons dir if needed os.makedirs(icons_dir) os.rename(os.path.join(icon_path, icon_name), os.path.join(icons_dir, icon_name)) added_files[key] = {'name': filename, 'iconName': icon_name} except InvenioWebSubmitIconCreatorError, e: # We could not create the icon added_files[key] = {'name': filename} continue else: return apache.HTTP_BAD_REQUEST # Send our response if simplejson_available: return json.dumps(added_files) def getuploadedfile(self, req, form): """ Stream uploaded files. For the moment, restrict to files in ./curdir/files/uid or ./curdir/icons/uid directory, so that we are sure we stream files only to the user who uploaded them. """ argd = wash_urlargd(form, {'indir': (str, None), 'doctype': (str, None), 'access': (str, None), 'icon': (int, 0), 'key': (str, None), 'filename': (str, None)}) if None in argd.values(): return apache.HTTP_BAD_REQUEST uid = getUid(req) if argd['icon']: file_path = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, argd['indir'], argd['doctype'], argd['access'], 'icons', str(uid), argd['key'], argd['filename'] ) else: file_path = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, argd['indir'], argd['doctype'], argd['access'], 'files', str(uid), argd['key'], argd['filename'] ) abs_file_path = os.path.abspath(file_path) if abs_file_path.startswith(CFG_WEBSUBMIT_STORAGEDIR): # Check if file exist. Note that icon might not yet have # been created. for i in range(5): if os.path.exists(abs_file_path): return stream_file(req, abs_file_path) time.sleep(1) # Send error 404 in all other cases return apache.HTTP_NOT_FOUND def attachfile(self, req, form): """ Process requests received from FCKeditor to upload files. If the uploaded file is an image, create an icon version """ if not fckeditor_available: return apache.HTTP_NOT_FOUND if not form.has_key('type'): form['type'] = 'File' if not form.has_key('NewFile') or \ not form['type'] in \ ['File', 'Image', 'Flash', 'Media']: return apache.HTTP_NOT_FOUND uid = getUid(req) # URL where the file can be fetched after upload user_files_path = '%(CFG_SITE_URL)s/submit/getattachedfile/%(uid)s' % \ {'uid': uid, 'CFG_SITE_URL': CFG_SITE_URL} # Path to directory where uploaded files are saved user_files_absolute_path = '%(CFG_PREFIX)s/var/tmp/attachfile/%(uid)s' % \ {'uid': uid, 'CFG_PREFIX': CFG_PREFIX} try: os.makedirs(user_files_absolute_path) except: pass # Create a Connector instance to handle the request conn = FCKeditorConnectorInvenio(form, recid=-1, uid=uid, allowed_commands=['QuickUpload'], allowed_types = ['File', 'Image', 'Flash', 'Media'], user_files_path = user_files_path, user_files_absolute_path = user_files_absolute_path) user_info = collect_user_info(req) (auth_code, auth_message) = acc_authorize_action(user_info, 'attachsubmissionfile') if user_info['email'] == 'guest': # User is guest: must login prior to upload data = conn.sendUploadResults(1, '', '', 'Please login before uploading file.') elif auth_code: # User cannot submit data = conn.sendUploadResults(1, '', '', 'Sorry, you are not allowed to submit files.') else: # Process the upload and get the response data = conn.doResponse() # At this point, the file has been uploaded. The FCKeditor # submit the image in form['NewFile']. However, the image # might have been renamed in between by the FCK connector on # the server side, by appending (%04d) at the end of the base # name. Retrieve that file uploaded_file_path = os.path.join(user_files_absolute_path, form['type'].lower(), form['NewFile'].filename) uploaded_file_path = retrieve_most_recent_attached_file(uploaded_file_path) uploaded_file_name = os.path.basename(uploaded_file_path) # Create an icon if form.get('type','') == 'Image': try: (icon_path, icon_name) = create_icon( { 'input-file' : uploaded_file_path, 'icon-name' : os.path.splitext(uploaded_file_name)[0], 'icon-file-format' : os.path.splitext(uploaded_file_name)[1][1:] or 'gif', 'multipage-icon' : False, 'multipage-icon-delay' : 100, 'icon-scale' : "300>", # Resize only if width > 300 'verbosity' : 0, }) # Move original file to /original dir, and replace it with icon file original_user_files_absolute_path = os.path.join(user_files_absolute_path, 'image', 'original') if not os.path.exists(original_user_files_absolute_path): # Create /original dir if needed os.mkdir(original_user_files_absolute_path) os.rename(uploaded_file_path, original_user_files_absolute_path + os.sep + uploaded_file_name) os.rename(icon_path + os.sep + icon_name, uploaded_file_path) except InvenioWebSubmitIconCreatorError, e: pass # Transform the headers into something ok for mod_python for header in conn.headers: if not header is None: if header[0] == 'Content-Type': req.content_type = header[1] else: req.headers_out[header[0]] = header[1] # Send our response req.send_http_header() req.write(data) def _lookup(self, component, path): """ This handler is invoked for the dynamic URLs (for getting and putting attachments) Eg: /submit/getattachedfile/41336978/image/myfigure.png /submit/attachfile/41336978/image/myfigure.png """ if component == 'getattachedfile' and len(path) > 2: uid = path[0] # uid of the submitter file_type = path[1] # file, image, flash or media (as # defined by FCKeditor) if file_type in ['file', 'image', 'flash', 'media']: file_name = '/'.join(path[2:]) # the filename def answer_get(req, form): """Accessing files attached to submission.""" form['file'] = file_name form['type'] = file_type form['uid'] = uid return self.getattachedfile(req, form) return answer_get, [] # All other cases: file not found return None, [] def getattachedfile(self, req, form): """ Returns a file uploaded to the submission 'drop box' by the FCKeditor. """ argd = wash_urlargd(form, {'file': (str, None), 'type': (str, None), 'uid': (int, 0)}) # Can user view this record, i.e. can user access its # attachments? uid = getUid(req) user_info = collect_user_info(req) if not argd['file'] is None: # Prepare path to file on disk. Normalize the path so that # ../ and other dangerous components are removed. path = os.path.abspath(CFG_PREFIX + '/var/tmp/attachfile/' + \ '/' + str(argd['uid']) + \ '/' + argd['type'] + '/' + argd['file']) # Check that we are really accessing attachements # directory, for the declared record. if path.startswith(CFG_PREFIX + '/var/tmp/attachfile/') and os.path.exists(path): return stream_file(req, path) # Send error 404 in all other cases return(apache.HTTP_NOT_FOUND) def direct(self, req, form): """Directly redirected to an initialized submission.""" args = wash_urlargd(form, {'sub': (str, ''), 'access' : (str, '')}) sub = args['sub'] access = args['access'] ln = args['ln'] _ = gettext_set_language(ln) uid = getUid(req) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return page_not_authorized(req, "direct", navmenuid='submit') myQuery = req.args if not sub: return warningMsg(_("Sorry, 'sub' parameter missing..."), req, ln=ln) res = run_sql("SELECT docname,actname FROM sbmIMPLEMENT WHERE subname=%s", (sub,)) if not res: return warningMsg(_("Sorry. Cannot analyse parameter"), req, ln=ln) else: # get document type doctype = res[0][0] # get action name action = res[0][1] # retrieve other parameter values params = dict(form) # find existing access number if not access: # create 'unique' access number pid = os.getpid() now = time.time() access = "%i_%s" % (now,pid) # retrieve 'dir' value res = run_sql ("SELECT dir FROM sbmACTION WHERE sactname=%s", (action,)) dir = res[0][0] mainmenu = req.headers_in.get('referer') params['access'] = access params['act'] = action params['doctype'] = doctype params['startPg'] = '1' params['mainmenu'] = mainmenu params['ln'] = ln params['indir'] = dir url = "%s/submit?%s" % (CFG_SITE_URL, urlencode(params)) redirect_to_url(req, url) def sub(self, req, form): """DEPRECATED: /submit/sub is deprecated now, so raise email to the admin (but allow submission to continue anyway)""" args = wash_urlargd(form, {'password': (str, '')}) uid = getUid(req) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return page_not_authorized(req, "../sub/", navmenuid='submit') try: raise DeprecationWarning, 'submit/sub handler has been used. Please use submit/direct. e.g. "submit/sub?RN=123@SBIFOO" -> "submit/direct?RN=123&sub=SBIFOO"' except DeprecationWarning: register_exception(req=req, alert_admin=True) ln = args['ln'] _ = gettext_set_language(ln) #DEMOBOO_RN=DEMO-BOOK-2008-001&ln=en&password=1223993532.26572%40APPDEMOBOO params = dict(form) password = args['password'] if password: del params['password'] if "@" in password: params['access'], params['sub'] = password.split('@', 1) else: params['sub'] = password else: args = str(req.args).split('@') if len(args) > 1: params = {'sub' : args[-1]} args = '@'.join(args[:-1]) params.update(cgi.parse_qs(args)) else: return warningMsg(_("Sorry, invalid URL..."), req, ln=ln) url = "%s/submit/direct?%s" % (CFG_SITE_URL, urlencode(params, doseq=True)) redirect_to_url(req, url) def summary(self, req, form): args = wash_urlargd(form, { 'doctype': (str, ''), 'act': (str, ''), 'access': (str, ''), 'indir': (str, '')}) uid = getUid(req) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return page_not_authorized(req, "../summary", navmenuid='submit') t="" curdir = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, args['indir'], args['doctype'], args['access']) try: assert(curdir == os.path.abspath(curdir)) except AssertionError: register_exception(req=req, alert_admin=True, prefix='Possible cracking tentative: indir="%s", doctype="%s", access="%s"' % (args['indir'], args['doctype'], args['access'])) return warningMsg("Invalid parameters", req) subname = "%s%s" % (args['act'], args['doctype']) res = run_sql("select sdesc,fidesc,pagenb,level from sbmFIELD where subname=%s " "order by pagenb,fieldnb", (subname,)) nbFields = 0 values = [] for arr in res: if arr[0] != "": val = { 'mandatory' : (arr[3] == 'M'), 'value' : '', 'page' : arr[2], 'name' : arr[0], } if os.path.exists(os.path.join(curdir, curdir,arr[1])): fd = open(os.path.join(curdir, arr[1]),"r") value = fd.read() fd.close() value = value.replace("\n"," ") value = value.replace("Select:","") else: value = "" val['value'] = value values.append(val) return websubmit_templates.tmpl_submit_summary( ln = args['ln'], values = values, ) def index(self, req, form): args = wash_urlargd(form, { 'c': (str, CFG_SITE_NAME), 'doctype': (str, ''), 'act': (str, ''), 'startPg': (str, "1"), 'access': (str, ''), 'mainmenu': (str, ''), 'fromdir': (str, ''), 'nextPg': (str, ''), 'nbPg': (str, ''), 'curpage': (str, '1'), 'step': (str, '0'), 'mode': (str, 'U'), }) ## Strip whitespace from beginning and end of doctype and action: args["doctype"] = args["doctype"].strip() args["act"] = args["act"].strip() def _index(req, c, ln, doctype, act, startPg, access, mainmenu, fromdir, nextPg, nbPg, curpage, step, mode): uid = getUid(req) if isGuestUser(uid): return redirect_to_url(req, "%s/youraccount/login%s" % ( CFG_SITE_SECURE_URL, make_canonical_urlargd({ 'referer' : CFG_SITE_URL + req.unparsed_uri, 'ln' : args['ln']}, {})), norobot=True) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return page_not_authorized(req, "../submit", navmenuid='submit') if CFG_CERN_SITE: ## HACK BEGIN: this is a hack for CMS and ATLAS draft from invenio.webuser import collect_user_info user_info = collect_user_info(req) if doctype == 'CMSPUB' and act == "" and 'cds-admin [CERN]' not in user_info['group'] and not user_info['email'].lower() == 'cds.support@cern.ch': if 'cms-publication-committee-chair [CERN]' not in user_info['group']: return page_not_authorized(req, "../submit", text="In order to access this submission interface you need to be member of the CMS Publication Committee Chair.", navmenuid='submit') elif doctype == 'ATLPUB' and 'cds-admin [CERN]' not in user_info['group'] and not user_info['email'].lower() == 'cds.support@cern.ch': if 'atlas-gen [CERN]' not in user_info['group']: return page_not_authorized(req, "../submit", text="In order to access this submission interface you need to be member of ATLAS.", navmenuid='submit') ## HACK END if doctype=="": return home(req,c,ln) elif act=="": return action(req,c,ln,doctype) elif int(step)==0: return interface(req, c, ln, doctype, act, startPg, access, mainmenu, fromdir, nextPg, nbPg, curpage) else: return endaction(req, c, ln, doctype, act, startPg, access,mainmenu, fromdir, nextPg, nbPg, curpage, step, mode) return _index(req, **args) # Answer to both /submit/ and /submit __call__ = index def errorMsg(title, req, c=None, ln=CFG_SITE_LANG): # load the right message language _ = gettext_set_language(ln) if c is None: c = CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME) return page(title = _("Error"), body = create_error_box(req, title=str(title), verbose=0, ln=ln), description="%s - Internal Error" % c, keywords="%s, Internal Error" % c, uid = getUid(req), language=ln, req=req, navmenuid='submit') def warningMsg(title, req, c=None, ln=CFG_SITE_LANG): # load the right message language _ = gettext_set_language(ln) if c is None: c = CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME) return page(title = _("Warning"), body = title, description="%s - Internal Error" % c, keywords="%s, Internal Error" % c, uid = getUid(req), language=ln, req=req, navmenuid='submit') def print_warning(msg, type='', prologue='
    ', epilogue='
    '): """Prints warning message and flushes output.""" if msg: return websubmit_templates.tmpl_print_warning( msg = msg, type = type, prologue = prologue, epilogue = epilogue, ) else: return '' def retrieve_most_recent_attached_file(file_path): """ Retrieve the latest file that has been uploaded with the FCKeditor. This is the only way to retrieve files that the FCKeditor has renamed after the upload. Eg: 'prefix/image.jpg' was uploaded but did already exist. FCKeditor silently renamed it to 'prefix/image(1).jpg': >>> retrieve_most_recent_attached_file('prefix/image.jpg') 'prefix/image(1).jpg' """ (base_path, filename) = os.path.split(file_path) base_name = os.path.splitext(filename)[0] file_ext = os.path.splitext(filename)[1][1:] most_recent_filename = filename i = 0 while True: i += 1 possible_filename = "%s(%d).%s" % \ (base_name, i, file_ext) if os.path.exists(base_path + os.sep + possible_filename): most_recent_filename = possible_filename else: break return os.path.join(base_path, most_recent_filename) diff --git a/po/POTFILES.in b/po/POTFILES.in index 31cadba49..abc773195 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,267 +1,294 @@ ## This file is part of Invenio. ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. ## ## Invenio is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## Invenio is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # # List of source files which contain translatable strings. # modules/webhelp/web/help-central.webdoc modules/webhelp/web/admin/admin.webdoc modules/websearch/doc/search-tips.webdoc modules/websearch/doc/search-guide.webdoc modules/websearch/doc/admin/websearch-admin-guide.webdoc modules/websubmit/doc/submit-guide.webdoc modules/websubmit/doc/admin/websubmit-admin-guide.webdoc modules/bibedit/doc/admin/bibedit-admin-guide.webdoc modules/bibupload/doc/admin/bibupload-admin-guide.webdoc modules/bibformat/doc/admin/bibformat-admin-guide.webdoc modules/bibharvest/doc/admin/bibharvest-admin-guide.webdoc modules/webmessage/doc/admin/webmessage-admin-guide.webdoc modules/webalert/doc/admin/webalert-admin-guide.webdoc modules/bibclassify/doc/admin/bibclassify-admin-guide.webdoc modules/bibmatch/doc/admin/bibmatch-admin-guide.webdoc modules/bibconvert/doc/admin/bibconvert-admin-guide.webdoc modules/bibsched/doc/admin/bibsched-admin-guide.webdoc modules/bibrank/doc/admin/bibrank-admin-guide.webdoc modules/webstat/doc/admin/webstat-admin-guide.webdoc modules/bibindex/doc/admin/bibindex-admin-guide.webdoc modules/webbasket/doc/admin/webbasket-admin-guide.webdoc modules/webcomment/doc/admin/webcomment-admin-guide.webdoc modules/websession/doc/admin/websession-admin-guide.webdoc modules/webstyle/doc/admin/webstyle-admin-guide.webdoc modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc modules/elmsubmit/doc/admin/elmsubmit-admin-guide.webdoc modules/bibformat/etc/format_templates/Default_HTML_files.bft modules/bibformat/etc/format_templates/Default_HTML_actions.bft modules/bibconvert/bin/bibconvert.in modules/bibconvert/lib/bibconvert.py modules/bibconvert/lib/bibconvert_tests.py modules/bibedit/bin/refextract.in modules/bibedit/bin/xmlmarclint.in modules/bibedit/lib/bibedit_engine.py modules/bibedit/lib/bibedit_templates.py modules/bibedit/lib/bibrecord_config.py modules/bibedit/lib/bibrecord.py modules/bibedit/lib/bibrecord_tests.py modules/bibedit/lib/refextract_config.py modules/bibedit/lib/refextract.py modules/bibformat/bin/bibreformat.in modules/bibformat/lib/bibformat_engine_tests.py modules/bibformat/lib/bibformat_templates.py modules/bibformat/lib/bibformatadminlib.py modules/bibformat/lib/elements/bfe_authors.py modules/bibformat/lib/elements/bfe_fulltext.py modules/bibformat/lib/elements/bfe_fulltext_mini.py modules/bibformat/lib/elements/bfe_edit_files.py modules/bibformat/lib/elements/bfe_edit_record.py modules/bibformat/web/admin/bibformatadmin.py modules/bibharvest/bin/oaiharvest.in modules/bibharvest/lib/bibharvest_templates.py modules/bibindex/bin/bibindex.in modules/bibindex/bin/bibstat.in modules/bibindex/lib/bibindexadminlib.py modules/bibindex/lib/bibindex_engine_config.py modules/bibindex/lib/bibindex_engine.py modules/bibindex/lib/bibindex_engine_stemmer.py modules/bibindex/lib/bibindex_engine_stemmer_tests.py modules/bibindex/lib/bibindex_engine_stopwords.py modules/bibindex/lib/bibindex_engine_tests.py modules/bibindex/web/admin/bibindexadmin.py modules/bibrank/bin/bibrankgkb.in modules/bibrank/bin/bibrank.in modules/bibrank/lib/bibrankadminlib.py modules/bibrank/lib/bibrank_citation_grapher.py modules/bibrank/lib/bibrank_citation_indexer.py modules/bibrank/lib/bibrank_citation_indexer_tests.py modules/bibrank/lib/bibrank_citation_searcher.py modules/bibrank/lib/bibrank_citation_searcher_tests.py modules/bibrank/lib/bibrank_downloads_grapher.py modules/bibrank/lib/bibrank_downloads_indexer.py modules/bibrank/lib/bibrank_downloads_indexer_tests.py modules/bibrank/lib/bibrank_downloads_similarity.py modules/bibrank/lib/bibrank_grapher.py modules/bibrank/lib/bibrank_record_sorter.py modules/bibrank/lib/bibrank_record_sorter_tests.py modules/bibrank/lib/bibrank_tag_based_indexer.py modules/bibrank/lib/bibrank_tag_based_indexer_tests.py modules/bibrank/lib/bibrank_word_indexer.py modules/bibrank/web/admin/bibrankadmin.py modules/bibsched/bin/bibsched.in modules/bibsched/bin/bibtaskex.in modules/bibupload/lib/batchuploader_templates.py modules/bibupload/lib/batchuploader_webinterface.py modules/elmsubmit/bin/elmsubmit.in modules/elmsubmit/lib/elmsubmit_enriched2txt.py modules/elmsubmit/lib/elmsubmit_EZArchive.py modules/elmsubmit/lib/elmsubmit_EZEmail.py modules/elmsubmit/lib/elmsubmit_field_validation.py modules/elmsubmit/lib/elmsubmit_filename_generator.py modules/elmsubmit/lib/elmsubmit_html2txt.py modules/elmsubmit/lib/elmsubmit_misc.py modules/elmsubmit/lib/elmsubmit.py modules/elmsubmit/lib/elmsubmit_richtext2txt.py modules/elmsubmit/lib/elmsubmit_submission_parser.py modules/elmsubmit/lib/myhtmlentitydefs.py modules/miscutil/bin/dbexec.in modules/miscutil/lib/dateutils.py modules/miscutil/lib/errorlib.py modules/miscutil/lib/errorlib_tests.py modules/miscutil/lib/errorlib_webinterface.py modules/miscutil/lib/__init__.py modules/miscutil/lib/inveniocfg.py modules/miscutil/lib/miscutil_config.py modules/miscutil/lib/mailutils.py modules/miscutil/lib/messages.py modules/miscutil/lib/textutils.py modules/webaccess/bin/authaction.in modules/webaccess/bin/webaccessadmin.in modules/webaccess/lib/access_control_admin.py modules/webaccess/lib/access_control_config.py modules/webaccess/lib/access_control_engine.py modules/webaccess/lib/external_authentication.py modules/webaccess/lib/webaccessadmin_lib.py modules/webaccess/web/admin/webaccessadmin.py modules/webalert/bin/alertengine.in modules/webalert/lib/alert_engine.py modules/webalert/lib/htmlparser.py modules/webalert/lib/webalert.py modules/webalert/lib/webalert_templates.py modules/webalert/lib/webalert_webinterface.py modules/webbasket/lib/webbasket.py modules/webbasket/lib/webbasket_config.py modules/webbasket/lib/webbasket_templates.py modules/webbasket/lib/webbasket_webinterface.py modules/webcomment/lib/webcommentadminlib.py modules/webcomment/lib/webcomment_config.py modules/webcomment/lib/webcomment.py modules/webcomment/lib/webcomment_templates.py modules/webcomment/lib/webcomment_tests.py modules/webcomment/lib/webcomment_webinterface.py modules/webcomment/web/admin/webcommentadmin.py modules/webmessage/bin/webmessageadmin.in modules/webmessage/lib/webmessage_config.py modules/webmessage/lib/webmessage_dblayer.py modules/webmessage/lib/webmessage_mailutils.py modules/webmessage/lib/webmessage.py modules/webmessage/lib/webmessage_templates.py modules/webmessage/lib/webmessage_webinterface.py modules/websearch/bin/webcoll.in modules/websearch/lib/search_engine_config.py modules/websearch/lib/search_engine.py modules/websearch/lib/search_engine_tests.py modules/websearch/lib/websearchadminlib.py modules/websearch/lib/websearch_templates.py modules/websearch/lib/websearch_webinterface.py modules/websearch/lib/websearch_external_collections.py modules/websearch/lib/websearch_external_collections_templates.py modules/websearch/lib/websearch_webcoll.py modules/websearch/web/admin/websearchadmin.py modules/websession/bin/inveniogc.in modules/websession/lib/session.py modules/websession/lib/webaccount.py modules/websession/lib/websession_templates.py modules/websession/lib/webuser.py modules/websession/lib/websession_webinterface.py modules/websession/lib/webgroup_dblayer.py modules/websession/lib/webgroup.py modules/websession/lib/websession_config.py modules/webstat/bin/webstat.in modules/webstyle/lib/template.py modules/webstyle/lib/webpage.py modules/webstyle/lib/webstyle_templates.py modules/webstyle/lib/webdoc.py modules/webstyle/lib/webdoc_tests.py modules/webstyle/lib/webdoc_webinterface.py modules/websubmit/lib/file.py modules/websubmit/lib/websubmit_managedocfiles.py modules/websubmit/lib/functions/Add_Files.py modules/websubmit/lib/functions/CaseEDS.py modules/websubmit/lib/functions/Create_Modify_Interface.py modules/websubmit/lib/functions/Create_Recid.py modules/websubmit/lib/functions/Finish_Submission.py modules/websubmit/lib/functions/Format_Record.py modules/websubmit/lib/functions/Get_Info.py modules/websubmit/lib/functions/Get_Report_Number.py modules/websubmit/lib/functions/Get_Sysno.py modules/websubmit/lib/functions/Insert_Modify_Record.py modules/websubmit/lib/functions/Insert_Record.py modules/websubmit/lib/functions/Is_Original_Submitter.py modules/websubmit/lib/functions/Is_Referee.py modules/websubmit/lib/functions/Mail_Submitter.py modules/websubmit/lib/functions/Make_Modify_Record.py modules/websubmit/lib/functions/Make_Record.py modules/websubmit/lib/functions/Move_Files_Archive.py modules/websubmit/lib/functions/Move_From_Pending.py modules/websubmit/lib/functions/Move_to_Done.py modules/websubmit/lib/functions/Move_to_Pending.py modules/websubmit/lib/functions/Print_Success_APP.py modules/websubmit/lib/functions/Print_Success_DEL.py modules/websubmit/lib/functions/Print_Success_MBI.py modules/websubmit/lib/functions/Print_Success.py modules/websubmit/lib/functions/Print_Success_SRV.py modules/websubmit/lib/functions/Report_Number_Generation.py modules/websubmit/lib/functions/Retrieve_Data.py modules/websubmit/lib/functions/Send_APP_Mail.py modules/websubmit/lib/functions/Send_Approval_Request.py modules/websubmit/lib/functions/Send_Modify_Mail.py modules/websubmit/lib/functions/Send_SRV_Mail.py modules/websubmit/lib/functions/Shared_Functions.py modules/websubmit/lib/functions/Test_Status.py modules/websubmit/lib/functions/Update_Approval_DB.py modules/websubmit/lib/websubmit_config.py modules/websubmit/lib/websubmit_engine.py modules/websubmit/lib/websubmit_templates.py modules/websubmit/lib/websubmit_webinterface.py modules/websubmit/lib/websubmitadmin_config.py modules/websubmit/lib/websubmitadmin_engine.py modules/websubmit/web/admin/referees.py modules/websubmit/web/approve.py modules/websubmit/web/publiline.py modules/websubmit/web/yourapprovals.py modules/websubmit/web/yoursubmissions.py modules/websubmit/web/admin/websubmitadmin.py modules/webjournal/lib/webjournal_utils.py modules/webjournal/lib/webjournal_templates.py modules/webjournal/lib/webjournal_config.py modules/webjournal/lib/webjournaladminlib.py modules/webjournal/web/admin/webjournaladmin.py modules/bibcatalog/lib/bibcatalog_templates.py modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py modules/webjournal/lib/elements/bfe_webjournal_article_author.py modules/webjournal/lib/elements/bfe_webjournal_imprint.py modules/webjournal/lib/elements/bfe_webjournal_article_body.py modules/webjournal/lib/elements/bfe_webjournal_rss.py modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py modules/webjournal/lib/elements/bfe_webjournal_archive.py modules/bibedit/lib/bibedit_webinterface.py modules/bibedit/lib/bibeditmulti_templates.py modules/bibedit/lib/bibedit_utils.py modules/bibedit/lib/bibeditmulti_webinterface.py modules/bibexport/lib/bibexport_method_fieldexporter_templates.py modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py modules/bibexport/lib/bibexport_method_fieldexporter.py modules/bibcirculation/lib/bibcirculation_utils.py modules/bibcirculation/lib/bibcirculation_webinterface.py modules/bibcirculation/lib/bibcirculation_templates.py modules/websubmit/lib/functions/Create_Upload_Files_Interface.py modules/bibcheck/web/admin/bibcheckadmin.py modules/bibharvest/lib/oai_repository_admin.py modules/bibharvest/lib/oai_harvest_admin.py modules/bibknowledge/lib/bibknowledge_templates.py modules/bibknowledge/lib/bibknowledgeadmin.py modules/bibsword/lib/bibsword_webinterface.py modules/bibupload/lib/batchuploader_engine.py +############## +# Infoscience +############## +modules/bibedit/lib/bibedit_templates_epfl.py +modules/webalert/lib/webalert_templates_epfl.py +modules/webbasket/lib/webbasket_templates_epfl.py +modules/websearch/lib/websearch_templates_epfl.py +modules/websession/lib/websession_templates_epfl.py +modules/webstyle/lib/webstyle_templates_epfl.py +modules/bibformat/lib/elements/bfe_authors.py +modules/bibformat/lib/elements/bfe_brief_links.py +modules/bibformat/lib/elements/bfe_conference.py +modules/bibformat/lib/elements/bfe_contact_authors.py +modules/bibformat/lib/elements/bfe_contact_lab.py +modules/bibformat/lib/elements/bfe_doctype.py +modules/bibformat/lib/elements/bfe_edit_record.py +modules/bibformat/lib/elements/bfe_epfl_fulltext.py +modules/bibformat/lib/elements/bfe_epfl_icon.py +modules/bibformat/lib/elements/bfe_hidden.py +modules/bibformat/lib/elements/bfe_host.py +modules/bibformat/lib/elements/bfe_imprint.py +modules/bibformat/lib/elements/bfe_references.py +modules/bibformat/lib/elements/bfe_series_intext.py +modules/bibformat/lib/elements/bfe_series.py +modules/bibformat/lib/elements/bfe_title.py +modules/bibformat/lib/elements/bfe_updated_date.py +modules/bibformat/lib/elements/bfe_year.py diff --git a/po/en.po b/po/en.po index 990fa71e1..6e3998ea1 100644 --- a/po/en.po +++ b/po/en.po @@ -1,11007 +1,10871 @@ -# # This file is part of Invenio. -# # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN. -# # -# # Invenio is free software; you can redistribute it and/or -# # modify it under the terms of the GNU General Public License as -# # published by the Free Software Foundation; either version 2 of the -# # License, or (at your option) any later version. -# # -# # Invenio is distributed in the hope that it will be useful, but -# # WITHOUT ANY WARRANTY; without even the implied warranty of -# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# # General Public License for more details. -# # -# # You should have received a copy of the GNU General Public License -# # along with Invenio; if not, write to the Free Software Foundation, Inc., -# # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -msgid "" -msgstr "" -"Project-Id-Version: Invenio 1.0.9\n" -"Report-Msgid-Bugs-To: info@invenio-software.org\n" -"POT-Creation-Date: 2014-08-31 21:44+0200\n" -"PO-Revision-Date: 2006-10-12 17:50+0200\n" -"Last-Translator: Tibor Simko \n" -"Language-Team: EN \n" -"Language: \n" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: infoscience\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-16 16:21+0100\n" +"PO-Revision-Date: 2011-04-29 12:31+0200\n" +"Last-Translator: Gregory Favre\n" +"Language-Team: infoscience-admin\n" +"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: pygettext.py 1.5\n" - -#: modules/websearch/doc/search-guide.webdoc:361 -#: modules/websearch/doc/search-guide.webdoc:396 -#: modules/websearch/doc/search-guide.webdoc:493 -#: modules/websearch/doc/search-guide.webdoc:528 -#: modules/websearch/doc/search-guide.webdoc:630 -#: modules/websearch/doc/search-guide.webdoc:665 -#: modules/websearch/doc/search-guide.webdoc:768 -#: modules/websearch/doc/search-guide.webdoc:803 -#: modules/websearch/lib/search_engine.py:1116 -#: modules/websearch/lib/websearch_templates.py:1163 -msgid "AND NOT" -msgstr "" - -#: modules/webhelp/web/admin/admin.webdoc:18 -#: modules/websearch/doc/admin/websearch-admin-guide.webdoc:21 -#: modules/websubmit/doc/admin/websubmit-admin-guide.webdoc:21 -#: modules/bibedit/doc/admin/bibedit-admin-guide.webdoc:21 -#: modules/bibupload/doc/admin/bibupload-admin-guide.webdoc:21 -#: modules/bibformat/doc/admin/bibformat-admin-guide.webdoc:21 -#: modules/bibharvest/doc/admin/bibharvest-admin-guide.webdoc:21 -#: modules/webmessage/doc/admin/webmessage-admin-guide.webdoc:21 -#: modules/webalert/doc/admin/webalert-admin-guide.webdoc:21 -#: modules/bibclassify/doc/admin/bibclassify-admin-guide.webdoc:22 -#: modules/bibmatch/doc/admin/bibmatch-admin-guide.webdoc:21 -#: modules/bibconvert/doc/admin/bibconvert-admin-guide.webdoc:21 -#: modules/bibsched/doc/admin/bibsched-admin-guide.webdoc:21 -#: modules/bibrank/doc/admin/bibrank-admin-guide.webdoc:21 -#: modules/webstat/doc/admin/webstat-admin-guide.webdoc:21 -#: modules/bibindex/doc/admin/bibindex-admin-guide.webdoc:21 -#: modules/webbasket/doc/admin/webbasket-admin-guide.webdoc:21 -#: modules/webcomment/doc/admin/webcomment-admin-guide.webdoc:21 -#: modules/websession/doc/admin/websession-admin-guide.webdoc:21 -#: modules/webstyle/doc/admin/webstyle-admin-guide.webdoc:21 -#: modules/elmsubmit/doc/admin/elmsubmit-admin-guide.webdoc:21 -#: modules/bibformat/lib/bibformatadminlib.py:55 -#: modules/bibformat/web/admin/bibformatadmin.py:68 -#: modules/webcomment/lib/webcommentadminlib.py:43 -#: modules/webstyle/lib/webdoc_webinterface.py:153 -#: modules/bibcheck/web/admin/bibcheckadmin.py:57 -#: modules/bibcheck/web/admin/bibcheckadmin.py:159 -#: modules/bibcheck/web/admin/bibcheckadmin.py:203 -#: modules/bibcheck/web/admin/bibcheckadmin.py:263 -#: modules/bibcheck/web/admin/bibcheckadmin.py:303 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:78 -msgid "Admin Area" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:427 -#: modules/websearch/doc/search-guide.webdoc:559 -#: modules/websearch/doc/search-guide.webdoc:696 -#: modules/websearch/doc/search-guide.webdoc:834 -#: modules/websearch/lib/search_engine.py:4510 -#: modules/websearch/lib/websearch_templates.py:804 -#: modules/websearch/lib/websearch_templates.py:882 -#: modules/websearch/lib/websearch_templates.py:1005 -#: modules/websearch/lib/websearch_templates.py:1963 -#: modules/websearch/lib/websearch_templates.py:2054 -#: modules/websearch/lib/websearch_templates.py:2111 -#: modules/websearch/lib/websearch_templates.py:2168 -#: modules/websearch/lib/websearch_templates.py:2207 -#: modules/websearch/lib/websearch_templates.py:2230 -#: modules/websearch/lib/websearch_templates.py:2261 -msgid "Browse" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:50 -#: modules/websearch/doc/search-tips.webdoc:20 -#: modules/websearch/lib/websearch_templates.py:805 -#: modules/websearch/lib/websearch_templates.py:883 -#: modules/websearch/lib/websearch_templates.py:1006 -#: modules/websearch/lib/websearch_templates.py:2058 -#: modules/websearch/lib/websearch_templates.py:2115 -#: modules/websearch/lib/websearch_templates.py:2172 -msgid "Search Tips" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:343 -#: modules/websearch/doc/search-guide.webdoc:378 -#: modules/websearch/doc/search-guide.webdoc:413 -#: modules/websearch/doc/search-guide.webdoc:475 -#: modules/websearch/doc/search-guide.webdoc:510 -#: modules/websearch/doc/search-guide.webdoc:545 -#: modules/websearch/doc/search-guide.webdoc:612 -#: modules/websearch/doc/search-guide.webdoc:647 -#: modules/websearch/doc/search-guide.webdoc:682 -#: modules/websearch/doc/search-guide.webdoc:750 -#: modules/websearch/doc/search-guide.webdoc:785 -#: modules/websearch/doc/search-guide.webdoc:820 -#: modules/miscutil/lib/inveniocfg.py:456 -msgid "abstract" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:348 -#: modules/websearch/doc/search-guide.webdoc:383 -#: modules/websearch/doc/search-guide.webdoc:418 -#: modules/websearch/doc/search-guide.webdoc:480 -#: modules/websearch/doc/search-guide.webdoc:515 -#: modules/websearch/doc/search-guide.webdoc:550 -#: modules/websearch/doc/search-guide.webdoc:617 -#: modules/websearch/doc/search-guide.webdoc:652 -#: modules/websearch/doc/search-guide.webdoc:687 -#: modules/websearch/doc/search-guide.webdoc:755 -#: modules/websearch/doc/search-guide.webdoc:790 -#: modules/websearch/doc/search-guide.webdoc:825 -#: modules/miscutil/lib/inveniocfg.py:461 -msgid "fulltext" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:337 -#: modules/websearch/doc/search-guide.webdoc:373 -#: modules/websearch/doc/search-guide.webdoc:408 -#: modules/websearch/doc/search-guide.webdoc:469 -#: modules/websearch/doc/search-guide.webdoc:505 -#: modules/websearch/doc/search-guide.webdoc:540 -#: modules/websearch/doc/search-guide.webdoc:606 -#: modules/websearch/doc/search-guide.webdoc:642 -#: modules/websearch/doc/search-guide.webdoc:677 -#: modules/websearch/doc/search-guide.webdoc:744 -#: modules/websearch/doc/search-guide.webdoc:780 -#: modules/websearch/doc/search-guide.webdoc:815 -#: modules/websearch/lib/search_engine.py:1138 -#: modules/websearch/lib/websearch_templates.py:1119 -msgid "Regular expression:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:333 -#: modules/websearch/doc/search-guide.webdoc:369 -#: modules/websearch/doc/search-guide.webdoc:404 -#: modules/websearch/doc/search-guide.webdoc:465 -#: modules/websearch/doc/search-guide.webdoc:501 -#: modules/websearch/doc/search-guide.webdoc:536 -#: modules/websearch/doc/search-guide.webdoc:602 -#: modules/websearch/doc/search-guide.webdoc:638 -#: modules/websearch/doc/search-guide.webdoc:673 -#: modules/websearch/doc/search-guide.webdoc:740 -#: modules/websearch/doc/search-guide.webdoc:776 -#: modules/websearch/doc/search-guide.webdoc:811 -#: modules/websearch/lib/search_engine.py:1134 -#: modules/websearch/lib/websearch_templates.py:1111 -msgid "All of the words:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:351 -#: modules/websearch/doc/search-guide.webdoc:386 -#: modules/websearch/doc/search-guide.webdoc:421 -#: modules/websearch/doc/search-guide.webdoc:483 -#: modules/websearch/doc/search-guide.webdoc:518 -#: modules/websearch/doc/search-guide.webdoc:553 -#: modules/websearch/doc/search-guide.webdoc:620 -#: modules/websearch/doc/search-guide.webdoc:655 -#: modules/websearch/doc/search-guide.webdoc:690 -#: modules/websearch/doc/search-guide.webdoc:758 -#: modules/websearch/doc/search-guide.webdoc:793 -#: modules/websearch/doc/search-guide.webdoc:828 -#: modules/miscutil/lib/inveniocfg.py:458 -msgid "report number" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:470 -#: modules/websearch/doc/search-tips.webdoc:477 -#: modules/websearch/doc/search-tips.webdoc:478 -#: modules/websearch/doc/search-tips.webdoc:479 -#: modules/websearch/doc/search-tips.webdoc:480 -#: modules/websearch/doc/search-tips.webdoc:481 -#: modules/websearch/doc/search-tips.webdoc:499 -#: modules/websearch/doc/search-tips.webdoc:500 -#: modules/websearch/doc/search-tips.webdoc:501 -#: modules/websearch/doc/search-tips.webdoc:502 -#: modules/websearch/doc/search-tips.webdoc:503 -#: modules/websearch/doc/search-guide.webdoc:354 -#: modules/websearch/doc/search-guide.webdoc:389 -#: modules/websearch/doc/search-guide.webdoc:424 -#: modules/websearch/doc/search-guide.webdoc:486 -#: modules/websearch/doc/search-guide.webdoc:521 -#: modules/websearch/doc/search-guide.webdoc:556 -#: modules/websearch/doc/search-guide.webdoc:623 -#: modules/websearch/doc/search-guide.webdoc:658 -#: modules/websearch/doc/search-guide.webdoc:693 -#: modules/websearch/doc/search-guide.webdoc:761 -#: modules/websearch/doc/search-guide.webdoc:796 -#: modules/websearch/doc/search-guide.webdoc:831 -#: modules/miscutil/lib/inveniocfg.py:464 -msgid "year" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:352 -#: modules/websearch/doc/search-guide.webdoc:387 -#: modules/websearch/doc/search-guide.webdoc:422 -#: modules/websearch/doc/search-guide.webdoc:484 -#: modules/websearch/doc/search-guide.webdoc:519 -#: modules/websearch/doc/search-guide.webdoc:554 -#: modules/websearch/doc/search-guide.webdoc:621 -#: modules/websearch/doc/search-guide.webdoc:656 -#: modules/websearch/doc/search-guide.webdoc:691 -#: modules/websearch/doc/search-guide.webdoc:759 -#: modules/websearch/doc/search-guide.webdoc:794 -#: modules/websearch/doc/search-guide.webdoc:829 -#: modules/miscutil/lib/inveniocfg.py:459 -msgid "subject" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:336 -#: modules/websearch/doc/search-guide.webdoc:372 -#: modules/websearch/doc/search-guide.webdoc:407 -#: modules/websearch/doc/search-guide.webdoc:468 -#: modules/websearch/doc/search-guide.webdoc:504 -#: modules/websearch/doc/search-guide.webdoc:539 -#: modules/websearch/doc/search-guide.webdoc:605 -#: modules/websearch/doc/search-guide.webdoc:641 -#: modules/websearch/doc/search-guide.webdoc:676 -#: modules/websearch/doc/search-guide.webdoc:743 -#: modules/websearch/doc/search-guide.webdoc:779 -#: modules/websearch/doc/search-guide.webdoc:814 -#: modules/websearch/lib/search_engine.py:1137 -#: modules/websearch/lib/websearch_templates.py:1117 -msgid "Partial phrase:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:350 -#: modules/websearch/doc/search-guide.webdoc:385 -#: modules/websearch/doc/search-guide.webdoc:420 -#: modules/websearch/doc/search-guide.webdoc:482 -#: modules/websearch/doc/search-guide.webdoc:517 -#: modules/websearch/doc/search-guide.webdoc:552 -#: modules/websearch/doc/search-guide.webdoc:619 -#: modules/websearch/doc/search-guide.webdoc:654 -#: modules/websearch/doc/search-guide.webdoc:689 -#: modules/websearch/doc/search-guide.webdoc:757 -#: modules/websearch/doc/search-guide.webdoc:792 -#: modules/websearch/doc/search-guide.webdoc:827 -#: modules/miscutil/lib/inveniocfg.py:460 -msgid "reference" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:39 -#: modules/websearch/doc/search-tips.webdoc:75 -#: modules/websearch/doc/search-tips.webdoc:121 -#: modules/websearch/doc/search-tips.webdoc:178 -#: modules/websearch/doc/search-tips.webdoc:205 -#: modules/websearch/doc/search-tips.webdoc:233 -#: modules/websearch/doc/search-tips.webdoc:288 -#: modules/websearch/doc/search-tips.webdoc:336 -#: modules/websearch/doc/search-tips.webdoc:347 -#: modules/websearch/doc/search-tips.webdoc:371 -#: modules/websearch/doc/search-tips.webdoc:395 -#: modules/websearch/doc/search-tips.webdoc:433 -#: modules/websearch/doc/search-tips.webdoc:469 -#: modules/websearch/doc/search-tips.webdoc:492 -#: modules/websearch/doc/search-tips.webdoc:514 -#: modules/websearch/doc/search-tips.webdoc:550 -#: modules/websearch/doc/search-tips.webdoc:568 -#: modules/websearch/doc/search-tips.webdoc:587 -#: modules/websearch/doc/search-tips.webdoc:622 -#: modules/websearch/doc/search-tips.webdoc:651 -#: modules/websearch/doc/search-tips.webdoc:659 -#: modules/websearch/doc/search-tips.webdoc:662 -#: modules/websearch/doc/search-tips.webdoc:664 -#: modules/websearch/doc/search-tips.webdoc:666 -#: modules/websearch/doc/search-tips.webdoc:668 -#: modules/websearch/doc/search-tips.webdoc:679 -#: modules/websearch/doc/search-tips.webdoc:702 -#: modules/websearch/doc/search-guide.webdoc:226 -#: modules/websearch/doc/search-guide.webdoc:250 -#: modules/websearch/doc/search-guide.webdoc:276 -#: modules/websearch/doc/search-guide.webdoc:301 -#: modules/websearch/doc/search-guide.webdoc:344 -#: modules/websearch/doc/search-guide.webdoc:379 -#: modules/websearch/doc/search-guide.webdoc:414 -#: modules/websearch/doc/search-guide.webdoc:476 -#: modules/websearch/doc/search-guide.webdoc:511 -#: modules/websearch/doc/search-guide.webdoc:546 -#: modules/websearch/doc/search-guide.webdoc:613 -#: modules/websearch/doc/search-guide.webdoc:648 -#: modules/websearch/doc/search-guide.webdoc:683 -#: modules/websearch/doc/search-guide.webdoc:751 -#: modules/websearch/doc/search-guide.webdoc:786 -#: modules/websearch/doc/search-guide.webdoc:821 -#: modules/websearch/doc/search-guide.webdoc:881 -#: modules/websearch/doc/search-guide.webdoc:912 -#: modules/websearch/doc/search-guide.webdoc:952 -#: modules/websearch/doc/search-guide.webdoc:986 -#: modules/websearch/doc/search-guide.webdoc:1026 -#: modules/websearch/doc/search-guide.webdoc:1048 -#: modules/websearch/doc/search-guide.webdoc:1068 -#: modules/websearch/doc/search-guide.webdoc:1084 -#: modules/websearch/doc/search-guide.webdoc:1124 -#: modules/websearch/doc/search-guide.webdoc:1147 -#: modules/websearch/doc/search-guide.webdoc:1168 -#: modules/websearch/doc/search-guide.webdoc:1183 -#: modules/websearch/doc/search-guide.webdoc:1227 -#: modules/websearch/doc/search-guide.webdoc:1252 -#: modules/websearch/doc/search-guide.webdoc:1273 -#: modules/websearch/doc/search-guide.webdoc:1289 -#: modules/websearch/doc/search-guide.webdoc:1334 -#: modules/websearch/doc/search-guide.webdoc:1357 -#: modules/websearch/doc/search-guide.webdoc:1379 -#: modules/websearch/doc/search-guide.webdoc:1395 -#: modules/websearch/doc/search-guide.webdoc:1765 -#: modules/websearch/doc/search-guide.webdoc:1779 -#: modules/websearch/doc/search-guide.webdoc:1797 -#: modules/websearch/doc/search-guide.webdoc:1816 -#: modules/websearch/doc/search-guide.webdoc:1829 -#: modules/websearch/doc/search-guide.webdoc:1847 -#: modules/websearch/doc/search-guide.webdoc:1867 -#: modules/websearch/doc/search-guide.webdoc:1882 -#: modules/websearch/doc/search-guide.webdoc:1901 -#: modules/websearch/doc/search-guide.webdoc:1924 -#: modules/websearch/doc/search-guide.webdoc:1939 -#: modules/websearch/doc/search-guide.webdoc:1958 -#: modules/websearch/doc/search-guide.webdoc:1986 -#: modules/websearch/doc/search-guide.webdoc:2024 -#: modules/websearch/doc/search-guide.webdoc:2035 -#: modules/websearch/doc/search-guide.webdoc:2049 -#: modules/websearch/doc/search-guide.webdoc:2063 -#: modules/websearch/doc/search-guide.webdoc:2076 -#: modules/websearch/doc/search-guide.webdoc:2092 -#: modules/websearch/doc/search-guide.webdoc:2103 -#: modules/websearch/doc/search-guide.webdoc:2117 -#: modules/websearch/doc/search-guide.webdoc:2131 -#: modules/websearch/doc/search-guide.webdoc:2144 -#: modules/websearch/doc/search-guide.webdoc:2160 -#: modules/websearch/doc/search-guide.webdoc:2171 -#: modules/websearch/doc/search-guide.webdoc:2185 -#: modules/websearch/doc/search-guide.webdoc:2199 -#: modules/websearch/doc/search-guide.webdoc:2212 -#: modules/websearch/doc/search-guide.webdoc:2230 -#: modules/websearch/doc/search-guide.webdoc:2241 -#: modules/websearch/doc/search-guide.webdoc:2255 -#: modules/websearch/doc/search-guide.webdoc:2269 -#: modules/websearch/doc/search-guide.webdoc:2282 -#: modules/websearch/doc/search-guide.webdoc:2311 -#: modules/websearch/doc/search-guide.webdoc:2325 -#: modules/websearch/doc/search-guide.webdoc:2342 -#: modules/websearch/doc/search-guide.webdoc:2355 -#: modules/websearch/doc/search-guide.webdoc:2372 -#: modules/websearch/doc/search-guide.webdoc:2386 -#: modules/websearch/doc/search-guide.webdoc:2404 -#: modules/websearch/doc/search-guide.webdoc:2418 -#: modules/websearch/doc/search-guide.webdoc:2449 -#: modules/websearch/doc/search-guide.webdoc:2464 -#: modules/websearch/doc/search-guide.webdoc:2478 -#: modules/websearch/doc/search-guide.webdoc:2493 -#: modules/websearch/doc/search-guide.webdoc:2521 -#: modules/websearch/doc/search-guide.webdoc:2536 -#: modules/websearch/doc/search-guide.webdoc:2550 -#: modules/websearch/doc/search-guide.webdoc:2566 -#: modules/websearch/doc/search-guide.webdoc:2598 -#: modules/websearch/doc/search-guide.webdoc:2614 -#: modules/websearch/doc/search-guide.webdoc:2628 -#: modules/websearch/doc/search-guide.webdoc:2643 -#: modules/websearch/doc/search-guide.webdoc:2674 -#: modules/websearch/doc/search-guide.webdoc:2690 -#: modules/websearch/doc/search-guide.webdoc:2704 -#: modules/websearch/doc/search-guide.webdoc:2719 -#: modules/websearch/doc/search-guide.webdoc:2761 -#: modules/websearch/doc/search-guide.webdoc:2776 -#: modules/websearch/doc/search-guide.webdoc:2790 -#: modules/websearch/doc/search-guide.webdoc:2815 -#: modules/websearch/doc/search-guide.webdoc:2830 -#: modules/websearch/doc/search-guide.webdoc:2844 -#: modules/websearch/doc/search-guide.webdoc:2873 -#: modules/websearch/doc/search-guide.webdoc:2888 -#: modules/websearch/doc/search-guide.webdoc:2902 -#: modules/websearch/doc/search-guide.webdoc:2930 -#: modules/websearch/doc/search-guide.webdoc:2945 -#: modules/websearch/doc/search-guide.webdoc:2958 -#: modules/websearch/doc/search-guide.webdoc:2993 -#: modules/websearch/doc/search-guide.webdoc:3015 -#: modules/websearch/doc/search-guide.webdoc:3039 -#: modules/websearch/doc/search-guide.webdoc:3063 -#: modules/websearch/doc/search-guide.webdoc:3087 -#: modules/websearch/doc/search-guide.webdoc:3102 -#: modules/websearch/doc/search-guide.webdoc:3118 -#: modules/websearch/doc/search-guide.webdoc:3135 -#: modules/websearch/doc/search-guide.webdoc:3155 -#: modules/websearch/doc/search-guide.webdoc:3173 -#: modules/websearch/doc/search-guide.webdoc:3191 -#: modules/websearch/doc/search-guide.webdoc:3210 -#: modules/websearch/doc/search-guide.webdoc:3231 -#: modules/websearch/doc/search-guide.webdoc:3245 -#: modules/websearch/doc/search-guide.webdoc:3265 -#: modules/websearch/doc/search-guide.webdoc:3280 -#: modules/websearch/doc/search-guide.webdoc:3299 -#: modules/websearch/doc/search-guide.webdoc:3314 -#: modules/websearch/doc/search-guide.webdoc:3334 -#: modules/websearch/doc/search-guide.webdoc:3349 -#: modules/websearch/doc/search-guide.webdoc:3411 -#: modules/websearch/doc/search-guide.webdoc:3425 -#: modules/websearch/doc/search-guide.webdoc:3442 -#: modules/websearch/doc/search-guide.webdoc:3455 -#: modules/websearch/doc/search-guide.webdoc:3473 -#: modules/websearch/doc/search-guide.webdoc:3488 -#: modules/websearch/doc/search-guide.webdoc:3506 -#: modules/websearch/doc/search-guide.webdoc:3521 -#: modules/websearch/doc/search-guide.webdoc:3546 -#: modules/websearch/doc/search-guide.webdoc:3559 -#: modules/websearch/doc/search-guide.webdoc:3572 -#: modules/websearch/doc/search-guide.webdoc:3588 -#: modules/websearch/doc/search-guide.webdoc:3604 -#: modules/websearch/doc/search-guide.webdoc:3621 -#: modules/websearch/doc/search-guide.webdoc:3654 -#: modules/websearch/doc/search-guide.webdoc:3670 -#: modules/websearch/doc/search-guide.webdoc:3687 -#: modules/websearch/doc/search-guide.webdoc:3707 -#: modules/websearch/doc/search-guide.webdoc:3721 -#: modules/websearch/doc/search-guide.webdoc:3739 -#: modules/websearch/doc/search-guide.webdoc:3760 -#: modules/websearch/doc/search-guide.webdoc:3779 -#: modules/websearch/doc/search-guide.webdoc:3797 -#: modules/websearch/doc/search-guide.webdoc:3819 -#: modules/websearch/doc/search-guide.webdoc:3838 -#: modules/websearch/doc/search-guide.webdoc:3855 -#: modules/websearch/doc/search-guide.webdoc:3976 -#: modules/websearch/doc/search-guide.webdoc:4001 -#: modules/websearch/doc/search-guide.webdoc:4024 -#: modules/websearch/doc/search-guide.webdoc:4050 -#: modules/websearch/doc/search-guide.webdoc:4074 -#: modules/websearch/doc/search-guide.webdoc:4101 -#: modules/websearch/doc/search-guide.webdoc:4126 -#: modules/websearch/doc/search-guide.webdoc:4152 -#: modules/websearch/doc/search-guide.webdoc:4181 -#: modules/websearch/doc/search-guide.webdoc:4201 -#: modules/websearch/doc/search-guide.webdoc:4225 -#: modules/websearch/doc/search-guide.webdoc:4252 -#: modules/websearch/doc/search-guide.webdoc:4292 -#: modules/websearch/doc/search-guide.webdoc:4313 -#: modules/websearch/doc/search-guide.webdoc:4337 -#: modules/websearch/doc/search-guide.webdoc:4367 -#: modules/websearch/doc/search-guide.webdoc:4411 -#: modules/websearch/doc/search-guide.webdoc:4433 -#: modules/websearch/doc/search-guide.webdoc:4458 -#: modules/websearch/doc/search-guide.webdoc:4488 -#: modules/websearch/doc/search-guide.webdoc:4533 -#: modules/websearch/doc/search-guide.webdoc:4554 -#: modules/websearch/doc/search-guide.webdoc:4579 -#: modules/websearch/doc/search-guide.webdoc:4609 -#: modules/websearch/doc/search-guide.webdoc:4901 -#: modules/websearch/doc/search-guide.webdoc:4917 -#: modules/websearch/doc/search-guide.webdoc:4937 -#: modules/websearch/doc/search-guide.webdoc:4956 -#: modules/websearch/doc/search-guide.webdoc:4977 -#: modules/websearch/doc/search-guide.webdoc:4995 -#: modules/websearch/doc/search-guide.webdoc:5016 -#: modules/websearch/doc/search-guide.webdoc:5034 -#: modules/websearch/doc/search-guide.webdoc:5067 -#: modules/websearch/doc/search-guide.webdoc:5081 -#: modules/websearch/doc/search-guide.webdoc:5096 -#: modules/websearch/doc/search-guide.webdoc:5112 -#: modules/websearch/doc/search-guide.webdoc:5131 -#: modules/websearch/doc/search-guide.webdoc:5145 -#: modules/websearch/doc/search-guide.webdoc:5161 -#: modules/websearch/doc/search-guide.webdoc:5179 -#: modules/websearch/doc/search-guide.webdoc:5198 -#: modules/websearch/doc/search-guide.webdoc:5213 -#: modules/websearch/doc/search-guide.webdoc:5228 -#: modules/websearch/doc/search-guide.webdoc:5246 -#: modules/websearch/doc/search-guide.webdoc:5266 -#: modules/websearch/doc/search-guide.webdoc:5281 -#: modules/websearch/doc/search-guide.webdoc:5296 -#: modules/websearch/doc/search-guide.webdoc:5316 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:131 -#: modules/miscutil/lib/inveniocfg.py:455 -msgid "author" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:98 -#: modules/websearch/doc/search-guide.webdoc:20 -msgid "Search Guide" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:347 -#: modules/websearch/doc/search-guide.webdoc:382 -#: modules/websearch/doc/search-guide.webdoc:417 -#: modules/websearch/doc/search-guide.webdoc:479 -#: modules/websearch/doc/search-guide.webdoc:514 -#: modules/websearch/doc/search-guide.webdoc:549 -#: modules/websearch/doc/search-guide.webdoc:616 -#: modules/websearch/doc/search-guide.webdoc:651 -#: modules/websearch/doc/search-guide.webdoc:686 -#: modules/websearch/doc/search-guide.webdoc:754 -#: modules/websearch/doc/search-guide.webdoc:789 -#: modules/websearch/doc/search-guide.webdoc:824 -#: modules/miscutil/lib/inveniocfg.py:466 -msgid "experiment" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:334 -#: modules/websearch/doc/search-guide.webdoc:370 -#: modules/websearch/doc/search-guide.webdoc:405 -#: modules/websearch/doc/search-guide.webdoc:466 -#: modules/websearch/doc/search-guide.webdoc:502 -#: modules/websearch/doc/search-guide.webdoc:537 -#: modules/websearch/doc/search-guide.webdoc:603 -#: modules/websearch/doc/search-guide.webdoc:639 -#: modules/websearch/doc/search-guide.webdoc:674 -#: modules/websearch/doc/search-guide.webdoc:741 -#: modules/websearch/doc/search-guide.webdoc:777 -#: modules/websearch/doc/search-guide.webdoc:812 -#: modules/websearch/lib/search_engine.py:1135 -#: modules/websearch/lib/websearch_templates.py:1113 -msgid "Any of the words:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:346 -#: modules/websearch/doc/search-guide.webdoc:381 -#: modules/websearch/doc/search-guide.webdoc:416 -#: modules/websearch/doc/search-guide.webdoc:478 -#: modules/websearch/doc/search-guide.webdoc:513 -#: modules/websearch/doc/search-guide.webdoc:548 -#: modules/websearch/doc/search-guide.webdoc:615 -#: modules/websearch/doc/search-guide.webdoc:650 -#: modules/websearch/doc/search-guide.webdoc:685 -#: modules/websearch/doc/search-guide.webdoc:753 -#: modules/websearch/doc/search-guide.webdoc:788 -#: modules/websearch/doc/search-guide.webdoc:823 -#: modules/miscutil/lib/inveniocfg.py:463 -msgid "division" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:41 -#: modules/websearch/doc/search-tips.webdoc:77 -#: modules/websearch/doc/search-tips.webdoc:123 -#: modules/websearch/doc/search-tips.webdoc:180 -#: modules/websearch/doc/search-tips.webdoc:207 -#: modules/websearch/doc/search-tips.webdoc:235 -#: modules/websearch/doc/search-tips.webdoc:290 -#: modules/websearch/doc/search-tips.webdoc:338 -#: modules/websearch/doc/search-tips.webdoc:349 -#: modules/websearch/doc/search-tips.webdoc:373 -#: modules/websearch/doc/search-tips.webdoc:397 -#: modules/websearch/doc/search-tips.webdoc:435 -#: modules/websearch/doc/search-tips.webdoc:472 -#: modules/websearch/doc/search-tips.webdoc:494 -#: modules/websearch/doc/search-tips.webdoc:516 -#: modules/websearch/doc/search-tips.webdoc:552 -#: modules/websearch/doc/search-tips.webdoc:570 -#: modules/websearch/doc/search-tips.webdoc:589 -#: modules/websearch/doc/search-tips.webdoc:624 -#: modules/websearch/doc/search-tips.webdoc:653 -#: modules/websearch/doc/search-tips.webdoc:681 -#: modules/websearch/doc/search-tips.webdoc:704 -#: modules/websearch/doc/search-guide.webdoc:227 -#: modules/websearch/doc/search-guide.webdoc:251 -#: modules/websearch/doc/search-guide.webdoc:277 -#: modules/websearch/doc/search-guide.webdoc:302 -#: modules/websearch/doc/search-guide.webdoc:427 -#: modules/websearch/doc/search-guide.webdoc:559 -#: modules/websearch/doc/search-guide.webdoc:696 -#: modules/websearch/doc/search-guide.webdoc:834 -#: modules/websearch/doc/search-guide.webdoc:882 -#: modules/websearch/doc/search-guide.webdoc:913 -#: modules/websearch/doc/search-guide.webdoc:953 -#: modules/websearch/doc/search-guide.webdoc:987 -#: modules/websearch/doc/search-guide.webdoc:1027 -#: modules/websearch/doc/search-guide.webdoc:1049 -#: modules/websearch/doc/search-guide.webdoc:1069 -#: modules/websearch/doc/search-guide.webdoc:1085 -#: modules/websearch/doc/search-guide.webdoc:1125 -#: modules/websearch/doc/search-guide.webdoc:1148 -#: modules/websearch/doc/search-guide.webdoc:1169 -#: modules/websearch/doc/search-guide.webdoc:1184 -#: modules/websearch/doc/search-guide.webdoc:1228 -#: modules/websearch/doc/search-guide.webdoc:1253 -#: modules/websearch/doc/search-guide.webdoc:1274 -#: modules/websearch/doc/search-guide.webdoc:1290 -#: modules/websearch/doc/search-guide.webdoc:1335 -#: modules/websearch/doc/search-guide.webdoc:1358 -#: modules/websearch/doc/search-guide.webdoc:1380 -#: modules/websearch/doc/search-guide.webdoc:1396 -#: modules/websearch/doc/search-guide.webdoc:1766 -#: modules/websearch/doc/search-guide.webdoc:1780 -#: modules/websearch/doc/search-guide.webdoc:1798 -#: modules/websearch/doc/search-guide.webdoc:1817 -#: modules/websearch/doc/search-guide.webdoc:1830 -#: modules/websearch/doc/search-guide.webdoc:1848 -#: modules/websearch/doc/search-guide.webdoc:1868 -#: modules/websearch/doc/search-guide.webdoc:1883 -#: modules/websearch/doc/search-guide.webdoc:1902 -#: modules/websearch/doc/search-guide.webdoc:1925 -#: modules/websearch/doc/search-guide.webdoc:1940 -#: modules/websearch/doc/search-guide.webdoc:1959 -#: modules/websearch/doc/search-guide.webdoc:1988 -#: modules/websearch/doc/search-guide.webdoc:2025 -#: modules/websearch/doc/search-guide.webdoc:2036 -#: modules/websearch/doc/search-guide.webdoc:2050 -#: modules/websearch/doc/search-guide.webdoc:2064 -#: modules/websearch/doc/search-guide.webdoc:2077 -#: modules/websearch/doc/search-guide.webdoc:2093 -#: modules/websearch/doc/search-guide.webdoc:2104 -#: modules/websearch/doc/search-guide.webdoc:2118 -#: modules/websearch/doc/search-guide.webdoc:2132 -#: modules/websearch/doc/search-guide.webdoc:2145 -#: modules/websearch/doc/search-guide.webdoc:2161 -#: modules/websearch/doc/search-guide.webdoc:2172 -#: modules/websearch/doc/search-guide.webdoc:2186 -#: modules/websearch/doc/search-guide.webdoc:2200 -#: modules/websearch/doc/search-guide.webdoc:2213 -#: modules/websearch/doc/search-guide.webdoc:2231 -#: modules/websearch/doc/search-guide.webdoc:2242 -#: modules/websearch/doc/search-guide.webdoc:2256 -#: modules/websearch/doc/search-guide.webdoc:2270 -#: modules/websearch/doc/search-guide.webdoc:2283 -#: modules/websearch/doc/search-guide.webdoc:2312 -#: modules/websearch/doc/search-guide.webdoc:2326 -#: modules/websearch/doc/search-guide.webdoc:2343 -#: modules/websearch/doc/search-guide.webdoc:2356 -#: modules/websearch/doc/search-guide.webdoc:2373 -#: modules/websearch/doc/search-guide.webdoc:2387 -#: modules/websearch/doc/search-guide.webdoc:2405 -#: modules/websearch/doc/search-guide.webdoc:2419 -#: modules/websearch/doc/search-guide.webdoc:2450 -#: modules/websearch/doc/search-guide.webdoc:2465 -#: modules/websearch/doc/search-guide.webdoc:2479 -#: modules/websearch/doc/search-guide.webdoc:2494 -#: modules/websearch/doc/search-guide.webdoc:2522 -#: modules/websearch/doc/search-guide.webdoc:2537 -#: modules/websearch/doc/search-guide.webdoc:2551 -#: modules/websearch/doc/search-guide.webdoc:2567 -#: modules/websearch/doc/search-guide.webdoc:2599 -#: modules/websearch/doc/search-guide.webdoc:2615 -#: modules/websearch/doc/search-guide.webdoc:2629 -#: modules/websearch/doc/search-guide.webdoc:2644 -#: modules/websearch/doc/search-guide.webdoc:2675 -#: modules/websearch/doc/search-guide.webdoc:2691 -#: modules/websearch/doc/search-guide.webdoc:2705 -#: modules/websearch/doc/search-guide.webdoc:2720 -#: modules/websearch/doc/search-guide.webdoc:2762 -#: modules/websearch/doc/search-guide.webdoc:2777 -#: modules/websearch/doc/search-guide.webdoc:2791 -#: modules/websearch/doc/search-guide.webdoc:2816 -#: modules/websearch/doc/search-guide.webdoc:2831 -#: modules/websearch/doc/search-guide.webdoc:2845 -#: modules/websearch/doc/search-guide.webdoc:2874 -#: modules/websearch/doc/search-guide.webdoc:2889 -#: modules/websearch/doc/search-guide.webdoc:2903 -#: modules/websearch/doc/search-guide.webdoc:2931 -#: modules/websearch/doc/search-guide.webdoc:2946 -#: modules/websearch/doc/search-guide.webdoc:2959 -#: modules/websearch/doc/search-guide.webdoc:2994 -#: modules/websearch/doc/search-guide.webdoc:3016 -#: modules/websearch/doc/search-guide.webdoc:3040 -#: modules/websearch/doc/search-guide.webdoc:3064 -#: modules/websearch/doc/search-guide.webdoc:3088 -#: modules/websearch/doc/search-guide.webdoc:3103 -#: modules/websearch/doc/search-guide.webdoc:3119 -#: modules/websearch/doc/search-guide.webdoc:3136 -#: modules/websearch/doc/search-guide.webdoc:3156 -#: modules/websearch/doc/search-guide.webdoc:3174 -#: modules/websearch/doc/search-guide.webdoc:3192 -#: modules/websearch/doc/search-guide.webdoc:3211 -#: modules/websearch/doc/search-guide.webdoc:3232 -#: modules/websearch/doc/search-guide.webdoc:3246 -#: modules/websearch/doc/search-guide.webdoc:3266 -#: modules/websearch/doc/search-guide.webdoc:3281 -#: modules/websearch/doc/search-guide.webdoc:3300 -#: modules/websearch/doc/search-guide.webdoc:3315 -#: modules/websearch/doc/search-guide.webdoc:3335 -#: modules/websearch/doc/search-guide.webdoc:3350 -#: modules/websearch/doc/search-guide.webdoc:3412 -#: modules/websearch/doc/search-guide.webdoc:3426 -#: modules/websearch/doc/search-guide.webdoc:3443 -#: modules/websearch/doc/search-guide.webdoc:3456 -#: modules/websearch/doc/search-guide.webdoc:3474 -#: modules/websearch/doc/search-guide.webdoc:3489 -#: modules/websearch/doc/search-guide.webdoc:3507 -#: modules/websearch/doc/search-guide.webdoc:3522 -#: modules/websearch/doc/search-guide.webdoc:3547 -#: modules/websearch/doc/search-guide.webdoc:3560 -#: modules/websearch/doc/search-guide.webdoc:3573 -#: modules/websearch/doc/search-guide.webdoc:3589 -#: modules/websearch/doc/search-guide.webdoc:3605 -#: modules/websearch/doc/search-guide.webdoc:3622 -#: modules/websearch/doc/search-guide.webdoc:3655 -#: modules/websearch/doc/search-guide.webdoc:3671 -#: modules/websearch/doc/search-guide.webdoc:3688 -#: modules/websearch/doc/search-guide.webdoc:3708 -#: modules/websearch/doc/search-guide.webdoc:3722 -#: modules/websearch/doc/search-guide.webdoc:3740 -#: modules/websearch/doc/search-guide.webdoc:3761 -#: modules/websearch/doc/search-guide.webdoc:3780 -#: modules/websearch/doc/search-guide.webdoc:3798 -#: modules/websearch/doc/search-guide.webdoc:3820 -#: modules/websearch/doc/search-guide.webdoc:3839 -#: modules/websearch/doc/search-guide.webdoc:3856 -#: modules/websearch/doc/search-guide.webdoc:3977 -#: modules/websearch/doc/search-guide.webdoc:4002 -#: modules/websearch/doc/search-guide.webdoc:4025 -#: modules/websearch/doc/search-guide.webdoc:4051 -#: modules/websearch/doc/search-guide.webdoc:4075 -#: modules/websearch/doc/search-guide.webdoc:4102 -#: modules/websearch/doc/search-guide.webdoc:4127 -#: modules/websearch/doc/search-guide.webdoc:4153 -#: modules/websearch/doc/search-guide.webdoc:4182 -#: modules/websearch/doc/search-guide.webdoc:4202 -#: modules/websearch/doc/search-guide.webdoc:4226 -#: modules/websearch/doc/search-guide.webdoc:4253 -#: modules/websearch/doc/search-guide.webdoc:4293 -#: modules/websearch/doc/search-guide.webdoc:4314 -#: modules/websearch/doc/search-guide.webdoc:4338 -#: modules/websearch/doc/search-guide.webdoc:4368 -#: modules/websearch/doc/search-guide.webdoc:4412 -#: modules/websearch/doc/search-guide.webdoc:4434 -#: modules/websearch/doc/search-guide.webdoc:4459 -#: modules/websearch/doc/search-guide.webdoc:4489 -#: modules/websearch/doc/search-guide.webdoc:4534 -#: modules/websearch/doc/search-guide.webdoc:4555 -#: modules/websearch/doc/search-guide.webdoc:4580 -#: modules/websearch/doc/search-guide.webdoc:4610 -#: modules/websearch/doc/search-guide.webdoc:4902 -#: modules/websearch/doc/search-guide.webdoc:4918 -#: modules/websearch/doc/search-guide.webdoc:4938 -#: modules/websearch/doc/search-guide.webdoc:4957 -#: modules/websearch/doc/search-guide.webdoc:4978 -#: modules/websearch/doc/search-guide.webdoc:4996 -#: modules/websearch/doc/search-guide.webdoc:5017 -#: modules/websearch/doc/search-guide.webdoc:5035 -#: modules/websearch/doc/search-guide.webdoc:5068 -#: modules/websearch/doc/search-guide.webdoc:5082 -#: modules/websearch/doc/search-guide.webdoc:5097 -#: modules/websearch/doc/search-guide.webdoc:5113 -#: modules/websearch/doc/search-guide.webdoc:5132 -#: modules/websearch/doc/search-guide.webdoc:5146 -#: modules/websearch/doc/search-guide.webdoc:5162 -#: modules/websearch/doc/search-guide.webdoc:5180 -#: modules/websearch/doc/search-guide.webdoc:5199 -#: modules/websearch/doc/search-guide.webdoc:5214 -#: modules/websearch/doc/search-guide.webdoc:5229 -#: modules/websearch/doc/search-guide.webdoc:5247 -#: modules/websearch/doc/search-guide.webdoc:5267 -#: modules/websearch/doc/search-guide.webdoc:5282 -#: modules/websearch/doc/search-guide.webdoc:5297 -#: modules/websearch/doc/search-guide.webdoc:5317 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:133 -#: modules/websearch/lib/websearch_templates.py:803 -#: modules/websearch/lib/websearch_templates.py:881 -#: modules/websearch/lib/websearch_templates.py:1004 -#: modules/websearch/lib/websearch_templates.py:1960 -#: modules/websearch/lib/websearch_templates.py:2053 -#: modules/websearch/lib/websearch_templates.py:2110 -#: modules/websearch/lib/websearch_templates.py:2167 -#: modules/webstyle/lib/webstyle_templates.py:431 -#: modules/webstyle/lib/webstyle_templates.py:499 -#: modules/webstyle/lib/webdoc_tests.py:86 -#: modules/bibedit/lib/bibeditmulti_templates.py:296 -#: modules/bibcirculation/lib/bibcirculation_templates.py:1819 -#: modules/bibcirculation/lib/bibcirculation_templates.py:1877 -#: modules/bibcirculation/lib/bibcirculation_templates.py:7673 -#: modules/bibcirculation/lib/bibcirculation_templates.py:8240 -#: modules/bibcirculation/lib/bibcirculation_templates.py:14050 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15528 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15686 -#: modules/bibcirculation/lib/bibcirculation_templates.py:16648 -#: modules/bibknowledge/lib/bibknowledge_templates.py:394 -msgid "Search" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:133 -msgid "Citation Metrics" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:37 -#: modules/websearch/doc/search-tips.webdoc:73 -#: modules/websearch/doc/search-tips.webdoc:119 -#: modules/websearch/doc/search-tips.webdoc:176 -#: modules/websearch/doc/search-tips.webdoc:203 -#: modules/websearch/doc/search-tips.webdoc:231 -#: modules/websearch/doc/search-tips.webdoc:286 -#: modules/websearch/doc/search-tips.webdoc:334 -#: modules/websearch/doc/search-tips.webdoc:345 -#: modules/websearch/doc/search-tips.webdoc:369 -#: modules/websearch/doc/search-tips.webdoc:393 -#: modules/websearch/doc/search-tips.webdoc:431 -#: modules/websearch/doc/search-tips.webdoc:467 -#: modules/websearch/doc/search-tips.webdoc:490 -#: modules/websearch/doc/search-tips.webdoc:512 -#: modules/websearch/doc/search-tips.webdoc:548 -#: modules/websearch/doc/search-tips.webdoc:566 -#: modules/websearch/doc/search-tips.webdoc:585 -#: modules/websearch/doc/search-tips.webdoc:620 -#: modules/websearch/doc/search-tips.webdoc:631 -#: modules/websearch/doc/search-tips.webdoc:633 -#: modules/websearch/doc/search-tips.webdoc:636 -#: modules/websearch/doc/search-tips.webdoc:638 -#: modules/websearch/doc/search-tips.webdoc:640 -#: modules/websearch/doc/search-tips.webdoc:649 -#: modules/websearch/doc/search-tips.webdoc:677 -#: modules/websearch/doc/search-tips.webdoc:700 -#: modules/websearch/doc/search-guide.webdoc:224 -#: modules/websearch/doc/search-guide.webdoc:248 -#: modules/websearch/doc/search-guide.webdoc:274 -#: modules/websearch/doc/search-guide.webdoc:299 -#: modules/websearch/doc/search-guide.webdoc:342 -#: modules/websearch/doc/search-guide.webdoc:377 -#: modules/websearch/doc/search-guide.webdoc:412 -#: modules/websearch/doc/search-guide.webdoc:474 -#: modules/websearch/doc/search-guide.webdoc:509 -#: modules/websearch/doc/search-guide.webdoc:544 -#: modules/websearch/doc/search-guide.webdoc:611 -#: modules/websearch/doc/search-guide.webdoc:646 -#: modules/websearch/doc/search-guide.webdoc:681 -#: modules/websearch/doc/search-guide.webdoc:749 -#: modules/websearch/doc/search-guide.webdoc:784 -#: modules/websearch/doc/search-guide.webdoc:819 -#: modules/websearch/doc/search-guide.webdoc:879 -#: modules/websearch/doc/search-guide.webdoc:910 -#: modules/websearch/doc/search-guide.webdoc:950 -#: modules/websearch/doc/search-guide.webdoc:984 -#: modules/websearch/doc/search-guide.webdoc:1024 -#: modules/websearch/doc/search-guide.webdoc:1046 -#: modules/websearch/doc/search-guide.webdoc:1066 -#: modules/websearch/doc/search-guide.webdoc:1082 -#: modules/websearch/doc/search-guide.webdoc:1122 -#: modules/websearch/doc/search-guide.webdoc:1145 -#: modules/websearch/doc/search-guide.webdoc:1166 -#: modules/websearch/doc/search-guide.webdoc:1181 -#: modules/websearch/doc/search-guide.webdoc:1225 -#: modules/websearch/doc/search-guide.webdoc:1250 -#: modules/websearch/doc/search-guide.webdoc:1271 -#: modules/websearch/doc/search-guide.webdoc:1287 -#: modules/websearch/doc/search-guide.webdoc:1332 -#: modules/websearch/doc/search-guide.webdoc:1355 -#: modules/websearch/doc/search-guide.webdoc:1377 -#: modules/websearch/doc/search-guide.webdoc:1393 -#: modules/websearch/doc/search-guide.webdoc:1763 -#: modules/websearch/doc/search-guide.webdoc:1777 -#: modules/websearch/doc/search-guide.webdoc:1795 -#: modules/websearch/doc/search-guide.webdoc:1814 -#: modules/websearch/doc/search-guide.webdoc:1827 -#: modules/websearch/doc/search-guide.webdoc:1845 -#: modules/websearch/doc/search-guide.webdoc:1865 -#: modules/websearch/doc/search-guide.webdoc:1880 -#: modules/websearch/doc/search-guide.webdoc:1899 -#: modules/websearch/doc/search-guide.webdoc:1922 -#: modules/websearch/doc/search-guide.webdoc:1937 -#: modules/websearch/doc/search-guide.webdoc:1956 -#: modules/websearch/doc/search-guide.webdoc:1984 -#: modules/websearch/doc/search-guide.webdoc:2022 -#: modules/websearch/doc/search-guide.webdoc:2033 -#: modules/websearch/doc/search-guide.webdoc:2047 -#: modules/websearch/doc/search-guide.webdoc:2061 -#: modules/websearch/doc/search-guide.webdoc:2074 -#: modules/websearch/doc/search-guide.webdoc:2090 -#: modules/websearch/doc/search-guide.webdoc:2101 -#: modules/websearch/doc/search-guide.webdoc:2115 -#: modules/websearch/doc/search-guide.webdoc:2129 -#: modules/websearch/doc/search-guide.webdoc:2142 -#: modules/websearch/doc/search-guide.webdoc:2158 -#: modules/websearch/doc/search-guide.webdoc:2169 -#: modules/websearch/doc/search-guide.webdoc:2183 -#: modules/websearch/doc/search-guide.webdoc:2197 -#: modules/websearch/doc/search-guide.webdoc:2210 -#: modules/websearch/doc/search-guide.webdoc:2228 -#: modules/websearch/doc/search-guide.webdoc:2239 -#: modules/websearch/doc/search-guide.webdoc:2253 -#: modules/websearch/doc/search-guide.webdoc:2267 -#: modules/websearch/doc/search-guide.webdoc:2280 -#: modules/websearch/doc/search-guide.webdoc:2309 -#: modules/websearch/doc/search-guide.webdoc:2323 -#: modules/websearch/doc/search-guide.webdoc:2340 -#: modules/websearch/doc/search-guide.webdoc:2353 -#: modules/websearch/doc/search-guide.webdoc:2370 -#: modules/websearch/doc/search-guide.webdoc:2384 -#: modules/websearch/doc/search-guide.webdoc:2402 -#: modules/websearch/doc/search-guide.webdoc:2416 -#: modules/websearch/doc/search-guide.webdoc:2447 -#: modules/websearch/doc/search-guide.webdoc:2462 -#: modules/websearch/doc/search-guide.webdoc:2476 -#: modules/websearch/doc/search-guide.webdoc:2491 -#: modules/websearch/doc/search-guide.webdoc:2519 -#: modules/websearch/doc/search-guide.webdoc:2534 -#: modules/websearch/doc/search-guide.webdoc:2548 -#: modules/websearch/doc/search-guide.webdoc:2564 -#: modules/websearch/doc/search-guide.webdoc:2596 -#: modules/websearch/doc/search-guide.webdoc:2612 -#: modules/websearch/doc/search-guide.webdoc:2626 -#: modules/websearch/doc/search-guide.webdoc:2641 -#: modules/websearch/doc/search-guide.webdoc:2672 -#: modules/websearch/doc/search-guide.webdoc:2688 -#: modules/websearch/doc/search-guide.webdoc:2702 -#: modules/websearch/doc/search-guide.webdoc:2717 -#: modules/websearch/doc/search-guide.webdoc:2759 -#: modules/websearch/doc/search-guide.webdoc:2774 -#: modules/websearch/doc/search-guide.webdoc:2788 -#: modules/websearch/doc/search-guide.webdoc:2813 -#: modules/websearch/doc/search-guide.webdoc:2828 -#: modules/websearch/doc/search-guide.webdoc:2842 -#: modules/websearch/doc/search-guide.webdoc:2871 -#: modules/websearch/doc/search-guide.webdoc:2886 -#: modules/websearch/doc/search-guide.webdoc:2900 -#: modules/websearch/doc/search-guide.webdoc:2928 -#: modules/websearch/doc/search-guide.webdoc:2943 -#: modules/websearch/doc/search-guide.webdoc:2956 -#: modules/websearch/doc/search-guide.webdoc:2991 -#: modules/websearch/doc/search-guide.webdoc:3013 -#: modules/websearch/doc/search-guide.webdoc:3037 -#: modules/websearch/doc/search-guide.webdoc:3061 -#: modules/websearch/doc/search-guide.webdoc:3085 -#: modules/websearch/doc/search-guide.webdoc:3100 -#: modules/websearch/doc/search-guide.webdoc:3116 -#: modules/websearch/doc/search-guide.webdoc:3133 -#: modules/websearch/doc/search-guide.webdoc:3153 -#: modules/websearch/doc/search-guide.webdoc:3171 -#: modules/websearch/doc/search-guide.webdoc:3189 -#: modules/websearch/doc/search-guide.webdoc:3208 -#: modules/websearch/doc/search-guide.webdoc:3229 -#: modules/websearch/doc/search-guide.webdoc:3243 -#: modules/websearch/doc/search-guide.webdoc:3263 -#: modules/websearch/doc/search-guide.webdoc:3278 -#: modules/websearch/doc/search-guide.webdoc:3297 -#: modules/websearch/doc/search-guide.webdoc:3312 -#: modules/websearch/doc/search-guide.webdoc:3332 -#: modules/websearch/doc/search-guide.webdoc:3347 -#: modules/websearch/doc/search-guide.webdoc:3409 -#: modules/websearch/doc/search-guide.webdoc:3423 -#: modules/websearch/doc/search-guide.webdoc:3440 -#: modules/websearch/doc/search-guide.webdoc:3453 -#: modules/websearch/doc/search-guide.webdoc:3471 -#: modules/websearch/doc/search-guide.webdoc:3486 -#: modules/websearch/doc/search-guide.webdoc:3504 -#: modules/websearch/doc/search-guide.webdoc:3519 -#: modules/websearch/doc/search-guide.webdoc:3544 -#: modules/websearch/doc/search-guide.webdoc:3557 -#: modules/websearch/doc/search-guide.webdoc:3570 -#: modules/websearch/doc/search-guide.webdoc:3586 -#: modules/websearch/doc/search-guide.webdoc:3602 -#: modules/websearch/doc/search-guide.webdoc:3619 -#: modules/websearch/doc/search-guide.webdoc:3652 -#: modules/websearch/doc/search-guide.webdoc:3668 -#: modules/websearch/doc/search-guide.webdoc:3685 -#: modules/websearch/doc/search-guide.webdoc:3705 -#: modules/websearch/doc/search-guide.webdoc:3719 -#: modules/websearch/doc/search-guide.webdoc:3737 -#: modules/websearch/doc/search-guide.webdoc:3758 -#: modules/websearch/doc/search-guide.webdoc:3777 -#: modules/websearch/doc/search-guide.webdoc:3795 -#: modules/websearch/doc/search-guide.webdoc:3817 -#: modules/websearch/doc/search-guide.webdoc:3836 -#: modules/websearch/doc/search-guide.webdoc:3853 -#: modules/websearch/doc/search-guide.webdoc:3974 -#: modules/websearch/doc/search-guide.webdoc:3999 -#: modules/websearch/doc/search-guide.webdoc:4022 -#: modules/websearch/doc/search-guide.webdoc:4048 -#: modules/websearch/doc/search-guide.webdoc:4072 -#: modules/websearch/doc/search-guide.webdoc:4099 -#: modules/websearch/doc/search-guide.webdoc:4124 -#: modules/websearch/doc/search-guide.webdoc:4150 -#: modules/websearch/doc/search-guide.webdoc:4179 -#: modules/websearch/doc/search-guide.webdoc:4199 -#: modules/websearch/doc/search-guide.webdoc:4223 -#: modules/websearch/doc/search-guide.webdoc:4250 -#: modules/websearch/doc/search-guide.webdoc:4290 -#: modules/websearch/doc/search-guide.webdoc:4311 -#: modules/websearch/doc/search-guide.webdoc:4335 -#: modules/websearch/doc/search-guide.webdoc:4365 -#: modules/websearch/doc/search-guide.webdoc:4409 -#: modules/websearch/doc/search-guide.webdoc:4431 -#: modules/websearch/doc/search-guide.webdoc:4456 -#: modules/websearch/doc/search-guide.webdoc:4486 -#: modules/websearch/doc/search-guide.webdoc:4531 -#: modules/websearch/doc/search-guide.webdoc:4552 -#: modules/websearch/doc/search-guide.webdoc:4577 -#: modules/websearch/doc/search-guide.webdoc:4607 -#: modules/websearch/doc/search-guide.webdoc:4899 -#: modules/websearch/doc/search-guide.webdoc:4915 -#: modules/websearch/doc/search-guide.webdoc:4935 -#: modules/websearch/doc/search-guide.webdoc:4954 -#: modules/websearch/doc/search-guide.webdoc:4975 -#: modules/websearch/doc/search-guide.webdoc:4993 -#: modules/websearch/doc/search-guide.webdoc:5014 -#: modules/websearch/doc/search-guide.webdoc:5032 -#: modules/websearch/doc/search-guide.webdoc:5065 -#: modules/websearch/doc/search-guide.webdoc:5079 -#: modules/websearch/doc/search-guide.webdoc:5094 -#: modules/websearch/doc/search-guide.webdoc:5110 -#: modules/websearch/doc/search-guide.webdoc:5129 -#: modules/websearch/doc/search-guide.webdoc:5143 -#: modules/websearch/doc/search-guide.webdoc:5159 -#: modules/websearch/doc/search-guide.webdoc:5177 -#: modules/websearch/doc/search-guide.webdoc:5196 -#: modules/websearch/doc/search-guide.webdoc:5211 -#: modules/websearch/doc/search-guide.webdoc:5226 -#: modules/websearch/doc/search-guide.webdoc:5244 -#: modules/websearch/doc/search-guide.webdoc:5264 -#: modules/websearch/doc/search-guide.webdoc:5279 -#: modules/websearch/doc/search-guide.webdoc:5294 -#: modules/websearch/doc/search-guide.webdoc:5314 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:129 -#: modules/miscutil/lib/inveniocfg.py:453 -msgid "any field" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:20 -#: modules/webhelp/web/help-central.webdoc:25 -#: modules/webhelp/web/help-central.webdoc:26 -#: modules/webhelp/web/help-central.webdoc:27 -#: modules/webhelp/web/help-central.webdoc:28 -#: modules/webhelp/web/help-central.webdoc:29 -#: modules/webhelp/web/help-central.webdoc:30 -#: modules/webhelp/web/help-central.webdoc:31 -#: modules/webhelp/web/help-central.webdoc:32 -#: modules/webhelp/web/help-central.webdoc:33 -#: modules/webhelp/web/help-central.webdoc:34 -#: modules/webhelp/web/help-central.webdoc:35 -#: modules/webhelp/web/help-central.webdoc:36 -#: modules/webhelp/web/help-central.webdoc:37 -#: modules/webhelp/web/help-central.webdoc:38 -#: modules/webhelp/web/help-central.webdoc:39 -#: modules/webhelp/web/help-central.webdoc:40 -#: modules/webhelp/web/help-central.webdoc:41 -#: modules/webhelp/web/help-central.webdoc:42 -#: modules/webhelp/web/help-central.webdoc:43 -#: modules/webhelp/web/help-central.webdoc:44 -#: modules/webhelp/web/help-central.webdoc:45 -#: modules/websearch/doc/search-tips.webdoc:21 -#: modules/websearch/doc/search-guide.webdoc:21 -#: modules/websubmit/doc/submit-guide.webdoc:21 -#: modules/webstyle/lib/webdoc_tests.py:105 -#: modules/webstyle/lib/webdoc_webinterface.py:155 -msgid "Help Central" -msgstr "" - -#: modules/bibformat/etc/format_templates/Default_HTML_actions.bft:6 -msgid "Export as" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:345 -#: modules/websearch/doc/search-guide.webdoc:380 -#: modules/websearch/doc/search-guide.webdoc:415 -#: modules/websearch/doc/search-guide.webdoc:477 -#: modules/websearch/doc/search-guide.webdoc:512 -#: modules/websearch/doc/search-guide.webdoc:547 -#: modules/websearch/doc/search-guide.webdoc:614 -#: modules/websearch/doc/search-guide.webdoc:649 -#: modules/websearch/doc/search-guide.webdoc:684 -#: modules/websearch/doc/search-guide.webdoc:752 -#: modules/websearch/doc/search-guide.webdoc:787 -#: modules/websearch/doc/search-guide.webdoc:822 -#: modules/miscutil/lib/inveniocfg.py:462 -msgid "collection" -msgstr "" - -#: modules/websearch/doc/admin/websearch-admin-guide.webdoc:20 -msgid "WebSearch Admin Guide" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:335 -#: modules/websearch/doc/search-guide.webdoc:371 -#: modules/websearch/doc/search-guide.webdoc:406 -#: modules/websearch/doc/search-guide.webdoc:467 -#: modules/websearch/doc/search-guide.webdoc:503 -#: modules/websearch/doc/search-guide.webdoc:538 -#: modules/websearch/doc/search-guide.webdoc:604 -#: modules/websearch/doc/search-guide.webdoc:640 -#: modules/websearch/doc/search-guide.webdoc:675 -#: modules/websearch/doc/search-guide.webdoc:742 -#: modules/websearch/doc/search-guide.webdoc:778 -#: modules/websearch/doc/search-guide.webdoc:813 -#: modules/websearch/lib/search_engine.py:1136 -#: modules/websearch/lib/websearch_templates.py:1115 -msgid "Exact phrase:" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:108 -#: modules/websubmit/doc/submit-guide.webdoc:20 -msgid "Submit Guide" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:360 -#: modules/websearch/doc/search-guide.webdoc:395 -#: modules/websearch/doc/search-guide.webdoc:492 -#: modules/websearch/doc/search-guide.webdoc:527 -#: modules/websearch/doc/search-guide.webdoc:629 -#: modules/websearch/doc/search-guide.webdoc:664 -#: modules/websearch/doc/search-guide.webdoc:767 -#: modules/websearch/doc/search-guide.webdoc:802 -#: modules/websearch/lib/search_engine.py:960 -#: modules/websearch/lib/search_engine.py:1115 -#: modules/websearch/lib/websearch_templates.py:1162 -#: modules/websearch/lib/websearch_webcoll.py:591 -msgid "OR" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:359 -#: modules/websearch/doc/search-guide.webdoc:394 -#: modules/websearch/doc/search-guide.webdoc:491 -#: modules/websearch/doc/search-guide.webdoc:526 -#: modules/websearch/doc/search-guide.webdoc:628 -#: modules/websearch/doc/search-guide.webdoc:663 -#: modules/websearch/doc/search-guide.webdoc:766 -#: modules/websearch/doc/search-guide.webdoc:801 -#: modules/websearch/lib/search_engine.py:1114 -#: modules/websearch/lib/websearch_templates.py:1161 -msgid "AND" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:349 -#: modules/websearch/doc/search-guide.webdoc:384 -#: modules/websearch/doc/search-guide.webdoc:419 -#: modules/websearch/doc/search-guide.webdoc:481 -#: modules/websearch/doc/search-guide.webdoc:516 -#: modules/websearch/doc/search-guide.webdoc:551 -#: modules/websearch/doc/search-guide.webdoc:618 -#: modules/websearch/doc/search-guide.webdoc:653 -#: modules/websearch/doc/search-guide.webdoc:688 -#: modules/websearch/doc/search-guide.webdoc:756 -#: modules/websearch/doc/search-guide.webdoc:791 -#: modules/websearch/doc/search-guide.webdoc:826 -#: modules/miscutil/lib/inveniocfg.py:457 -msgid "keyword" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:38 -#: modules/websearch/doc/search-tips.webdoc:74 -#: modules/websearch/doc/search-tips.webdoc:120 -#: modules/websearch/doc/search-tips.webdoc:177 -#: modules/websearch/doc/search-tips.webdoc:204 -#: modules/websearch/doc/search-tips.webdoc:232 -#: modules/websearch/doc/search-tips.webdoc:287 -#: modules/websearch/doc/search-tips.webdoc:335 -#: modules/websearch/doc/search-tips.webdoc:346 -#: modules/websearch/doc/search-tips.webdoc:370 -#: modules/websearch/doc/search-tips.webdoc:394 -#: modules/websearch/doc/search-tips.webdoc:432 -#: modules/websearch/doc/search-tips.webdoc:468 -#: modules/websearch/doc/search-tips.webdoc:491 -#: modules/websearch/doc/search-tips.webdoc:513 -#: modules/websearch/doc/search-tips.webdoc:549 -#: modules/websearch/doc/search-tips.webdoc:567 -#: modules/websearch/doc/search-tips.webdoc:586 -#: modules/websearch/doc/search-tips.webdoc:621 -#: modules/websearch/doc/search-tips.webdoc:650 -#: modules/websearch/doc/search-tips.webdoc:678 -#: modules/websearch/doc/search-tips.webdoc:701 -#: modules/websearch/doc/search-guide.webdoc:225 -#: modules/websearch/doc/search-guide.webdoc:249 -#: modules/websearch/doc/search-guide.webdoc:275 -#: modules/websearch/doc/search-guide.webdoc:300 -#: modules/websearch/doc/search-guide.webdoc:353 -#: modules/websearch/doc/search-guide.webdoc:388 -#: modules/websearch/doc/search-guide.webdoc:423 -#: modules/websearch/doc/search-guide.webdoc:485 -#: modules/websearch/doc/search-guide.webdoc:520 -#: modules/websearch/doc/search-guide.webdoc:555 -#: modules/websearch/doc/search-guide.webdoc:622 -#: modules/websearch/doc/search-guide.webdoc:657 -#: modules/websearch/doc/search-guide.webdoc:692 -#: modules/websearch/doc/search-guide.webdoc:760 -#: modules/websearch/doc/search-guide.webdoc:795 -#: modules/websearch/doc/search-guide.webdoc:830 -#: modules/websearch/doc/search-guide.webdoc:880 -#: modules/websearch/doc/search-guide.webdoc:911 -#: modules/websearch/doc/search-guide.webdoc:951 -#: modules/websearch/doc/search-guide.webdoc:985 -#: modules/websearch/doc/search-guide.webdoc:1025 -#: modules/websearch/doc/search-guide.webdoc:1047 -#: modules/websearch/doc/search-guide.webdoc:1067 -#: modules/websearch/doc/search-guide.webdoc:1083 -#: modules/websearch/doc/search-guide.webdoc:1123 -#: modules/websearch/doc/search-guide.webdoc:1146 -#: modules/websearch/doc/search-guide.webdoc:1167 -#: modules/websearch/doc/search-guide.webdoc:1182 -#: modules/websearch/doc/search-guide.webdoc:1226 -#: modules/websearch/doc/search-guide.webdoc:1251 -#: modules/websearch/doc/search-guide.webdoc:1272 -#: modules/websearch/doc/search-guide.webdoc:1288 -#: modules/websearch/doc/search-guide.webdoc:1333 -#: modules/websearch/doc/search-guide.webdoc:1356 -#: modules/websearch/doc/search-guide.webdoc:1378 -#: modules/websearch/doc/search-guide.webdoc:1394 -#: modules/websearch/doc/search-guide.webdoc:1764 -#: modules/websearch/doc/search-guide.webdoc:1778 -#: modules/websearch/doc/search-guide.webdoc:1796 -#: modules/websearch/doc/search-guide.webdoc:1815 -#: modules/websearch/doc/search-guide.webdoc:1828 -#: modules/websearch/doc/search-guide.webdoc:1846 -#: modules/websearch/doc/search-guide.webdoc:1866 -#: modules/websearch/doc/search-guide.webdoc:1881 -#: modules/websearch/doc/search-guide.webdoc:1900 -#: modules/websearch/doc/search-guide.webdoc:1923 -#: modules/websearch/doc/search-guide.webdoc:1938 -#: modules/websearch/doc/search-guide.webdoc:1957 -#: modules/websearch/doc/search-guide.webdoc:1985 -#: modules/websearch/doc/search-guide.webdoc:2023 -#: modules/websearch/doc/search-guide.webdoc:2034 -#: modules/websearch/doc/search-guide.webdoc:2048 -#: modules/websearch/doc/search-guide.webdoc:2062 -#: modules/websearch/doc/search-guide.webdoc:2075 -#: modules/websearch/doc/search-guide.webdoc:2091 -#: modules/websearch/doc/search-guide.webdoc:2102 -#: modules/websearch/doc/search-guide.webdoc:2116 -#: modules/websearch/doc/search-guide.webdoc:2130 -#: modules/websearch/doc/search-guide.webdoc:2143 -#: modules/websearch/doc/search-guide.webdoc:2159 -#: modules/websearch/doc/search-guide.webdoc:2170 -#: modules/websearch/doc/search-guide.webdoc:2184 -#: modules/websearch/doc/search-guide.webdoc:2198 -#: modules/websearch/doc/search-guide.webdoc:2211 -#: modules/websearch/doc/search-guide.webdoc:2229 -#: modules/websearch/doc/search-guide.webdoc:2240 -#: modules/websearch/doc/search-guide.webdoc:2254 -#: modules/websearch/doc/search-guide.webdoc:2268 -#: modules/websearch/doc/search-guide.webdoc:2281 -#: modules/websearch/doc/search-guide.webdoc:2310 -#: modules/websearch/doc/search-guide.webdoc:2324 -#: modules/websearch/doc/search-guide.webdoc:2341 -#: modules/websearch/doc/search-guide.webdoc:2354 -#: modules/websearch/doc/search-guide.webdoc:2371 -#: modules/websearch/doc/search-guide.webdoc:2385 -#: modules/websearch/doc/search-guide.webdoc:2403 -#: modules/websearch/doc/search-guide.webdoc:2417 -#: modules/websearch/doc/search-guide.webdoc:2448 -#: modules/websearch/doc/search-guide.webdoc:2463 -#: modules/websearch/doc/search-guide.webdoc:2477 -#: modules/websearch/doc/search-guide.webdoc:2492 -#: modules/websearch/doc/search-guide.webdoc:2520 -#: modules/websearch/doc/search-guide.webdoc:2535 -#: modules/websearch/doc/search-guide.webdoc:2549 -#: modules/websearch/doc/search-guide.webdoc:2565 -#: modules/websearch/doc/search-guide.webdoc:2597 -#: modules/websearch/doc/search-guide.webdoc:2613 -#: modules/websearch/doc/search-guide.webdoc:2627 -#: modules/websearch/doc/search-guide.webdoc:2642 -#: modules/websearch/doc/search-guide.webdoc:2673 -#: modules/websearch/doc/search-guide.webdoc:2689 -#: modules/websearch/doc/search-guide.webdoc:2703 -#: modules/websearch/doc/search-guide.webdoc:2718 -#: modules/websearch/doc/search-guide.webdoc:2760 -#: modules/websearch/doc/search-guide.webdoc:2775 -#: modules/websearch/doc/search-guide.webdoc:2789 -#: modules/websearch/doc/search-guide.webdoc:2814 -#: modules/websearch/doc/search-guide.webdoc:2829 -#: modules/websearch/doc/search-guide.webdoc:2843 -#: modules/websearch/doc/search-guide.webdoc:2872 -#: modules/websearch/doc/search-guide.webdoc:2887 -#: modules/websearch/doc/search-guide.webdoc:2901 -#: modules/websearch/doc/search-guide.webdoc:2929 -#: modules/websearch/doc/search-guide.webdoc:2944 -#: modules/websearch/doc/search-guide.webdoc:2957 -#: modules/websearch/doc/search-guide.webdoc:2992 -#: modules/websearch/doc/search-guide.webdoc:3014 -#: modules/websearch/doc/search-guide.webdoc:3038 -#: modules/websearch/doc/search-guide.webdoc:3062 -#: modules/websearch/doc/search-guide.webdoc:3086 -#: modules/websearch/doc/search-guide.webdoc:3101 -#: modules/websearch/doc/search-guide.webdoc:3117 -#: modules/websearch/doc/search-guide.webdoc:3134 -#: modules/websearch/doc/search-guide.webdoc:3154 -#: modules/websearch/doc/search-guide.webdoc:3172 -#: modules/websearch/doc/search-guide.webdoc:3190 -#: modules/websearch/doc/search-guide.webdoc:3209 -#: modules/websearch/doc/search-guide.webdoc:3230 -#: modules/websearch/doc/search-guide.webdoc:3244 -#: modules/websearch/doc/search-guide.webdoc:3264 -#: modules/websearch/doc/search-guide.webdoc:3279 -#: modules/websearch/doc/search-guide.webdoc:3298 -#: modules/websearch/doc/search-guide.webdoc:3313 -#: modules/websearch/doc/search-guide.webdoc:3333 -#: modules/websearch/doc/search-guide.webdoc:3348 -#: modules/websearch/doc/search-guide.webdoc:3410 -#: modules/websearch/doc/search-guide.webdoc:3424 -#: modules/websearch/doc/search-guide.webdoc:3441 -#: modules/websearch/doc/search-guide.webdoc:3454 -#: modules/websearch/doc/search-guide.webdoc:3472 -#: modules/websearch/doc/search-guide.webdoc:3487 -#: modules/websearch/doc/search-guide.webdoc:3505 -#: modules/websearch/doc/search-guide.webdoc:3520 -#: modules/websearch/doc/search-guide.webdoc:3545 -#: modules/websearch/doc/search-guide.webdoc:3558 -#: modules/websearch/doc/search-guide.webdoc:3571 -#: modules/websearch/doc/search-guide.webdoc:3587 -#: modules/websearch/doc/search-guide.webdoc:3603 -#: modules/websearch/doc/search-guide.webdoc:3620 -#: modules/websearch/doc/search-guide.webdoc:3653 -#: modules/websearch/doc/search-guide.webdoc:3669 -#: modules/websearch/doc/search-guide.webdoc:3686 -#: modules/websearch/doc/search-guide.webdoc:3706 -#: modules/websearch/doc/search-guide.webdoc:3720 -#: modules/websearch/doc/search-guide.webdoc:3738 -#: modules/websearch/doc/search-guide.webdoc:3759 -#: modules/websearch/doc/search-guide.webdoc:3778 -#: modules/websearch/doc/search-guide.webdoc:3796 -#: modules/websearch/doc/search-guide.webdoc:3818 -#: modules/websearch/doc/search-guide.webdoc:3837 -#: modules/websearch/doc/search-guide.webdoc:3854 -#: modules/websearch/doc/search-guide.webdoc:3975 -#: modules/websearch/doc/search-guide.webdoc:4000 -#: modules/websearch/doc/search-guide.webdoc:4023 -#: modules/websearch/doc/search-guide.webdoc:4049 -#: modules/websearch/doc/search-guide.webdoc:4073 -#: modules/websearch/doc/search-guide.webdoc:4100 -#: modules/websearch/doc/search-guide.webdoc:4125 -#: modules/websearch/doc/search-guide.webdoc:4151 -#: modules/websearch/doc/search-guide.webdoc:4180 -#: modules/websearch/doc/search-guide.webdoc:4200 -#: modules/websearch/doc/search-guide.webdoc:4224 -#: modules/websearch/doc/search-guide.webdoc:4251 -#: modules/websearch/doc/search-guide.webdoc:4291 -#: modules/websearch/doc/search-guide.webdoc:4312 -#: modules/websearch/doc/search-guide.webdoc:4336 -#: modules/websearch/doc/search-guide.webdoc:4366 -#: modules/websearch/doc/search-guide.webdoc:4410 -#: modules/websearch/doc/search-guide.webdoc:4432 -#: modules/websearch/doc/search-guide.webdoc:4457 -#: modules/websearch/doc/search-guide.webdoc:4487 -#: modules/websearch/doc/search-guide.webdoc:4532 -#: modules/websearch/doc/search-guide.webdoc:4553 -#: modules/websearch/doc/search-guide.webdoc:4578 -#: modules/websearch/doc/search-guide.webdoc:4608 -#: modules/websearch/doc/search-guide.webdoc:4900 -#: modules/websearch/doc/search-guide.webdoc:4916 -#: modules/websearch/doc/search-guide.webdoc:4936 -#: modules/websearch/doc/search-guide.webdoc:4955 -#: modules/websearch/doc/search-guide.webdoc:4976 -#: modules/websearch/doc/search-guide.webdoc:4994 -#: modules/websearch/doc/search-guide.webdoc:5015 -#: modules/websearch/doc/search-guide.webdoc:5033 -#: modules/websearch/doc/search-guide.webdoc:5066 -#: modules/websearch/doc/search-guide.webdoc:5080 -#: modules/websearch/doc/search-guide.webdoc:5095 -#: modules/websearch/doc/search-guide.webdoc:5111 -#: modules/websearch/doc/search-guide.webdoc:5130 -#: modules/websearch/doc/search-guide.webdoc:5144 -#: modules/websearch/doc/search-guide.webdoc:5160 -#: modules/websearch/doc/search-guide.webdoc:5178 -#: modules/websearch/doc/search-guide.webdoc:5197 -#: modules/websearch/doc/search-guide.webdoc:5212 -#: modules/websearch/doc/search-guide.webdoc:5227 -#: modules/websearch/doc/search-guide.webdoc:5245 -#: modules/websearch/doc/search-guide.webdoc:5265 -#: modules/websearch/doc/search-guide.webdoc:5280 -#: modules/websearch/doc/search-guide.webdoc:5295 -#: modules/websearch/doc/search-guide.webdoc:5315 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:130 -#: modules/miscutil/lib/inveniocfg.py:454 -msgid "title" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:79 -#: modules/websearch/doc/search-tips.webdoc:125 -#: modules/websearch/lib/websearch_templates.py:1275 -msgid "Narrow by collection:" -msgstr "" - -#: modules/bibformat/etc/format_templates/Default_HTML_actions.bft:5 -msgid "Add to personal basket" -msgstr "" - -#: modules/websubmit/doc/admin/websubmit-admin-guide.webdoc:20 -msgid "WebSubmit Admin Guide" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:340 -#: modules/websubmit/lib/websubmit_templates.py:1118 -#: modules/bibharvest/lib/oai_harvest_admin.py:409 -#: modules/bibharvest/lib/oai_harvest_admin.py:417 -#: modules/bibharvest/lib/oai_harvest_admin.py:431 -#: modules/bibharvest/lib/oai_harvest_admin.py:446 -msgid "or" -msgstr "" #: modules/bibedit/lib/bibedit_templates.py:266 +#: modules/bibedit/lib/bibedit_templates_epfl.py:105 msgid "Comparison of:" msgstr "" #: modules/bibedit/lib/bibedit_templates.py:267 +#: modules/bibedit/lib/bibedit_templates_epfl.py:106 msgid "Revision" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:315 #: modules/bibformat/lib/bibformat_templates.py:427 #: modules/bibformat/lib/bibformat_templates.py:574 #: modules/bibformat/lib/bibformat_templates.py:590 #: modules/bibformat/lib/bibformat_templates.py:621 #: modules/bibformat/lib/bibformat_templates.py:931 #: modules/bibformat/lib/bibformat_templates.py:1063 #: modules/bibformat/lib/bibformat_templates.py:1379 #: modules/bibformat/lib/bibformat_templates.py:1483 #: modules/bibformat/lib/bibformat_templates.py:1542 #: modules/webcomment/lib/webcomment_templates.py:1415 #: modules/webjournal/lib/webjournal_templates.py:164 #: modules/webjournal/lib/webjournal_templates.py:535 #: modules/webjournal/lib/webjournal_templates.py:676 #: modules/bibknowledge/lib/bibknowledge_templates.py:299 #: modules/bibknowledge/lib/bibknowledge_templates.py:556 #: modules/bibknowledge/lib/bibknowledge_templates.py:624 msgid "Menu" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:317 #: modules/bibformat/lib/bibformat_templates.py:428 #: modules/bibformat/lib/bibformat_templates.py:577 #: modules/bibformat/lib/bibformat_templates.py:593 #: modules/bibformat/lib/bibformat_templates.py:624 #: modules/bibknowledge/lib/bibknowledge_templates.py:295 #: modules/bibknowledge/lib/bibknowledge_templates.py:555 #: modules/bibknowledge/lib/bibknowledge_templates.py:623 msgid "Close Editor" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:318 #: modules/bibformat/lib/bibformat_templates.py:429 #: modules/bibformat/lib/bibformat_templates.py:578 #: modules/bibformat/lib/bibformat_templates.py:594 #: modules/bibformat/lib/bibformat_templates.py:625 msgid "Modify Template Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:319 #: modules/bibformat/lib/bibformat_templates.py:430 #: modules/bibformat/lib/bibformat_templates.py:579 #: modules/bibformat/lib/bibformat_templates.py:595 #: modules/bibformat/lib/bibformat_templates.py:626 msgid "Template Editor" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:320 #: modules/bibformat/lib/bibformat_templates.py:431 #: modules/bibformat/lib/bibformat_templates.py:580 #: modules/bibformat/lib/bibformat_templates.py:596 #: modules/bibformat/lib/bibformat_templates.py:627 #: modules/bibformat/lib/bibformat_templates.py:1178 #: modules/bibformat/lib/bibformat_templates.py:1378 #: modules/bibformat/lib/bibformat_templates.py:1482 msgid "Check Dependencies" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:370 #: modules/bibformat/lib/bibformat_templates.py:929 #: modules/bibformat/lib/bibformat_templates.py:1054 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/webalert/lib/webalert_templates.py:318 #: modules/websubmit/lib/websubmit_managedocfiles.py:370 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:194 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:255 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:345 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:398 #: modules/bibcirculation/lib/bibcirculation_utils.py:340 #: modules/bibcirculation/lib/bibcirculation_templates.py:1072 #: modules/bibcirculation/lib/bibcirculation_templates.py:1258 #: modules/bibcirculation/lib/bibcirculation_templates.py:1423 #: modules/bibcirculation/lib/bibcirculation_templates.py:1668 #: modules/bibcirculation/lib/bibcirculation_templates.py:2184 #: modules/bibcirculation/lib/bibcirculation_templates.py:2270 #: modules/bibcirculation/lib/bibcirculation_templates.py:2476 #: modules/bibcirculation/lib/bibcirculation_templates.py:2481 #: modules/bibcirculation/lib/bibcirculation_templates.py:2824 #: modules/bibcirculation/lib/bibcirculation_templates.py:3516 #: modules/bibcirculation/lib/bibcirculation_templates.py:3645 #: modules/bibcirculation/lib/bibcirculation_templates.py:4831 #: modules/bibcirculation/lib/bibcirculation_templates.py:5358 #: modules/bibcirculation/lib/bibcirculation_templates.py:5402 #: modules/bibcirculation/lib/bibcirculation_templates.py:5662 #: modules/bibcirculation/lib/bibcirculation_templates.py:5724 #: modules/bibcirculation/lib/bibcirculation_templates.py:5842 #: modules/bibcirculation/lib/bibcirculation_templates.py:5904 #: modules/bibcirculation/lib/bibcirculation_templates.py:6136 #: modules/bibcirculation/lib/bibcirculation_templates.py:6199 #: modules/bibcirculation/lib/bibcirculation_templates.py:6544 #: modules/bibcirculation/lib/bibcirculation_templates.py:7002 #: modules/bibcirculation/lib/bibcirculation_templates.py:7153 #: modules/bibcirculation/lib/bibcirculation_templates.py:8085 #: modules/bibcirculation/lib/bibcirculation_templates.py:8313 #: modules/bibcirculation/lib/bibcirculation_templates.py:8631 #: modules/bibcirculation/lib/bibcirculation_templates.py:8864 #: modules/bibcirculation/lib/bibcirculation_templates.py:8909 #: modules/bibcirculation/lib/bibcirculation_templates.py:9098 #: modules/bibcirculation/lib/bibcirculation_templates.py:9323 #: modules/bibcirculation/lib/bibcirculation_templates.py:9367 #: modules/bibcirculation/lib/bibcirculation_templates.py:9526 #: modules/bibcirculation/lib/bibcirculation_templates.py:9740 #: modules/bibcirculation/lib/bibcirculation_templates.py:10139 #: modules/bibcirculation/lib/bibcirculation_templates.py:10336 #: modules/bibcirculation/lib/bibcirculation_templates.py:10439 #: modules/bibcirculation/lib/bibcirculation_templates.py:10593 #: modules/bibcirculation/lib/bibcirculation_templates.py:10605 #: modules/bibcirculation/lib/bibcirculation_templates.py:10735 #: modules/bibcirculation/lib/bibcirculation_templates.py:11270 #: modules/bibcirculation/lib/bibcirculation_templates.py:11488 #: modules/bibcirculation/lib/bibcirculation_templates.py:12242 #: modules/bibcirculation/lib/bibcirculation_templates.py:12314 #: modules/bibcirculation/lib/bibcirculation_templates.py:12380 #: modules/bibcirculation/lib/bibcirculation_templates.py:13098 #: modules/bibcirculation/lib/bibcirculation_templates.py:13375 #: modules/bibcirculation/lib/bibcirculation_templates.py:13576 #: modules/bibcirculation/lib/bibcirculation_templates.py:13642 #: modules/bibcirculation/lib/bibcirculation_templates.py:13885 #: modules/bibcirculation/lib/bibcirculation_templates.py:13952 #: modules/bibcirculation/lib/bibcirculation_templates.py:14194 #: modules/bibcirculation/lib/bibcirculation_templates.py:14596 #: modules/bibcirculation/lib/bibcirculation_templates.py:14845 #: modules/bibcirculation/lib/bibcirculation_templates.py:14894 #: modules/bibcirculation/lib/bibcirculation_templates.py:15355 #: modules/bibcirculation/lib/bibcirculation_templates.py:16088 #: modules/bibcirculation/lib/bibcirculation_templates.py:16101 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:447 +#: modules/webalert/lib/webalert_templates_epfl.py:302 msgid "Name" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:389 #: modules/bibformat/lib/bibformat_templates.py:930 #: modules/bibformat/lib/bibformat_templates.py:1055 #: modules/webbasket/lib/webbasket_templates.py:1247 #: modules/websession/lib/websession_templates.py:1525 #: modules/websession/lib/websession_templates.py:1599 #: modules/websession/lib/websession_templates.py:1662 #: modules/websubmit/lib/websubmit_managedocfiles.py:372 #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:2868 #: modules/bibcirculation/lib/bibcirculation_templates.py:5242 #: modules/bibcirculation/lib/bibcirculation_templates.py:6580 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6774 #: modules/bibcirculation/lib/bibcirculation_templates.py:7034 #: modules/bibcirculation/lib/bibcirculation_templates.py:7428 #: modules/bibcirculation/lib/bibcirculation_templates.py:7576 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:451 msgid "Description" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:390 msgid "Update Format Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:575 #: modules/bibformat/lib/bibformat_templates.py:591 #: modules/bibformat/lib/bibformat_templates.py:622 msgid "Show Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:576 #: modules/bibformat/lib/bibformat_templates.py:592 #: modules/bibformat/lib/bibformat_templates.py:623 #: modules/bibformat/lib/bibformat_templates.py:674 msgid "Hide Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:583 #: modules/websubmit/lib/websubmit_templates.py:867 msgid "Your modifications will not be saved." msgstr "" #: modules/bibformat/lib/bibformat_templates.py:932 #: modules/bibformat/lib/bibformat_templates.py:1056 #: modules/bibupload/lib/batchuploader_templates.py:221 #: modules/bibupload/lib/batchuploader_templates.py:263 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/websubmit/lib/websubmit_templates.py:1484 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:536 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:633 #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:630 #: modules/bibcirculation/lib/bibcirculation_templates.py:2588 #: modules/bibcirculation/lib/bibcirculation_templates.py:2696 #: modules/bibcirculation/lib/bibcirculation_templates.py:2861 #: modules/bibcirculation/lib/bibcirculation_templates.py:6573 #: modules/bibcirculation/lib/bibcirculation_templates.py:6704 #: modules/bibcirculation/lib/bibcirculation_templates.py:6776 #: modules/bibcirculation/lib/bibcirculation_templates.py:7028 #: modules/bibcirculation/lib/bibcirculation_templates.py:7458 #: modules/bibcirculation/lib/bibcirculation_templates.py:7578 #: modules/bibcirculation/lib/bibcirculation_templates.py:8375 #: modules/bibcirculation/lib/bibcirculation_templates.py:9625 #: modules/bibcirculation/lib/bibcirculation_templates.py:9809 #: modules/bibcirculation/lib/bibcirculation_templates.py:9904 #: modules/bibcirculation/lib/bibcirculation_templates.py:11073 #: modules/bibcirculation/lib/bibcirculation_templates.py:11530 #: modules/bibcirculation/lib/bibcirculation_templates.py:11559 #: modules/bibcirculation/lib/bibcirculation_templates.py:11615 #: modules/bibcirculation/lib/bibcirculation_templates.py:11647 #: modules/bibcirculation/lib/bibcirculation_templates.py:11789 #: modules/bibcirculation/lib/bibcirculation_templates.py:11963 #: modules/bibcirculation/lib/bibcirculation_templates.py:12079 #: modules/bibcirculation/lib/bibcirculation_templates.py:12415 #: modules/bibcirculation/lib/bibcirculation_templates.py:12505 #: modules/bibcirculation/lib/bibcirculation_templates.py:12599 #: modules/bibcirculation/lib/bibcirculation_templates.py:12702 #: modules/bibcirculation/lib/bibcirculation_templates.py:12805 #: modules/bibcirculation/lib/bibcirculation_templates.py:12911 #: modules/bibcirculation/lib/bibcirculation_templates.py:13174 #: modules/bibcirculation/lib/bibcirculation_templates.py:13417 #: modules/bibcirculation/lib/bibcirculation_templates.py:15103 msgid "Status" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:933 #: modules/bibformat/lib/bibformat_templates.py:1057 msgid "Last Modification Date" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:934 #: modules/bibformat/lib/bibformat_templates.py:1058 #: modules/webalert/lib/webalert_templates.py:325 #: modules/webalert/lib/webalert_templates.py:462 #: modules/webmessage/lib/webmessage_templates.py:89 #: modules/websubmit/lib/websubmit_templates.py:1483 +#: modules/webalert/lib/webalert_templates_epfl.py:309 +#: modules/webalert/lib/webalert_templates_epfl.py:453 msgid "Action" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:936 #: modules/bibformat/lib/bibformat_templates.py:1060 #: modules/bibformat/lib/bibformat_templates.py:1543 #: modules/bibformat/web/admin/bibformatadmin.py:99 #: modules/bibformat/web/admin/bibformatadmin.py:160 #: modules/bibformat/web/admin/bibformatadmin.py:231 #: modules/bibformat/web/admin/bibformatadmin.py:276 #: modules/bibformat/web/admin/bibformatadmin.py:367 #: modules/bibformat/web/admin/bibformatadmin.py:942 msgid "Manage Output Formats" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:937 #: modules/bibformat/lib/bibformat_templates.py:1061 #: modules/bibformat/lib/bibformat_templates.py:1544 #: modules/bibformat/web/admin/bibformatadmin.py:441 #: modules/bibformat/web/admin/bibformatadmin.py:474 #: modules/bibformat/web/admin/bibformatadmin.py:545 #: modules/bibformat/web/admin/bibformatadmin.py:590 #: modules/bibformat/web/admin/bibformatadmin.py:656 #: modules/bibformat/web/admin/bibformatadmin.py:963 msgid "Manage Format Templates" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:938 #: modules/bibformat/lib/bibformat_templates.py:1062 #: modules/bibformat/lib/bibformat_templates.py:1545 #: modules/bibformat/web/admin/bibformatadmin.py:837 #: modules/bibformat/web/admin/bibformatadmin.py:858 #: modules/bibformat/web/admin/bibformatadmin.py:891 #: modules/bibformat/web/admin/bibformatadmin.py:981 msgid "Format Elements Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:990 #: modules/bibformat/web/admin/bibformatadmin.py:388 #: modules/bibformat/web/admin/bibformatadmin.py:390 #: modules/bibformat/web/admin/bibformatadmin.py:676 #: modules/bibformat/web/admin/bibformatadmin.py:678 #: modules/webbasket/lib/webbasket_templates.py:2858 #: modules/webmessage/lib/webmessage_templates.py:115 #: modules/webjournal/lib/webjournaladminlib.py:113 #: modules/webjournal/lib/webjournaladminlib.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:175 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:324 #: modules/bibcirculation/lib/bibcirculation_templates.py:1136 #: modules/bibcirculation/lib/bibcirculation_templates.py:1709 #: modules/bibcirculation/lib/bibcirculation_templates.py:15424 #: modules/bibcheck/web/admin/bibcheckadmin.py:137 #: modules/bibknowledge/lib/bibknowledgeadmin.py:740 #: modules/bibknowledge/lib/bibknowledgeadmin.py:742 msgid "Delete" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1013 msgid "Add New Format Template" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1014 msgid "Check Format Templates Extensively" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1053 msgid "Code" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1136 msgid "Add New Output Format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1174 msgid "menu" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1175 #: modules/bibformat/lib/bibformat_templates.py:1375 #: modules/bibformat/lib/bibformat_templates.py:1479 msgid "Close Output Format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1176 #: modules/bibformat/lib/bibformat_templates.py:1376 #: modules/bibformat/lib/bibformat_templates.py:1480 msgid "Rules" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1177 #: modules/bibformat/lib/bibformat_templates.py:1377 #: modules/bibformat/lib/bibformat_templates.py:1481 msgid "Modify Output Format Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1276 #: modules/bibformat/lib/bibformatadminlib.py:553 msgid "Remove Rule" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1329 #: modules/bibformat/lib/bibformatadminlib.py:560 msgid "Add New Rule" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1330 #: modules/bibformat/lib/bibformatadminlib.py:557 #: modules/bibcheck/web/admin/bibcheckadmin.py:239 msgid "Save Changes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1894 msgid "No problem found with format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1896 msgid "An error has been found" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1898 msgid "The following errors have been found" msgstr "" +#: modules/bibformat/lib/bibformatadminlib.py:55 +#: modules/bibformat/web/admin/bibformatadmin.py:68 +#: modules/webcomment/lib/webcommentadminlib.py:43 +#: modules/webstyle/lib/webdoc_webinterface.py:153 +#: modules/bibcheck/web/admin/bibcheckadmin.py:57 +#: modules/bibcheck/web/admin/bibcheckadmin.py:159 +#: modules/bibcheck/web/admin/bibcheckadmin.py:203 +#: modules/bibcheck/web/admin/bibcheckadmin.py:263 +#: modules/bibcheck/web/admin/bibcheckadmin.py:303 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:78 +msgid "Admin Area" +msgstr "" + #: modules/bibformat/lib/bibformatadminlib.py:55 #: modules/bibformat/web/admin/bibformatadmin.py:70 msgid "BibFormat Admin" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:347 #: modules/bibformat/lib/bibformatadminlib.py:386 #: modules/bibformat/lib/bibformatadminlib.py:388 msgid "Test with record:" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:348 msgid "Enter a search query here." msgstr "" -#: modules/bibformat/lib/elements/bfe_authors.py:117 -msgid "Hide" +#: modules/bibformat/lib/elements/bfe_authors.py:73 +msgid "Editors" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:75 +#: modules/bibcirculation/lib/bibcirculation_utils.py:321 +msgid "Editor" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:89 +msgid "Translators: " +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:89 +msgid "Translator: " msgstr "" -#: modules/bibformat/lib/elements/bfe_authors.py:118 +#: modules/bibformat/lib/elements/bfe_authors.py:97 +msgid "Advisor: " +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:97 +msgid "Advisors: " +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:145 #, python-format msgid "Show all %i authors" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:75 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:70 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:73 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:104 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:107 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:124 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:126 msgid "Download fulltext" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:84 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:59 msgid "additional files" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:121 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:111 #, python-format msgid "%(x_sitename)s link" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:121 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:111 #, python-format msgid "%(x_sitename)s links" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:130 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:129 msgid "external link" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:130 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:129 msgid "external links" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:272 +#: modules/bibformat/lib/elements/bfe_brief_links.py:64 +#: modules/bibformat/lib/elements/bfe_brief_links.py:66 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:136 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:173 msgid "Fulltext" msgstr "" #: modules/bibformat/lib/elements/bfe_edit_files.py:50 msgid "Manage Files of This Record" msgstr "" -#: modules/bibformat/lib/elements/bfe_edit_record.py:51 -msgid "Edit This Record" +#: modules/bibformat/lib/elements/bfe_edit_record.py:59 +#: modules/websearch/lib/websearch_templates_epfl.py:1484 +msgid "This field is required" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:175 -#: modules/bibformat/web/admin/bibformatadmin.py:243 -#: modules/bibformat/web/admin/bibformatadmin.py:288 -#: modules/bibformat/web/admin/bibformatadmin.py:945 -msgid "Restricted Output Format" +#: modules/bibformat/lib/elements/bfe_edit_record.py:60 +msgid "Please wait while your message is being sent" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:201 -#: modules/bibformat/web/admin/bibformatadmin.py:508 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:564 -msgid "Ok" +#: modules/bibformat/lib/elements/bfe_edit_record.py:61 +msgid "Your request has been successfully sent." msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:203 -#, python-format -msgid "Output Format %s Rules" +#: modules/bibformat/lib/elements/bfe_edit_record.py:103 +msgid "Ask for removal" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:256 -#, python-format -msgid "Output Format %s Attributes" +#: modules/bibformat/lib/elements/bfe_edit_record.py:105 +msgid "Removal request" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:301 -#, python-format -msgid "Output Format %s Dependencies" +#: modules/bibformat/lib/elements/bfe_edit_record.py:106 +msgid "Please tell us the reason you want to remove it" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:367 -msgid "Delete Output Format" +#: modules/bibformat/lib/elements/bfe_edit_record.py:108 +msgid "Send request" msgstr "" +#: modules/bibformat/lib/elements/bfe_edit_record.py:109 #: modules/bibformat/web/admin/bibformatadmin.py:388 #: modules/bibformat/web/admin/bibformatadmin.py:676 #: modules/webbasket/lib/webbasket_templates.py:1413 #: modules/webbasket/lib/webbasket_templates.py:1481 #: modules/webbasket/lib/webbasket_templates.py:1588 #: modules/webbasket/lib/webbasket_templates.py:1643 #: modules/webbasket/lib/webbasket_templates.py:1733 #: modules/webbasket/lib/webbasket_templates.py:2803 #: modules/webbasket/lib/webbasket_templates.py:3607 #: modules/websession/lib/websession_templates.py:1802 #: modules/websession/lib/websession_templates.py:1910 #: modules/websession/lib/websession_templates.py:2112 #: modules/websession/lib/websession_templates.py:2195 #: modules/websubmit/lib/websubmit_managedocfiles.py:846 #: modules/websubmit/lib/websubmit_templates.py:2526 #: modules/websubmit/lib/websubmit_templates.py:2589 #: modules/websubmit/lib/websubmit_templates.py:2609 #: modules/websubmit/web/publiline.py:1225 #: modules/webjournal/lib/webjournaladminlib.py:114 #: modules/webjournal/lib/webjournaladminlib.py:224 #: modules/bibedit/lib/bibeditmulti_templates.py:517 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:261 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:403 #: modules/bibcirculation/lib/bibcirculation_templates.py:641 #: modules/bibcirculation/lib/bibcirculation_templates.py:1319 #: modules/bibcirculation/lib/bibcirculation_templates.py:1455 #: modules/bibcirculation/lib/bibcirculation_templates.py:3866 #: modules/bibknowledge/lib/bibknowledgeadmin.py:740 +#: modules/webbasket/lib/webbasket_templates_epfl.py:528 +#: modules/webbasket/lib/webbasket_templates_epfl.py:600 +#: modules/webbasket/lib/webbasket_templates_epfl.py:689 +#: modules/webbasket/lib/webbasket_templates_epfl.py:766 +#: modules/websearch/lib/websearch_templates_epfl.py:1486 msgid "Cancel" msgstr "" +#: modules/bibformat/lib/elements/bfe_edit_record.py:146 +#: modules/bibcirculation/lib/bibcirculation_templates.py:2830 +msgid "Edit this record" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_edit_record.py:157 +msgid "Edit this record (BibEdit)" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:175 +#: modules/bibformat/web/admin/bibformatadmin.py:243 +#: modules/bibformat/web/admin/bibformatadmin.py:288 +#: modules/bibformat/web/admin/bibformatadmin.py:945 +msgid "Restricted Output Format" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:201 +#: modules/bibformat/web/admin/bibformatadmin.py:508 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:564 +msgid "Ok" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:203 +#, python-format +msgid "Output Format %s Rules" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:256 +#, python-format +msgid "Output Format %s Attributes" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:301 +#, python-format +msgid "Output Format %s Dependencies" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:367 +msgid "Delete Output Format" +msgstr "" + #: modules/bibformat/web/admin/bibformatadmin.py:413 msgid "Cannot create output format" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:487 #: modules/bibformat/web/admin/bibformatadmin.py:559 #: modules/bibformat/web/admin/bibformatadmin.py:966 msgid "Restricted Format Template" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:513 #, python-format msgid "Format Template %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:570 #, python-format msgid "Format Template %s Attributes" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:602 #, python-format msgid "Format Template %s Dependencies" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:656 msgid "Delete Format Template" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:867 #, python-format msgid "Format Element %s Dependencies" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:898 #, python-format msgid "Test Format Element %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:959 #, python-format msgid "Validation of Output Format %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:977 #, python-format msgid "Validation of Format Template %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:985 msgid "Restricted Format Element" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:993 #, python-format msgid "Validation of Format Element %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:996 msgid "Format Validation" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:53 #: modules/bibharvest/lib/bibharvest_templates.py:70 msgid "See Guide" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:81 msgid "OAI sources currently present in the database" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:82 msgid "No OAI sources currently present in the database" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:92 msgid "Next oaiharvest task" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:93 msgid "scheduled time:" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:94 msgid "current status:" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:95 msgid "No oaiharvest task currently scheduled." msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:201 msgid "successfully validated" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:202 msgid "does not seem to be a OAI-compliant baseURL" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:283 msgid "View next entries..." msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:340 msgid "previous month" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:347 msgid "next month" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:442 msgid "main Page" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:449 #: modules/bibharvest/lib/oai_harvest_admin.py:93 msgid "edit" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:453 #: modules/websubmit/lib/websubmit_managedocfiles.py:997 #: modules/bibharvest/lib/oai_harvest_admin.py:97 msgid "delete" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:457 #: modules/bibharvest/lib/oai_harvest_admin.py:101 msgid "test" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:461 #: modules/bibharvest/lib/oai_harvest_admin.py:105 msgid "history" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:465 #: modules/bibharvest/lib/oai_harvest_admin.py:109 msgid "harvest" msgstr "" #: modules/bibrank/lib/bibrank_citation_grapher.py:127 msgid "Citation history:" msgstr "" #: modules/bibrank/lib/bibrank_downloads_grapher.py:81 msgid "Download history:" msgstr "" #: modules/bibrank/lib/bibrank_downloads_grapher.py:103 msgid "Download user distribution:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:129 msgid "Warning: Please, select a valid time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:133 msgid "Warning: Please, select a valid file" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:137 msgid "Warning: The date format is not correct" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:141 msgid "Warning: Please, select a valid date" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:167 msgid "Select file to upload" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:168 msgid "File type" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:169 #: modules/bibupload/lib/batchuploader_templates.py:357 msgid "Upload mode" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:170 #: modules/bibupload/lib/batchuploader_templates.py:358 msgid "Upload later? then select:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:171 #: modules/bibupload/lib/batchuploader_templates.py:359 #: modules/webmessage/lib/webmessage_templates.py:88 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:535 msgid "Date" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:172 #: modules/bibupload/lib/batchuploader_templates.py:360 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/webstyle/lib/webstyle_templates.py:668 msgid "Time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:173 #: modules/bibupload/lib/batchuploader_templates.py:355 #: modules/bibupload/lib/batchuploader_templates.py:361 #: modules/websession/lib/websession_templates.py:163 #: modules/websession/lib/websession_templates.py:166 #: modules/websession/lib/websession_templates.py:1050 msgid "Example" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:174 #: modules/bibupload/lib/batchuploader_templates.py:362 #, python-format msgid "All fields with %(x_fmt_open)s*%(x_fmt_close)s are mandatory" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:191 #, python-format msgid "" "Your file has been successfully queued. You can check your " "%(x_url1_open)supload history%(x_url1_close)s or %(x_url2_open)ssubmit " "another file%(x_url2_close)s" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:205 msgid "No metadata files have been uploaded yet." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:218 #: modules/bibupload/lib/batchuploader_templates.py:260 msgid "Submit time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:219 #: modules/bibupload/lib/batchuploader_templates.py:261 msgid "File name" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:220 #: modules/bibupload/lib/batchuploader_templates.py:262 msgid "Execution time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:247 msgid "No document files have been uploaded yet." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:302 #: modules/bibupload/lib/batchuploader_webinterface.py:137 #: modules/bibupload/lib/batchuploader_webinterface.py:301 msgid "Metadata batch upload" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:305 #: modules/bibupload/lib/batchuploader_webinterface.py:160 #: modules/bibupload/lib/batchuploader_webinterface.py:213 msgid "Document batch upload" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:308 #: modules/bibupload/lib/batchuploader_webinterface.py:325 msgid "Upload history" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:311 msgid "Daemon monitor" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:354 msgid "Input directory" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:356 msgid "Filename matching" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:371 #, python-format msgid "%s documents have been found." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:373 msgid "The following files have been successfully queued:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:378 msgid "The following errors have occurred:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:385 msgid "" "Some files could not be moved to DONE folder. Please remove them manually." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:387 msgid "All uploaded files were moved to DONE folder." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:397 #, python-format msgid "" "Using %(x_fmt_open)sweb interface upload%(x_fmt_close)s, actions are " "executed a single time." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:399 #, python-format msgid "" "Check the %(x_url_open)sBatch Uploader daemon help page%(x_url_close)s for " "executing these actions periodically." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:404 msgid "Metadata folders" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/bibcirculation/lib/bibcirculation_templates.py:2183 #: modules/bibcirculation/lib/bibcirculation_templates.py:2269 #: modules/bibcirculation/lib/bibcirculation_templates.py:8908 #: modules/bibcirculation/lib/bibcirculation_templates.py:9366 #: modules/bibcirculation/lib/bibcirculation_templates.py:10438 #: modules/bibcirculation/lib/bibcirculation_templates.py:10604 #: modules/bibcirculation/lib/bibcirculation_templates.py:11074 msgid "ID" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:426 msgid "Progress" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:428 msgid "Last BibSched tasks:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:437 msgid "Next scheduled BibSched run:" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:98 msgid "Guests are not authorized to run batchuploader" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:105 #, python-format msgid "The user '%s' is not authorized to run batchuploader" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:216 msgid "Document batch upload result" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:299 msgid "Upload succesful" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:349 msgid "Batch Uploader: Daemon monitor" msgstr "" #: modules/miscutil/lib/dateutils.py:82 modules/miscutil/lib/dateutils.py:109 -#: modules/webbasket/lib/webbasket.py:181 -#: modules/webbasket/lib/webbasket.py:784 -#: modules/webbasket/lib/webbasket.py:879 -#: modules/websession/lib/webuser.py:306 +#: modules/webbasket/lib/webbasket.py:182 +#: modules/webbasket/lib/webbasket.py:787 +#: modules/webbasket/lib/webbasket.py:882 +#: modules/websession/lib/webuser.py:329 #: modules/webstyle/lib/webstyle_templates.py:577 msgid "N/A" msgstr "" #: modules/miscutil/lib/dateutils.py:172 msgid "Sun" msgstr "" #: modules/miscutil/lib/dateutils.py:173 msgid "Mon" msgstr "" #: modules/miscutil/lib/dateutils.py:174 msgid "Tue" msgstr "" #: modules/miscutil/lib/dateutils.py:175 msgid "Wed" msgstr "" #: modules/miscutil/lib/dateutils.py:176 msgid "Thu" msgstr "" #: modules/miscutil/lib/dateutils.py:177 msgid "Fri" msgstr "" #: modules/miscutil/lib/dateutils.py:178 msgid "Sat" msgstr "" #: modules/miscutil/lib/dateutils.py:180 msgid "Sunday" msgstr "" #: modules/miscutil/lib/dateutils.py:181 msgid "Monday" msgstr "" #: modules/miscutil/lib/dateutils.py:182 msgid "Tuesday" msgstr "" #: modules/miscutil/lib/dateutils.py:183 msgid "Wednesday" msgstr "" #: modules/miscutil/lib/dateutils.py:184 msgid "Thursday" msgstr "" #: modules/miscutil/lib/dateutils.py:185 msgid "Friday" msgstr "" #: modules/miscutil/lib/dateutils.py:186 msgid "Saturday" msgstr "" #: modules/miscutil/lib/dateutils.py:200 modules/miscutil/lib/dateutils.py:214 #: modules/bibcirculation/lib/bibcirculation_templates.py:782 #: modules/bibcirculation/lib/bibcirculation_templates.py:804 msgid "Month" msgstr "" #: modules/miscutil/lib/dateutils.py:201 msgid "Jan" msgstr "" #: modules/miscutil/lib/dateutils.py:202 msgid "Feb" msgstr "" #: modules/miscutil/lib/dateutils.py:203 msgid "Mar" msgstr "" #: modules/miscutil/lib/dateutils.py:204 msgid "Apr" msgstr "" #: modules/miscutil/lib/dateutils.py:205 modules/miscutil/lib/dateutils.py:219 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "May" msgstr "" #: modules/miscutil/lib/dateutils.py:206 msgid "Jun" msgstr "" #: modules/miscutil/lib/dateutils.py:207 msgid "Jul" msgstr "" #: modules/miscutil/lib/dateutils.py:208 msgid "Aug" msgstr "" #: modules/miscutil/lib/dateutils.py:209 msgid "Sep" msgstr "" #: modules/miscutil/lib/dateutils.py:210 msgid "Oct" msgstr "" #: modules/miscutil/lib/dateutils.py:211 msgid "Nov" msgstr "" #: modules/miscutil/lib/dateutils.py:212 msgid "Dec" msgstr "" #: modules/miscutil/lib/dateutils.py:215 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "January" msgstr "" #: modules/miscutil/lib/dateutils.py:216 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "February" msgstr "" #: modules/miscutil/lib/dateutils.py:217 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "March" msgstr "" #: modules/miscutil/lib/dateutils.py:218 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "April" msgstr "" #: modules/miscutil/lib/dateutils.py:220 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "June" msgstr "" #: modules/miscutil/lib/dateutils.py:221 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "July" msgstr "" #: modules/miscutil/lib/dateutils.py:222 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "August" msgstr "" #: modules/miscutil/lib/dateutils.py:223 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "September" msgstr "" #: modules/miscutil/lib/dateutils.py:224 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "October" msgstr "" #: modules/miscutil/lib/dateutils.py:225 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "November" msgstr "" #: modules/miscutil/lib/dateutils.py:226 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "December" msgstr "" #: modules/miscutil/lib/dateutils.py:244 #: modules/bibcirculation/lib/bibcirculation_templates.py:783 #: modules/bibcirculation/lib/bibcirculation_templates.py:805 msgid "Day" msgstr "" #: modules/miscutil/lib/dateutils.py:295 #: modules/bibcirculation/lib/bibcirculation_utils.py:323 #: modules/bibcirculation/lib/bibcirculation_templates.py:781 #: modules/bibcirculation/lib/bibcirculation_templates.py:803 #: modules/bibcirculation/lib/bibcirculation_templates.py:1625 #: modules/bibcirculation/lib/bibcirculation_templates.py:2483 #: modules/bibcirculation/lib/bibcirculation_templates.py:2826 #: modules/bibcirculation/lib/bibcirculation_templates.py:6320 #: modules/bibcirculation/lib/bibcirculation_templates.py:6548 #: modules/bibcirculation/lib/bibcirculation_templates.py:7006 #: modules/bibcirculation/lib/bibcirculation_templates.py:7157 #: modules/bibcirculation/lib/bibcirculation_templates.py:8633 #: modules/bibcirculation/lib/bibcirculation_templates.py:8866 #: modules/bibcirculation/lib/bibcirculation_templates.py:9100 #: modules/bibcirculation/lib/bibcirculation_templates.py:9325 #: modules/bibcirculation/lib/bibcirculation_templates.py:9530 #: modules/bibcirculation/lib/bibcirculation_templates.py:9742 #: modules/bibcirculation/lib/bibcirculation_templates.py:10141 #: modules/bibcirculation/lib/bibcirculation_templates.py:10340 #: modules/bibcirculation/lib/bibcirculation_templates.py:10595 #: modules/bibcirculation/lib/bibcirculation_templates.py:10739 #: modules/bibcirculation/lib/bibcirculation_templates.py:10936 #: modules/bibcirculation/lib/bibcirculation_templates.py:11274 #: modules/bibcirculation/lib/bibcirculation_templates.py:11353 #: modules/bibcirculation/lib/bibcirculation_templates.py:11435 #: modules/bibcirculation/lib/bibcirculation_templates.py:12246 #: modules/bibcirculation/lib/bibcirculation_templates.py:12322 #: modules/bibcirculation/lib/bibcirculation_templates.py:13102 #: modules/bibcirculation/lib/bibcirculation_templates.py:13377 #: modules/bibcirculation/lib/bibcirculation_templates.py:14384 #: modules/bibcirculation/lib/bibcirculation_templates.py:14599 #: modules/bibcirculation/lib/bibcirculation_templates.py:14848 #: modules/bibcirculation/lib/bibcirculation_templates.py:15868 #: modules/bibcirculation/lib/bibcirculation_templates.py:16091 #: modules/bibcirculation/lib/bibcirculation_templates.py:16224 #: modules/bibcirculation/lib/bibcirculation_templates.py:16411 +#: modules/websearch/lib/websearch_templates_epfl.py:984 msgid "Year" msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:64 #: modules/miscutil/lib/errorlib_webinterface.py:69 #: modules/miscutil/lib/errorlib_webinterface.py:74 #: modules/miscutil/lib/errorlib_webinterface.py:79 msgid "Sorry" msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:65 #: modules/miscutil/lib/errorlib_webinterface.py:70 #: modules/miscutil/lib/errorlib_webinterface.py:75 #: modules/miscutil/lib/errorlib_webinterface.py:80 #, python-format msgid "Cannot send error request, %s parameter missing." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:98 msgid "The error report has been sent." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:99 msgid "Many thanks for helping us to improve the service." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:101 msgid "Use the back button of your browser to return to the previous page." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:103 msgid "Thank you!" msgstr "" -#: modules/miscutil/lib/inveniocfg.py:465 -msgid "journal" +#: modules/miscutil/lib/inveniocfg.py:453 +msgid "any field" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:454 +msgid "title" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:455 +msgid "author" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:456 +msgid "abstract" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:457 +msgid "keyword" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:458 +msgid "report number" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:459 +msgid "subject" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:460 +msgid "reference" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:461 +msgid "fulltext" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:462 +msgid "collection" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:463 +msgid "division" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:464 +msgid "year" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:465 +msgid "journal" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:466 +msgid "experiment" msgstr "" #: modules/miscutil/lib/inveniocfg.py:467 msgid "record ID" msgstr "" #: modules/miscutil/lib/inveniocfg.py:480 msgid "word similarity" msgstr "" #: modules/miscutil/lib/inveniocfg.py:481 msgid "journal impact factor" msgstr "" #: modules/miscutil/lib/inveniocfg.py:482 msgid "times cited" msgstr "" #: modules/miscutil/lib/inveniocfg.py:483 msgid "time-decay cite count" msgstr "" #: modules/miscutil/lib/inveniocfg.py:484 msgid "all-time-best cite rank" msgstr "" #: modules/miscutil/lib/inveniocfg.py:485 msgid "time-decay cite rank" msgstr "" #: modules/miscutil/lib/mailutils.py:161 modules/miscutil/lib/mailutils.py:174 #: modules/webcomment/lib/webcomment_templates.py:2046 msgid "Hello:" msgstr "" #: modules/miscutil/lib/mailutils.py:192 modules/miscutil/lib/mailutils.py:212 msgid "Best regards" msgstr "" #: modules/miscutil/lib/mailutils.py:194 modules/miscutil/lib/mailutils.py:214 msgid "Need human intervention? Contact" msgstr "" -#: modules/webaccess/lib/access_control_config.py:262 +#: modules/webaccess/lib/access_control_config.py:270 #: modules/websession/lib/websession_templates.py:1102 -#: modules/websession/lib/webuser.py:891 modules/websession/lib/webuser.py:900 -#: modules/websession/lib/webuser.py:901 +#: modules/websession/lib/webuser.py:914 modules/websession/lib/webuser.py:923 +#: modules/websession/lib/webuser.py:924 +#: modules/websession/lib/websession_templates_epfl.py:49 msgid "Run Record Editor" msgstr "" -#: modules/webaccess/lib/access_control_config.py:263 +#: modules/webaccess/lib/access_control_config.py:271 #: modules/websession/lib/websession_templates.py:1104 +#: modules/websession/lib/websession_templates_epfl.py:51 msgid "Run Multi-Record Editor" msgstr "" -#: modules/webaccess/lib/access_control_config.py:264 -#: modules/websession/lib/webuser.py:892 +#: modules/webaccess/lib/access_control_config.py:272 +#: modules/websession/lib/webuser.py:915 msgid "Run Document File Manager" msgstr "" -#: modules/webaccess/lib/access_control_config.py:265 +#: modules/webaccess/lib/access_control_config.py:273 #: modules/websession/lib/websession_templates.py:1108 +#: modules/websession/lib/websession_templates_epfl.py:55 msgid "Run Record Merger" msgstr "" -#: modules/webaccess/lib/access_control_config.py:266 +#: modules/webaccess/lib/access_control_config.py:274 msgid "Run BibSword client" msgstr "" -#: modules/webaccess/lib/access_control_config.py:267 +#: modules/webaccess/lib/access_control_config.py:275 #: modules/websession/lib/websession_templates.py:1116 +#: modules/websession/lib/websession_templates_epfl.py:62 msgid "Configure BibKnowledge" msgstr "" -#: modules/webaccess/lib/access_control_config.py:268 +#: modules/webaccess/lib/access_control_config.py:276 #: modules/websession/lib/websession_templates.py:1114 +#: modules/websession/lib/websession_templates_epfl.py:61 msgid "Configure BibFormat" msgstr "" -#: modules/webaccess/lib/access_control_config.py:269 +#: modules/webaccess/lib/access_control_config.py:277 #: modules/websession/lib/websession_templates.py:1118 +#: modules/websession/lib/websession_templates_epfl.py:64 msgid "Configure OAI Harvest" msgstr "" -#: modules/webaccess/lib/access_control_config.py:270 +#: modules/webaccess/lib/access_control_config.py:278 #: modules/websession/lib/websession_templates.py:1120 +#: modules/websession/lib/websession_templates_epfl.py:66 msgid "Configure OAI Repository" msgstr "" -#: modules/webaccess/lib/access_control_config.py:271 +#: modules/webaccess/lib/access_control_config.py:279 #: modules/websession/lib/websession_templates.py:1122 +#: modules/websession/lib/websession_templates_epfl.py:68 msgid "Configure BibIndex" msgstr "" -#: modules/webaccess/lib/access_control_config.py:272 +#: modules/webaccess/lib/access_control_config.py:280 #: modules/websession/lib/websession_templates.py:1124 +#: modules/websession/lib/websession_templates_epfl.py:70 msgid "Configure BibRank" msgstr "" -#: modules/webaccess/lib/access_control_config.py:273 +#: modules/webaccess/lib/access_control_config.py:281 #: modules/websession/lib/websession_templates.py:1126 +#: modules/websession/lib/websession_templates_epfl.py:72 msgid "Configure WebAccess" msgstr "" -#: modules/webaccess/lib/access_control_config.py:274 +#: modules/webaccess/lib/access_control_config.py:282 #: modules/websession/lib/websession_templates.py:1128 +#: modules/websession/lib/websession_templates_epfl.py:74 msgid "Configure WebComment" msgstr "" -#: modules/webaccess/lib/access_control_config.py:275 +#: modules/webaccess/lib/access_control_config.py:283 #: modules/websession/lib/websession_templates.py:1132 +#: modules/websession/lib/websession_templates_epfl.py:78 msgid "Configure WebSearch" msgstr "" -#: modules/webaccess/lib/access_control_config.py:276 +#: modules/webaccess/lib/access_control_config.py:284 #: modules/websession/lib/websession_templates.py:1134 +#: modules/websession/lib/websession_templates_epfl.py:80 msgid "Configure WebSubmit" msgstr "" -#: modules/webaccess/lib/access_control_config.py:277 +#: modules/webaccess/lib/access_control_config.py:285 #: modules/websession/lib/websession_templates.py:1130 +#: modules/websession/lib/websession_templates_epfl.py:76 msgid "Configure WebJournal" msgstr "" -#: modules/webaccess/lib/access_control_config.py:278 +#: modules/webaccess/lib/access_control_config.py:286 #: modules/websession/lib/websession_templates.py:1106 +#: modules/websession/lib/websession_templates_epfl.py:53 msgid "Run BibCirculation" msgstr "" -#: modules/webaccess/lib/access_control_config.py:279 +#: modules/webaccess/lib/access_control_config.py:287 #: modules/websession/lib/websession_templates.py:1112 +#: modules/websession/lib/websession_templates_epfl.py:59 msgid "Run Batch Uploader" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3704 #, python-format msgid "Your account on '%s' has been activated" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3705 #, python-format msgid "Your account earlier created on '%s' has been activated:" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3707 #: modules/webaccess/lib/webaccessadmin_lib.py:3720 #: modules/webaccess/lib/webaccessadmin_lib.py:3746 msgid "Username/Email:" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3708 #: modules/webaccess/lib/webaccessadmin_lib.py:3721 msgid "Password:" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3718 #, python-format msgid "Account created on '%s'" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3719 #, python-format msgid "An account has been created for you on '%s':" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3731 #, python-format msgid "Account rejected on '%s'" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3732 #, python-format msgid "Your request for an account has been rejected on '%s':" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3734 #, python-format msgid "Username/Email: %s" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3744 #, python-format msgid "Account deleted on '%s'" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3745 #, python-format msgid "Your account on '%s' has been deleted:" msgstr "" #: modules/webalert/lib/htmlparser.py:186 #: modules/webbasket/lib/webbasket_templates.py:2337 #: modules/webbasket/lib/webbasket_templates.py:3214 #: modules/websearch/lib/websearch_templates.py:1608 #: modules/websearch/lib/websearch_templates.py:3328 #: modules/websearch/lib/websearch_templates.py:3334 #: modules/websearch/lib/websearch_templates.py:3339 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1069 +#: modules/bibformat/lib/elements/bfe_brief_links.py:55 msgid "Detailed record" msgstr "" #: modules/webalert/lib/htmlparser.py:187 #: modules/websearch/lib/websearch_templates.py:1611 #: modules/websearch/lib/websearch_templates.py:3346 #: modules/webstyle/lib/webstyle_templates.py:829 msgid "Similar records" msgstr "" #: modules/webalert/lib/htmlparser.py:188 msgid "Cited by" msgstr "" #: modules/webalert/lib/webalert.py:54 #, python-format msgid "You already have an alert named %s." msgstr "" #: modules/webalert/lib/webalert.py:111 #: modules/websearch/lib/websearch_templates.py:3913 +#: modules/websearch/lib/websearch_templates_epfl.py:2303 msgid "unknown" msgstr "" #: modules/webalert/lib/webalert.py:163 modules/webalert/lib/webalert.py:217 #: modules/webalert/lib/webalert.py:303 modules/webalert/lib/webalert.py:341 msgid "You do not have rights for this operation." msgstr "" #: modules/webalert/lib/webalert.py:198 msgid "You already have an alert defined for the specified query and basket." msgstr "" #: modules/webalert/lib/webalert.py:221 modules/webalert/lib/webalert.py:345 msgid "The alert name cannot be empty." msgstr "" #: modules/webalert/lib/webalert.py:226 msgid "You are not the owner of this basket." msgstr "" #: modules/webalert/lib/webalert.py:237 #, python-format msgid "The alert %s has been added to your profile." msgstr "" #: modules/webalert/lib/webalert.py:376 #, python-format msgid "The alert %s has been successfully updated." msgstr "" #: modules/webalert/lib/webalert.py:428 #, python-format msgid "" "You have made %(x_nb)s queries. A %(x_url_open)sdetailed list%(x_url_close)s " "is available with a possibility to (a) view search results and (b) subscribe " "to an automatic email alerting service for these queries." msgstr "" #: modules/webalert/lib/webalert_templates.py:74 +#: modules/webalert/lib/webalert_templates_epfl.py:58 msgid "Pattern" msgstr "" #: modules/webalert/lib/webalert_templates.py:76 #: modules/bibedit/lib/bibeditmulti_templates.py:509 +#: modules/webalert/lib/webalert_templates_epfl.py:60 msgid "Field" msgstr "" #: modules/webalert/lib/webalert_templates.py:78 +#: modules/webalert/lib/webalert_templates_epfl.py:62 msgid "Pattern 1" msgstr "" #: modules/webalert/lib/webalert_templates.py:80 +#: modules/webalert/lib/webalert_templates_epfl.py:64 msgid "Field 1" msgstr "" #: modules/webalert/lib/webalert_templates.py:82 +#: modules/webalert/lib/webalert_templates_epfl.py:66 msgid "Pattern 2" msgstr "" #: modules/webalert/lib/webalert_templates.py:84 +#: modules/webalert/lib/webalert_templates_epfl.py:68 msgid "Field 2" msgstr "" #: modules/webalert/lib/webalert_templates.py:86 +#: modules/webalert/lib/webalert_templates_epfl.py:70 msgid "Pattern 3" msgstr "" #: modules/webalert/lib/webalert_templates.py:88 +#: modules/webalert/lib/webalert_templates_epfl.py:72 msgid "Field 3" msgstr "" #: modules/webalert/lib/webalert_templates.py:90 +#: modules/webalert/lib/webalert_templates_epfl.py:74 msgid "Collections" msgstr "" #: modules/webalert/lib/webalert_templates.py:92 #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:2867 #: modules/bibcirculation/lib/bibcirculation_templates.py:5241 #: modules/bibcirculation/lib/bibcirculation_templates.py:6579 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6773 #: modules/bibcirculation/lib/bibcirculation_templates.py:7033 #: modules/bibcirculation/lib/bibcirculation_templates.py:7206 #: modules/bibcirculation/lib/bibcirculation_templates.py:7575 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 +#: modules/webalert/lib/webalert_templates_epfl.py:76 msgid "Collection" msgstr "" #: modules/webalert/lib/webalert_templates.py:113 +#: modules/webalert/lib/webalert_templates_epfl.py:97 msgid "You own the following alerts:" msgstr "" #: modules/webalert/lib/webalert_templates.py:114 +#: modules/webalert/lib/webalert_templates_epfl.py:98 msgid "alert name" msgstr "" #: modules/webalert/lib/webalert_templates.py:122 +#: modules/webalert/lib/webalert_templates_epfl.py:107 msgid "SHOW" msgstr "" #: modules/webalert/lib/webalert_templates.py:171 +#: modules/webalert/lib/webalert_templates_epfl.py:156 msgid "" "This alert will notify you each time/only if a new item satisfies the " "following query:" msgstr "" #: modules/webalert/lib/webalert_templates.py:172 +#: modules/webalert/lib/webalert_templates_epfl.py:157 msgid "QUERY" msgstr "" #: modules/webalert/lib/webalert_templates.py:210 +#: modules/webalert/lib/webalert_templates_epfl.py:195 msgid "Alert identification name:" msgstr "" #: modules/webalert/lib/webalert_templates.py:212 +#: modules/webalert/lib/webalert_templates_epfl.py:197 msgid "Search-checking frequency:" msgstr "" #: modules/webalert/lib/webalert_templates.py:216 #: modules/webalert/lib/webalert_templates.py:336 #: modules/bibharvest/lib/oai_harvest_admin.py:141 +#: modules/webalert/lib/webalert_templates_epfl.py:201 +#: modules/webalert/lib/webalert_templates_epfl.py:320 msgid "monthly" msgstr "" #: modules/webalert/lib/webalert_templates.py:217 #: modules/webalert/lib/webalert_templates.py:334 #: modules/bibharvest/lib/oai_harvest_admin.py:140 +#: modules/webalert/lib/webalert_templates_epfl.py:202 +#: modules/webalert/lib/webalert_templates_epfl.py:318 msgid "weekly" msgstr "" #: modules/webalert/lib/webalert_templates.py:218 #: modules/webalert/lib/webalert_templates.py:331 #: modules/bibharvest/lib/oai_harvest_admin.py:139 +#: modules/webalert/lib/webalert_templates_epfl.py:203 +#: modules/webalert/lib/webalert_templates_epfl.py:315 msgid "daily" msgstr "" #: modules/webalert/lib/webalert_templates.py:219 +#: modules/webalert/lib/webalert_templates_epfl.py:204 msgid "Send notification email?" msgstr "" #: modules/webalert/lib/webalert_templates.py:222 #: modules/webalert/lib/webalert_templates.py:339 +#: modules/webalert/lib/webalert_templates_epfl.py:207 +#: modules/webalert/lib/webalert_templates_epfl.py:323 msgid "yes" msgstr "" #: modules/webalert/lib/webalert_templates.py:223 #: modules/webalert/lib/webalert_templates.py:341 +#: modules/webalert/lib/webalert_templates_epfl.py:208 +#: modules/webalert/lib/webalert_templates_epfl.py:325 msgid "no" msgstr "" #: modules/webalert/lib/webalert_templates.py:224 +#: modules/webalert/lib/webalert_templates_epfl.py:209 #, python-format msgid "if %(x_fmt_open)sno%(x_fmt_close)s you must specify a basket" msgstr "" #: modules/webalert/lib/webalert_templates.py:226 +#: modules/webalert/lib/webalert_templates_epfl.py:211 msgid "Store results in basket?" msgstr "" #: modules/webalert/lib/webalert_templates.py:247 +#: modules/webalert/lib/webalert_templates_epfl.py:232 msgid "SET ALERT" msgstr "" #: modules/webalert/lib/webalert_templates.py:248 +#: modules/webalert/lib/webalert_templates_epfl.py:233 msgid "CLEAR DATA" msgstr "" #: modules/webalert/lib/webalert_templates.py:299 #, python-format msgid "" "Set a new alert from %(x_url1_open)syour searches%(x_url1_close)s, the " "%(x_url2_open)spopular searches%(x_url2_close)s, or the input form." msgstr "" #: modules/webalert/lib/webalert_templates.py:317 #: modules/webcomment/lib/webcomment_templates.py:230 #: modules/webcomment/lib/webcomment_templates.py:632 #: modules/webcomment/lib/webcomment_templates.py:1904 #: modules/webcomment/lib/webcomment_templates.py:1928 #: modules/webcomment/lib/webcomment_templates.py:1954 #: modules/webmessage/lib/webmessage_templates.py:509 #: modules/websession/lib/websession_templates.py:2236 #: modules/websession/lib/websession_templates.py:2276 msgid "No" msgstr "" #: modules/webalert/lib/webalert_templates.py:319 +#: modules/webalert/lib/webalert_templates_epfl.py:303 msgid "Search checking frequency" msgstr "" #: modules/webalert/lib/webalert_templates.py:320 +#: modules/webalert/lib/webalert_templates_epfl.py:304 msgid "Notification by email" msgstr "" #: modules/webalert/lib/webalert_templates.py:321 +#: modules/webalert/lib/webalert_templates_epfl.py:305 msgid "Result in basket" msgstr "" #: modules/webalert/lib/webalert_templates.py:322 +#: modules/webalert/lib/webalert_templates_epfl.py:306 msgid "Date last run" msgstr "" #: modules/webalert/lib/webalert_templates.py:323 +#: modules/webalert/lib/webalert_templates_epfl.py:307 +#: modules/websearch/lib/websearch_templates_epfl.py:1705 msgid "Creation date" msgstr "" #: modules/webalert/lib/webalert_templates.py:324 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:346 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:399 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:459 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:632 +#: modules/webalert/lib/webalert_templates_epfl.py:308 msgid "Query" msgstr "" #: modules/webalert/lib/webalert_templates.py:367 #: modules/webbasket/lib/webbasket_templates.py:1748 +#: modules/webalert/lib/webalert_templates_epfl.py:350 msgid "no basket" msgstr "" #: modules/webalert/lib/webalert_templates.py:384 +#: modules/webalert/lib/webalert_templates_epfl.py:367 msgid "Modify" msgstr "" #: modules/webalert/lib/webalert_templates.py:390 #: modules/webjournal/lib/webjournaladminlib.py:225 #: modules/webjournal/lib/webjournaladminlib.py:231 +#: modules/webalert/lib/webalert_templates_epfl.py:373 msgid "Remove" msgstr "" #: modules/webalert/lib/webalert_templates.py:392 #: modules/webalert/lib/webalert_templates.py:482 +#: modules/webalert/lib/webalert_templates_epfl.py:375 +#: modules/webalert/lib/webalert_templates_epfl.py:477 msgid "Execute search" msgstr "" #: modules/webalert/lib/webalert_templates.py:398 #, python-format msgid "You have defined %s alerts." msgstr "" #: modules/webalert/lib/webalert_templates.py:436 +#: modules/webalert/lib/webalert_templates_epfl.py:426 #, python-format msgid "" "You have not executed any search yet. Please go to the %(x_url_open)ssearch " "interface%(x_url_close)s first." msgstr "" #: modules/webalert/lib/webalert_templates.py:445 +#: modules/webalert/lib/webalert_templates_epfl.py:438 #, python-format msgid "" "You have performed %(x_nb1)s searches (%(x_nb2)s different questions) during " "the last 30 days or so." msgstr "" #: modules/webalert/lib/webalert_templates.py:450 +#: modules/webalert/lib/webalert_templates_epfl.py:442 #, python-format msgid "Here are the %s most popular searches." msgstr "" #: modules/webalert/lib/webalert_templates.py:461 +#: modules/webalert/lib/webalert_templates_epfl.py:452 msgid "Question" msgstr "" #: modules/webalert/lib/webalert_templates.py:465 +#: modules/webalert/lib/webalert_templates_epfl.py:457 msgid "Last Run" msgstr "" #: modules/webalert/lib/webalert_templates.py:483 +#: modules/webalert/lib/webalert_templates_epfl.py:478 msgid "Set new alert" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:76 #: modules/webalert/lib/webalert_webinterface.py:139 #: modules/webalert/lib/webalert_webinterface.py:224 #: modules/webalert/lib/webalert_webinterface.py:302 #: modules/webalert/lib/webalert_webinterface.py:358 #: modules/webalert/lib/webalert_webinterface.py:435 #: modules/webalert/lib/webalert_webinterface.py:509 msgid "You are not authorized to use alerts." msgstr "" #: modules/webalert/lib/webalert_webinterface.py:79 msgid "Popular Searches" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:81 #: modules/websession/lib/websession_templates.py:471 #: modules/websession/lib/websession_templates.py:631 msgid "Your Searches" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:98 #: modules/webalert/lib/webalert_webinterface.py:150 #: modules/webalert/lib/webalert_webinterface.py:183 #: modules/webalert/lib/webalert_webinterface.py:235 #: modules/webalert/lib/webalert_webinterface.py:268 #: modules/webalert/lib/webalert_webinterface.py:319 #: modules/webalert/lib/webalert_webinterface.py:369 #: modules/webalert/lib/webalert_webinterface.py:395 #: modules/webalert/lib/webalert_webinterface.py:446 #: modules/webalert/lib/webalert_webinterface.py:472 #: modules/webalert/lib/webalert_webinterface.py:520 #: modules/webalert/lib/webalert_webinterface.py:548 -#: modules/webbasket/lib/webbasket.py:2097 #: modules/webbasket/lib/webbasket_webinterface.py:804 #: modules/webbasket/lib/webbasket_webinterface.py:899 #: modules/webbasket/lib/webbasket_webinterface.py:1021 #: modules/webbasket/lib/webbasket_webinterface.py:1123 #: modules/webbasket/lib/webbasket_webinterface.py:1220 #: modules/webmessage/lib/webmessage_templates.py:466 #: modules/websession/lib/websession_templates.py:617 #: modules/websession/lib/websession_templates.py:2349 -#: modules/websession/lib/websession_webinterface.py:214 -#: modules/websession/lib/websession_webinterface.py:236 -#: modules/websession/lib/websession_webinterface.py:282 -#: modules/websession/lib/websession_webinterface.py:533 -#: modules/websession/lib/websession_webinterface.py:556 -#: modules/websession/lib/websession_webinterface.py:584 -#: modules/websession/lib/websession_webinterface.py:600 -#: modules/websession/lib/websession_webinterface.py:652 -#: modules/websession/lib/websession_webinterface.py:675 -#: modules/websession/lib/websession_webinterface.py:701 -#: modules/websession/lib/websession_webinterface.py:767 -#: modules/websession/lib/websession_webinterface.py:816 -#: modules/websession/lib/websession_webinterface.py:851 -#: modules/websession/lib/websession_webinterface.py:882 -#: modules/websession/lib/websession_webinterface.py:954 -#: modules/websession/lib/websession_webinterface.py:992 +#: modules/websession/lib/websession_webinterface.py:218 +#: modules/websession/lib/websession_webinterface.py:240 +#: modules/websession/lib/websession_webinterface.py:287 +#: modules/websession/lib/websession_webinterface.py:538 +#: modules/websession/lib/websession_webinterface.py:561 +#: modules/websession/lib/websession_webinterface.py:589 +#: modules/websession/lib/websession_webinterface.py:605 +#: modules/websession/lib/websession_webinterface.py:657 +#: modules/websession/lib/websession_webinterface.py:680 +#: modules/websession/lib/websession_webinterface.py:706 +#: modules/websession/lib/websession_webinterface.py:772 +#: modules/websession/lib/websession_webinterface.py:834 +#: modules/websession/lib/websession_webinterface.py:869 +#: modules/websession/lib/websession_webinterface.py:900 +#: modules/websession/lib/websession_webinterface.py:972 +#: modules/websession/lib/websession_webinterface.py:1010 #: modules/websubmit/web/publiline.py:133 #: modules/websubmit/web/publiline.py:154 #: modules/websubmit/web/yourapprovals.py:91 #: modules/websubmit/web/yoursubmissions.py:163 +#: modules/websession/lib/websession_templates_epfl.py:264 msgid "Your Account" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:100 #, python-format msgid "%s Personalize, Display searches" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:101 #: modules/webalert/lib/webalert_webinterface.py:153 #: modules/webalert/lib/webalert_webinterface.py:186 #: modules/webalert/lib/webalert_webinterface.py:238 #: modules/webalert/lib/webalert_webinterface.py:271 #: modules/webalert/lib/webalert_webinterface.py:322 #: modules/webalert/lib/webalert_webinterface.py:372 #: modules/webalert/lib/webalert_webinterface.py:398 #: modules/webalert/lib/webalert_webinterface.py:449 #: modules/webalert/lib/webalert_webinterface.py:475 #: modules/webalert/lib/webalert_webinterface.py:523 #: modules/webalert/lib/webalert_webinterface.py:551 -#: modules/websession/lib/websession_webinterface.py:217 -#: modules/websession/lib/websession_webinterface.py:239 -#: modules/websession/lib/websession_webinterface.py:284 -#: modules/websession/lib/websession_webinterface.py:535 -#: modules/websession/lib/websession_webinterface.py:558 -#: modules/websession/lib/websession_webinterface.py:587 -#: modules/websession/lib/websession_webinterface.py:603 -#: modules/websession/lib/websession_webinterface.py:621 -#: modules/websession/lib/websession_webinterface.py:631 -#: modules/websession/lib/websession_webinterface.py:654 -#: modules/websession/lib/websession_webinterface.py:677 -#: modules/websession/lib/websession_webinterface.py:703 +#: modules/websession/lib/websession_webinterface.py:221 +#: modules/websession/lib/websession_webinterface.py:243 +#: modules/websession/lib/websession_webinterface.py:289 +#: modules/websession/lib/websession_webinterface.py:540 +#: modules/websession/lib/websession_webinterface.py:563 +#: modules/websession/lib/websession_webinterface.py:592 +#: modules/websession/lib/websession_webinterface.py:608 +#: modules/websession/lib/websession_webinterface.py:626 +#: modules/websession/lib/websession_webinterface.py:636 +#: modules/websession/lib/websession_webinterface.py:659 +#: modules/websession/lib/websession_webinterface.py:682 +#: modules/websession/lib/websession_webinterface.py:708 #, python-format msgid "%s, personalize" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:145 #: modules/webalert/lib/webalert_webinterface.py:230 #: modules/webalert/lib/webalert_webinterface.py:364 #: modules/webalert/lib/webalert_webinterface.py:441 #: modules/webalert/lib/webalert_webinterface.py:515 #: modules/webstyle/lib/webstyle_templates.py:581 #: modules/webstyle/lib/webstyle_templates.py:618 #: modules/webstyle/lib/webstyle_templates.py:620 #: modules/websubmit/lib/websubmit_engine.py:1736 #: modules/websubmit/lib/websubmit_webinterface.py:1112 #: modules/bibcatalog/lib/bibcatalog_templates.py:37 #: modules/bibedit/lib/bibedit_webinterface.py:208 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:496 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:559 #: modules/bibknowledge/lib/bibknowledgeadmin.py:280 msgid "Error" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:152 #: modules/webalert/lib/webalert_webinterface.py:185 #: modules/webalert/lib/webalert_webinterface.py:237 #: modules/webalert/lib/webalert_webinterface.py:371 #: modules/webalert/lib/webalert_webinterface.py:448 #: modules/webalert/lib/webalert_webinterface.py:522 #, python-format msgid "%s Personalize, Set a new alert" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:178 msgid "Set a new alert" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:263 msgid "Modify alert settings" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:270 #, python-format msgid "%s Personalize, Modify alert settings" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:314 #: modules/websession/lib/websession_templates.py:488 msgid "Your Alerts" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:321 #: modules/webalert/lib/webalert_webinterface.py:397 #: modules/webalert/lib/webalert_webinterface.py:474 #: modules/webalert/lib/webalert_webinterface.py:550 #, python-format msgid "%s Personalize, Display alerts" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:390 #: modules/webalert/lib/webalert_webinterface.py:467 #: modules/webalert/lib/webalert_webinterface.py:543 msgid "Display alerts" msgstr "" -#: modules/webbasket/lib/webbasket.py:2014 -#: modules/webbasket/lib/webbasket.py:2127 -#: modules/webbasket/lib/webbasket_templates.py:100 -#: modules/webbasket/lib/webbasket_templates.py:150 -#: modules/webbasket/lib/webbasket_templates.py:156 -#: modules/webbasket/lib/webbasket_templates.py:604 -#: modules/webbasket/lib/webbasket_templates.py:656 -msgid "Personal baskets" -msgstr "" - -#: modules/webbasket/lib/webbasket.py:2038 -#: modules/webbasket/lib/webbasket.py:2144 -#: modules/webbasket/lib/webbasket_templates.py:166 -#: modules/webbasket/lib/webbasket_templates.py:198 -#: modules/webbasket/lib/webbasket_templates.py:204 -#: modules/webbasket/lib/webbasket_templates.py:613 -#: modules/webbasket/lib/webbasket_templates.py:690 -msgid "Group baskets" +#: modules/webbasket/lib/webbasket.py:2030 +#: modules/webbasket/lib/webbasket.py:2098 +#: modules/webbasket/lib/webbasket_templates_epfl.py:73 +#: modules/webbasket/lib/webbasket_templates_epfl.py:259 +msgid "Personal collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2064 -msgid "Others' baskets" +#: modules/webbasket/lib/webbasket.py:2044 +#: modules/webbasket/lib/webbasket_templates_epfl.py:290 +msgid "Group collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2100 -#: modules/websession/lib/websession_templates.py:479 -#: modules/websession/lib/websession_templates.py:625 -msgid "Your Baskets" +#: modules/webbasket/lib/webbasket.py:2084 +#: modules/webstyle/lib/webstyle_templates_epfl.py:371 +msgid "My account" msgstr "" -#: modules/webbasket/lib/webbasket.py:2105 -#: modules/webbasket/lib/webbasket_webinterface.py:1254 -#: modules/webbasket/lib/webbasket_webinterface.py:1329 -#: modules/webbasket/lib/webbasket_webinterface.py:1373 -#: modules/webbasket/lib/webbasket_webinterface.py:1434 -msgid "List of public baskets" +#: modules/webbasket/lib/webbasket.py:2085 +#: modules/websession/lib/websession_templates_epfl.py:147 +msgid "My collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2116 -#: modules/webbasket/lib/webbasket_webinterface.py:429 -msgid "Search baskets" +#: modules/webbasket/lib/webbasket.py:2088 +msgid "Search collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2121 -#: modules/webbasket/lib/webbasket_webinterface.py:741 -#: modules/websearch/lib/websearch_templates.py:2850 -#: modules/websearch/lib/websearch_templates.py:3036 -msgid "Add to basket" +#: modules/webbasket/lib/webbasket.py:2090 +msgid "Add to collection" msgstr "" -#: modules/webbasket/lib/webbasket.py:2161 -#: modules/webbasket/lib/webbasket_templates.py:217 -#: modules/webbasket/lib/webbasket_templates.py:223 -#: modules/webbasket/lib/webbasket_templates.py:622 -#: modules/webbasket/lib/webbasket_templates.py:724 -msgid "Public baskets" +#: modules/webbasket/lib/webbasket.py:2111 +#: modules/webbasket/lib/webbasket_templates_epfl.py:119 +msgid "Groups' collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2191 +#: modules/webbasket/lib/webbasket.py:2143 #, python-format msgid "" -"You have %(x_nb_perso)s personal baskets and are subscribed to " -"%(x_nb_group)s group baskets and %(x_nb_public)s other users public baskets." +"You have %(x_nb_perso)s personal collections and are subscribed to " +"%(x_nb_group)s group collections." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:86 msgid "" "You have no personal or group baskets or are subscribed to any public " "baskets." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:87 #, python-format msgid "" "You may want to start by %(x_url_open)screating a new basket%(x_url_close)s." msgstr "" +#: modules/webbasket/lib/webbasket_templates.py:100 +#: modules/webbasket/lib/webbasket_templates.py:150 +#: modules/webbasket/lib/webbasket_templates.py:156 +#: modules/webbasket/lib/webbasket_templates.py:604 +#: modules/webbasket/lib/webbasket_templates.py:656 +msgid "Personal baskets" +msgstr "" + #: modules/webbasket/lib/webbasket_templates.py:111 #: modules/webbasket/lib/webbasket_templates.py:177 msgid "Back to Your Baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:117 #: modules/webbasket/lib/webbasket_webinterface.py:1223 msgid "Create basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:123 #: modules/webbasket/lib/webbasket_webinterface.py:1145 msgid "Edit topic" msgstr "" +#: modules/webbasket/lib/webbasket_templates.py:166 +#: modules/webbasket/lib/webbasket_templates.py:198 +#: modules/webbasket/lib/webbasket_templates.py:204 +#: modules/webbasket/lib/webbasket_templates.py:613 +#: modules/webbasket/lib/webbasket_templates.py:690 +msgid "Group baskets" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates.py:217 +#: modules/webbasket/lib/webbasket_templates.py:223 +#: modules/webbasket/lib/webbasket_templates.py:622 +#: modules/webbasket/lib/webbasket_templates.py:724 +msgid "Public baskets" +msgstr "" + #: modules/webbasket/lib/webbasket_templates.py:558 msgid "Search baskets for" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:559 msgid "Search also in notes (where allowed)" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:596 msgid "Results overview" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:597 #: modules/webbasket/lib/webbasket_templates.py:606 #: modules/webbasket/lib/webbasket_templates.py:615 #: modules/webbasket/lib/webbasket_templates.py:624 #: modules/webbasket/lib/webbasket_templates.py:633 #: modules/webbasket/lib/webbasket_templates.py:658 #: modules/webbasket/lib/webbasket_templates.py:676 #: modules/webbasket/lib/webbasket_templates.py:692 #: modules/webbasket/lib/webbasket_templates.py:710 #: modules/webbasket/lib/webbasket_templates.py:726 #: modules/webbasket/lib/webbasket_templates.py:743 #: modules/webbasket/lib/webbasket_templates.py:759 #: modules/webbasket/lib/webbasket_templates.py:775 +#: modules/webbasket/lib/webbasket_templates_epfl.py:261 +#: modules/webbasket/lib/webbasket_templates_epfl.py:278 +#: modules/webbasket/lib/webbasket_templates_epfl.py:292 +#: modules/webbasket/lib/webbasket_templates_epfl.py:309 #, python-format msgid "%i items found" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:631 #: modules/webbasket/lib/webbasket_templates.py:757 msgid "All public baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:647 +#: modules/webbasket/lib/webbasket_templates_epfl.py:249 msgid "No items found." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:674 #: modules/webbasket/lib/webbasket_templates.py:708 #: modules/webbasket/lib/webbasket_templates.py:741 #: modules/webbasket/lib/webbasket_templates.py:773 +#: modules/webbasket/lib/webbasket_templates_epfl.py:276 +#: modules/webbasket/lib/webbasket_templates_epfl.py:307 #, python-format msgid "In %(x_linked_basket_name)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:868 #: modules/webbasket/lib/webbasket_webinterface.py:1272 #: modules/webbasket/lib/webbasket_webinterface.py:1388 #: modules/webbasket/lib/webbasket_webinterface.py:1449 msgid "Public basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:869 msgid "Owner" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:870 msgid "Last update" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:871 msgid "Items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:872 msgid "Views" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:954 msgid "There is currently no publicly accessible basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:976 #, python-format msgid "" "Displaying public baskets %(x_from)i - %(x_to)i out of " "%(x_total_public_basket)i public baskets in total." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1043 #: modules/webbasket/lib/webbasket_templates.py:1067 #, python-format msgid "%(x_title)s, by %(x_name)s on %(x_date)s:" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1046 #: modules/webbasket/lib/webbasket_templates.py:1070 #: modules/webcomment/lib/webcomment.py:1477 #: modules/webcomment/lib/webcomment_templates.py:365 #, python-format msgid "%(x_name)s wrote on %(x_date)s:" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1126 msgid "Select topic" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1142 #: modules/webbasket/lib/webbasket_templates.py:1503 #: modules/webbasket/lib/webbasket_templates.py:1512 msgid "Choose topic" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1143 #: modules/webbasket/lib/webbasket_templates.py:1514 msgid "or create a new one" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1143 msgid "Create new topic" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1144 #: modules/webbasket/lib/webbasket_templates.py:1500 msgid "Basket name" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1146 msgid "Create a new basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1173 msgid "Create new basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1243 #: modules/webbasket/lib/webbasket_templates.py:2260 #: modules/webbasket/lib/webbasket_templates.py:2637 #: modules/webbasket/lib/webbasket_templates.py:3146 #: modules/webbasket/lib/webbasket_templates.py:3463 msgid "External item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1244 msgid "" "Provide a url for the external item you wish to add and fill in a title and " "description" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1245 #: modules/websubmit/lib/websubmit_templates.py:2717 #: modules/bibcirculation/lib/bibcirculation_utils.py:319 #: modules/bibcirculation/lib/bibcirculation_templates.py:1924 #: modules/bibcirculation/lib/bibcirculation_templates.py:5226 #: modules/bibcirculation/lib/bibcirculation_templates.py:7923 #: modules/bibcirculation/lib/bibcirculation_templates.py:10932 #: modules/bibcirculation/lib/bibcirculation_templates.py:11345 #: modules/bibcirculation/lib/bibcirculation_templates.py:15576 #: modules/bibcirculation/lib/bibcirculation_templates.py:15738 +#: modules/websearch/lib/websearch_templates_epfl.py:981 +#: modules/websearch/lib/websearch_templates_epfl.py:1706 msgid "Title" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1249 msgid "URL" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1279 #, python-format msgid "%i items have been successfully added to your basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1280 #, python-format msgid "Proceed to the %(x_url_open)sbasket%(x_url_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1285 #, python-format msgid " or return to your %(x_url_open)sprevious basket%(x_url_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1289 +#: modules/webbasket/lib/webbasket_templates_epfl.py:484 #, python-format msgid " or return to your %(x_url_open)ssearch%(x_url_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1398 #, python-format msgid "Adding %i items to your baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1399 #, python-format msgid "" "Please choose a basket: %(x_basket_selection_box)s %(x_fmt_open)s(or " "%(x_url_open)screate a new one%(x_url_close)s first)%(x_fmt_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1405 msgid "Optionally, add a note to each one of these items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1406 msgid "Optionally, add a note to this item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1412 +#: modules/webbasket/lib/webbasket_templates_epfl.py:527 msgid "Add items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1436 msgid "Are you sure you want to delete this basket?" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1438 #, python-format msgid "%i users are subscribed to this basket." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1440 #, python-format msgid "%i user groups are subscribed to this basket." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1442 #, python-format msgid "You have set %i alerts on this basket." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1480 #: modules/webcomment/lib/webcomment_templates.py:229 #: modules/webcomment/lib/webcomment_templates.py:630 #: modules/webcomment/lib/webcomment_templates.py:1904 #: modules/webcomment/lib/webcomment_templates.py:1928 #: modules/webcomment/lib/webcomment_templates.py:1954 #: modules/webmessage/lib/webmessage_templates.py:508 #: modules/websession/lib/websession_templates.py:2235 #: modules/websession/lib/websession_templates.py:2275 +#: modules/webbasket/lib/webbasket_templates_epfl.py:599 msgid "Yes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1517 #: modules/webbasket/lib/webbasket_templates.py:1613 +#: modules/webbasket/lib/webbasket_templates_epfl.py:625 msgid "General settings" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1532 #: modules/webbasket/lib/webbasket_templates.py:1707 #: modules/webbasket/lib/webbasket_templates.py:1734 +#: modules/webbasket/lib/webbasket_templates_epfl.py:650 +#: modules/webbasket/lib/webbasket_templates_epfl.py:764 +#: modules/webbasket/lib/webbasket_templates_epfl.py:767 msgid "Add group" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1537 +#: modules/webbasket/lib/webbasket_templates_epfl.py:648 msgid "Manage group rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1549 msgid "Manage global sharing rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1554 #: modules/webbasket/lib/webbasket_templates.py:1620 #: modules/webbasket/lib/webbasket_templates.py:1969 #: modules/webbasket/lib/webbasket_templates.py:2048 msgid "Delete basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1578 #, python-format msgid "Editing basket %(x_basket_name)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1587 #: modules/webbasket/lib/webbasket_templates.py:1642 +#: modules/webbasket/lib/webbasket_templates_epfl.py:689 msgid "Save changes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1608 msgid "Topic name" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1637 #, python-format msgid "Editing topic: %(x_topic_name)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1654 #: modules/webbasket/lib/webbasket_templates.py:1669 +#: modules/webbasket/lib/webbasket_templates_epfl.py:701 msgid "No rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1656 #: modules/webbasket/lib/webbasket_templates.py:1671 +#: modules/webbasket/lib/webbasket_templates_epfl.py:703 msgid "View records" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1658 #: modules/webbasket/lib/webbasket_templates.py:1660 #: modules/webbasket/lib/webbasket_templates.py:1673 #: modules/webbasket/lib/webbasket_templates.py:1675 #: modules/webbasket/lib/webbasket_templates.py:1677 #: modules/webbasket/lib/webbasket_templates.py:1679 #: modules/webbasket/lib/webbasket_templates.py:1681 #: modules/webbasket/lib/webbasket_templates.py:1683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:705 +#: modules/webbasket/lib/webbasket_templates_epfl.py:707 +#: modules/webbasket/lib/webbasket_templates_epfl.py:709 msgid "and" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1658 msgid "view comments" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1660 msgid "add comments" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1673 msgid "view notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1675 msgid "add notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1677 +#: modules/webbasket/lib/webbasket_templates_epfl.py:705 msgid "add records" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1679 msgid "delete notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1681 +#: modules/webbasket/lib/webbasket_templates_epfl.py:707 msgid "remove records" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:709 msgid "manage sharing rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1705 +#: modules/webbasket/lib/webbasket_templates_epfl.py:734 msgid "You are not a member of a group." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1727 msgid "Sharing basket to a new group" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1756 #: modules/websession/lib/websession_templates.py:522 msgid "" "You are logged in as a guest user, so your baskets will disappear at the end " "of the current session." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1757 #: modules/webbasket/lib/webbasket_templates.py:1772 #: modules/websession/lib/websession_templates.py:525 #, python-format msgid "" "If you wish you can %(x_url_open)slogin or register here%(x_url_close)s." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1771 -#: modules/websession/lib/websession_webinterface.py:261 +#: modules/websession/lib/websession_webinterface.py:266 msgid "This functionality is forbidden to guest users." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1825 #: modules/webcomment/lib/webcomment_templates.py:823 msgid "Back to search results" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1953 #: modules/webbasket/lib/webbasket_templates.py:2986 #, python-format msgid "%i items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1954 #: modules/webbasket/lib/webbasket_templates.py:2988 #, python-format msgid "%i notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1954 msgid "no notes yet" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1957 #, python-format msgid "%i subscribers" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1959 #: modules/webbasket/lib/webbasket_templates.py:2990 msgid "last update" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1963 #: modules/webbasket/lib/webbasket_templates.py:2042 msgid "Add item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1966 #: modules/webbasket/lib/webbasket_templates.py:2045 #: modules/webbasket/lib/webbasket_webinterface.py:1043 msgid "Edit basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1979 #: modules/webbasket/lib/webbasket_templates.py:2056 #: modules/webbasket/lib/webbasket_templates.py:2998 #: modules/webbasket/lib/webbasket_templates.py:3051 msgid "Unsubscribe from basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2061 msgid "This basket is publicly accessible at the following address:" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2125 #: modules/webbasket/lib/webbasket_templates.py:3101 msgid "Basket is empty" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2159 +#: modules/webbasket/lib/webbasket_templates_epfl.py:961 msgid "You do not have sufficient rights to view this basket's content." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2202 msgid "Move item up" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2206 msgid "You cannot move this item up" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2220 msgid "Move item down" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2224 msgid "You cannot move this item down" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2238 #: modules/webbasket/lib/webbasket_templates.py:3142 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1035 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1036 msgid "Copy item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2254 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1049 msgid "Remove item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2329 #: modules/webbasket/lib/webbasket_templates.py:2832 #: modules/webbasket/lib/webbasket_templates.py:3206 #: modules/webbasket/lib/webbasket_templates.py:3636 #: modules/bibcirculation/lib/bibcirculation_templates.py:3520 #: modules/bibcirculation/lib/bibcirculation_templates.py:3650 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5407 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5909 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9813 #: modules/bibcirculation/lib/bibcirculation_templates.py:9906 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13464 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13646 #: modules/bibcirculation/lib/bibcirculation_templates.py:14198 msgid "Notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2329 #: modules/webbasket/lib/webbasket_templates.py:3206 msgid "Add a note..." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2335 #: modules/webbasket/lib/webbasket_templates.py:3212 msgid "notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2336 #: modules/webbasket/lib/webbasket_templates.py:3213 msgid "last note on" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2442 #: modules/webbasket/lib/webbasket_templates.py:3295 #, python-format msgid "Item %(x_item_index)i of %(x_item_total)i" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2455 #: modules/webbasket/lib/webbasket_templates.py:2458 #: modules/webbasket/lib/webbasket_templates.py:2542 #: modules/webbasket/lib/webbasket_templates.py:2545 #: modules/webbasket/lib/webbasket_templates.py:3305 #: modules/webbasket/lib/webbasket_templates.py:3308 #: modules/webbasket/lib/webbasket_templates.py:3380 #: modules/webbasket/lib/webbasket_templates.py:3383 msgid "Previous item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2470 #: modules/webbasket/lib/webbasket_templates.py:2473 #: modules/webbasket/lib/webbasket_templates.py:2557 #: modules/webbasket/lib/webbasket_templates.py:2560 #: modules/webbasket/lib/webbasket_templates.py:3317 #: modules/webbasket/lib/webbasket_templates.py:3320 #: modules/webbasket/lib/webbasket_templates.py:3392 #: modules/webbasket/lib/webbasket_templates.py:3395 msgid "Next item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2483 #: modules/webbasket/lib/webbasket_templates.py:2570 #: modules/webbasket/lib/webbasket_templates.py:3327 #: modules/webbasket/lib/webbasket_templates.py:3402 msgid "Return to basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2630 #: modules/webbasket/lib/webbasket_templates.py:3456 msgid "The item you have selected does not exist." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2658 #: modules/webbasket/lib/webbasket_templates.py:3480 msgid "You do not have sufficient rights to view this item's notes." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2699 msgid "You do not have sufficient rights to view this item." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2806 #: modules/webbasket/lib/webbasket_templates.py:2816 #: modules/webbasket/lib/webbasket_templates.py:3610 #: modules/webbasket/lib/webbasket_templates.py:3620 #: modules/webbasket/lib/webbasket_webinterface.py:495 #: modules/webbasket/lib/webbasket_webinterface.py:1512 msgid "Add a note" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2807 #: modules/webbasket/lib/webbasket_templates.py:3611 msgid "Add note" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2853 #: modules/webbasket/lib/webbasket_templates.py:3657 #: modules/webcomment/lib/webcomment_templates.py:371 #: modules/webmessage/lib/webmessage_templates.py:111 msgid "Reply" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2883 #: modules/webbasket/lib/webbasket_templates.py:3682 #, python-format msgid "%(x_title)s, by %(x_name)s on %(x_date)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2885 #: modules/webbasket/lib/webbasket_templates.py:3684 #: modules/websession/lib/websession_templates.py:167 #: modules/websession/lib/websession_templates.py:218 #: modules/websession/lib/websession_templates.py:927 #: modules/websession/lib/websession_templates.py:1051 msgid "Note" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2988 msgid ", no notes yet" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2995 #: modules/webbasket/lib/webbasket_templates.py:3048 msgid "Subscribe to basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3054 msgid "This public basket belongs to the user " msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3078 msgid "This public basket belongs to you." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3849 msgid "All your baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3851 #: modules/webbasket/lib/webbasket_templates.py:3926 msgid "Your personal baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3857 #: modules/webbasket/lib/webbasket_templates.py:3937 msgid "Your group baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3863 msgid "Your public baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3864 msgid "All the public baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3921 msgid "*** basket name ***" msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:159 #: modules/webbasket/lib/webbasket_webinterface.py:331 #: modules/webbasket/lib/webbasket_webinterface.py:407 #: modules/webbasket/lib/webbasket_webinterface.py:473 #: modules/webbasket/lib/webbasket_webinterface.py:541 #: modules/webbasket/lib/webbasket_webinterface.py:619 #: modules/webbasket/lib/webbasket_webinterface.py:706 #: modules/webbasket/lib/webbasket_webinterface.py:784 #: modules/webbasket/lib/webbasket_webinterface.py:869 #: modules/webbasket/lib/webbasket_webinterface.py:967 #: modules/webbasket/lib/webbasket_webinterface.py:1084 #: modules/webbasket/lib/webbasket_webinterface.py:1186 #: modules/webbasket/lib/webbasket_webinterface.py:1369 #: modules/webbasket/lib/webbasket_webinterface.py:1430 #: modules/webbasket/lib/webbasket_webinterface.py:1493 #: modules/webbasket/lib/webbasket_webinterface.py:1556 msgid "You are not authorized to use baskets." msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:170 msgid "You are not authorized to view this attachment" msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:362 msgid "Display baskets" msgstr "" +#: modules/webbasket/lib/webbasket_webinterface.py:429 +msgid "Search baskets" +msgstr "" + #: modules/webbasket/lib/webbasket_webinterface.py:567 #: modules/webbasket/lib/webbasket_webinterface.py:643 #: modules/webbasket/lib/webbasket_webinterface.py:1579 msgid "Display item and notes" msgstr "" +#: modules/webbasket/lib/webbasket_webinterface.py:741 +#: modules/websearch/lib/websearch_templates.py:2850 +#: modules/websearch/lib/websearch_templates.py:3036 +msgid "Add to basket" +msgstr "" + #: modules/webbasket/lib/webbasket_webinterface.py:825 msgid "Delete a basket" msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:884 msgid "Copy record to basket" msgstr "" +#: modules/webbasket/lib/webbasket_webinterface.py:1254 +#: modules/webbasket/lib/webbasket_webinterface.py:1329 +#: modules/webbasket/lib/webbasket_webinterface.py:1373 +#: modules/webbasket/lib/webbasket_webinterface.py:1434 +msgid "List of public baskets" +msgstr "" + #: modules/webcomment/lib/webcomment.py:1072 #, python-format msgid "Record %i" msgstr "" #: modules/webcomment/lib/webcomment.py:1083 #, python-format msgid "%(report_number)s\"%(title)s\" has been reviewed" msgstr "" #: modules/webcomment/lib/webcomment.py:1087 #, python-format msgid "%(report_number)s\"%(title)s\" has been commented" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:86 #: modules/webcomment/lib/webcomment_templates.py:241 #: modules/webcomment/lib/webcomment_templates.py:671 #: modules/webcomment/lib/webcomment_templates.py:681 #, python-format msgid "%(x_nb)i comments for round \"%(x_name)s\"" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:112 #: modules/webcomment/lib/webcomment_templates.py:798 #: modules/websubmit/lib/websubmit_templates.py:2665 msgid "Write a comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:120 #, python-format msgid "Showing the latest %i comments:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:136 #: modules/webcomment/lib/webcomment_templates.py:161 msgid "Discuss this document" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:162 #: modules/webcomment/lib/webcomment_templates.py:808 msgid "Start a discussion about any aspect of this document." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:178 #, python-format msgid "Sorry, the record %s does not seem to exist." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:180 #, python-format msgid "Sorry, %s is not a valid ID value." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:182 msgid "Sorry, no record ID was provided." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:186 #, python-format msgid "You may want to start browsing from %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:264 #: modules/webcomment/lib/webcomment_templates.py:722 msgid "Was this review helpful?" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:275 #: modules/webcomment/lib/webcomment_templates.py:312 #: modules/webcomment/lib/webcomment_templates.py:798 msgid "Write a review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:282 #: modules/webcomment/lib/webcomment_templates.py:786 #: modules/webcomment/lib/webcomment_templates.py:1975 #, python-format msgid "Average review score: %(x_nb_score)s based on %(x_nb_reviews)s reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:285 #, python-format msgid "Readers found the following %s reviews to be most helpful." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:288 #: modules/webcomment/lib/webcomment_templates.py:311 #, python-format msgid "View all %s reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:307 #: modules/webcomment/lib/webcomment_templates.py:329 #: modules/webcomment/lib/webcomment_templates.py:2016 msgid "Rate this document" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:330 #: modules/webcomment/lib/webcomment_templates.py:810 msgid "Be the first to review this document." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:375 #: modules/webcomment/lib/webcomment_templates.py:723 msgid "Report abuse" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:390 msgid "Undelete comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:399 #: modules/webcomment/lib/webcomment_templates.py:401 msgid "Delete comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:408 msgid "Unreport comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:419 msgid "Attached file" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:419 msgid "Attached files" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:473 #, python-format msgid "Reviewed by %(x_nickname)s on %(x_date)s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:474 #, python-format msgid "%(x_nb_people)i out of %(x_nb_total)i people found this review useful" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:496 msgid "Undelete review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:505 msgid "Delete review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:511 msgid "Unreport review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:600 #: modules/webcomment/lib/webcomment_templates.py:615 -#: modules/webcomment/lib/webcomment_webinterface.py:231 -#: modules/webcomment/lib/webcomment_webinterface.py:444 +#: modules/webcomment/lib/webcomment_webinterface.py:230 +#: modules/webcomment/lib/webcomment_webinterface.py:436 #: modules/websubmit/lib/websubmit_templates.py:2663 msgid "Comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:601 #: modules/webcomment/lib/webcomment_templates.py:616 -#: modules/webcomment/lib/webcomment_webinterface.py:231 -#: modules/webcomment/lib/webcomment_webinterface.py:444 +#: modules/webcomment/lib/webcomment_webinterface.py:230 +#: modules/webcomment/lib/webcomment_webinterface.py:436 +#: modules/websearch/lib/websearch_templates_epfl.py:512 msgid "Reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:761 #: modules/websearch/lib/websearch_templates.py:1862 #: modules/bibcatalog/lib/bibcatalog_templates.py:50 #: modules/bibknowledge/lib/bibknowledge_templates.py:159 +#: modules/websearch/lib/websearch_templates_epfl.py:1186 +#: modules/websearch/lib/websearch_templates_epfl.py:1603 +#: modules/websearch/lib/websearch_templates_epfl.py:1606 msgid "Previous" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:777 #: modules/bibcatalog/lib/bibcatalog_templates.py:72 #: modules/bibknowledge/lib/bibknowledge_templates.py:157 +#: modules/websearch/lib/websearch_templates_epfl.py:1623 +#: modules/websearch/lib/websearch_templates_epfl.py:1626 msgid "Next" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:801 #, python-format msgid "There is a total of %s reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:803 #, python-format msgid "There is a total of %s comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:822 #: modules/webcomment/lib/webcomment_templates.py:1583 #: modules/websearch/lib/websearch_templates.py:569 +#: modules/websearch/lib/websearch_templates_epfl.py:175 +#: modules/bibformat/lib/elements/bfe_doctype.py:49 msgid "Record" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:829 #: modules/webcomment/lib/webcomment_templates.py:888 msgid "review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:829 #: modules/webcomment/lib/webcomment_templates.py:888 msgid "comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:830 #: modules/webcomment/lib/webcomment_templates.py:1818 +#: modules/bibformat/lib/elements/bfe_doctype.py:27 msgid "Review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:830 #: modules/webcomment/lib/webcomment_templates.py:1147 #: modules/webcomment/lib/webcomment_templates.py:1586 #: modules/webcomment/lib/webcomment_templates.py:1818 #: modules/websubmit/lib/websubmit_managedocfiles.py:374 #: modules/websubmit/lib/websubmit_templates.py:2719 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:347 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:401 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:455 msgid "Comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:886 msgid "Viewing" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:887 msgid "Page:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:905 msgid "Subscribe" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:914 msgid "Unsubscribe" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:921 msgid "You are not authorized to comment or review." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1078 #, python-format msgid "Note: Your nickname, %s, will be displayed as author of this comment." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1082 #: modules/webcomment/lib/webcomment_templates.py:1195 #, python-format msgid "" "Note: you have not %(x_url_open)sdefined your nickname%(x_url_close)s. " "%(x_nickname)s will be displayed as the author of this comment." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1099 msgid "Once logged in, authorized users can also attach files." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1114 msgid "Optionally, attach a file to this comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1115 msgid "Optionally, attach files to this comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1116 msgid "Max one file" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1117 #, python-format msgid "Max %i files" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1118 #, python-format msgid "Max %(x_nb_bytes)s per file" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1132 msgid "Send me an email when a new comment is posted" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1146 #: modules/webcomment/lib/webcomment_templates.py:1265 msgid "Article" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1148 msgid "Add comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1190 #, python-format msgid "" "Note: Your nickname, %s, will be displayed as the author of this review." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1266 msgid "Rate this article" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1267 msgid "Select a score" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1268 msgid "Give a title to your review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1269 msgid "Write your review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1274 msgid "Add review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1284 -#: modules/webcomment/lib/webcomment_webinterface.py:489 +#: modules/webcomment/lib/webcomment_webinterface.py:481 msgid "Add Review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1305 msgid "Your review was successfully added." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1307 msgid "Your comment was successfully added." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1310 msgid "Back to record" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1388 #: modules/webcomment/web/admin/webcommentadmin.py:173 msgid "View most commented records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1390 #: modules/webcomment/web/admin/webcommentadmin.py:209 msgid "View latest commented records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1392 #: modules/webcomment/web/admin/webcommentadmin.py:142 msgid "View all comments reported as abuse" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1396 #: modules/webcomment/web/admin/webcommentadmin.py:172 msgid "View most reviewed records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1398 #: modules/webcomment/web/admin/webcommentadmin.py:208 msgid "View latest reviewed records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1400 #: modules/webcomment/web/admin/webcommentadmin.py:142 msgid "View all reviews reported as abuse" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1408 msgid "View all users who have been reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1410 msgid "Guide" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1412 msgid "Comments and reviews are disabled" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1432 msgid "" "Please enter the ID of the comment/review so that you can view it before " "deciding whether to delete it or not" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1456 msgid "Comment ID:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1457 msgid "Or enter a record ID to list all the associated comments/reviews:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1458 msgid "Record ID:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1460 msgid "View Comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1481 msgid "There have been no reports so far." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1485 #, python-format msgid "View all %s reported comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1488 #, python-format msgid "View all %s reported reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1525 msgid "" "Here is a list, sorted by total number of reports, of all users who have had " "a comment reported at least once." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1533 #: modules/webcomment/lib/webcomment_templates.py:1562 #: modules/websession/lib/websession_templates.py:159 #: modules/websession/lib/websession_templates.py:1046 msgid "Nickname" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1534 #: modules/webcomment/lib/webcomment_templates.py:1566 #: modules/bibcirculation/lib/bibcirculation_utils.py:342 #: modules/bibcirculation/lib/bibcirculation_templates.py:2185 #: modules/bibcirculation/lib/bibcirculation_templates.py:2271 #: modules/bibcirculation/lib/bibcirculation_templates.py:2477 #: modules/bibcirculation/lib/bibcirculation_templates.py:3518 #: modules/bibcirculation/lib/bibcirculation_templates.py:3646 #: modules/bibcirculation/lib/bibcirculation_templates.py:4832 #: modules/bibcirculation/lib/bibcirculation_templates.py:5358 #: modules/bibcirculation/lib/bibcirculation_templates.py:5403 #: modules/bibcirculation/lib/bibcirculation_templates.py:5663 #: modules/bibcirculation/lib/bibcirculation_templates.py:5725 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5905 #: modules/bibcirculation/lib/bibcirculation_templates.py:6137 #: modules/bibcirculation/lib/bibcirculation_templates.py:6200 #: modules/bibcirculation/lib/bibcirculation_templates.py:8086 #: modules/bibcirculation/lib/bibcirculation_templates.py:8314 #: modules/bibcirculation/lib/bibcirculation_templates.py:8910 #: modules/bibcirculation/lib/bibcirculation_templates.py:9368 #: modules/bibcirculation/lib/bibcirculation_templates.py:10440 #: modules/bibcirculation/lib/bibcirculation_templates.py:10606 #: modules/bibcirculation/lib/bibcirculation_templates.py:11489 #: modules/bibcirculation/lib/bibcirculation_templates.py:12381 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13643 #: modules/bibcirculation/lib/bibcirculation_templates.py:13886 #: modules/bibcirculation/lib/bibcirculation_templates.py:13953 #: modules/bibcirculation/lib/bibcirculation_templates.py:14196 #: modules/bibcirculation/lib/bibcirculation_templates.py:14895 #: modules/bibcirculation/lib/bibcirculation_templates.py:16102 msgid "Email" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1535 #: modules/webcomment/lib/webcomment_templates.py:1564 msgid "User ID" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1537 msgid "Number positive votes" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1538 msgid "Number negative votes" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1539 msgid "Total number votes" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1540 msgid "Total number of reports" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1541 msgid "View all user's reported comments/reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1574 #, python-format msgid "This review has been reported %i times" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1576 #, python-format msgid "This comment has been reported %i times" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1819 msgid "Written by" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1820 msgid "General informations" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1821 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:652 msgid "Select" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1835 msgid "Delete selected reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1836 #: modules/webcomment/lib/webcomment_templates.py:1843 msgid "Suppress selected abuse report" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1837 msgid "Undelete selected reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1841 msgid "Undelete selected comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1842 msgid "Delete selected comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1851 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:494 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:557 #: modules/bibcirculation/lib/bibcirculation_templates.py:1529 msgid "OK" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1857 #, python-format msgid "Here are the reported reviews of user %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1859 #, python-format msgid "Here are the reported comments of user %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1863 #, python-format msgid "Here is review %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1865 #, python-format msgid "Here is comment %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1868 #, python-format msgid "Here is review %(x_cmtID)s written by user %(x_user)s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1870 #, python-format msgid "Here is comment %(x_cmtID)s written by user %(x_user)s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1876 msgid "Here are all reported reviews sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1878 msgid "Here are all reported comments sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1883 #, python-format msgid "Here are all reviews for record %i, sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1884 msgid "Show comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1886 #, python-format msgid "Here are all comments for record %i, sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1887 msgid "Show reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1912 #: modules/webcomment/lib/webcomment_templates.py:1936 #: modules/webcomment/lib/webcomment_templates.py:1962 msgid "comment ID" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1912 msgid "successfully deleted" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1936 msgid "successfully undeleted" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1962 msgid "successfully suppressed abuse report" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1979 msgid "Not yet reviewed" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2047 #, python-format msgid "" "The following review was sent to %(CFG_SITE_NAME)s by %(user_nickname)s:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2048 #, python-format msgid "" "The following comment was sent to %(CFG_SITE_NAME)s by %(user_nickname)s:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2075 msgid "This is an automatic message, please don't reply to it." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2077 #, python-format msgid "To post another comment, go to <%(x_url)s> instead." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2082 #, python-format msgid "To specifically reply to this comment, go to <%(x_url)s>" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2087 #, python-format msgid "To unsubscribe from this discussion, go to <%(x_url)s>" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2091 #, python-format msgid "For any question, please use <%(CFG_SITE_SUPPORT_EMAIL)s>" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:256 -#: modules/webcomment/lib/webcomment_webinterface.py:511 +#: modules/webcomment/lib/webcomment_webinterface.py:255 +#: modules/webcomment/lib/webcomment_webinterface.py:503 msgid "Record Not Found" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:335 -#: modules/webcomment/lib/webcomment_webinterface.py:573 -#: modules/webcomment/lib/webcomment_webinterface.py:650 +#: modules/webcomment/lib/webcomment_webinterface.py:334 +#: modules/webcomment/lib/webcomment_webinterface.py:565 +#: modules/webcomment/lib/webcomment_webinterface.py:642 msgid "Specified comment does not belong to this record" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:344 -#: modules/webcomment/lib/webcomment_webinterface.py:579 -#: modules/webcomment/lib/webcomment_webinterface.py:656 +#: modules/webcomment/lib/webcomment_webinterface.py:343 +#: modules/webcomment/lib/webcomment_webinterface.py:571 +#: modules/webcomment/lib/webcomment_webinterface.py:648 msgid "You do not have access to the specified comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:491 +#: modules/webcomment/lib/webcomment_webinterface.py:483 #: modules/websubmit/lib/websubmit_templates.py:2659 #: modules/websubmit/lib/websubmit_templates.py:2660 msgid "Add Comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:584 +#: modules/webcomment/lib/webcomment_webinterface.py:576 msgid "You cannot vote for a deleted comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:661 +#: modules/webcomment/lib/webcomment_webinterface.py:653 msgid "You cannot report a deleted comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:788 -#: modules/webcomment/lib/webcomment_webinterface.py:828 +#: modules/webcomment/lib/webcomment_webinterface.py:780 +#: modules/webcomment/lib/webcomment_webinterface.py:820 msgid "Page Not Found" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:789 +#: modules/webcomment/lib/webcomment_webinterface.py:781 msgid "The requested comment could not be found" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:809 +#: modules/webcomment/lib/webcomment_webinterface.py:801 msgid "You cannot access files of a deleted comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:829 +#: modules/webcomment/lib/webcomment_webinterface.py:821 msgid "The requested file could not be found" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:45 #: modules/webcomment/web/admin/webcommentadmin.py:59 #: modules/webcomment/web/admin/webcommentadmin.py:83 #: modules/webcomment/web/admin/webcommentadmin.py:128 #: modules/webcomment/web/admin/webcommentadmin.py:166 #: modules/webcomment/web/admin/webcommentadmin.py:194 #: modules/webcomment/web/admin/webcommentadmin.py:230 #: modules/webcomment/web/admin/webcommentadmin.py:268 msgid "WebComment Admin" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:50 #: modules/webcomment/web/admin/webcommentadmin.py:88 #: modules/webcomment/web/admin/webcommentadmin.py:133 #: modules/webcomment/web/admin/webcommentadmin.py:199 #: modules/webcomment/web/admin/webcommentadmin.py:235 #: modules/webcomment/web/admin/webcommentadmin.py:273 #: modules/websearch/lib/websearch_webinterface.py:969 #: modules/websearch/web/admin/websearchadmin.py:1040 -#: modules/websession/lib/websession_webinterface.py:948 +#: modules/websession/lib/websession_webinterface.py:966 #: modules/webstyle/lib/webstyle_templates.py:583 #: modules/webjournal/web/admin/webjournaladmin.py:390 #: modules/bibcheck/web/admin/bibcheckadmin.py:333 msgid "Internal Error" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid "Delete/Undelete Reviews" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid "Delete/Undelete Comments" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid " or Suppress abuse reports" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:244 msgid "View all reported users" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:291 msgid "Delete comments" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:294 msgid "Suppress abuse reports" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:297 msgid "Undelete comments" msgstr "" #: modules/webmessage/lib/webmessage.py:127 msgid "The message could not be deleted." msgstr "" #: modules/webmessage/lib/webmessage.py:129 msgid "The message was successfully deleted." msgstr "" #: modules/webmessage/lib/webmessage.py:146 msgid "Your mailbox has been emptied." msgstr "" #: modules/webmessage/lib/webmessage.py:347 #, python-format msgid "The chosen date (%(x_year)i/%(x_month)i/%(x_day)i) is invalid." msgstr "" #: modules/webmessage/lib/webmessage.py:356 msgid "Please enter a user name or a group name." msgstr "" #: modules/webmessage/lib/webmessage.py:360 #, python-format msgid "" "Your message is too long, please edit it. Maximum size allowed is %i " "characters." msgstr "" #: modules/webmessage/lib/webmessage.py:375 #, python-format msgid "Group %s does not exist." msgstr "" #: modules/webmessage/lib/webmessage.py:400 #, python-format msgid "User %s does not exist." msgstr "" #: modules/webmessage/lib/webmessage.py:413 #: modules/webmessage/lib/webmessage_webinterface.py:147 #: modules/webmessage/lib/webmessage_webinterface.py:247 msgid "Write a message" msgstr "" #: modules/webmessage/lib/webmessage.py:428 msgid "" "Your message could not be sent to the following recipients due to their " "quota:" msgstr "" #: modules/webmessage/lib/webmessage.py:432 msgid "Your message has been sent." msgstr "" #: modules/webmessage/lib/webmessage.py:439 #: modules/webmessage/lib/webmessage_templates.py:472 #: modules/webmessage/lib/webmessage_webinterface.py:87 #: modules/webmessage/lib/webmessage_webinterface.py:318 #: modules/webmessage/lib/webmessage_webinterface.py:366 #: modules/websession/lib/websession_templates.py:619 msgid "Your Messages" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:86 #: modules/bibcirculation/lib/bibcirculation_templates.py:4465 msgid "Subject" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:87 msgid "Sender" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:96 msgid "No messages" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:100 msgid "No subject" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:146 msgid "Write new message" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:147 msgid "Delete All" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:189 msgid "Re:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:281 msgid "Send later?" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:282 #: modules/websubmit/lib/websubmit_templates.py:3071 msgid "To:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:283 msgid "Users" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:284 msgid "Groups" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:285 #: modules/webmessage/lib/webmessage_templates.py:447 #: modules/websubmit/lib/websubmit_templates.py:3072 msgid "Subject:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:286 #: modules/websubmit/lib/websubmit_templates.py:3073 msgid "Message:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:287 #: modules/websubmit/lib/websubmit_templates.py:3074 msgid "SEND" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:446 msgid "From:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:448 msgid "Sent on:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:449 msgid "Received on:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:450 msgid "Sent to:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:451 msgid "Sent to groups:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:452 msgid "REPLY" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:453 msgid "DELETE" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:506 msgid "Are you sure you want to empty your whole mailbox?" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:568 #, python-format msgid "Quota used: %(x_nb_used)i messages out of max. %(x_nb_total)i" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:586 msgid "Please select one or more:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:617 msgid "Add to users" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:619 msgid "Add to groups" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:622 msgid "No matching user" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:624 #: modules/websession/lib/websession_templates.py:1840 msgid "No matching group" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:661 msgid "Find users or groups:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:662 msgid "Find a user" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:663 msgid "Find a group" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:678 #, python-format msgid "You have %(x_nb_new)s new messages out of %(x_nb_total)s messages" msgstr "" #: modules/webmessage/lib/webmessage_webinterface.py:82 #: modules/webmessage/lib/webmessage_webinterface.py:136 #: modules/webmessage/lib/webmessage_webinterface.py:233 #: modules/webmessage/lib/webmessage_webinterface.py:312 #: modules/webmessage/lib/webmessage_webinterface.py:360 #: modules/webmessage/lib/webmessage_webinterface.py:408 msgid "You are not authorized to use messages." msgstr "" #: modules/webmessage/lib/webmessage_webinterface.py:414 msgid "Read a message" msgstr "" -#: modules/websearch/lib/search_engine.py:750 -#: modules/websearch/lib/search_engine.py:777 -#: modules/websearch/lib/search_engine.py:4533 -#: modules/websearch/lib/search_engine.py:4586 +#: modules/websearch/lib/search_engine.py:768 +#: modules/websearch/lib/search_engine.py:798 +#: modules/websearch/lib/search_engine.py:4603 +#: modules/websearch/lib/search_engine.py:4656 msgid "Search Results" msgstr "" -#: modules/websearch/lib/search_engine.py:880 +#: modules/websearch/lib/search_engine.py:920 #: modules/websearch/lib/websearch_templates.py:1185 msgid "any day" msgstr "" -#: modules/websearch/lib/search_engine.py:886 +#: modules/websearch/lib/search_engine.py:926 #: modules/websearch/lib/websearch_templates.py:1197 msgid "any month" msgstr "" -#: modules/websearch/lib/search_engine.py:894 +#: modules/websearch/lib/search_engine.py:934 #: modules/websearch/lib/websearch_templates.py:1211 msgid "any year" msgstr "" -#: modules/websearch/lib/search_engine.py:935 -#: modules/websearch/lib/search_engine.py:954 +#: modules/websearch/lib/search_engine.py:975 +#: modules/websearch/lib/search_engine.py:994 msgid "any public collection" msgstr "" -#: modules/websearch/lib/search_engine.py:939 +#: modules/websearch/lib/search_engine.py:979 msgid "remove this collection" msgstr "" -#: modules/websearch/lib/search_engine.py:950 +#: modules/websearch/lib/search_engine.py:990 msgid "add another collection" msgstr "" -#: modules/websearch/lib/search_engine.py:960 -#: modules/websearch/lib/websearch_webcoll.py:591 +#: modules/websearch/lib/search_engine.py:1000 +#: modules/websearch/lib/search_engine.py:1156 +#: modules/websearch/lib/websearch_templates.py:1162 +#: modules/websearch/lib/websearch_webcoll.py:596 +msgid "OR" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1000 +#: modules/websearch/lib/websearch_webcoll.py:596 msgid "rank by" msgstr "" -#: modules/websearch/lib/search_engine.py:980 +#: modules/websearch/lib/search_engine.py:1020 +#: modules/websearch/lib/websearch_templates_epfl.py:1712 msgid "HTML brief" msgstr "" -#: modules/websearch/lib/search_engine.py:1093 -#: modules/websearch/lib/websearch_webcoll.py:561 +#: modules/websearch/lib/search_engine.py:1134 +#: modules/websearch/lib/websearch_webcoll.py:566 msgid "latest first" msgstr "" -#: modules/websearch/lib/search_engine.py:1702 +#: modules/websearch/lib/search_engine.py:1155 +#: modules/websearch/lib/websearch_templates.py:1161 +msgid "AND" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1157 +#: modules/websearch/lib/websearch_templates.py:1163 +msgid "AND NOT" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1175 +#: modules/websearch/lib/websearch_templates.py:1111 +msgid "All of the words:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1176 +#: modules/websearch/lib/websearch_templates.py:1113 +msgid "Any of the words:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1177 +#: modules/websearch/lib/websearch_templates.py:1115 +msgid "Exact phrase:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1178 +#: modules/websearch/lib/websearch_templates.py:1117 +msgid "Partial phrase:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1179 +#: modules/websearch/lib/websearch_templates.py:1119 +msgid "Regular expression:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1744 msgid "No values found." msgstr "" -#: modules/websearch/lib/search_engine.py:1825 +#: modules/websearch/lib/search_engine.py:1867 #, python-format msgid "" "Warning: full-text search is only available for a subset of papers mostly " "from %(x_range_from_year)s-%(x_range_to_year)s." msgstr "" -#: modules/websearch/lib/search_engine.py:1829 +#: modules/websearch/lib/search_engine.py:1871 #, python-format msgid "" "Warning: figure caption search is only available for a subset of papers " "mostly from %(x_range_from_year)s-%(x_range_to_year)s." msgstr "" -#: modules/websearch/lib/search_engine.py:1838 +#: modules/websearch/lib/search_engine.py:1880 msgid "" "No phrase index available for fulltext yet, looking for word combination..." msgstr "" -#: modules/websearch/lib/search_engine.py:1878 +#: modules/websearch/lib/search_engine.py:1920 #, python-format msgid "No exact match found for %(x_query1)s, using %(x_query2)s instead..." msgstr "" -#: modules/websearch/lib/search_engine.py:1888 -#: modules/websearch/lib/search_engine.py:1897 -#: modules/websearch/lib/search_engine.py:4505 -#: modules/websearch/lib/search_engine.py:4543 -#: modules/websearch/lib/search_engine.py:4594 +#: modules/websearch/lib/search_engine.py:1930 +#: modules/websearch/lib/search_engine.py:1939 +#: modules/websearch/lib/search_engine.py:4575 +#: modules/websearch/lib/search_engine.py:4613 +#: modules/websearch/lib/search_engine.py:4664 #: modules/websubmit/lib/websubmit_webinterface.py:110 #: modules/websubmit/lib/websubmit_webinterface.py:145 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:327 msgid "Requested record does not seem to exist." msgstr "" -#: modules/websearch/lib/search_engine.py:2019 +#: modules/websearch/lib/search_engine.py:2061 msgid "" "Search syntax misunderstood. Ignoring all parentheses in the query. If this " "doesn't help, please check your search and try again." msgstr "" -#: modules/websearch/lib/search_engine.py:2341 +#: modules/websearch/lib/search_engine.py:2383 #, python-format msgid "" "No match found in collection %(x_collection)s. Other public collections gave " "%(x_url_open)s%(x_nb_hits)d hits%(x_url_close)s." msgstr "" -#: modules/websearch/lib/search_engine.py:2350 +#: modules/websearch/lib/search_engine.py:2392 msgid "" "No public collection matched your query. If you were looking for a non-" "public document, please choose the desired restricted collection first." msgstr "" -#: modules/websearch/lib/search_engine.py:2467 +#: modules/websearch/lib/search_engine.py:2509 #, python-format msgid "There are no records referring to %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2469 +#: modules/websearch/lib/search_engine.py:2511 #, python-format msgid "There are no records cited by %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2474 +#: modules/websearch/lib/search_engine.py:2516 #, python-format msgid "No word index is available for %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2485 +#: modules/websearch/lib/search_engine.py:2527 #, python-format msgid "No phrase index is available for %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2530 +#: modules/websearch/lib/search_engine.py:2572 #, python-format msgid "" "Search term %(x_term)s inside index %(x_index)s did not match any record. " "Nearest terms in any collection are:" msgstr "" -#: modules/websearch/lib/search_engine.py:2534 +#: modules/websearch/lib/search_engine.py:2576 #, python-format msgid "" "Search term %s did not match any record. Nearest terms in any collection are:" msgstr "" -#: modules/websearch/lib/search_engine.py:3290 +#: modules/websearch/lib/search_engine.py:3333 #, python-format msgid "" "Sorry, sorting is allowed on sets of up to %d records only. Using default " "sort order." msgstr "" -#: modules/websearch/lib/search_engine.py:3314 +#: modules/websearch/lib/search_engine.py:3357 #, python-format msgid "" "Sorry, %s does not seem to be a valid sort option. Choosing title sort " "instead." msgstr "" -#: modules/websearch/lib/search_engine.py:3507 -#: modules/websearch/lib/search_engine.py:3836 -#: modules/websearch/lib/search_engine.py:4014 -#: modules/websearch/lib/search_engine.py:4037 -#: modules/websearch/lib/search_engine.py:4045 -#: modules/websearch/lib/search_engine.py:4053 -#: modules/websearch/lib/search_engine.py:4099 +#: modules/websearch/lib/search_engine.py:3552 +#: modules/websearch/lib/search_engine.py:3881 +#: modules/websearch/lib/search_engine.py:4059 +#: modules/websearch/lib/search_engine.py:4082 +#: modules/websearch/lib/search_engine.py:4090 +#: modules/websearch/lib/search_engine.py:4098 +#: modules/websearch/lib/search_engine.py:4144 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:325 msgid "The record has been deleted." msgstr "" -#: modules/websearch/lib/search_engine.py:3735 +#: modules/websearch/lib/search_engine.py:3780 msgid "Use different search terms." msgstr "" -#: modules/websearch/lib/search_engine.py:4815 +#: modules/websearch/lib/search_engine.py:4580 +#: modules/websearch/lib/websearch_templates.py:804 +#: modules/websearch/lib/websearch_templates.py:882 +#: modules/websearch/lib/websearch_templates.py:1005 +#: modules/websearch/lib/websearch_templates.py:1963 +#: modules/websearch/lib/websearch_templates.py:2054 +#: modules/websearch/lib/websearch_templates.py:2111 +#: modules/websearch/lib/websearch_templates.py:2168 +#: modules/websearch/lib/websearch_templates.py:2207 +#: modules/websearch/lib/websearch_templates.py:2230 +#: modules/websearch/lib/websearch_templates.py:2261 +#: modules/websearch/lib/websearch_templates_epfl.py:744 +#: modules/websearch/lib/websearch_templates_epfl.py:1318 +#: modules/websearch/lib/websearch_templates_epfl.py:1341 +#: modules/websearch/lib/websearch_templates_epfl.py:1372 +#: modules/webstyle/lib/webstyle_templates_epfl.py:459 +msgid "Browse" +msgstr "" + +#: modules/websearch/lib/search_engine.py:4885 msgid "No match within your time limits, discarding this condition..." msgstr "" -#: modules/websearch/lib/search_engine.py:4842 +#: modules/websearch/lib/search_engine.py:4912 msgid "No match within your search limits, discarding this condition..." msgstr "" #: modules/websearch/lib/websearchadminlib.py:3374 msgid "Information" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3375 msgid "References" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3376 msgid "Citations" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3377 msgid "Keywords" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3378 msgid "Discussion" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3379 msgid "Usage statistics" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3380 msgid "Files" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3381 msgid "Plots" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3382 msgid "Holdings" msgstr "" #: modules/websearch/lib/websearch_templates.py:469 #, python-format msgid "Search on %(x_CFG_SITE_NAME_INTL)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:693 #: modules/websearch/lib/websearch_templates.py:842 #, python-format msgid "Search %s records for:" msgstr "" #: modules/websearch/lib/websearch_templates.py:745 msgid "less" msgstr "" #: modules/websearch/lib/websearch_templates.py:746 #: modules/websearch/lib/websearch_templates.py:1506 #: modules/websearch/lib/websearch_templates.py:3708 #: modules/websearch/lib/websearch_templates.py:3785 #: modules/websearch/lib/websearch_templates.py:3845 +#: modules/websearch/lib/websearch_templates_epfl.py:952 +#: modules/websearch/lib/websearch_templates_epfl.py:2256 msgid "more" msgstr "" #: modules/websearch/lib/websearch_templates.py:751 #, python-format msgid "Example: %(x_sample_search_query)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:763 #: modules/websearch/lib/websearch_templates.py:2127 #, python-format msgid "Search in %(x_collection_name)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:767 #: modules/websearch/lib/websearch_templates.py:2131 msgid "Search everywhere" msgstr "" #: modules/websearch/lib/websearch_templates.py:801 #: modules/websearch/lib/websearch_templates.py:878 #: modules/websearch/lib/websearch_templates.py:2099 #: modules/websearch/lib/websearch_templates.py:2157 +#: modules/websearch/lib/websearch_templates_epfl.py:633 +#: modules/websearch/lib/websearch_templates_epfl.py:1283 msgid "Advanced Search" msgstr "" +#: modules/websearch/lib/websearch_templates.py:803 +#: modules/websearch/lib/websearch_templates.py:881 +#: modules/websearch/lib/websearch_templates.py:1004 +#: modules/websearch/lib/websearch_templates.py:1960 +#: modules/websearch/lib/websearch_templates.py:2053 +#: modules/websearch/lib/websearch_templates.py:2110 +#: modules/websearch/lib/websearch_templates.py:2167 +#: modules/webstyle/lib/webstyle_templates.py:431 +#: modules/webstyle/lib/webstyle_templates.py:499 +#: modules/webstyle/lib/webdoc_tests.py:86 +#: modules/bibedit/lib/bibeditmulti_templates.py:296 +#: modules/bibcirculation/lib/bibcirculation_templates.py:1819 +#: modules/bibcirculation/lib/bibcirculation_templates.py:1877 +#: modules/bibcirculation/lib/bibcirculation_templates.py:7673 +#: modules/bibcirculation/lib/bibcirculation_templates.py:8240 +#: modules/bibcirculation/lib/bibcirculation_templates.py:14050 +#: modules/bibcirculation/lib/bibcirculation_templates.py:15528 +#: modules/bibcirculation/lib/bibcirculation_templates.py:15686 +#: modules/bibcirculation/lib/bibcirculation_templates.py:16648 +#: modules/bibknowledge/lib/bibknowledge_templates.py:394 +#: modules/webbasket/lib/webbasket_templates_epfl.py:217 +#: modules/websearch/lib/websearch_templates_epfl.py:631 +#: modules/websearch/lib/websearch_templates_epfl.py:743 +#: modules/websearch/lib/websearch_templates_epfl.py:1281 +#: modules/webstyle/lib/webstyle_templates_epfl.py:458 +msgid "Search" +msgstr "" + +#: modules/websearch/lib/websearch_templates.py:805 +#: modules/websearch/lib/websearch_templates.py:883 +#: modules/websearch/lib/websearch_templates.py:1006 +#: modules/websearch/lib/websearch_templates.py:2058 +#: modules/websearch/lib/websearch_templates.py:2115 +#: modules/websearch/lib/websearch_templates.py:2172 +#: modules/websearch/lib/websearch_templates_epfl.py:632 +#: modules/websearch/lib/websearch_templates_epfl.py:745 +#: modules/websearch/lib/websearch_templates_epfl.py:1282 +msgid "Search Tips" +msgstr "" + #: modules/websearch/lib/websearch_templates.py:939 +#: modules/websearch/lib/websearch_templates_epfl.py:678 #, python-format msgid "Search %s records for" msgstr "" #: modules/websearch/lib/websearch_templates.py:990 #: modules/websearch/lib/websearch_templates.py:2015 +#: modules/websearch/lib/websearch_templates_epfl.py:729 msgid "Simple Search" msgstr "" #: modules/websearch/lib/websearch_templates.py:1023 +#: modules/websearch/lib/websearch_templates_epfl.py:762 msgid "Search options:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1070 #: modules/websearch/lib/websearch_templates.py:2253 +#: modules/websearch/lib/websearch_templates_epfl.py:809 +#: modules/websearch/lib/websearch_templates_epfl.py:1364 msgid "Added/modified since:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1071 #: modules/websearch/lib/websearch_templates.py:2254 +#: modules/websearch/lib/websearch_templates_epfl.py:810 +#: modules/websearch/lib/websearch_templates_epfl.py:1365 msgid "until:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1076 #: modules/websearch/lib/websearch_templates.py:2296 +#: modules/websearch/lib/websearch_templates_epfl.py:815 +#: modules/websearch/lib/websearch_templates_epfl.py:1407 msgid "Sort by:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1077 #: modules/websearch/lib/websearch_templates.py:2297 +#: modules/websearch/lib/websearch_templates_epfl.py:816 +#: modules/websearch/lib/websearch_templates_epfl.py:1408 msgid "Display results:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1078 #: modules/websearch/lib/websearch_templates.py:2298 +#: modules/websearch/lib/websearch_templates_epfl.py:817 +#: modules/websearch/lib/websearch_templates_epfl.py:1409 msgid "Output format:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1238 msgid "Added since:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1239 msgid "Modified since:" msgstr "" +#: modules/websearch/lib/websearch_templates.py:1275 +msgid "Narrow by collection:" +msgstr "" + #: modules/websearch/lib/websearch_templates.py:1276 msgid "Focus on:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1339 msgid "restricted" msgstr "" #: modules/websearch/lib/websearch_templates.py:1366 msgid "Search also:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1437 msgid "" "This collection is restricted. If you are authorized to access it, please " "click on the Search button." msgstr "" #: modules/websearch/lib/websearch_templates.py:1452 msgid "" "This is a hosted external collection. Please click on the Search button to " "see its content." msgstr "" #: modules/websearch/lib/websearch_templates.py:1467 msgid "This collection does not contain any document yet." msgstr "" #: modules/websearch/lib/websearch_templates.py:1521 msgid "Latest additions:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1624 #: modules/websearch/lib/websearch_templates.py:3359 #, python-format msgid "Cited by %i records" msgstr "" #: modules/websearch/lib/websearch_templates.py:1690 +#: modules/websearch/lib/websearch_templates_epfl.py:1028 #, python-format msgid "Words nearest to %(x_word)s inside %(x_field)s in any collection are:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1693 +#: modules/websearch/lib/websearch_templates_epfl.py:1031 #, python-format msgid "Words nearest to %(x_word)s in any collection are:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1785 +#: modules/websearch/lib/websearch_templates_epfl.py:1109 msgid "Hits" msgstr "" #: modules/websearch/lib/websearch_templates.py:1864 #: modules/websearch/lib/websearch_templates.py:2516 #: modules/websearch/lib/websearch_templates.py:2706 #: modules/bibedit/lib/bibeditmulti_templates.py:577 +#: modules/websearch/lib/websearch_templates_epfl.py:1188 msgid "next" msgstr "" #: modules/websearch/lib/websearch_templates.py:2202 +#: modules/websearch/lib/websearch_templates_epfl.py:1313 msgid "collections" msgstr "" #: modules/websearch/lib/websearch_templates.py:2224 +#: modules/websearch/lib/websearch_templates_epfl.py:1335 msgid "Limit to:" msgstr "" #: modules/websearch/lib/websearch_templates.py:2266 -#: modules/websearch/lib/websearch_webcoll.py:609 +#: modules/websearch/lib/websearch_webcoll.py:614 +#: modules/websearch/lib/websearch_templates_epfl.py:1377 +#: modules/websearch/lib/websearch_templates_epfl.py:1779 msgid "results" msgstr "" #: modules/websearch/lib/websearch_templates.py:2302 -#: modules/websearch/lib/websearch_webcoll.py:579 +#: modules/websearch/lib/websearch_webcoll.py:584 +#: modules/websearch/lib/websearch_templates_epfl.py:1413 msgid "asc." msgstr "" #: modules/websearch/lib/websearch_templates.py:2305 -#: modules/websearch/lib/websearch_webcoll.py:580 +#: modules/websearch/lib/websearch_webcoll.py:585 +#: modules/websearch/lib/websearch_templates_epfl.py:1416 msgid "desc." msgstr "" #: modules/websearch/lib/websearch_templates.py:2311 -#: modules/websearch/lib/websearch_webcoll.py:624 +#: modules/websearch/lib/websearch_webcoll.py:629 +#: modules/websearch/lib/websearch_templates_epfl.py:1422 msgid "single list" msgstr "" #: modules/websearch/lib/websearch_templates.py:2314 -#: modules/websearch/lib/websearch_webcoll.py:623 +#: modules/websearch/lib/websearch_webcoll.py:628 +#: modules/websearch/lib/websearch_templates_epfl.py:1425 msgid "split by collection" msgstr "" #: modules/websearch/lib/websearch_templates.py:2352 msgid "MARC tag" msgstr "" #: modules/websearch/lib/websearch_templates.py:2467 #: modules/websearch/lib/websearch_templates.py:2472 #: modules/websearch/lib/websearch_templates.py:2650 #: modules/websearch/lib/websearch_templates.py:2662 #: modules/websearch/lib/websearch_templates.py:2983 #: modules/websearch/lib/websearch_templates.py:2992 +#: modules/websearch/lib/websearch_templates_epfl.py:1761 +#: modules/websearch/lib/websearch_templates_epfl.py:1958 +#: modules/websearch/lib/websearch_templates_epfl.py:1967 #, python-format msgid "%s records found" msgstr "" #: modules/websearch/lib/websearch_templates.py:2499 #: modules/websearch/lib/websearch_templates.py:2689 #: modules/bibedit/lib/bibeditmulti_templates.py:575 msgid "begin" msgstr "" #: modules/websearch/lib/websearch_templates.py:2504 #: modules/websearch/lib/websearch_templates.py:2694 #: modules/websubmit/lib/websubmit_templates.py:1235 #: modules/bibedit/lib/bibeditmulti_templates.py:576 msgid "previous" msgstr "" #: modules/websearch/lib/websearch_templates.py:2523 #: modules/websearch/lib/websearch_templates.py:2713 msgid "end" msgstr "" #: modules/websearch/lib/websearch_templates.py:2543 #: modules/websearch/lib/websearch_templates.py:2733 msgid "jump to record:" msgstr "" #: modules/websearch/lib/websearch_templates.py:2556 #: modules/websearch/lib/websearch_templates.py:2746 #, python-format msgid "Search took %s seconds." msgstr "" #: modules/websearch/lib/websearch_templates.py:2950 +#: modules/websearch/lib/websearch_templates_epfl.py:1925 #, python-format msgid "" "%(x_fmt_open)sResults overview:%(x_fmt_close)s Found %(x_nb_records)s " "records in %(x_nb_seconds)s seconds." msgstr "" #: modules/websearch/lib/websearch_templates.py:2962 +#: modules/websearch/lib/websearch_templates_epfl.py:1937 #, python-format msgid "%(x_fmt_open)sResults overview%(x_fmt_close)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:2970 +#: modules/websearch/lib/websearch_templates_epfl.py:1945 #, python-format msgid "" "%(x_fmt_open)sResults overview:%(x_fmt_close)s Found at least " "%(x_nb_records)s records in %(x_nb_seconds)s seconds." msgstr "" #: modules/websearch/lib/websearch_templates.py:3047 msgid "No results found..." msgstr "" #: modules/websearch/lib/websearch_templates.py:3080 +#: modules/websearch/lib/websearch_templates_epfl.py:2002 msgid "" "Boolean query returned no hits. Please combine your search terms differently." msgstr "" #: modules/websearch/lib/websearch_templates.py:3112 +#: modules/websearch/lib/websearch_templates_epfl.py:2034 msgid "See also: similar author names" msgstr "" #: modules/websearch/lib/websearch_templates.py:3360 msgid "Cited by 1 record" msgstr "" #: modules/websearch/lib/websearch_templates.py:3370 #, python-format msgid "%i comments" msgstr "" #: modules/websearch/lib/websearch_templates.py:3371 msgid "1 comment" msgstr "" #: modules/websearch/lib/websearch_templates.py:3381 #, python-format msgid "%i reviews" msgstr "" #: modules/websearch/lib/websearch_templates.py:3382 msgid "1 review" msgstr "" #: modules/websearch/lib/websearch_templates.py:3525 #: modules/websearch/lib/websearch_webinterface.py:986 #, python-format msgid "Collection %s Not Found" msgstr "" #: modules/websearch/lib/websearch_templates.py:3537 #: modules/websearch/lib/websearch_webinterface.py:982 +#: modules/websearch/lib/websearch_templates_epfl.py:2123 #, python-format msgid "Sorry, collection %s does not seem to exist." msgstr "" #: modules/websearch/lib/websearch_templates.py:3539 #: modules/websearch/lib/websearch_webinterface.py:983 +#: modules/websearch/lib/websearch_templates_epfl.py:2125 #, python-format msgid "You may want to start browsing from %s." msgstr "" #: modules/websearch/lib/websearch_templates.py:3566 #, python-format msgid "" "Set up a personal %(x_url1_open)semail alert%(x_url1_close)s\n" " or subscribe to the %(x_url2_open)sRSS feed" "%(x_url2_close)s." msgstr "" #: modules/websearch/lib/websearch_templates.py:3573 #, python-format msgid "Subscribe to the %(x_url2_open)sRSS feed%(x_url2_close)s." msgstr "" #: modules/websearch/lib/websearch_templates.py:3582 msgid "Interested in being notified about new results for this query?" msgstr "" #: modules/websearch/lib/websearch_templates.py:3701 +#: modules/websearch/lib/websearch_templates_epfl.py:2249 msgid "People who downloaded this document also downloaded:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3717 +#: modules/websearch/lib/websearch_templates_epfl.py:2265 msgid "People who viewed this page also viewed:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3771 #, python-format msgid "Cited by: %s records" msgstr "" #: modules/websearch/lib/websearch_templates.py:3838 #, python-format msgid "Co-cited with: %s records" msgstr "" #: modules/websearch/lib/websearch_templates.py:3880 #, python-format msgid ".. of which self-citations: %s records" msgstr "" #: modules/websearch/lib/websearch_templates.py:3925 +#: modules/websearch/lib/websearch_templates_epfl.py:2315 msgid "Papers:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3928 +#: modules/websearch/lib/websearch_templates_epfl.py:2318 msgid "downloaded" msgstr "" #: modules/websearch/lib/websearch_templates.py:3929 +#: modules/websearch/lib/websearch_templates_epfl.py:2319 msgid "times" msgstr "" #: modules/websearch/lib/websearch_templates.py:3962 +#: modules/websearch/lib/websearch_templates_epfl.py:2353 msgid "Affiliations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3981 +#: modules/websearch/lib/websearch_templates_epfl.py:2372 msgid "Frequent keywords:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4002 +#: modules/websearch/lib/websearch_templates_epfl.py:2393 msgid "Frequent co-authors:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4022 +#: modules/websearch/lib/websearch_templates_epfl.py:2413 msgid "Citations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4052 msgid "Citation summary results" msgstr "" #: modules/websearch/lib/websearch_templates.py:4057 msgid "Total number of citable papers analyzed:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4080 msgid "Total number of citations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4085 msgid "Average citations per paper:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4090 msgid "Breakdown of papers by citations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4123 msgid "Additional Citation Metrics" msgstr "" #: modules/websearch/lib/websearch_webinterface.py:584 msgid "You are not authorized to view this area." msgstr "" #: modules/websearch/lib/websearch_webinterface.py:988 msgid "Not found" msgstr "" #: modules/websearch/lib/websearch_external_collections.py:143 msgid "in" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:51 msgid "" "Haven't found what you were looking for? Try your search on other servers:" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:79 msgid "External collections results overview:" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:119 msgid "Search timed out." msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:120 msgid "" "The external search engine has not responded in time. You can check its " "results here:" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:145 #: modules/websearch/lib/websearch_external_collections_templates.py:153 #: modules/websearch/lib/websearch_external_collections_templates.py:166 msgid "No results found." msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:149 #, python-format msgid "%s results found" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:151 #, python-format msgid "%s seconds" msgstr "" -#: modules/websearch/lib/websearch_webcoll.py:645 +#: modules/websearch/lib/websearch_webcoll.py:650 msgid "brief" msgstr "" #: modules/websession/lib/webaccount.py:115 #, python-format msgid "" "You are logged in as guest. You may want to %(x_url_open)slogin" "%(x_url_close)s as a regular user." msgstr "" #: modules/websession/lib/webaccount.py:119 #, python-format msgid "" "The %(x_fmt_open)sguest%(x_fmt_close)s users need to %(x_url_open)sregister" "%(x_url_close)s first" msgstr "" #: modules/websession/lib/webaccount.py:124 msgid "No queries found" msgstr "" #: modules/websession/lib/webaccount.py:371 msgid "" "This collection is restricted. If you think you have right to access it, " "please authenticate yourself." msgstr "" #: modules/websession/lib/webaccount.py:372 msgid "" "This file is restricted. If you think you have right to access it, please " "authenticate yourself." msgstr "" #: modules/websession/lib/websession_templates.py:92 msgid "External account settings" msgstr "" #: modules/websession/lib/websession_templates.py:94 #, python-format msgid "" "You can consult the list of your external groups directly in the " "%(x_url_open)sgroups page%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:98 msgid "External user groups" msgstr "" #: modules/websession/lib/websession_templates.py:157 msgid "" "If you want to change your email or set for the first time your nickname, " "please set new values in the form below." msgstr "" #: modules/websession/lib/websession_templates.py:158 msgid "Edit login credentials" msgstr "" #: modules/websession/lib/websession_templates.py:164 msgid "New email address" msgstr "" #: modules/websession/lib/websession_templates.py:165 #: modules/websession/lib/websession_templates.py:213 #: modules/websession/lib/websession_templates.py:1048 msgid "mandatory" msgstr "" #: modules/websession/lib/websession_templates.py:168 msgid "Set new values" msgstr "" #: modules/websession/lib/websession_templates.py:172 msgid "" "Since this is considered as a signature for comments and reviews, once set " "it can not be changed." msgstr "" #: modules/websession/lib/websession_templates.py:212 msgid "" "If you want to change your password, please enter the old one and set the " "new value in the form below." msgstr "" #: modules/websession/lib/websession_templates.py:214 msgid "Old password" msgstr "" #: modules/websession/lib/websession_templates.py:215 msgid "New password" msgstr "" #: modules/websession/lib/websession_templates.py:217 #: modules/websession/lib/websession_templates.py:1049 msgid "optional" msgstr "" #: modules/websession/lib/websession_templates.py:219 #: modules/websession/lib/websession_templates.py:1052 msgid "The password phrase may contain punctuation, spaces, etc." msgstr "" #: modules/websession/lib/websession_templates.py:220 msgid "You must fill the old password in order to set a new one." msgstr "" #: modules/websession/lib/websession_templates.py:221 msgid "Retype password" msgstr "" #: modules/websession/lib/websession_templates.py:222 msgid "Set new password" msgstr "" #: modules/websession/lib/websession_templates.py:227 #, python-format msgid "" "If you are using a lightweight CERN account you can\n" " %(x_url_open)sreset the password%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:233 #, python-format msgid "" "You can change or reset your CERN account password by means of the " "%(x_url_open)sCERN account system%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:259 msgid "Edit cataloging interface settings" msgstr "" #: modules/websession/lib/websession_templates.py:260 #: modules/websession/lib/websession_templates.py:912 msgid "Username" msgstr "" #: modules/websession/lib/websession_templates.py:261 #: modules/websession/lib/websession_templates.py:913 #: modules/websession/lib/websession_templates.py:1047 msgid "Password" msgstr "" #: modules/websession/lib/websession_templates.py:262 #: modules/websession/lib/websession_templates.py:289 #: modules/websession/lib/websession_templates.py:325 msgid "Update settings" msgstr "" #: modules/websession/lib/websession_templates.py:277 msgid "Edit language-related settings" msgstr "" #: modules/websession/lib/websession_templates.py:288 msgid "Select desired language of the web interface." msgstr "" #: modules/websession/lib/websession_templates.py:307 msgid "Edit search-related settings" msgstr "" #: modules/websession/lib/websession_templates.py:308 msgid "Show the latest additions box" msgstr "" #: modules/websession/lib/websession_templates.py:310 msgid "Show collection help boxes" msgstr "" #: modules/websession/lib/websession_templates.py:326 msgid "Number of search results per page" msgstr "" #: modules/websession/lib/websession_templates.py:359 msgid "Edit login method" msgstr "" #: modules/websession/lib/websession_templates.py:360 msgid "" "Please select which login method you would like to use to authenticate " "yourself" msgstr "" #: modules/websession/lib/websession_templates.py:361 #: modules/websession/lib/websession_templates.py:376 msgid "Select method" msgstr "" #: modules/websession/lib/websession_templates.py:395 #, python-format msgid "" "If you have lost the password for your %(sitename)s %(x_fmt_open)sinternal " "account%(x_fmt_close)s, then please enter your email address in the " "following form in order to have a password reset link emailed to you." msgstr "" #: modules/websession/lib/websession_templates.py:417 #: modules/websession/lib/websession_templates.py:1045 msgid "Email address" msgstr "" #: modules/websession/lib/websession_templates.py:418 msgid "Send password reset link" msgstr "" #: modules/websession/lib/websession_templates.py:422 #, python-format msgid "" "If you have been using the %(x_fmt_open)sCERN login system%(x_fmt_close)s, " "then you can recover your password through the %(x_url_open)sCERN " "authentication system%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:425 msgid "" "Note that if you have been using an external login system, then we cannot do " "anything and you have to ask there." msgstr "" #: modules/websession/lib/websession_templates.py:426 #, python-format msgid "" "Alternatively, you can ask %s to change your login system from external to " "internal." msgstr "" #: modules/websession/lib/websession_templates.py:453 #, python-format msgid "" "%s offers you the possibility to personalize the interface, to set up your " "own personal library of documents, or to set up an automatic alert query " "that would run periodically and would notify you of search results by email." msgstr "" #: modules/websession/lib/websession_templates.py:463 -#: modules/websession/lib/websession_webinterface.py:277 +#: modules/websession/lib/websession_webinterface.py:282 msgid "Your Settings" msgstr "" #: modules/websession/lib/websession_templates.py:464 msgid "" "Set or change your account email address or password. Specify your " "preferences about the look and feel of the interface." msgstr "" #: modules/websession/lib/websession_templates.py:472 msgid "View all the searches you performed during the last 30 days." msgstr "" +#: modules/websession/lib/websession_templates.py:479 +#: modules/websession/lib/websession_templates.py:625 +msgid "Your Baskets" +msgstr "" + #: modules/websession/lib/websession_templates.py:480 msgid "" "With baskets you can define specific collections of items, store interesting " "records you want to access later or share with others." msgstr "" #: modules/websession/lib/websession_templates.py:489 msgid "" "Subscribe to a search which will be run periodically by our service. The " "result can be sent to you via Email or stored in one of your baskets." msgstr "" #: modules/websession/lib/websession_templates.py:498 #: modules/websession/lib/websession_templates.py:622 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:116 msgid "Your Loans" msgstr "" #: modules/websession/lib/websession_templates.py:499 msgid "" "Check out book you have on loan, submit borrowing requests, etc. Requires " "CERN ID." msgstr "" #: modules/websession/lib/websession_templates.py:524 msgid "" "You are logged in as a guest user, so your alerts will disappear at the end " "of the current session." msgstr "" #: modules/websession/lib/websession_templates.py:547 #, python-format msgid "" "You are logged in as %(x_user)s. You may want to a) %(x_url1_open)slogout" "%(x_url1_close)s; b) edit your %(x_url2_open)saccount settings" "%(x_url2_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:628 msgid "Your Alert Searches" msgstr "" #: modules/websession/lib/websession_templates.py:634 #, python-format msgid "" "You can consult the list of %(x_url_open)syour groups%(x_url_close)s you are " "administering or are a member of." msgstr "" #: modules/websession/lib/websession_templates.py:637 #: modules/websession/lib/websession_templates.py:2347 -#: modules/websession/lib/websession_webinterface.py:1031 +#: modules/websession/lib/websession_webinterface.py:1049 +#: modules/websession/lib/websession_templates_epfl.py:262 msgid "Your Groups" msgstr "" #: modules/websession/lib/websession_templates.py:640 #, python-format msgid "" "You can consult the list of %(x_url_open)syour submissions%(x_url_close)s " "and inquire about their status." msgstr "" #: modules/websession/lib/websession_templates.py:643 #: modules/websubmit/web/yoursubmissions.py:160 msgid "Your Submissions" msgstr "" #: modules/websession/lib/websession_templates.py:646 #, python-format msgid "" "You can consult the list of %(x_url_open)syour approvals%(x_url_close)s with " "the documents you approved or refereed." msgstr "" #: modules/websession/lib/websession_templates.py:649 #: modules/websubmit/web/yourapprovals.py:88 msgid "Your Approvals" msgstr "" #: modules/websession/lib/websession_templates.py:653 #, python-format msgid "You can consult the list of %(x_url_open)syour tickets%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:656 msgid "Your Tickets" msgstr "" #: modules/websession/lib/websession_templates.py:658 -#: modules/websession/lib/websession_webinterface.py:650 +#: modules/websession/lib/websession_webinterface.py:655 msgid "Your Administrative Activities" msgstr "" #: modules/websession/lib/websession_templates.py:685 #: modules/bibharvest/lib/oai_harvest_admin.py:429 #: modules/bibharvest/lib/oai_harvest_admin.py:444 msgid "Try again" msgstr "" #: modules/websession/lib/websession_templates.py:707 #, python-format msgid "" "Somebody (possibly you) coming from %(x_ip_address)s has asked\n" "for a password reset at %(x_sitename)s\n" "for the account \"%(x_email)s\"." msgstr "" #: modules/websession/lib/websession_templates.py:715 msgid "If you want to reset the password for this account, please go to:" msgstr "" #: modules/websession/lib/websession_templates.py:721 #: modules/websession/lib/websession_templates.py:758 msgid "in order to confirm the validity of this request." msgstr "" #: modules/websession/lib/websession_templates.py:722 #: modules/websession/lib/websession_templates.py:759 #, python-format msgid "" "Please note that this URL will remain valid for about %(days)s days only." msgstr "" #: modules/websession/lib/websession_templates.py:744 #, python-format msgid "" "Somebody (possibly you) coming from %(x_ip_address)s has asked\n" "to register a new account at %(x_sitename)s\n" "for the email address \"%(x_email)s\"." msgstr "" #: modules/websession/lib/websession_templates.py:752 msgid "If you want to complete this account registration, please go to:" msgstr "" #: modules/websession/lib/websession_templates.py:778 #, python-format msgid "Okay, a password reset link has been emailed to %s." msgstr "" #: modules/websession/lib/websession_templates.py:793 msgid "Deleting your account" msgstr "" #: modules/websession/lib/websession_templates.py:807 msgid "You are no longer recognized by our system." msgstr "" #: modules/websession/lib/websession_templates.py:809 #, python-format msgid "" "You are still recognized by the centralized\n" " %(x_fmt_open)sSSO%(x_fmt_close)s system. You can\n" " %(x_url_open)slogout from SSO%(x_url_close)s, too." msgstr "" #: modules/websession/lib/websession_templates.py:816 #, python-format msgid "If you wish you can %(x_url_open)slogin here%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:847 msgid "If you already have an account, please login using the form below." msgstr "" #: modules/websession/lib/websession_templates.py:851 #, python-format msgid "" "If you don't own a CERN account yet, you can register a %(x_url_open)snew " "CERN lightweight account%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:854 #, python-format msgid "" "If you don't own an account yet, please %(x_url_open)sregister" "%(x_url_close)s an internal account." msgstr "" #: modules/websession/lib/websession_templates.py:862 #, python-format msgid "If you don't own an account yet, please contact %s." msgstr "" #: modules/websession/lib/websession_templates.py:885 msgid "Login method:" msgstr "" #: modules/websession/lib/websession_templates.py:914 msgid "Remember login on this computer." msgstr "" #: modules/websession/lib/websession_templates.py:915 #: modules/websession/lib/websession_templates.py:1193 -#: modules/websession/lib/websession_webinterface.py:101 -#: modules/websession/lib/websession_webinterface.py:196 -#: modules/websession/lib/websession_webinterface.py:766 -#: modules/websession/lib/websession_webinterface.py:850 +#: modules/websession/lib/websession_webinterface.py:104 +#: modules/websession/lib/websession_webinterface.py:199 +#: modules/websession/lib/websession_webinterface.py:771 +#: modules/websession/lib/websession_webinterface.py:868 +#: modules/websession/lib/websession_templates_epfl.py:298 msgid "login" msgstr "" #: modules/websession/lib/websession_templates.py:920 -#: modules/websession/lib/websession_webinterface.py:554 +#: modules/websession/lib/websession_webinterface.py:559 msgid "Lost your password?" msgstr "" #: modules/websession/lib/websession_templates.py:928 msgid "You can use your nickname or your email address to login." msgstr "" #: modules/websession/lib/websession_templates.py:952 msgid "" "Your request is valid. Please set the new desired password in the following " "form." msgstr "" #: modules/websession/lib/websession_templates.py:975 msgid "Set a new password for" msgstr "" #: modules/websession/lib/websession_templates.py:976 msgid "Type the new password" msgstr "" #: modules/websession/lib/websession_templates.py:977 msgid "Type again the new password" msgstr "" #: modules/websession/lib/websession_templates.py:978 msgid "Set the new password" msgstr "" #: modules/websession/lib/websession_templates.py:1000 msgid "Please enter your email address and desired nickname and password:" msgstr "" #: modules/websession/lib/websession_templates.py:1002 msgid "" "It will not be possible to use the account before it has been verified and " "activated." msgstr "" #: modules/websession/lib/websession_templates.py:1053 msgid "Retype Password" msgstr "" #: modules/websession/lib/websession_templates.py:1054 -#: modules/websession/lib/websession_webinterface.py:953 +#: modules/websession/lib/websession_webinterface.py:971 msgid "register" msgstr "" #: modules/websession/lib/websession_templates.py:1055 #, python-format msgid "" "Please do not use valuable passwords such as your Unix, AFS or NICE " "passwords with this service. Your email address will stay strictly " "confidential and will not be disclosed to any third party. It will be used " "to identify you for personal services of %s. For example, you may set up an " "automatic alert search that will look for new preprints and will notify you " "daily of new arrivals by email." msgstr "" #: modules/websession/lib/websession_templates.py:1059 #, python-format msgid "" "It is not possible to create an account yourself. Contact %s if you want an " "account." msgstr "" #: modules/websession/lib/websession_templates.py:1085 +#: modules/websession/lib/websession_templates_epfl.py:32 #, python-format msgid "" "You seem to be a guest user. You have to %(x_url_open)slogin%(x_url_close)s " "first." msgstr "" #: modules/websession/lib/websession_templates.py:1091 +#: modules/websession/lib/websession_templates_epfl.py:38 msgid "You are not authorized to access administrative functions." msgstr "" #: modules/websession/lib/websession_templates.py:1094 +#: modules/websession/lib/websession_templates_epfl.py:41 #, python-format msgid "You are enabled to the following roles: %(x_role)s." msgstr "" #: modules/websession/lib/websession_templates.py:1110 +#: modules/websession/lib/websession_templates_epfl.py:57 msgid "Run BibSword Client" msgstr "" #: modules/websession/lib/websession_templates.py:1136 +#: modules/websession/lib/websession_templates_epfl.py:82 msgid "Here are some interesting web admin links for you:" msgstr "" #: modules/websession/lib/websession_templates.py:1138 +#: modules/websession/lib/websession_templates_epfl.py:84 #, python-format msgid "" "For more admin-level activities, see the complete %(x_url_open)sAdmin Area" "%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:1191 msgid "guest" msgstr "" #: modules/websession/lib/websession_templates.py:1205 +#: modules/websession/lib/websession_templates_epfl.py:304 msgid "logout" msgstr "" #: modules/websession/lib/websession_templates.py:1253 #: modules/webstyle/lib/webstyle_templates.py:433 #: modules/webstyle/lib/webstyle_templates.py:501 msgid "Personalize" msgstr "" #: modules/websession/lib/websession_templates.py:1261 msgid "Your account" msgstr "" #: modules/websession/lib/websession_templates.py:1267 msgid "Your alerts" msgstr "" #: modules/websession/lib/websession_templates.py:1273 msgid "Your approvals" msgstr "" #: modules/websession/lib/websession_templates.py:1279 msgid "Your baskets" msgstr "" #: modules/websession/lib/websession_templates.py:1285 msgid "Your groups" msgstr "" #: modules/websession/lib/websession_templates.py:1291 msgid "Your loans" msgstr "" #: modules/websession/lib/websession_templates.py:1297 msgid "Your messages" msgstr "" #: modules/websession/lib/websession_templates.py:1303 msgid "Your submissions" msgstr "" #: modules/websession/lib/websession_templates.py:1309 msgid "Your searches" msgstr "" #: modules/websession/lib/websession_templates.py:1362 msgid "Administration" msgstr "" #: modules/websession/lib/websession_templates.py:1378 msgid "Statistics" msgstr "" #: modules/websession/lib/websession_templates.py:1505 msgid "You are an administrator of the following groups:" msgstr "" #: modules/websession/lib/websession_templates.py:1525 #: modules/websession/lib/websession_templates.py:1599 #: modules/websession/lib/websession_templates.py:1662 #: modules/websubmit/lib/websubmit_templates.py:3003 #: modules/websubmit/lib/websubmit_templates.py:3009 msgid "Group" msgstr "" #: modules/websession/lib/websession_templates.py:1532 msgid "You are not an administrator of any groups." msgstr "" #: modules/websession/lib/websession_templates.py:1539 msgid "Edit group" msgstr "" #: modules/websession/lib/websession_templates.py:1546 #, python-format msgid "Edit %s members" msgstr "" #: modules/websession/lib/websession_templates.py:1569 #: modules/websession/lib/websession_templates.py:1709 #: modules/websession/lib/websession_templates.py:1711 -#: modules/websession/lib/websession_webinterface.py:1091 +#: modules/websession/lib/websession_webinterface.py:1109 msgid "Create new group" msgstr "" #: modules/websession/lib/websession_templates.py:1583 msgid "You are a member of the following groups:" msgstr "" #: modules/websession/lib/websession_templates.py:1606 msgid "You are not a member of any groups." msgstr "" #: modules/websession/lib/websession_templates.py:1630 msgid "Join new group" msgstr "" #: modules/websession/lib/websession_templates.py:1631 #: modules/websession/lib/websession_templates.py:2183 #: modules/websession/lib/websession_templates.py:2194 msgid "Leave group" msgstr "" #: modules/websession/lib/websession_templates.py:1646 msgid "You are a member of the following external groups:" msgstr "" #: modules/websession/lib/websession_templates.py:1669 msgid "You are not a member of any external groups." msgstr "" #: modules/websession/lib/websession_templates.py:1717 msgid "Update group" msgstr "" #: modules/websession/lib/websession_templates.py:1719 #, python-format msgid "Edit group %s" msgstr "" #: modules/websession/lib/websession_templates.py:1721 msgid "Delete group" msgstr "" #: modules/websession/lib/websession_templates.py:1794 msgid "Group name:" msgstr "" #: modules/websession/lib/websession_templates.py:1796 msgid "Group description:" msgstr "" #: modules/websession/lib/websession_templates.py:1797 msgid "Group join policy:" msgstr "" #: modules/websession/lib/websession_templates.py:1838 #: modules/websession/lib/websession_templates.py:1911 #: modules/websession/lib/websession_templates.py:2052 #: modules/websession/lib/websession_templates.py:2061 #: modules/websession/lib/websession_templates.py:2181 #: modules/websession/lib/websession_templates.py:2293 msgid "Please select:" msgstr "" #: modules/websession/lib/websession_templates.py:1904 msgid "Join group" msgstr "" #: modules/websession/lib/websession_templates.py:1906 msgid "or find it" msgstr "" #: modules/websession/lib/websession_templates.py:1907 msgid "Choose group:" msgstr "" #: modules/websession/lib/websession_templates.py:1909 msgid "Find group" msgstr "" #: modules/websession/lib/websession_templates.py:2057 msgid "Remove member" msgstr "" #: modules/websession/lib/websession_templates.py:2059 msgid "No members." msgstr "" #: modules/websession/lib/websession_templates.py:2069 msgid "Accept member" msgstr "" #: modules/websession/lib/websession_templates.py:2069 msgid "Reject member" msgstr "" #: modules/websession/lib/websession_templates.py:2071 msgid "No members awaiting approval." msgstr "" #: modules/websession/lib/websession_templates.py:2073 #: modules/websession/lib/websession_templates.py:2107 msgid "Current members" msgstr "" #: modules/websession/lib/websession_templates.py:2074 #: modules/websession/lib/websession_templates.py:2108 msgid "Members awaiting approval" msgstr "" #: modules/websession/lib/websession_templates.py:2075 #: modules/websession/lib/websession_templates.py:2109 msgid "Invite new members" msgstr "" #: modules/websession/lib/websession_templates.py:2080 #, python-format msgid "Invitation to join \"%s\" group" msgstr "" #: modules/websession/lib/websession_templates.py:2081 #, python-format msgid "" "Hello:\n" "\n" "I think you might be interested in joining the group \"%(x_name)s\".\n" "You can join by clicking here: %(x_url)s.\n" "\n" "Best regards.\n" msgstr "" #: modules/websession/lib/websession_templates.py:2095 #, python-format msgid "" "If you want to invite new members to join your group, please use the " "%(x_url_open)sweb message%(x_url_close)s system." msgstr "" #: modules/websession/lib/websession_templates.py:2099 #, python-format msgid "Group: %s" msgstr "" #: modules/websession/lib/websession_templates.py:2182 msgid "Group list" msgstr "" #: modules/websession/lib/websession_templates.py:2185 msgid "You are not member of any group." msgstr "" #: modules/websession/lib/websession_templates.py:2233 msgid "Are you sure you want to delete this group?" msgstr "" #: modules/websession/lib/websession_templates.py:2273 msgid "Are you sure you want to leave this group?" msgstr "" #: modules/websession/lib/websession_templates.py:2289 msgid "Visible and open for new members" msgstr "" #: modules/websession/lib/websession_templates.py:2291 msgid "Visible but new members need approval" msgstr "" #: modules/websession/lib/websession_templates.py:2376 #, python-format msgid "Group %s: New membership request" msgstr "" #: modules/websession/lib/websession_templates.py:2380 #, python-format msgid "A user wants to join the group %s." msgstr "" #: modules/websession/lib/websession_templates.py:2381 #, python-format msgid "" "Please %(x_url_open)saccept or reject%(x_url_close)s this user's request." msgstr "" #: modules/websession/lib/websession_templates.py:2398 #, python-format msgid "Group %s: Join request has been accepted" msgstr "" #: modules/websession/lib/websession_templates.py:2399 #, python-format msgid "Your request for joining group %s has been accepted." msgstr "" #: modules/websession/lib/websession_templates.py:2401 #, python-format msgid "Group %s: Join request has been rejected" msgstr "" #: modules/websession/lib/websession_templates.py:2402 #, python-format msgid "Your request for joining group %s has been rejected." msgstr "" #: modules/websession/lib/websession_templates.py:2405 #: modules/websession/lib/websession_templates.py:2423 #, python-format msgid "You can consult the list of %(x_url_open)syour groups%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:2419 #, python-format msgid "Group %s has been deleted" msgstr "" #: modules/websession/lib/websession_templates.py:2421 #, python-format msgid "Group %s has been deleted by its administrator." msgstr "" #: modules/websession/lib/websession_templates.py:2438 #, python-format msgid "" "You can consult the list of %(x_url_open)s%(x_nb_total)i groups" "%(x_url_close)s you are subscribed to (%(x_nb_member)i) or administering " "(%(x_nb_admin)i)." msgstr "" #: modules/websession/lib/websession_templates.py:2457 msgid "" "Warning: The password set for MySQL root user is the same as the default " "Invenio password. For security purposes, you may want to change the password." msgstr "" #: modules/websession/lib/websession_templates.py:2463 msgid "" "Warning: The password set for the Invenio MySQL user is the same as the " "shipped default. For security purposes, you may want to change the password." msgstr "" #: modules/websession/lib/websession_templates.py:2469 msgid "" "Warning: The password set for the Invenio admin user is currently empty. For " "security purposes, it is strongly recommended that you add a password." msgstr "" #: modules/websession/lib/websession_templates.py:2475 msgid "" "Warning: The email address set for support email is currently set to " "info@invenio-software.org. It is recommended that you change this to your " "own address." msgstr "" #: modules/websession/lib/websession_templates.py:2481 msgid "" "A newer version of Invenio is available for download. You may want to visit " msgstr "" #: modules/websession/lib/websession_templates.py:2488 msgid "" "Cannot download or parse release notes from http://invenio-software.org/repo/" "invenio/tree/RELEASE-NOTES" msgstr "" -#: modules/websession/lib/webuser.py:156 -msgid "Database problem" +#: modules/websession/lib/webuser.py:147 +msgid "Maintenance status" msgstr "" -#: modules/websession/lib/webuser.py:304 +#: modules/websession/lib/webuser.py:148 +msgid "Infoscience is currently down for maintenance." +msgstr "" + +#: modules/websession/lib/webuser.py:149 +msgid "We expect to be back online shortly, thanks for your patience." +msgstr "" + +#: modules/websession/lib/webuser.py:150 +msgid "In case of trouble, please contact" +msgstr "" + +#: modules/websession/lib/webuser.py:327 #: modules/websession/lib/webgroup_dblayer.py:314 msgid "user" msgstr "" -#: modules/websession/lib/webuser.py:479 +#: modules/websession/lib/webuser.py:502 #, python-format msgid "Account registration at %s" msgstr "" -#: modules/websession/lib/webuser.py:712 +#: modules/websession/lib/webuser.py:735 msgid "New account on" msgstr "" -#: modules/websession/lib/webuser.py:714 +#: modules/websession/lib/webuser.py:737 msgid "PLEASE ACTIVATE" msgstr "" -#: modules/websession/lib/webuser.py:715 +#: modules/websession/lib/webuser.py:738 msgid "A new account has been created on" msgstr "" -#: modules/websession/lib/webuser.py:717 +#: modules/websession/lib/webuser.py:740 msgid " and is awaiting activation" msgstr "" -#: modules/websession/lib/webuser.py:719 +#: modules/websession/lib/webuser.py:742 msgid " Username/Email" msgstr "" -#: modules/websession/lib/webuser.py:720 +#: modules/websession/lib/webuser.py:743 msgid "You can approve or reject this account request at" msgstr "" -#: modules/websession/lib/webuser.py:902 modules/websession/lib/webuser.py:903 +#: modules/websession/lib/webuser.py:925 modules/websession/lib/webuser.py:926 msgid "Run File Manager" msgstr "" -#: modules/websession/lib/websession_webinterface.py:83 +#: modules/websession/lib/websession_webinterface.py:86 msgid "Mail Cookie Service" msgstr "" -#: modules/websession/lib/websession_webinterface.py:93 +#: modules/websession/lib/websession_webinterface.py:96 msgid "Role authorization request" msgstr "" -#: modules/websession/lib/websession_webinterface.py:93 +#: modules/websession/lib/websession_webinterface.py:96 msgid "This request for an authorization has already been authorized." msgstr "" -#: modules/websession/lib/websession_webinterface.py:96 +#: modules/websession/lib/websession_webinterface.py:99 #, python-format msgid "" "You have successfully obtained an authorization as %(x_role)s! This " "authorization will last until %(x_expiration)s and until you close your " "browser if you are a guest user." msgstr "" -#: modules/websession/lib/websession_webinterface.py:114 +#: modules/websession/lib/websession_webinterface.py:117 msgid "You have confirmed the validity of your email address!" msgstr "" -#: modules/websession/lib/websession_webinterface.py:117 -#: modules/websession/lib/websession_webinterface.py:127 +#: modules/websession/lib/websession_webinterface.py:120 +#: modules/websession/lib/websession_webinterface.py:130 msgid "Please, wait for the administrator to enable your account." msgstr "" -#: modules/websession/lib/websession_webinterface.py:121 -#: modules/websession/lib/websession_webinterface.py:130 +#: modules/websession/lib/websession_webinterface.py:124 +#: modules/websession/lib/websession_webinterface.py:133 #, python-format msgid "You can now go to %(x_url_open)syour account page%(x_url_close)s." msgstr "" -#: modules/websession/lib/websession_webinterface.py:122 -#: modules/websession/lib/websession_webinterface.py:131 +#: modules/websession/lib/websession_webinterface.py:125 +#: modules/websession/lib/websession_webinterface.py:134 msgid "Email address successfully activated" msgstr "" -#: modules/websession/lib/websession_webinterface.py:125 +#: modules/websession/lib/websession_webinterface.py:128 msgid "You have already confirmed the validity of your email address!" msgstr "" -#: modules/websession/lib/websession_webinterface.py:134 +#: modules/websession/lib/websession_webinterface.py:137 msgid "" "This request for confirmation of an email address is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:139 +#: modules/websession/lib/websession_webinterface.py:142 msgid "This request for an authorization is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:152 +#: modules/websession/lib/websession_webinterface.py:155 msgid "Reset password" msgstr "" -#: modules/websession/lib/websession_webinterface.py:158 +#: modules/websession/lib/websession_webinterface.py:161 msgid "This request for resetting a password has already been used." msgstr "" -#: modules/websession/lib/websession_webinterface.py:161 +#: modules/websession/lib/websession_webinterface.py:164 msgid "This request for resetting a password is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:166 +#: modules/websession/lib/websession_webinterface.py:169 msgid "This request for resetting the password is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:179 +#: modules/websession/lib/websession_webinterface.py:182 msgid "The two provided passwords aren't equal." msgstr "" -#: modules/websession/lib/websession_webinterface.py:194 +#: modules/websession/lib/websession_webinterface.py:197 msgid "The password was successfully set! You can now proceed with the login." msgstr "" -#: modules/websession/lib/websession_webinterface.py:283 +#: modules/websession/lib/websession_webinterface.py:288 #, python-format msgid "%s Personalize, Your Settings" msgstr "" -#: modules/websession/lib/websession_webinterface.py:351 -#: modules/websession/lib/websession_webinterface.py:427 -#: modules/websession/lib/websession_webinterface.py:489 -#: modules/websession/lib/websession_webinterface.py:502 -#: modules/websession/lib/websession_webinterface.py:515 +#: modules/websession/lib/websession_webinterface.py:356 +#: modules/websession/lib/websession_webinterface.py:432 +#: modules/websession/lib/websession_webinterface.py:494 +#: modules/websession/lib/websession_webinterface.py:507 +#: modules/websession/lib/websession_webinterface.py:520 msgid "Settings edited" msgstr "" -#: modules/websession/lib/websession_webinterface.py:353 -#: modules/websession/lib/websession_webinterface.py:426 -#: modules/websession/lib/websession_webinterface.py:467 -#: modules/websession/lib/websession_webinterface.py:491 -#: modules/websession/lib/websession_webinterface.py:504 -#: modules/websession/lib/websession_webinterface.py:510 +#: modules/websession/lib/websession_webinterface.py:358 +#: modules/websession/lib/websession_webinterface.py:431 +#: modules/websession/lib/websession_webinterface.py:472 +#: modules/websession/lib/websession_webinterface.py:496 +#: modules/websession/lib/websession_webinterface.py:509 +#: modules/websession/lib/websession_webinterface.py:515 msgid "Show account" msgstr "" -#: modules/websession/lib/websession_webinterface.py:357 +#: modules/websession/lib/websession_webinterface.py:362 msgid "Unable to change login method." msgstr "" -#: modules/websession/lib/websession_webinterface.py:365 +#: modules/websession/lib/websession_webinterface.py:370 msgid "Switched to internal login method." msgstr "" -#: modules/websession/lib/websession_webinterface.py:366 +#: modules/websession/lib/websession_webinterface.py:371 msgid "" "Please note that if this is the first time that you are using this account " "with the internal login method then the system has set for you a randomly " "generated password. Please click the following button to obtain a password " "reset request link sent to you via email:" msgstr "" -#: modules/websession/lib/websession_webinterface.py:374 +#: modules/websession/lib/websession_webinterface.py:379 msgid "Send Password" msgstr "" -#: modules/websession/lib/websession_webinterface.py:384 +#: modules/websession/lib/websession_webinterface.py:389 #, python-format msgid "" "Unable to switch to external login method %s, because your email address is " "unknown." msgstr "" -#: modules/websession/lib/websession_webinterface.py:388 +#: modules/websession/lib/websession_webinterface.py:393 #, python-format msgid "" "Unable to switch to external login method %s, because your email address is " "unknown to the external login system." msgstr "" -#: modules/websession/lib/websession_webinterface.py:392 +#: modules/websession/lib/websession_webinterface.py:397 msgid "Login method successfully selected." msgstr "" -#: modules/websession/lib/websession_webinterface.py:394 +#: modules/websession/lib/websession_webinterface.py:399 #, python-format msgid "" "The external login method %s does not support email address based logins. " "Please contact the site administrators." msgstr "" -#: modules/websession/lib/websession_webinterface.py:406 +#: modules/websession/lib/websession_webinterface.py:411 msgid "Your nickname has not been updated" msgstr "" -#: modules/websession/lib/websession_webinterface.py:420 +#: modules/websession/lib/websession_webinterface.py:425 msgid "Settings successfully edited." msgstr "" -#: modules/websession/lib/websession_webinterface.py:421 +#: modules/websession/lib/websession_webinterface.py:426 #, python-format msgid "" "Note that if you have changed your email address, you will have to " "%(x_url_open)sreset your password%(x_url_close)s anew." msgstr "" -#: modules/websession/lib/websession_webinterface.py:429 -#: modules/websession/lib/websession_webinterface.py:923 +#: modules/websession/lib/websession_webinterface.py:434 +#: modules/websession/lib/websession_webinterface.py:941 #, python-format msgid "Desired nickname %s is invalid." msgstr "" -#: modules/websession/lib/websession_webinterface.py:430 -#: modules/websession/lib/websession_webinterface.py:436 -#: modules/websession/lib/websession_webinterface.py:449 -#: modules/websession/lib/websession_webinterface.py:471 -#: modules/websession/lib/websession_webinterface.py:477 -#: modules/websession/lib/websession_webinterface.py:914 -#: modules/websession/lib/websession_webinterface.py:919 -#: modules/websession/lib/websession_webinterface.py:924 -#: modules/websession/lib/websession_webinterface.py:935 +#: modules/websession/lib/websession_webinterface.py:435 +#: modules/websession/lib/websession_webinterface.py:441 +#: modules/websession/lib/websession_webinterface.py:454 +#: modules/websession/lib/websession_webinterface.py:476 +#: modules/websession/lib/websession_webinterface.py:482 +#: modules/websession/lib/websession_webinterface.py:932 +#: modules/websession/lib/websession_webinterface.py:937 +#: modules/websession/lib/websession_webinterface.py:942 +#: modules/websession/lib/websession_webinterface.py:953 msgid "Please try again." msgstr "" -#: modules/websession/lib/websession_webinterface.py:432 -#: modules/websession/lib/websession_webinterface.py:438 -#: modules/websession/lib/websession_webinterface.py:445 -#: modules/websession/lib/websession_webinterface.py:451 -#: modules/websession/lib/websession_webinterface.py:473 -#: modules/websession/lib/websession_webinterface.py:479 -#: modules/websession/lib/websession_webinterface.py:526 +#: modules/websession/lib/websession_webinterface.py:437 +#: modules/websession/lib/websession_webinterface.py:443 +#: modules/websession/lib/websession_webinterface.py:450 +#: modules/websession/lib/websession_webinterface.py:456 +#: modules/websession/lib/websession_webinterface.py:478 +#: modules/websession/lib/websession_webinterface.py:484 +#: modules/websession/lib/websession_webinterface.py:531 msgid "Edit settings" msgstr "" -#: modules/websession/lib/websession_webinterface.py:433 -#: modules/websession/lib/websession_webinterface.py:439 -#: modules/websession/lib/websession_webinterface.py:446 -#: modules/websession/lib/websession_webinterface.py:452 -#: modules/websession/lib/websession_webinterface.py:528 +#: modules/websession/lib/websession_webinterface.py:438 +#: modules/websession/lib/websession_webinterface.py:444 +#: modules/websession/lib/websession_webinterface.py:451 +#: modules/websession/lib/websession_webinterface.py:457 +#: modules/websession/lib/websession_webinterface.py:533 msgid "Editing settings failed" msgstr "" -#: modules/websession/lib/websession_webinterface.py:435 -#: modules/websession/lib/websession_webinterface.py:918 +#: modules/websession/lib/websession_webinterface.py:440 +#: modules/websession/lib/websession_webinterface.py:936 #, python-format msgid "Supplied email address %s is invalid." msgstr "" -#: modules/websession/lib/websession_webinterface.py:441 -#: modules/websession/lib/websession_webinterface.py:928 +#: modules/websession/lib/websession_webinterface.py:446 +#: modules/websession/lib/websession_webinterface.py:946 #, python-format msgid "Supplied email address %s already exists in the database." msgstr "" -#: modules/websession/lib/websession_webinterface.py:443 -#: modules/websession/lib/websession_webinterface.py:930 +#: modules/websession/lib/websession_webinterface.py:448 +#: modules/websession/lib/websession_webinterface.py:948 msgid "Or please try again." msgstr "" -#: modules/websession/lib/websession_webinterface.py:448 +#: modules/websession/lib/websession_webinterface.py:453 #, python-format msgid "Desired nickname %s is already in use." msgstr "" -#: modules/websession/lib/websession_webinterface.py:457 +#: modules/websession/lib/websession_webinterface.py:462 msgid "Users cannot edit passwords on this site." msgstr "" -#: modules/websession/lib/websession_webinterface.py:465 +#: modules/websession/lib/websession_webinterface.py:470 msgid "Password successfully edited." msgstr "" -#: modules/websession/lib/websession_webinterface.py:468 +#: modules/websession/lib/websession_webinterface.py:473 msgid "Password edited" msgstr "" -#: modules/websession/lib/websession_webinterface.py:470 -#: modules/websession/lib/websession_webinterface.py:913 +#: modules/websession/lib/websession_webinterface.py:475 +#: modules/websession/lib/websession_webinterface.py:931 msgid "Both passwords must match." msgstr "" -#: modules/websession/lib/websession_webinterface.py:474 -#: modules/websession/lib/websession_webinterface.py:480 +#: modules/websession/lib/websession_webinterface.py:479 +#: modules/websession/lib/websession_webinterface.py:485 msgid "Editing password failed" msgstr "" -#: modules/websession/lib/websession_webinterface.py:476 +#: modules/websession/lib/websession_webinterface.py:481 msgid "Wrong old password inserted." msgstr "" -#: modules/websession/lib/websession_webinterface.py:492 -#: modules/websession/lib/websession_webinterface.py:505 -#: modules/websession/lib/websession_webinterface.py:519 +#: modules/websession/lib/websession_webinterface.py:497 +#: modules/websession/lib/websession_webinterface.py:510 +#: modules/websession/lib/websession_webinterface.py:524 msgid "User settings saved correctly." msgstr "" -#: modules/websession/lib/websession_webinterface.py:512 +#: modules/websession/lib/websession_webinterface.py:517 msgid "Editing bibcatalog authorization failed" msgstr "" -#: modules/websession/lib/websession_webinterface.py:513 +#: modules/websession/lib/websession_webinterface.py:518 msgid "Empty username or password" msgstr "" -#: modules/websession/lib/websession_webinterface.py:522 +#: modules/websession/lib/websession_webinterface.py:527 msgid "Unable to update settings." msgstr "" -#: modules/websession/lib/websession_webinterface.py:583 +#: modules/websession/lib/websession_webinterface.py:588 msgid "" "Cannot send password reset request since you are using external " "authentication system." msgstr "" -#: modules/websession/lib/websession_webinterface.py:599 +#: modules/websession/lib/websession_webinterface.py:604 msgid "The entered email address does not exist in the database." msgstr "" -#: modules/websession/lib/websession_webinterface.py:613 +#: modules/websession/lib/websession_webinterface.py:618 msgid "Password reset request for" msgstr "" -#: modules/websession/lib/websession_webinterface.py:617 +#: modules/websession/lib/websession_webinterface.py:622 msgid "" "The entered email address is incorrect, please check that it is written " "correctly (e.g. johndoe@example.com)." msgstr "" -#: modules/websession/lib/websession_webinterface.py:618 +#: modules/websession/lib/websession_webinterface.py:623 msgid "Incorrect email address" msgstr "" -#: modules/websession/lib/websession_webinterface.py:628 +#: modules/websession/lib/websession_webinterface.py:633 msgid "Reset password link sent" msgstr "" -#: modules/websession/lib/websession_webinterface.py:673 +#: modules/websession/lib/websession_webinterface.py:678 msgid "Delete Account" msgstr "" -#: modules/websession/lib/websession_webinterface.py:699 +#: modules/websession/lib/websession_webinterface.py:704 msgid "Logout" msgstr "" -#: modules/websession/lib/websession_webinterface.py:765 -#: modules/websession/lib/websession_webinterface.py:814 -#: modules/websession/lib/websession_webinterface.py:849 +#: modules/websession/lib/websession_webinterface.py:770 +#: modules/websession/lib/websession_webinterface.py:832 +#: modules/websession/lib/websession_webinterface.py:867 +#: modules/webstyle/lib/webstyle_templates_epfl.py:165 msgid "Login" msgstr "" -#: modules/websession/lib/websession_webinterface.py:880 +#: modules/websession/lib/websession_webinterface.py:898 msgid "Register" msgstr "" -#: modules/websession/lib/websession_webinterface.py:883 -#: modules/websession/lib/websession_webinterface.py:955 +#: modules/websession/lib/websession_webinterface.py:901 +#: modules/websession/lib/websession_webinterface.py:973 #, python-format msgid "%s Personalize, Main page" msgstr "" -#: modules/websession/lib/websession_webinterface.py:900 +#: modules/websession/lib/websession_webinterface.py:918 msgid "Your account has been successfully created." msgstr "" -#: modules/websession/lib/websession_webinterface.py:901 +#: modules/websession/lib/websession_webinterface.py:919 msgid "Account created" msgstr "" -#: modules/websession/lib/websession_webinterface.py:903 +#: modules/websession/lib/websession_webinterface.py:921 msgid "" "In order to confirm its validity, an email message containing an account " "activation key has been sent to the given email address." msgstr "" -#: modules/websession/lib/websession_webinterface.py:904 +#: modules/websession/lib/websession_webinterface.py:922 msgid "" "Please follow instructions presented there in order to complete the account " "registration process." msgstr "" -#: modules/websession/lib/websession_webinterface.py:906 +#: modules/websession/lib/websession_webinterface.py:924 msgid "" "A second email will be sent when the account has been activated and can be " "used." msgstr "" -#: modules/websession/lib/websession_webinterface.py:909 +#: modules/websession/lib/websession_webinterface.py:927 #, python-format msgid "You can now access your %(x_url_open)saccount%(x_url_close)s." msgstr "" -#: modules/websession/lib/websession_webinterface.py:916 -#: modules/websession/lib/websession_webinterface.py:921 -#: modules/websession/lib/websession_webinterface.py:926 -#: modules/websession/lib/websession_webinterface.py:932 -#: modules/websession/lib/websession_webinterface.py:937 -#: modules/websession/lib/websession_webinterface.py:941 -#: modules/websession/lib/websession_webinterface.py:945 +#: modules/websession/lib/websession_webinterface.py:934 +#: modules/websession/lib/websession_webinterface.py:939 +#: modules/websession/lib/websession_webinterface.py:944 #: modules/websession/lib/websession_webinterface.py:950 +#: modules/websession/lib/websession_webinterface.py:955 +#: modules/websession/lib/websession_webinterface.py:959 +#: modules/websession/lib/websession_webinterface.py:963 +#: modules/websession/lib/websession_webinterface.py:968 msgid "Registration failure" msgstr "" -#: modules/websession/lib/websession_webinterface.py:934 +#: modules/websession/lib/websession_webinterface.py:952 #, python-format msgid "Desired nickname %s already exists in the database." msgstr "" -#: modules/websession/lib/websession_webinterface.py:939 +#: modules/websession/lib/websession_webinterface.py:957 msgid "Users cannot register themselves, only admin can register them." msgstr "" -#: modules/websession/lib/websession_webinterface.py:943 +#: modules/websession/lib/websession_webinterface.py:961 msgid "" "The site is having troubles in sending you an email for confirming your " "email address." msgstr "" -#: modules/websession/lib/websession_webinterface.py:943 +#: modules/websession/lib/websession_webinterface.py:961 #: modules/websubmit/lib/websubmit_webinterface.py:141 msgid "" "The error has been logged and will be taken in consideration as soon as " "possible." msgstr "" -#: modules/websession/lib/websession_webinterface.py:990 +#: modules/websession/lib/websession_webinterface.py:1008 msgid "Your tickets" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1026 -#: modules/websession/lib/websession_webinterface.py:1071 -#: modules/websession/lib/websession_webinterface.py:1132 -#: modules/websession/lib/websession_webinterface.py:1196 -#: modules/websession/lib/websession_webinterface.py:1255 -#: modules/websession/lib/websession_webinterface.py:1328 +#: modules/websession/lib/websession_webinterface.py:1044 +#: modules/websession/lib/websession_webinterface.py:1089 +#: modules/websession/lib/websession_webinterface.py:1150 +#: modules/websession/lib/websession_webinterface.py:1214 +#: modules/websession/lib/websession_webinterface.py:1273 +#: modules/websession/lib/websession_webinterface.py:1346 msgid "You are not authorized to use groups." msgstr "" -#: modules/websession/lib/websession_webinterface.py:1157 +#: modules/websession/lib/websession_webinterface.py:1175 msgid "Join New Group" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1211 +#: modules/websession/lib/websession_webinterface.py:1229 msgid "Leave Group" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1283 +#: modules/websession/lib/websession_webinterface.py:1301 msgid "Edit Group" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1357 +#: modules/websession/lib/websession_webinterface.py:1375 msgid "Edit group members" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:85 #: modules/webstyle/lib/webstyle_templates.py:94 msgid "Home" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:432 #: modules/webstyle/lib/webstyle_templates.py:500 #: modules/websubmit/lib/websubmit_engine.py:690 #: modules/websubmit/lib/websubmit_engine.py:1144 #: modules/websubmit/lib/websubmit_engine.py:1190 #: modules/websubmit/lib/websubmit_engine.py:1423 msgid "Submit" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:434 #: modules/webstyle/lib/webstyle_templates.py:502 +#: modules/webstyle/lib/webstyle_templates_epfl.py:474 msgid "Help" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:466 msgid "Last updated" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:504 msgid "Powered by" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:505 msgid "Maintained by" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:552 msgid "This site is also available in the following languages:" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:585 msgid "Browser" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:607 msgid "System Error" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:622 msgid "Traceback" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:669 msgid "Client" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:671 msgid "Please send an error report to the administrator." msgstr "" #: modules/webstyle/lib/webstyle_templates.py:672 msgid "Send error report" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:676 #, python-format msgid "Please contact %s quoting the following information:" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:832 #, python-format msgid "" "Record created %(x_date_creation)s, last modified %(x_date_modification)s" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:903 msgid "The server encountered an error while dealing with your request." msgstr "" #: modules/webstyle/lib/webstyle_templates.py:904 msgid "The system administrators have been alerted." msgstr "" #: modules/webstyle/lib/webstyle_templates.py:905 #, python-format msgid "In case of doubt, please contact %(x_admin_email)s." msgstr "" #: modules/webstyle/lib/webdoc.py:547 #, python-format msgid "%(category)s Pages" msgstr "" +#: modules/webstyle/lib/webdoc_tests.py:105 +#: modules/webstyle/lib/webdoc_webinterface.py:155 +msgid "Help Central" +msgstr "" + #: modules/webstyle/lib/webdoc_webinterface.py:144 #: modules/webstyle/lib/webdoc_webinterface.py:149 msgid "Admin Pages" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:146 #: modules/webstyle/lib/webdoc_webinterface.py:150 msgid "Help Pages" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:148 #: modules/webstyle/lib/webdoc_webinterface.py:151 msgid "Hacking Pages" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:157 msgid "Hacking Invenio" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:159 msgid "Latest modifications:" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:162 #, python-format msgid "This is the table of contents of the %(x_category)s pages." msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:164 msgid "See also" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:179 #, python-format msgid "Page %s Not Found" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:187 #, python-format msgid "Sorry, page %s does not seem to exist." msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:190 #, python-format msgid "" "You may want to look at the %(x_url_open)s%(x_category)s pages" "%(x_url_close)s." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:368 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:443 msgid "Choose a file" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:376 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:459 msgid "Access" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:536 #, python-format msgid "" "The uploaded file is too small (<%i o) and has therefore not been considered" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:541 #, python-format msgid "" "The uploaded file is too big (>%i o) and has therefore not been considered" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:548 msgid "" "The uploaded file name is too long and has therefore not been considered" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:560 msgid "" "You have already reached the maximum number of files for this type of " "document" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:583 #: modules/websubmit/lib/websubmit_managedocfiles.py:594 #: modules/websubmit/lib/websubmit_managedocfiles.py:704 #, python-format msgid "A file named %s already exists. Please choose another name." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:605 #, python-format msgid "A file with format '%s' already exists. Please upload another format." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:613 msgid "" "You are not allowed to use dot '.', slash '/', or backslash '\\\\' in file " "names. Choose a different name and upload your file again. In particular, " "note that you should not include the extension in the renaming field." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:784 msgid "Choose how you want to restrict access to this file." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:817 msgid "Add new file" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:842 msgid "You can decide to hide or not previous version(s) of this file." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:843 msgid "" "When you revise a file, the additional formats that you might have " "previously uploaded are removed, since they no longer up-to-date with the " "new file." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:844 msgid "" "Alternative formats uploaded for current version of this file will be removed" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:845 msgid "Keep previous versions" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:847 msgid "Upload" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:859 #: modules/websubmit/lib/websubmit_webinterface.py:449 #: modules/bibedit/lib/bibeditmulti_templates.py:305 msgid "Apply changes" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:864 #, python-format msgid "Need help revising or adding files to record %(recid)s" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:866 #, python-format msgid "" "Dear Support,\n" "I would need help to revise or add a file to record %(recid)s.\n" "I have attached the new version to this email.\n" "Best regards" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:871 #, python-format msgid "" "Having a problem revising a file? Send the revised version to " "%(mailto_link)s." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:874 #, python-format msgid "" "Having a problem adding or revising a file? Send the new/revised version to " "%(mailto_link)s." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:989 msgid "revise" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:1033 msgid "add format" msgstr "" #: modules/websubmit/lib/functions/Shared_Functions.py:178 msgid "" "Note that your submission has been inserted into the bibliographic task " "queue and is waiting for execution.\n" msgstr "" #: modules/websubmit/lib/functions/Shared_Functions.py:181 #, python-format msgid "" "The task queue is currently running in automatic mode, and there are " "currently %s tasks waiting to be executed. Your record should be available " "within a few minutes and searchable within an hour or thereabouts.\n" msgstr "" #: modules/websubmit/lib/functions/Shared_Functions.py:183 msgid "" "Because of a human intervention or a temporary problem, the task queue is " "currently set to the manual mode. Your submission is well registered but may " "take longer than usual before it is fully integrated and searchable.\n" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:177 #: modules/websubmit/lib/websubmit_engine.py:790 #: modules/websubmit/web/yoursubmissions.py:61 msgid "Sorry, you must log in to perform this action." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:184 #: modules/websubmit/lib/websubmit_engine.py:820 msgid "Not enough information to go ahead with the submission." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:190 #: modules/websubmit/lib/websubmit_engine.py:271 #: modules/websubmit/lib/websubmit_engine.py:281 #: modules/websubmit/lib/websubmit_engine.py:353 #: modules/websubmit/lib/websubmit_engine.py:394 #: modules/websubmit/lib/websubmit_engine.py:834 #: modules/websubmit/lib/websubmit_engine.py:872 #: modules/websubmit/lib/websubmit_engine.py:930 #: modules/websubmit/lib/websubmit_engine.py:971 msgid "Invalid parameters" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:196 #: modules/websubmit/lib/websubmit_engine.py:826 msgid "Invalid doctype and act parameters" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:227 #: modules/websubmit/lib/websubmit_engine.py:799 #: modules/websubmit/lib/websubmit_engine.py:861 #, python-format msgid "Unable to find the submission directory for the action: %s" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:236 #: modules/websubmit/lib/websubmit_engine.py:1014 msgid "Unknown document type" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:242 #: modules/websubmit/lib/websubmit_engine.py:1020 msgid "Unknown action" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:250 #: modules/websubmit/lib/websubmit_engine.py:1027 msgid "Unable to determine the number of submission pages." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:291 #: modules/websubmit/lib/websubmit_engine.py:880 msgid "" "Unable to create a directory for this submission. The administrator has been " "alerted." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:400 #: modules/websubmit/lib/websubmit_engine.py:978 msgid "Cannot create submission directory. The administrator has been alerted." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:422 #: modules/websubmit/lib/websubmit_engine.py:1000 msgid "No file uploaded?" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:463 #: modules/websubmit/lib/websubmit_engine.py:466 #: modules/websubmit/lib/websubmit_engine.py:599 #: modules/websubmit/lib/websubmit_engine.py:602 msgid "Unknown form field found on submission page." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1063 msgid "" "A serious function-error has been encountered. Adminstrators have been " "alerted.
    Please not that this might be due to wrong characters " "inserted into the form (e.g. by copy and pasting some text from a PDF " "file)." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1386 #, python-format msgid "Unable to find document type: %s" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1672 msgid "The chosen action is not supported by the document type." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1749 #: modules/websubmit/lib/websubmit_webinterface.py:1128 #: modules/websubmit/web/approve.py:81 msgid "Warning" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:84 msgid "Document types available for submission" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:85 msgid "Please select the type of document you want to submit" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:102 msgid "No document types available." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:268 msgid "Please log in first." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:268 msgid "Use the top-right menu to log in." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:312 msgid "Please select a category" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:351 msgid "Notice" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:352 msgid "Select a category and then click on an action button." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:375 msgid "" "To continue with a previously interrupted submission, enter an access number " "into the box below:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:377 msgid "GO" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:498 #: modules/websubmit/lib/websubmit_templates.py:967 msgid "SUMMARY" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:534 #: modules/bibharvest/lib/oai_harvest_admin.py:846 #: modules/bibharvest/lib/oai_harvest_admin.py:899 msgid "Previous page" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:540 msgid "Submission number" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:554 #: modules/bibharvest/lib/oai_harvest_admin.py:831 #: modules/bibharvest/lib/oai_harvest_admin.py:887 msgid "Next page" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:569 #: modules/websubmit/lib/websubmit_templates.py:1008 msgid "Are you sure you want to quit this submission?" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:571 #: modules/websubmit/lib/websubmit_templates.py:1009 #: modules/websubmit/lib/websubmit_templates.py:1018 msgid "Back to main menu" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:574 msgid "" "This is your submission access number. It can be used to continue with an " "interrupted submission in case of problems." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:575 msgid "Mandatory fields appear in red in the SUMMARY window." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:721 #, python-format msgid "The field %s is mandatory." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:721 msgid "Please make a choice in the select box" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:735 msgid "Please press a button." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:743 #, python-format msgid "The field %s is mandatory. Please fill it in." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:820 #, python-format msgid "The field %(field)s is mandatory." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:821 msgid "Going back to page" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:958 msgid "finished!" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:966 msgid "end of action" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:990 msgid "Submission no" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1061 #, python-format msgid "" "Here is the %(x_action)s function list for %(x_doctype)s documents at level " "%(x_step)s" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1066 msgid "Function" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1067 msgid "Score" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1068 msgid "Running function" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1074 #, python-format msgid "Function %s does not exist." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1113 msgid "You must now" msgstr "" +#: modules/websubmit/lib/websubmit_templates.py:1118 +#: modules/bibharvest/lib/oai_harvest_admin.py:409 +#: modules/bibharvest/lib/oai_harvest_admin.py:417 +#: modules/bibharvest/lib/oai_harvest_admin.py:431 +#: modules/bibharvest/lib/oai_harvest_admin.py:446 +msgid "or" +msgstr "" + #: modules/websubmit/lib/websubmit_templates.py:1145 msgid "record" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1147 msgid "document" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1149 #: modules/websubmit/lib/websubmit_templates.py:1247 msgid "version" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1184 msgid "file(s)" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1231 msgid "see" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1429 msgid "For" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1430 msgid "all types of document" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1485 msgid "Subm.No." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1486 msgid "Reference" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1488 msgid "First access" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1489 msgid "Last access" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1499 msgid "Are you sure you want to delete this submission?" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1500 #, python-format msgid "Delete submission %(x_id)s in %(x_docname)s" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1524 msgid "Reference not yet given" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1595 msgid "Refereed Documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1605 msgid "You are a general referee" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1611 msgid "You are a referee for category:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1650 #: modules/websubmit/lib/websubmit_templates.py:1695 msgid "List of refereed types of documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1651 #: modules/websubmit/lib/websubmit_templates.py:1696 msgid "" "Select one of the following types of documents to check the documents status" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1664 msgid "Go to specific approval workflow" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1752 msgid "List of refereed categories" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1753 #: modules/websubmit/lib/websubmit_templates.py:1902 msgid "Please choose a category" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1773 #: modules/websubmit/lib/websubmit_templates.py:1814 #: modules/websubmit/lib/websubmit_templates.py:1925 #: modules/websubmit/lib/websubmit_templates.py:1983 #: modules/websubmit/lib/websubmit_templates.py:2049 #: modules/websubmit/lib/websubmit_templates.py:2174 msgid "Pending" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1779 #: modules/websubmit/lib/websubmit_templates.py:1817 #: modules/websubmit/lib/websubmit_templates.py:1932 #: modules/websubmit/lib/websubmit_templates.py:1986 #: modules/websubmit/lib/websubmit_templates.py:2050 #: modules/websubmit/lib/websubmit_templates.py:2175 msgid "Approved" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1785 #: modules/websubmit/lib/websubmit_templates.py:1819 #: modules/websubmit/lib/websubmit_templates.py:1820 #: modules/websubmit/lib/websubmit_templates.py:1939 #: modules/websubmit/lib/websubmit_templates.py:1988 #: modules/websubmit/lib/websubmit_templates.py:1989 #: modules/websubmit/lib/websubmit_templates.py:2051 #: modules/websubmit/lib/websubmit_templates.py:2176 msgid "Rejected" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1813 #: modules/websubmit/lib/websubmit_templates.py:1982 msgid "Key" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1816 #: modules/websubmit/lib/websubmit_templates.py:1985 msgid "Waiting for approval" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1818 #: modules/websubmit/lib/websubmit_templates.py:1987 msgid "Already approved" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1821 #: modules/websubmit/lib/websubmit_templates.py:1992 msgid "Some documents are pending." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1866 msgid "List of refereing categories" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1946 #: modules/websubmit/lib/websubmit_templates.py:1990 #: modules/websubmit/lib/websubmit_templates.py:1991 #: modules/websubmit/lib/websubmit_templates.py:2177 msgid "Cancelled" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2046 #: modules/websubmit/lib/websubmit_templates.py:2134 msgid "List of refereed documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2047 #: modules/websubmit/lib/websubmit_templates.py:2171 msgid "Click on a report number for more information." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2048 #: modules/websubmit/lib/websubmit_templates.py:2173 msgid "Report Number" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2136 msgid "List of publication documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2138 msgid "List of direct approval documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2311 msgid "Your request has been sent to the referee." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2327 #: modules/websubmit/lib/websubmit_templates.py:2447 #: modules/websubmit/lib/websubmit_templates.py:2757 #: modules/websubmit/lib/websubmit_templates.py:2941 msgid "Title:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2333 #: modules/websubmit/lib/websubmit_templates.py:2454 #: modules/websubmit/lib/websubmit_templates.py:2763 #: modules/websubmit/lib/websubmit_templates.py:2947 msgid "Author:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2341 #: modules/websubmit/lib/websubmit_templates.py:2463 #: modules/websubmit/lib/websubmit_templates.py:2771 #: modules/websubmit/lib/websubmit_templates.py:2955 msgid "More information:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2342 #: modules/websubmit/lib/websubmit_templates.py:2464 #: modules/websubmit/lib/websubmit_templates.py:2772 #: modules/websubmit/lib/websubmit_templates.py:2956 msgid "Click here" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2350 msgid "Approval note:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2355 #, python-format msgid "" "This document is still %(x_fmt_open)swaiting for approval%(x_fmt_close)s." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2358 #: modules/websubmit/lib/websubmit_templates.py:2378 #: modules/websubmit/lib/websubmit_templates.py:2387 msgid "It was first sent for approval on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2360 #: modules/websubmit/lib/websubmit_templates.py:2362 #: modules/websubmit/lib/websubmit_templates.py:2380 #: modules/websubmit/lib/websubmit_templates.py:2382 #: modules/websubmit/lib/websubmit_templates.py:2389 #: modules/websubmit/lib/websubmit_templates.py:2391 msgid "Last approval email was sent on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2363 msgid "" "You can send an approval request email again by clicking the following " "button:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2365 #: modules/websubmit/web/publiline.py:364 msgid "Send Again" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2366 msgid "WARNING! Upon confirmation, an email will be sent to the referee." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2369 msgid "" "As a referee for this document, you may click this button to approve or " "reject it" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2371 msgid "Approve/Reject" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2376 #, python-format msgid "This document has been %(x_fmt_open)sapproved%(x_fmt_close)s." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2377 msgid "Its approved reference is:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2383 msgid "It was approved on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2385 #, python-format msgid "This document has been %(x_fmt_open)srejected%(x_fmt_close)s." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2392 msgid "It was rejected on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2475 #: modules/websubmit/lib/websubmit_templates.py:2530 #: modules/websubmit/lib/websubmit_templates.py:2593 msgid "It has first been asked for refereing process on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2478 #: modules/websubmit/lib/websubmit_templates.py:2532 msgid "Last request e-mail was sent to the publication committee chair on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2482 msgid "A referee has been selected by the publication committee on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2485 #: modules/websubmit/lib/websubmit_templates.py:2548 msgid "No referee has been selected yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2487 #: modules/websubmit/lib/websubmit_templates.py:2550 msgid "Select a referee" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2492 msgid "" "The referee has sent his final recommendations to the publication committee " "on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2495 #: modules/websubmit/lib/websubmit_templates.py:2556 msgid "No recommendation from the referee yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2497 #: modules/websubmit/lib/websubmit_templates.py:2507 #: modules/websubmit/lib/websubmit_templates.py:2558 #: modules/websubmit/lib/websubmit_templates.py:2566 #: modules/websubmit/lib/websubmit_templates.py:2574 msgid "Send a recommendation" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2502 #: modules/websubmit/lib/websubmit_templates.py:2570 msgid "" "The publication committee has sent his final recommendations to the project " "leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2505 #: modules/websubmit/lib/websubmit_templates.py:2572 msgid "No recommendation from the publication committee yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2512 #: modules/websubmit/lib/websubmit_templates.py:2578 #: modules/websubmit/lib/websubmit_templates.py:2598 msgid "It has been cancelled by the author on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2516 #: modules/websubmit/lib/websubmit_templates.py:2581 #: modules/websubmit/lib/websubmit_templates.py:2601 msgid "It has been approved by the project leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2519 #: modules/websubmit/lib/websubmit_templates.py:2583 #: modules/websubmit/lib/websubmit_templates.py:2603 msgid "It has been rejected by the project leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2522 #: modules/websubmit/lib/websubmit_templates.py:2585 #: modules/websubmit/lib/websubmit_templates.py:2605 msgid "No final decision taken yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2524 #: modules/websubmit/lib/websubmit_templates.py:2587 #: modules/websubmit/lib/websubmit_templates.py:2607 #: modules/websubmit/web/publiline.py:1133 #: modules/websubmit/web/publiline.py:1143 msgid "Take a decision" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2535 msgid "" "An editorial board has been selected by the publication committee on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2537 msgid "Add an author list" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2540 msgid "No editorial board has been selected yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2542 msgid "Select an editorial board" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2546 msgid "A referee has been selected by the editorial board on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2554 msgid "" "The referee has sent his final recommendations to the editorial board on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2562 msgid "" "The editorial board has sent his final recommendations to the publication " "committee on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2564 msgid "No recommendation from the editorial board yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2595 msgid "Last request e-mail was sent to the project leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2689 msgid "Comments overview" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2811 msgid "search for user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2813 msgid "search for users" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2816 #: modules/websubmit/lib/websubmit_templates.py:2818 #: modules/websubmit/lib/websubmit_templates.py:2871 #: modules/websubmit/lib/websubmit_templates.py:2873 msgid "select user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2827 msgid "connected" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2830 msgid "add this user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2880 msgid "remove this user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2994 msgid "User" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:3075 #: modules/websubmit/web/publiline.py:1130 msgid "Select:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:3076 msgid "approve" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:3077 msgid "reject" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:114 msgid "Requested record does not seem to have been integrated." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:140 msgid "" "The system has encountered an error in retrieving the list of files for this " "document." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:196 #, python-format msgid "The format %s does not exist for the given version: %s" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:210 msgid "This file is restricted: " msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:222 msgid "An error has happened in trying to stream the request file." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:225 msgid "The requested file is hidden and can not be accessed." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:232 msgid "Requested file does not seem to exist." msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:266 +#: modules/websubmit/lib/websubmit_webinterface.py:265 msgid "Access to Fulltext" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:315 +#: modules/websubmit/lib/websubmit_webinterface.py:314 msgid "An error has happened in trying to retrieve the requested file." msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:317 +#: modules/websubmit/lib/websubmit_webinterface.py:316 msgid "Not enough information to retrieve the document" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:325 +#: modules/websubmit/lib/websubmit_webinterface.py:324 msgid "An error has happened in trying to retrieving the requested file." msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:376 +#: modules/websubmit/lib/websubmit_webinterface.py:375 msgid "Manage Document Files" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:394 +#: modules/websubmit/lib/websubmit_webinterface.py:393 #, python-format msgid "Your modifications to record #%i have been submitted" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:402 +#: modules/websubmit/lib/websubmit_webinterface.py:401 #, python-format msgid "Your modifications to record #%i have been cancelled" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:411 +#: modules/websubmit/lib/websubmit_webinterface.py:410 msgid "Edit" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:412 +#: modules/websubmit/lib/websubmit_webinterface.py:411 msgid "Edit record" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:427 #: modules/websubmit/lib/websubmit_webinterface.py:458 msgid "Document File Manager" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:428 #: modules/websubmit/lib/websubmit_webinterface.py:458 #, python-format msgid "Record #%i" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:450 msgid "Cancel all changes" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:922 msgid "Sorry, 'sub' parameter missing..." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:925 msgid "Sorry. Cannot analyse parameter" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:986 msgid "Sorry, invalid URL..." msgstr "" #: modules/websubmit/web/approve.py:55 msgid "approve.py: cannot determine document reference" msgstr "" #: modules/websubmit/web/approve.py:58 msgid "approve.py: cannot find document in database" msgstr "" #: modules/websubmit/web/approve.py:72 msgid "Sorry parameter missing..." msgstr "" #: modules/websubmit/web/publiline.py:130 msgid "Document Approval Workflow" msgstr "" #: modules/websubmit/web/publiline.py:151 msgid "Approval and Refereeing Workflow" msgstr "" #: modules/websubmit/web/publiline.py:330 #: modules/websubmit/web/publiline.py:431 #: modules/websubmit/web/publiline.py:657 msgid "Approval has never been requested for this document." msgstr "" #: modules/websubmit/web/publiline.py:356 #: modules/websubmit/web/publiline.py:457 #: modules/websubmit/web/publiline.py:682 msgid "Unable to display document." msgstr "" #: modules/websubmit/web/publiline.py:686 #: modules/websubmit/web/publiline.py:810 #: modules/websubmit/web/publiline.py:925 #: modules/websubmit/web/publiline.py:989 #: modules/websubmit/web/publiline.py:1030 #: modules/websubmit/web/publiline.py:1086 #: modules/websubmit/web/publiline.py:1149 #: modules/websubmit/web/publiline.py:1199 msgid "Action unauthorized for this document." msgstr "" #: modules/websubmit/web/publiline.py:689 #: modules/websubmit/web/publiline.py:813 #: modules/websubmit/web/publiline.py:928 #: modules/websubmit/web/publiline.py:992 #: modules/websubmit/web/publiline.py:1033 #: modules/websubmit/web/publiline.py:1089 #: modules/websubmit/web/publiline.py:1152 #: modules/websubmit/web/publiline.py:1202 msgid "Action unavailable for this document." msgstr "" #: modules/websubmit/web/publiline.py:699 msgid "Adding users to the editorial board" msgstr "" #: modules/websubmit/web/publiline.py:727 #: modules/websubmit/web/publiline.py:850 msgid "no qualified users, try new search." msgstr "" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "hits" msgstr "" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "too many qualified users, specify more narrow search." msgstr "" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "limit" msgstr "" #: modules/websubmit/web/publiline.py:745 msgid "users in brackets are already attached to the role, try another one..." msgstr "" #: modules/websubmit/web/publiline.py:751 msgid "Removing users from the editorial board" msgstr "" #: modules/websubmit/web/publiline.py:787 msgid "Validate the editorial board selection" msgstr "" #: modules/websubmit/web/publiline.py:832 msgid "Referee selection" msgstr "" #: modules/websubmit/web/publiline.py:918 msgid "Come back to the document" msgstr "" #: modules/websubmit/web/publiline.py:1103 msgid "Back to the document" msgstr "" #: modules/websubmit/web/publiline.py:1131 #: modules/websubmit/web/publiline.py:1191 msgid "Approve" msgstr "" #: modules/websubmit/web/publiline.py:1132 #: modules/websubmit/web/publiline.py:1192 msgid "Reject" msgstr "" #: modules/websubmit/web/publiline.py:1230 msgid "Wrong action for this document." msgstr "" #: modules/websubmit/web/yourapprovals.py:57 msgid "You are not authorized to use approval system." msgstr "" #: modules/webjournal/lib/webjournal_templates.py:49 msgid "Available Journals" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:58 #: modules/webjournal/lib/webjournal_templates.py:97 #, python-format msgid "Contact %(x_url_open)sthe administrator%(x_url_close)s" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:142 msgid "Regeneration Error" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:143 msgid "" "The issue could not be correctly regenerated. Please contact your " "administrator." msgstr "" #: modules/webjournal/lib/webjournal_templates.py:268 #, python-format msgid "If you cannot read this email please go to %(x_journal_link)s" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:415 #: modules/webjournal/lib/webjournal_templates.py:664 #: modules/webjournal/lib/webjournaladminlib.py:292 #: modules/webjournal/lib/webjournaladminlib.py:312 msgid "Add" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:416 #: modules/webjournal/lib/webjournaladminlib.py:331 msgid "Publish" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:417 #: modules/webjournal/lib/webjournaladminlib.py:292 #: modules/webjournal/lib/webjournaladminlib.py:309 msgid "Refresh" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:480 #: modules/webjournal/lib/webjournaladminlib.py:357 #: modules/bibcirculation/lib/bibcirculation_templates.py:3522 #: modules/bibcirculation/lib/bibcirculation_templates.py:3766 #: modules/bibcirculation/lib/bibcirculation_templates.py:7062 #: modules/bibcirculation/lib/bibcirculation_templates.py:14199 msgid "Update" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:659 msgid "Apply" msgstr "" #: modules/webjournal/lib/webjournal_config.py:63 msgid "Page not found" msgstr "" #: modules/webjournal/lib/webjournal_config.py:64 msgid "The requested page does not exist" msgstr "" #: modules/webjournal/lib/webjournal_config.py:94 msgid "No journal articles" msgstr "" #: modules/webjournal/lib/webjournal_config.py:95 #: modules/webjournal/lib/webjournal_config.py:135 msgid "Problem with the configuration of this journal" msgstr "" #: modules/webjournal/lib/webjournal_config.py:134 msgid "No journal issues" msgstr "" #: modules/webjournal/lib/webjournal_config.py:172 msgid "Journal article error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:173 msgid "We could not know which article you were looking for" msgstr "" #: modules/webjournal/lib/webjournal_config.py:206 msgid "No journals available" msgstr "" #: modules/webjournal/lib/webjournal_config.py:207 msgid "We could not provide you any journals" msgstr "" #: modules/webjournal/lib/webjournal_config.py:208 msgid "" "It seems that there are no journals defined on this server. Please contact " "support if this is not right." msgstr "" #: modules/webjournal/lib/webjournal_config.py:233 msgid "Select a journal on this server" msgstr "" #: modules/webjournal/lib/webjournal_config.py:234 msgid "We couldn't guess which journal you are looking for" msgstr "" #: modules/webjournal/lib/webjournal_config.py:235 msgid "" "You did not provide an argument for a journal name. Please select the " "journal you want to read in the list below." msgstr "" #: modules/webjournal/lib/webjournal_config.py:261 msgid "No current issue" msgstr "" #: modules/webjournal/lib/webjournal_config.py:262 msgid "We could not find any informtion on the current issue" msgstr "" #: modules/webjournal/lib/webjournal_config.py:263 msgid "" "The configuration for the current issue seems to be empty. Try providing an " "issue number or check with support." msgstr "" #: modules/webjournal/lib/webjournal_config.py:290 msgid "Issue number badly formed" msgstr "" #: modules/webjournal/lib/webjournal_config.py:291 msgid "We could not read the issue number you provided" msgstr "" #: modules/webjournal/lib/webjournal_config.py:320 msgid "Archive date badly formed" msgstr "" #: modules/webjournal/lib/webjournal_config.py:321 msgid "We could not read the archive date you provided" msgstr "" #: modules/webjournal/lib/webjournal_config.py:355 msgid "No popup record" msgstr "" #: modules/webjournal/lib/webjournal_config.py:356 msgid "We could not deduce the popup article you requested" msgstr "" #: modules/webjournal/lib/webjournal_config.py:388 msgid "Update error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:389 #: modules/webjournal/lib/webjournal_config.py:419 msgid "There was an internal error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:418 msgid "Journal publishing DB error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:450 msgid "Journal issue error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:451 msgid "Issue not found" msgstr "" #: modules/webjournal/lib/webjournal_config.py:480 msgid "Journal ID error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:481 msgid "We could not find the id for this journal in the Database" msgstr "" #: modules/webjournal/lib/webjournal_config.py:512 #: modules/webjournal/lib/webjournal_config.py:514 #, python-format msgid "Category \"%(category_name)s\" not found" msgstr "" #: modules/webjournal/lib/webjournal_config.py:516 msgid "Sorry, this category does not exist for this journal and issue." msgstr "" #: modules/webjournal/lib/webjournaladminlib.py:343 msgid "Please select an issue" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:77 msgid "WebJournal Admin" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:119 #, python-format msgid "Administrate %(journal_name)s" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:158 msgid "Feature a record" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:220 msgid "Email Alert System" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:273 msgid "Issue regenerated" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:324 msgid "Publishing Interface" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:350 msgid "Add Journal" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:352 msgid "Edit Settings" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:43 msgid "You have " msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:43 msgid "tickets" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:62 msgid "show" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:63 msgid "close" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:91 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:107 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:126 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:141 msgid "No information available" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:111 msgid "No seminars today" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:248 msgid "What's on today" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:249 msgid "Seminars of the week" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py:164 msgid "There are no new articles for the moment" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py:287 msgid "What's new" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:225 msgid "Under the CERN sky" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_author.py:48 #, python-format msgid "About your article at %(url)s" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_imprint.py:122 msgid "Issue No." msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:221 msgid "Did you know?" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:253 #, python-format msgid "" "Hi,\n" "\n" "Have a look at the following article:\n" "<%(url)s>" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:260 msgid "Send this article" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_rss.py:141 msgid "Subscribe by RSS" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:87 msgid "News Articles" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:88 msgid "Official News" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:89 msgid "Training and Development" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:90 msgid "General Information" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:106 msgid "Archive" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:133 msgid "Select Year:" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:139 msgid "Select Issue:" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:143 msgid "Select Date:" msgstr "" #: modules/bibedit/lib/bibedit_webinterface.py:183 msgid "Comparing two record revisions" msgstr "" #: modules/bibedit/lib/bibedit_webinterface.py:207 msgid "Failed to create a ticket" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:297 msgid "Next Step" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:298 msgid "Search criteria" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:299 msgid "Output tags" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:300 msgid "Filter collection" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:301 msgid "1. Choose search criteria" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:302 msgid "" "Specify the criteria you'd like to use for filtering records that will be " "changed. Use \"Search\" to see which records would have been filtered using " "these criteria." msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:304 msgid "Preview results" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:505 msgid "2. Define changes" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:506 msgid "" "Specify fields and their subfields that should be changed in every record " "matching the search criteria." msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:507 msgid "Define new field action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:508 msgid "Define new subfield action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:510 msgid "Select action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:511 msgid "Add field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:512 msgid "Delete field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:513 msgid "Update field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:514 msgid "Add subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:515 msgid "Delete subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:516 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:260 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:402 msgid "Save" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:518 msgid "Replace substring" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:519 msgid "Replace full content" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:520 msgid "with" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:521 msgid "when field equals" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:522 msgid "on subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:523 msgid "new value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:524 msgid "condition" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:525 msgid "Apply only to specific field instances" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:526 msgid "value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:555 msgid "Back to Results" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:623 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:571 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:590 msgid "records found" msgstr "" #: modules/bibedit/lib/bibeditmulti_webinterface.py:114 msgid "Multi-Record Editor" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:132 msgid "Export Job Overview" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:117 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:189 msgid "New Export Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:118 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:443 msgid "Export Job History" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:174 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:195 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:323 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:534 msgid "Run" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:176 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:325 msgid "New" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:196 msgid "Last run" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:256 msgid "Frequency" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:257 msgid "Output Format" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:258 msgid "Start" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:259 msgid "Output Directory" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:262 msgid "Edit Queries" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:348 msgid "Output Fields" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:400 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:460 msgid "Output fields" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:438 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:605 msgid "Download" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:439 msgid "View as: " msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:533 msgid "Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:588 msgid "Total" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:653 msgid "All" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:654 msgid "None" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:672 msgid "Manualy" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:674 msgid "Daily" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:676 msgid "Weekly" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:678 msgid "Monthly" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:192 msgid "Edit Export Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:239 msgid "Query Results" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:246 msgid "Export Job Queries" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:320 msgid "New Query" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:325 msgid "Edit Query" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:356 msgid "Export Job Results" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:389 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:423 msgid "Export Job Result" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:465 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:500 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:530 msgid "You are not authorised to access this resource." msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:298 #: modules/bibcirculation/lib/bibcirculation_templates.py:7922 #: modules/bibcirculation/lib/bibcirculation_templates.py:9432 msgid "Loan information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:300 msgid "This book is sent to you ..." msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:320 #: modules/bibcirculation/lib/bibcirculation_templates.py:1624 #: modules/bibcirculation/lib/bibcirculation_templates.py:1925 #: modules/bibcirculation/lib/bibcirculation_templates.py:5228 #: modules/bibcirculation/lib/bibcirculation_templates.py:15577 #: modules/bibcirculation/lib/bibcirculation_templates.py:15739 +#: modules/websearch/lib/websearch_templates_epfl.py:982 msgid "Author" msgstr "" -#: modules/bibcirculation/lib/bibcirculation_utils.py:321 -msgid "Editor" -msgstr "" - #: modules/bibcirculation/lib/bibcirculation_utils.py:322 #: modules/bibcirculation/lib/bibcirculation_templates.py:1627 #: modules/bibcirculation/lib/bibcirculation_templates.py:2485 #: modules/bibcirculation/lib/bibcirculation_templates.py:2828 #: modules/bibcirculation/lib/bibcirculation_templates.py:5230 #: modules/bibcirculation/lib/bibcirculation_templates.py:5289 #: modules/bibcirculation/lib/bibcirculation_templates.py:6322 #: modules/bibcirculation/lib/bibcirculation_templates.py:6552 #: modules/bibcirculation/lib/bibcirculation_templates.py:7010 #: modules/bibcirculation/lib/bibcirculation_templates.py:7161 #: modules/bibcirculation/lib/bibcirculation_templates.py:8635 #: modules/bibcirculation/lib/bibcirculation_templates.py:8868 #: modules/bibcirculation/lib/bibcirculation_templates.py:9102 #: modules/bibcirculation/lib/bibcirculation_templates.py:9327 #: modules/bibcirculation/lib/bibcirculation_templates.py:9534 #: modules/bibcirculation/lib/bibcirculation_templates.py:9744 #: modules/bibcirculation/lib/bibcirculation_templates.py:10143 #: modules/bibcirculation/lib/bibcirculation_templates.py:10344 #: modules/bibcirculation/lib/bibcirculation_templates.py:10597 #: modules/bibcirculation/lib/bibcirculation_templates.py:10743 #: modules/bibcirculation/lib/bibcirculation_templates.py:10938 #: modules/bibcirculation/lib/bibcirculation_templates.py:11278 #: modules/bibcirculation/lib/bibcirculation_templates.py:11357 #: modules/bibcirculation/lib/bibcirculation_templates.py:12250 #: modules/bibcirculation/lib/bibcirculation_templates.py:12326 #: modules/bibcirculation/lib/bibcirculation_templates.py:13106 #: modules/bibcirculation/lib/bibcirculation_templates.py:13379 #: modules/bibcirculation/lib/bibcirculation_templates.py:14386 #: modules/bibcirculation/lib/bibcirculation_templates.py:14602 #: modules/bibcirculation/lib/bibcirculation_templates.py:14851 #: modules/bibcirculation/lib/bibcirculation_templates.py:15870 #: modules/bibcirculation/lib/bibcirculation_templates.py:16094 msgid "ISBN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:339 msgid "Id" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:341 #: modules/bibcirculation/lib/bibcirculation_templates.py:2187 #: modules/bibcirculation/lib/bibcirculation_templates.py:2273 #: modules/bibcirculation/lib/bibcirculation_templates.py:2479 #: modules/bibcirculation/lib/bibcirculation_templates.py:3517 #: modules/bibcirculation/lib/bibcirculation_templates.py:3648 #: modules/bibcirculation/lib/bibcirculation_templates.py:4834 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5405 #: modules/bibcirculation/lib/bibcirculation_templates.py:5665 #: modules/bibcirculation/lib/bibcirculation_templates.py:5727 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5907 #: modules/bibcirculation/lib/bibcirculation_templates.py:6139 #: modules/bibcirculation/lib/bibcirculation_templates.py:6202 #: modules/bibcirculation/lib/bibcirculation_templates.py:8088 #: modules/bibcirculation/lib/bibcirculation_templates.py:8316 #: modules/bibcirculation/lib/bibcirculation_templates.py:8912 #: modules/bibcirculation/lib/bibcirculation_templates.py:9370 #: modules/bibcirculation/lib/bibcirculation_templates.py:10442 #: modules/bibcirculation/lib/bibcirculation_templates.py:10608 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13645 #: modules/bibcirculation/lib/bibcirculation_templates.py:13888 #: modules/bibcirculation/lib/bibcirculation_templates.py:13955 #: modules/bibcirculation/lib/bibcirculation_templates.py:14195 #: modules/bibcirculation/lib/bibcirculation_templates.py:14897 #: modules/bibcirculation/lib/bibcirculation_templates.py:16104 msgid "Address" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:347 #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:528 #: modules/bibcirculation/lib/bibcirculation_templates.py:2279 #: modules/bibcirculation/lib/bibcirculation_templates.py:2862 #: modules/bibcirculation/lib/bibcirculation_templates.py:3200 #: modules/bibcirculation/lib/bibcirculation_templates.py:3394 #: modules/bibcirculation/lib/bibcirculation_templates.py:3947 #: modules/bibcirculation/lib/bibcirculation_templates.py:4126 #: modules/bibcirculation/lib/bibcirculation_templates.py:4306 #: modules/bibcirculation/lib/bibcirculation_templates.py:4557 #: modules/bibcirculation/lib/bibcirculation_templates.py:4684 #: modules/bibcirculation/lib/bibcirculation_templates.py:6574 #: modules/bibcirculation/lib/bibcirculation_templates.py:7926 #: modules/bibcirculation/lib/bibcirculation_templates.py:8375 #: modules/bibcirculation/lib/bibcirculation_templates.py:9434 #: modules/bibcirculation/lib/bibcirculation_templates.py:11834 #: modules/bibcirculation/lib/bibcirculation_templates.py:11966 #: modules/bibcirculation/lib/bibcirculation_templates.py:12708 #: modules/bibcirculation/lib/bibcirculation_templates.py:12811 #: modules/bibcirculation/lib/bibcirculation_templates.py:12917 #: modules/bibcirculation/lib/bibcirculation_templates.py:15102 msgid "Due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:384 msgid "List of pending hold requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:401 #: modules/bibcirculation/lib/bibcirculation_templates.py:1622 #: modules/bibcirculation/lib/bibcirculation_templates.py:2520 #: modules/bibcirculation/lib/bibcirculation_templates.py:2586 #: modules/bibcirculation/lib/bibcirculation_templates.py:2695 #: modules/bibcirculation/lib/bibcirculation_templates.py:3299 #: modules/bibcirculation/lib/bibcirculation_templates.py:3389 #: modules/bibcirculation/lib/bibcirculation_templates.py:4122 #: modules/bibcirculation/lib/bibcirculation_templates.py:4302 #: modules/bibcirculation/lib/bibcirculation_templates.py:4553 #: modules/bibcirculation/lib/bibcirculation_templates.py:4681 #: modules/bibcirculation/lib/bibcirculation_templates.py:11070 msgid "Borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:402 #: modules/bibcirculation/lib/bibcirculation_templates.py:526 #: modules/bibcirculation/lib/bibcirculation_templates.py:628 #: modules/bibcirculation/lib/bibcirculation_templates.py:714 #: modules/bibcirculation/lib/bibcirculation_templates.py:1073 #: modules/bibcirculation/lib/bibcirculation_templates.py:1259 #: modules/bibcirculation/lib/bibcirculation_templates.py:1424 #: modules/bibcirculation/lib/bibcirculation_templates.py:1623 #: modules/bibcirculation/lib/bibcirculation_templates.py:1669 #: modules/bibcirculation/lib/bibcirculation_templates.py:2277 #: modules/bibcirculation/lib/bibcirculation_templates.py:2534 #: modules/bibcirculation/lib/bibcirculation_templates.py:2587 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3195 #: modules/bibcirculation/lib/bibcirculation_templates.py:3832 #: modules/bibcirculation/lib/bibcirculation_templates.py:3944 #: modules/bibcirculation/lib/bibcirculation_templates.py:4123 #: modules/bibcirculation/lib/bibcirculation_templates.py:4303 #: modules/bibcirculation/lib/bibcirculation_templates.py:4554 #: modules/bibcirculation/lib/bibcirculation_templates.py:4858 #: modules/bibcirculation/lib/bibcirculation_templates.py:9900 #: modules/bibcirculation/lib/bibcirculation_templates.py:11071 #: modules/bibcirculation/lib/bibcirculation_templates.py:15097 #: modules/bibcirculation/lib/bibcirculation_templates.py:15356 msgid "Item" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:403 #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:1074 #: modules/bibcirculation/lib/bibcirculation_templates.py:1260 #: modules/bibcirculation/lib/bibcirculation_templates.py:2278 #: modules/bibcirculation/lib/bibcirculation_templates.py:2697 #: modules/bibcirculation/lib/bibcirculation_templates.py:2863 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3197 #: modules/bibcirculation/lib/bibcirculation_templates.py:3301 #: modules/bibcirculation/lib/bibcirculation_templates.py:3391 #: modules/bibcirculation/lib/bibcirculation_templates.py:3834 #: modules/bibcirculation/lib/bibcirculation_templates.py:6575 #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6771 #: modules/bibcirculation/lib/bibcirculation_templates.py:7029 #: modules/bibcirculation/lib/bibcirculation_templates.py:7183 #: modules/bibcirculation/lib/bibcirculation_templates.py:7573 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 #: modules/bibcirculation/lib/bibcirculation_templates.py:9628 #: modules/bibcirculation/lib/bibcirculation_templates.py:9812 #: modules/bibcirculation/lib/bibcirculation_templates.py:11791 #: modules/bibcirculation/lib/bibcirculation_templates.py:11964 #: modules/bibcirculation/lib/bibcirculation_templates.py:12080 #: modules/bibcirculation/lib/bibcirculation_templates.py:15357 msgid "Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:404 #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:1075 #: modules/bibcirculation/lib/bibcirculation_templates.py:1261 #: modules/bibcirculation/lib/bibcirculation_templates.py:2278 #: modules/bibcirculation/lib/bibcirculation_templates.py:2698 #: modules/bibcirculation/lib/bibcirculation_templates.py:2864 #: modules/bibcirculation/lib/bibcirculation_templates.py:3106 #: modules/bibcirculation/lib/bibcirculation_templates.py:3198 #: modules/bibcirculation/lib/bibcirculation_templates.py:3302 #: modules/bibcirculation/lib/bibcirculation_templates.py:3392 #: modules/bibcirculation/lib/bibcirculation_templates.py:3835 #: modules/bibcirculation/lib/bibcirculation_templates.py:5238 #: modules/bibcirculation/lib/bibcirculation_templates.py:6576 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6772 #: modules/bibcirculation/lib/bibcirculation_templates.py:7030 #: modules/bibcirculation/lib/bibcirculation_templates.py:7205 #: modules/bibcirculation/lib/bibcirculation_templates.py:7574 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 #: modules/bibcirculation/lib/bibcirculation_templates.py:15358 msgid "Location" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:405 #: modules/bibcirculation/lib/bibcirculation_templates.py:780 #: modules/bibcirculation/lib/bibcirculation_templates.py:929 #: modules/bibcirculation/lib/bibcirculation_templates.py:1076 #: modules/bibcirculation/lib/bibcirculation_templates.py:1262 #: modules/bibcirculation/lib/bibcirculation_templates.py:1426 #: modules/bibcirculation/lib/bibcirculation_templates.py:1671 #: modules/bibcirculation/lib/bibcirculation_templates.py:2589 #: modules/bibcirculation/lib/bibcirculation_templates.py:2699 #: modules/bibcirculation/lib/bibcirculation_templates.py:3106 #: modules/bibcirculation/lib/bibcirculation_templates.py:3303 #: modules/bibcirculation/lib/bibcirculation_templates.py:3836 #: modules/bibcirculation/lib/bibcirculation_templates.py:4435 #: modules/bibcirculation/lib/bibcirculation_templates.py:15359 msgid "From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:406 #: modules/bibcirculation/lib/bibcirculation_templates.py:802 #: modules/bibcirculation/lib/bibcirculation_templates.py:929 #: modules/bibcirculation/lib/bibcirculation_templates.py:1077 #: modules/bibcirculation/lib/bibcirculation_templates.py:1263 #: modules/bibcirculation/lib/bibcirculation_templates.py:1427 #: modules/bibcirculation/lib/bibcirculation_templates.py:1672 #: modules/bibcirculation/lib/bibcirculation_templates.py:2590 #: modules/bibcirculation/lib/bibcirculation_templates.py:2700 #: modules/bibcirculation/lib/bibcirculation_templates.py:3107 #: modules/bibcirculation/lib/bibcirculation_templates.py:3304 #: modules/bibcirculation/lib/bibcirculation_templates.py:3837 #: modules/bibcirculation/lib/bibcirculation_templates.py:4437 #: modules/bibcirculation/lib/bibcirculation_templates.py:15360 #: modules/bibknowledge/lib/bibknowledge_templates.py:334 msgid "To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:407 #: modules/bibcirculation/lib/bibcirculation_templates.py:629 #: modules/bibcirculation/lib/bibcirculation_templates.py:1078 #: modules/bibcirculation/lib/bibcirculation_templates.py:1264 #: modules/bibcirculation/lib/bibcirculation_templates.py:1428 #: modules/bibcirculation/lib/bibcirculation_templates.py:1673 #: modules/bibcirculation/lib/bibcirculation_templates.py:2591 #: modules/bibcirculation/lib/bibcirculation_templates.py:2701 #: modules/bibcirculation/lib/bibcirculation_templates.py:3107 #: modules/bibcirculation/lib/bibcirculation_templates.py:3305 #: modules/bibcirculation/lib/bibcirculation_templates.py:3838 #: modules/bibcirculation/lib/bibcirculation_templates.py:11690 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11965 #: modules/bibcirculation/lib/bibcirculation_templates.py:12081 #: modules/bibcirculation/lib/bibcirculation_templates.py:12508 #: modules/bibcirculation/lib/bibcirculation_templates.py:12602 #: modules/bibcirculation/lib/bibcirculation_templates.py:12705 #: modules/bibcirculation/lib/bibcirculation_templates.py:12808 #: modules/bibcirculation/lib/bibcirculation_templates.py:12914 #: modules/bibcirculation/lib/bibcirculation_templates.py:15099 #: modules/bibcirculation/lib/bibcirculation_templates.py:15361 msgid "Request date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:108 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:152 msgid "You are not authorized to use loans." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:157 #: modules/bibcirculation/lib/bibcirculation_templates.py:489 msgid "Loans - historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:208 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:264 msgid "You are not authorized to use ill." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:212 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:282 #: modules/bibcirculation/lib/bibcirculation_templates.py:10732 msgid "Interlibrary loan request for books" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:1511 #: modules/bibcirculation/lib/bibcirculation_templates.py:2277 #: modules/bibcirculation/lib/bibcirculation_templates.py:2860 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3196 #: modules/bibcirculation/lib/bibcirculation_templates.py:3300 #: modules/bibcirculation/lib/bibcirculation_templates.py:3390 #: modules/bibcirculation/lib/bibcirculation_templates.py:3945 #: modules/bibcirculation/lib/bibcirculation_templates.py:4124 #: modules/bibcirculation/lib/bibcirculation_templates.py:4304 #: modules/bibcirculation/lib/bibcirculation_templates.py:4555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4682 #: modules/bibcirculation/lib/bibcirculation_templates.py:4861 #: modules/bibcirculation/lib/bibcirculation_templates.py:5240 #: modules/bibcirculation/lib/bibcirculation_templates.py:6572 #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6770 #: modules/bibcirculation/lib/bibcirculation_templates.py:7027 #: modules/bibcirculation/lib/bibcirculation_templates.py:7182 #: modules/bibcirculation/lib/bibcirculation_templates.py:7572 #: modules/bibcirculation/lib/bibcirculation_templates.py:7924 #: modules/bibcirculation/lib/bibcirculation_templates.py:8102 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 #: modules/bibcirculation/lib/bibcirculation_templates.py:8636 #: modules/bibcirculation/lib/bibcirculation_templates.py:8869 #: modules/bibcirculation/lib/bibcirculation_templates.py:9103 #: modules/bibcirculation/lib/bibcirculation_templates.py:9328 #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9806 #: modules/bibcirculation/lib/bibcirculation_templates.py:11727 #: modules/bibcirculation/lib/bibcirculation_templates.py:12001 #: modules/bibcirculation/lib/bibcirculation_templates.py:12116 #: modules/bibcirculation/lib/bibcirculation_templates.py:12511 #: modules/bibcirculation/lib/bibcirculation_templates.py:12605 #: modules/bibcirculation/lib/bibcirculation_templates.py:12710 #: modules/bibcirculation/lib/bibcirculation_templates.py:12814 #: modules/bibcirculation/lib/bibcirculation_templates.py:12920 msgid "Barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:2865 #: modules/bibcirculation/lib/bibcirculation_templates.py:5239 #: modules/bibcirculation/lib/bibcirculation_templates.py:6577 #: modules/bibcirculation/lib/bibcirculation_templates.py:6704 #: modules/bibcirculation/lib/bibcirculation_templates.py:6775 #: modules/bibcirculation/lib/bibcirculation_templates.py:7031 #: modules/bibcirculation/lib/bibcirculation_templates.py:7429 #: modules/bibcirculation/lib/bibcirculation_templates.py:7577 #: modules/bibcirculation/lib/bibcirculation_templates.py:7928 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 msgid "Loan period" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:2592 #: modules/bibcirculation/lib/bibcirculation_templates.py:2702 #: modules/bibcirculation/lib/bibcirculation_templates.py:9907 #: modules/bibcirculation/lib/bibcirculation_templates.py:11077 msgid "Option(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:303 #: modules/bibcirculation/lib/bibcirculation_templates.py:8396 msgid "Request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:333 msgid "See this book on BibCirculation" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:408 msgid "0 borrower(s) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:426 msgid "Borrower(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:462 #: modules/bibcirculation/lib/bibcirculation_templates.py:747 #: modules/bibcirculation/lib/bibcirculation_templates.py:930 #: modules/bibcirculation/lib/bibcirculation_templates.py:1051 #: modules/bibcirculation/lib/bibcirculation_templates.py:1178 #: modules/bibcirculation/lib/bibcirculation_templates.py:1237 #: modules/bibcirculation/lib/bibcirculation_templates.py:1361 #: modules/bibcirculation/lib/bibcirculation_templates.py:1476 #: modules/bibcirculation/lib/bibcirculation_templates.py:1819 #: modules/bibcirculation/lib/bibcirculation_templates.py:1877 #: modules/bibcirculation/lib/bibcirculation_templates.py:1965 #: modules/bibcirculation/lib/bibcirculation_templates.py:2189 #: modules/bibcirculation/lib/bibcirculation_templates.py:2335 #: modules/bibcirculation/lib/bibcirculation_templates.py:2554 #: modules/bibcirculation/lib/bibcirculation_templates.py:2642 #: modules/bibcirculation/lib/bibcirculation_templates.py:2747 #: modules/bibcirculation/lib/bibcirculation_templates.py:3056 #: modules/bibcirculation/lib/bibcirculation_templates.py:3144 #: modules/bibcirculation/lib/bibcirculation_templates.py:3344 #: modules/bibcirculation/lib/bibcirculation_templates.py:3437 #: modules/bibcirculation/lib/bibcirculation_templates.py:3538 #: modules/bibcirculation/lib/bibcirculation_templates.py:3779 #: modules/bibcirculation/lib/bibcirculation_templates.py:3886 #: modules/bibcirculation/lib/bibcirculation_templates.py:4042 #: modules/bibcirculation/lib/bibcirculation_templates.py:4100 #: modules/bibcirculation/lib/bibcirculation_templates.py:4222 #: modules/bibcirculation/lib/bibcirculation_templates.py:4280 #: modules/bibcirculation/lib/bibcirculation_templates.py:4400 #: modules/bibcirculation/lib/bibcirculation_templates.py:4508 #: modules/bibcirculation/lib/bibcirculation_templates.py:4766 #: modules/bibcirculation/lib/bibcirculation_templates.py:4892 #: modules/bibcirculation/lib/bibcirculation_templates.py:4989 #: modules/bibcirculation/lib/bibcirculation_templates.py:5086 #: modules/bibcirculation/lib/bibcirculation_templates.py:5360 #: modules/bibcirculation/lib/bibcirculation_templates.py:5424 #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5591 #: modules/bibcirculation/lib/bibcirculation_templates.py:5667 #: modules/bibcirculation/lib/bibcirculation_templates.py:5729 #: modules/bibcirculation/lib/bibcirculation_templates.py:5844 #: modules/bibcirculation/lib/bibcirculation_templates.py:5910 #: modules/bibcirculation/lib/bibcirculation_templates.py:6000 #: modules/bibcirculation/lib/bibcirculation_templates.py:6065 #: modules/bibcirculation/lib/bibcirculation_templates.py:6140 #: modules/bibcirculation/lib/bibcirculation_templates.py:6203 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6777 #: modules/bibcirculation/lib/bibcirculation_templates.py:7078 #: modules/bibcirculation/lib/bibcirculation_templates.py:7502 #: modules/bibcirculation/lib/bibcirculation_templates.py:7579 #: modules/bibcirculation/lib/bibcirculation_templates.py:7672 #: modules/bibcirculation/lib/bibcirculation_templates.py:7748 #: modules/bibcirculation/lib/bibcirculation_templates.py:7852 #: modules/bibcirculation/lib/bibcirculation_templates.py:7975 #: modules/bibcirculation/lib/bibcirculation_templates.py:8131 #: modules/bibcirculation/lib/bibcirculation_templates.py:8240 #: modules/bibcirculation/lib/bibcirculation_templates.py:8976 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9814 #: modules/bibcirculation/lib/bibcirculation_templates.py:10057 #: modules/bibcirculation/lib/bibcirculation_templates.py:10472 #: modules/bibcirculation/lib/bibcirculation_templates.py:10622 #: modules/bibcirculation/lib/bibcirculation_templates.py:10822 #: modules/bibcirculation/lib/bibcirculation_templates.py:11029 #: modules/bibcirculation/lib/bibcirculation_templates.py:12156 #: modules/bibcirculation/lib/bibcirculation_templates.py:12976 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13465 #: modules/bibcirculation/lib/bibcirculation_templates.py:13578 #: modules/bibcirculation/lib/bibcirculation_templates.py:13647 #: modules/bibcirculation/lib/bibcirculation_templates.py:13741 #: modules/bibcirculation/lib/bibcirculation_templates.py:13810 #: modules/bibcirculation/lib/bibcirculation_templates.py:13889 #: modules/bibcirculation/lib/bibcirculation_templates.py:13956 #: modules/bibcirculation/lib/bibcirculation_templates.py:14049 #: modules/bibcirculation/lib/bibcirculation_templates.py:14117 #: modules/bibcirculation/lib/bibcirculation_templates.py:14216 #: modules/bibcirculation/lib/bibcirculation_templates.py:14299 #: modules/bibcirculation/lib/bibcirculation_templates.py:14475 #: modules/bibcirculation/lib/bibcirculation_templates.py:15047 #: modules/bibcirculation/lib/bibcirculation_templates.py:15185 #: modules/bibcirculation/lib/bibcirculation_templates.py:15281 #: modules/bibcirculation/lib/bibcirculation_templates.py:15528 #: modules/bibcirculation/lib/bibcirculation_templates.py:15618 #: modules/bibcirculation/lib/bibcirculation_templates.py:15686 #: modules/bibcirculation/lib/bibcirculation_templates.py:15778 #: modules/bibcirculation/lib/bibcirculation_templates.py:15961 #: modules/bibcirculation/lib/bibcirculation_templates.py:16118 #: modules/bibcirculation/lib/bibcirculation_templates.py:16290 #: modules/bibcirculation/lib/bibcirculation_templates.py:16648 msgid "Back" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:484 #: modules/bibcirculation/lib/bibcirculation_templates.py:4026 msgid "Renew all loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:503 msgid "You don't have any book on loan." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:527 #: modules/bibcirculation/lib/bibcirculation_templates.py:3199 #: modules/bibcirculation/lib/bibcirculation_templates.py:3393 #: modules/bibcirculation/lib/bibcirculation_templates.py:4125 #: modules/bibcirculation/lib/bibcirculation_templates.py:4305 #: modules/bibcirculation/lib/bibcirculation_templates.py:4556 #: modules/bibcirculation/lib/bibcirculation_templates.py:4683 msgid "Loaned on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:529 #: modules/bibcirculation/lib/bibcirculation_templates.py:631 #: modules/bibcirculation/lib/bibcirculation_templates.py:2869 msgid "Action(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:541 msgid "Renew" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:597 #: modules/bibcirculation/lib/bibcirculation_templates.py:627 msgid "Your Requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:598 msgid "You don't have any request (waiting or pending)." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:601 #: modules/bibcirculation/lib/bibcirculation_templates.py:677 #: modules/bibcirculation/lib/bibcirculation_templates.py:964 #: modules/bibcirculation/lib/bibcirculation_templates.py:995 #: modules/bibcirculation/lib/bibcirculation_templates.py:5477 #: modules/bibcirculation/lib/bibcirculation_templates.py:5764 #: modules/bibcirculation/lib/bibcirculation_templates.py:5947 #: modules/bibcirculation/lib/bibcirculation_templates.py:6242 #: modules/bibcirculation/lib/bibcirculation_templates.py:6820 #: modules/bibcirculation/lib/bibcirculation_templates.py:7616 #: modules/bibcirculation/lib/bibcirculation_templates.py:8539 #: modules/bibcirculation/lib/bibcirculation_templates.py:9008 #: modules/bibcirculation/lib/bibcirculation_templates.py:9854 #: modules/bibcirculation/lib/bibcirculation_templates.py:10667 #: modules/bibcirculation/lib/bibcirculation_templates.py:10857 #: modules/bibcirculation/lib/bibcirculation_templates.py:13015 #: modules/bibcirculation/lib/bibcirculation_templates.py:13503 #: modules/bibcirculation/lib/bibcirculation_templates.py:13687 #: modules/bibcirculation/lib/bibcirculation_templates.py:13995 #: modules/bibcirculation/lib/bibcirculation_templates.py:15317 msgid "Back to home" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:715 msgid "Loaned" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:716 msgid "Returned" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:717 msgid "Renewalls" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:779 #: modules/bibcirculation/lib/bibcirculation_templates.py:928 msgid "Enter your period of interest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:930 #: modules/bibcirculation/lib/bibcirculation_templates.py:2555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4893 #: modules/bibcirculation/lib/bibcirculation_templates.py:4990 #: modules/bibcirculation/lib/bibcirculation_templates.py:5088 #: modules/bibcirculation/lib/bibcirculation_templates.py:5729 #: modules/bibcirculation/lib/bibcirculation_templates.py:5910 #: modules/bibcirculation/lib/bibcirculation_templates.py:7579 #: modules/bibcirculation/lib/bibcirculation_templates.py:7853 #: modules/bibcirculation/lib/bibcirculation_templates.py:8132 #: modules/bibcirculation/lib/bibcirculation_templates.py:8501 #: modules/bibcirculation/lib/bibcirculation_templates.py:10058 #: modules/bibcirculation/lib/bibcirculation_templates.py:13647 #: modules/bibcirculation/lib/bibcirculation_templates.py:14264 #: modules/bibcirculation/lib/bibcirculation_templates.py:15282 msgid "Confirm" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:959 #: modules/bibcirculation/lib/bibcirculation_templates.py:10852 msgid "You can see your loans " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:961 #: modules/bibcirculation/lib/bibcirculation_templates.py:10854 msgid "here" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:962 #: modules/bibcirculation/lib/bibcirculation_templates.py:10855 msgid "." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:993 #: modules/bibcirculation/lib/bibcirculation_templates.py:2475 msgid "A new loan has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1050 #: modules/bibcirculation/lib/bibcirculation_templates.py:1236 msgid "No more requests are pending." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1079 #: modules/bibcirculation/lib/bibcirculation_templates.py:15362 msgid "Actions" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1141 #: modules/bibcirculation/lib/bibcirculation_templates.py:1324 #: modules/bibcirculation/lib/bibcirculation_templates.py:15430 msgid "Associate barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1265 msgid "Options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1398 msgid "No hold requests waiting." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1425 #: modules/bibcirculation/lib/bibcirculation_templates.py:1670 #: modules/bibcirculation/lib/bibcirculation_templates.py:3833 msgid "Request status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1429 #: modules/bibcirculation/lib/bibcirculation_templates.py:1674 msgid "Request options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1457 msgid "Select hold request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1528 #: modules/bibcirculation/lib/bibcirculation_templates.py:4509 msgid "Reset" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1565 #, python-format msgid "" "The item %(x_title)s with barcode %(x_barcode)s has been returned with " "success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1621 msgid "Loan informations" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1626 #: modules/bibcirculation/lib/bibcirculation_templates.py:1925 #: modules/bibcirculation/lib/bibcirculation_templates.py:2484 #: modules/bibcirculation/lib/bibcirculation_templates.py:2827 #: modules/bibcirculation/lib/bibcirculation_templates.py:5231 #: modules/bibcirculation/lib/bibcirculation_templates.py:6319 #: modules/bibcirculation/lib/bibcirculation_templates.py:6550 #: modules/bibcirculation/lib/bibcirculation_templates.py:7008 #: modules/bibcirculation/lib/bibcirculation_templates.py:7159 #: modules/bibcirculation/lib/bibcirculation_templates.py:8634 #: modules/bibcirculation/lib/bibcirculation_templates.py:8867 #: modules/bibcirculation/lib/bibcirculation_templates.py:9101 #: modules/bibcirculation/lib/bibcirculation_templates.py:9326 #: modules/bibcirculation/lib/bibcirculation_templates.py:9532 #: modules/bibcirculation/lib/bibcirculation_templates.py:9743 #: modules/bibcirculation/lib/bibcirculation_templates.py:10142 #: modules/bibcirculation/lib/bibcirculation_templates.py:10342 #: modules/bibcirculation/lib/bibcirculation_templates.py:10596 #: modules/bibcirculation/lib/bibcirculation_templates.py:10741 #: modules/bibcirculation/lib/bibcirculation_templates.py:10935 #: modules/bibcirculation/lib/bibcirculation_templates.py:11276 #: modules/bibcirculation/lib/bibcirculation_templates.py:11351 #: modules/bibcirculation/lib/bibcirculation_templates.py:11433 #: modules/bibcirculation/lib/bibcirculation_templates.py:12248 #: modules/bibcirculation/lib/bibcirculation_templates.py:12320 #: modules/bibcirculation/lib/bibcirculation_templates.py:13104 #: modules/bibcirculation/lib/bibcirculation_templates.py:13378 #: modules/bibcirculation/lib/bibcirculation_templates.py:14383 #: modules/bibcirculation/lib/bibcirculation_templates.py:14600 #: modules/bibcirculation/lib/bibcirculation_templates.py:14849 #: modules/bibcirculation/lib/bibcirculation_templates.py:15577 #: modules/bibcirculation/lib/bibcirculation_templates.py:15739 #: modules/bibcirculation/lib/bibcirculation_templates.py:15867 #: modules/bibcirculation/lib/bibcirculation_templates.py:16092 msgid "Publisher" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1628 #: modules/bibcirculation/lib/bibcirculation_templates.py:11967 #: modules/bibcirculation/lib/bibcirculation_templates.py:12812 #: modules/bibcirculation/lib/bibcirculation_templates.py:12918 msgid "Return date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1666 #, python-format msgid "There %s request(s) on the book who has been returned." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1667 msgid "Waiting requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1711 msgid "Select request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1720 #, python-format msgid "There are no requests waiting on the item %s." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1754 msgid "Welcome to Invenio BibCirculation Admin" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1818 #: modules/bibcirculation/lib/bibcirculation_templates.py:5527 msgid "Search borrower by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1899 msgid "0 item(s) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1926 #: modules/bibcirculation/lib/bibcirculation_templates.py:15578 #: modules/bibcirculation/lib/bibcirculation_templates.py:15740 msgid "No. Copies" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2093 #: modules/bibcirculation/lib/bibcirculation_templates.py:8758 #: modules/bibcirculation/lib/bibcirculation_templates.py:9225 #: modules/bibcirculation/lib/bibcirculation_templates.py:10263 #: modules/bibcirculation/lib/bibcirculation_templates.py:14727 #: modules/bibcirculation/lib/bibcirculation_templates.py:16534 msgid "Select user" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2182 #: modules/bibcirculation/lib/bibcirculation_templates.py:2268 msgid "User information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2186 #: modules/bibcirculation/lib/bibcirculation_templates.py:2272 #: modules/bibcirculation/lib/bibcirculation_templates.py:2478 #: modules/bibcirculation/lib/bibcirculation_templates.py:3519 #: modules/bibcirculation/lib/bibcirculation_templates.py:3647 #: modules/bibcirculation/lib/bibcirculation_templates.py:4833 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5404 #: modules/bibcirculation/lib/bibcirculation_templates.py:5664 #: modules/bibcirculation/lib/bibcirculation_templates.py:5726 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5906 #: modules/bibcirculation/lib/bibcirculation_templates.py:6138 #: modules/bibcirculation/lib/bibcirculation_templates.py:6201 #: modules/bibcirculation/lib/bibcirculation_templates.py:8087 #: modules/bibcirculation/lib/bibcirculation_templates.py:8315 #: modules/bibcirculation/lib/bibcirculation_templates.py:8911 #: modules/bibcirculation/lib/bibcirculation_templates.py:9369 #: modules/bibcirculation/lib/bibcirculation_templates.py:10441 #: modules/bibcirculation/lib/bibcirculation_templates.py:10607 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13644 #: modules/bibcirculation/lib/bibcirculation_templates.py:13887 #: modules/bibcirculation/lib/bibcirculation_templates.py:13954 #: modules/bibcirculation/lib/bibcirculation_templates.py:14197 #: modules/bibcirculation/lib/bibcirculation_templates.py:14896 #: modules/bibcirculation/lib/bibcirculation_templates.py:16103 msgid "Phone" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2188 #: modules/bibcirculation/lib/bibcirculation_templates.py:2274 #: modules/bibcirculation/lib/bibcirculation_templates.py:2480 #: modules/bibcirculation/lib/bibcirculation_templates.py:3649 #: modules/bibcirculation/lib/bibcirculation_templates.py:4835 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5406 #: modules/bibcirculation/lib/bibcirculation_templates.py:5666 #: modules/bibcirculation/lib/bibcirculation_templates.py:5728 #: modules/bibcirculation/lib/bibcirculation_templates.py:8089 #: modules/bibcirculation/lib/bibcirculation_templates.py:8317 #: modules/bibcirculation/lib/bibcirculation_templates.py:8913 #: modules/bibcirculation/lib/bibcirculation_templates.py:9371 #: modules/bibcirculation/lib/bibcirculation_templates.py:10443 #: modules/bibcirculation/lib/bibcirculation_templates.py:10609 #: modules/bibcirculation/lib/bibcirculation_templates.py:11490 #: modules/bibcirculation/lib/bibcirculation_templates.py:12382 #: modules/bibcirculation/lib/bibcirculation_templates.py:14898 #: modules/bibcirculation/lib/bibcirculation_templates.py:16105 msgid "Mailbox" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2189 msgid "Barcode(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2190 #: modules/bibcirculation/lib/bibcirculation_templates.py:2335 #: modules/bibcirculation/lib/bibcirculation_templates.py:5360 #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5667 #: modules/bibcirculation/lib/bibcirculation_templates.py:5844 #: modules/bibcirculation/lib/bibcirculation_templates.py:6140 #: modules/bibcirculation/lib/bibcirculation_templates.py:6203 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6777 #: modules/bibcirculation/lib/bibcirculation_templates.py:7502 #: modules/bibcirculation/lib/bibcirculation_templates.py:8976 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9814 #: modules/bibcirculation/lib/bibcirculation_templates.py:10472 #: modules/bibcirculation/lib/bibcirculation_templates.py:10622 #: modules/bibcirculation/lib/bibcirculation_templates.py:10822 #: modules/bibcirculation/lib/bibcirculation_templates.py:11029 #: modules/bibcirculation/lib/bibcirculation_templates.py:12156 #: modules/bibcirculation/lib/bibcirculation_templates.py:12976 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13465 #: modules/bibcirculation/lib/bibcirculation_templates.py:13578 #: modules/bibcirculation/lib/bibcirculation_templates.py:13889 #: modules/bibcirculation/lib/bibcirculation_templates.py:13956 #: modules/bibcirculation/lib/bibcirculation_templates.py:14475 #: modules/bibcirculation/lib/bibcirculation_templates.py:15047 #: modules/bibcirculation/lib/bibcirculation_templates.py:15961 #: modules/bibcirculation/lib/bibcirculation_templates.py:16118 #: modules/bibcirculation/lib/bibcirculation_templates.py:16290 msgid "Continue" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2275 msgid "List of borrowed books" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2279 msgid "Write note(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2397 msgid "Notification has been sent!" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2482 #: modules/bibcirculation/lib/bibcirculation_templates.py:2825 #: modules/bibcirculation/lib/bibcirculation_templates.py:6317 #: modules/bibcirculation/lib/bibcirculation_templates.py:6546 #: modules/bibcirculation/lib/bibcirculation_templates.py:7004 #: modules/bibcirculation/lib/bibcirculation_templates.py:7155 #: modules/bibcirculation/lib/bibcirculation_templates.py:8632 #: modules/bibcirculation/lib/bibcirculation_templates.py:8865 #: modules/bibcirculation/lib/bibcirculation_templates.py:9099 #: modules/bibcirculation/lib/bibcirculation_templates.py:9324 #: modules/bibcirculation/lib/bibcirculation_templates.py:9528 #: modules/bibcirculation/lib/bibcirculation_templates.py:9741 #: modules/bibcirculation/lib/bibcirculation_templates.py:10140 #: modules/bibcirculation/lib/bibcirculation_templates.py:10338 #: modules/bibcirculation/lib/bibcirculation_templates.py:10594 #: modules/bibcirculation/lib/bibcirculation_templates.py:10737 #: modules/bibcirculation/lib/bibcirculation_templates.py:10933 #: modules/bibcirculation/lib/bibcirculation_templates.py:11272 #: modules/bibcirculation/lib/bibcirculation_templates.py:11347 #: modules/bibcirculation/lib/bibcirculation_templates.py:11425 #: modules/bibcirculation/lib/bibcirculation_templates.py:12244 #: modules/bibcirculation/lib/bibcirculation_templates.py:12316 #: modules/bibcirculation/lib/bibcirculation_templates.py:13100 #: modules/bibcirculation/lib/bibcirculation_templates.py:13376 #: modules/bibcirculation/lib/bibcirculation_templates.py:14381 #: modules/bibcirculation/lib/bibcirculation_templates.py:14597 #: modules/bibcirculation/lib/bibcirculation_templates.py:14846 #: modules/bibcirculation/lib/bibcirculation_templates.py:15865 #: modules/bibcirculation/lib/bibcirculation_templates.py:16089 #: modules/bibcirculation/lib/bibcirculation_templates.py:16219 #: modules/bibcirculation/lib/bibcirculation_templates.py:16406 msgid "Author(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2487 msgid "Print loan information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2627 #: modules/bibcirculation/lib/bibcirculation_templates.py:2730 msgid "Cancel hold request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2665 #: modules/bibcirculation/lib/bibcirculation_templates.py:3079 #: modules/bibcirculation/lib/bibcirculation_templates.py:3271 #: modules/bibcirculation/lib/bibcirculation_templates.py:3801 msgid "There are no requests." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2823 #: modules/bibcirculation/lib/bibcirculation_templates.py:6315 #: modules/bibcirculation/lib/bibcirculation_templates.py:6543 #: modules/bibcirculation/lib/bibcirculation_templates.py:7001 #: modules/bibcirculation/lib/bibcirculation_templates.py:7152 #: modules/bibcirculation/lib/bibcirculation_templates.py:8630 #: modules/bibcirculation/lib/bibcirculation_templates.py:8863 #: modules/bibcirculation/lib/bibcirculation_templates.py:9097 #: modules/bibcirculation/lib/bibcirculation_templates.py:9322 #: modules/bibcirculation/lib/bibcirculation_templates.py:9524 #: modules/bibcirculation/lib/bibcirculation_templates.py:9739 #: modules/bibcirculation/lib/bibcirculation_templates.py:10138 #: modules/bibcirculation/lib/bibcirculation_templates.py:10334 #: modules/bibcirculation/lib/bibcirculation_templates.py:10592 #: modules/bibcirculation/lib/bibcirculation_templates.py:10733 #: modules/bibcirculation/lib/bibcirculation_templates.py:10931 #: modules/bibcirculation/lib/bibcirculation_templates.py:11269 #: modules/bibcirculation/lib/bibcirculation_templates.py:11344 #: modules/bibcirculation/lib/bibcirculation_templates.py:11420 #: modules/bibcirculation/lib/bibcirculation_templates.py:12241 #: modules/bibcirculation/lib/bibcirculation_templates.py:12313 #: modules/bibcirculation/lib/bibcirculation_templates.py:13096 #: modules/bibcirculation/lib/bibcirculation_templates.py:13374 #: modules/bibcirculation/lib/bibcirculation_templates.py:14379 #: modules/bibcirculation/lib/bibcirculation_templates.py:14595 #: modules/bibcirculation/lib/bibcirculation_templates.py:14844 #: modules/bibcirculation/lib/bibcirculation_templates.py:15863 #: modules/bibcirculation/lib/bibcirculation_templates.py:16087 #: modules/bibcirculation/lib/bibcirculation_templates.py:16403 msgid "Item details" msgstr "" -#: modules/bibcirculation/lib/bibcirculation_templates.py:2830 -msgid "Edit this record" -msgstr "" - #: modules/bibcirculation/lib/bibcirculation_templates.py:2832 msgid "Additional details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2866 #: modules/bibcirculation/lib/bibcirculation_templates.py:6578 #: modules/bibcirculation/lib/bibcirculation_templates.py:7032 msgid "No of loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3028 msgid "Add new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3029 msgid "Order new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3030 msgid "ILL request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3031 msgid "Hold requests and loans overview on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3032 #: modules/bibcirculation/lib/bibcirculation_templates.py:3035 msgid "Hold requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3032 #: modules/bibcirculation/lib/bibcirculation_templates.py:3033 #: modules/bibcirculation/lib/bibcirculation_templates.py:3035 #: modules/bibcirculation/lib/bibcirculation_templates.py:3036 #: modules/bibcirculation/lib/bibcirculation_templates.py:3772 #: modules/bibcirculation/lib/bibcirculation_templates.py:3773 #: modules/bibcirculation/lib/bibcirculation_templates.py:3774 #: modules/bibcirculation/lib/bibcirculation_templates.py:3776 #: modules/bibcirculation/lib/bibcirculation_templates.py:3777 #: modules/bibcirculation/lib/bibcirculation_templates.py:3778 msgid "More details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3033 #: modules/bibcirculation/lib/bibcirculation_templates.py:3036 #: modules/bibcirculation/lib/bibcirculation_templates.py:3773 #: modules/bibcirculation/lib/bibcirculation_templates.py:3777 msgid "Loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3034 #: modules/bibcirculation/lib/bibcirculation_templates.py:3775 msgid "Historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3167 #: modules/bibcirculation/lib/bibcirculation_templates.py:3907 #: modules/bibcirculation/lib/bibcirculation_templates.py:4645 msgid "There are no loans." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3201 #: modules/bibcirculation/lib/bibcirculation_templates.py:3395 msgid "Returned on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3202 #: modules/bibcirculation/lib/bibcirculation_templates.py:3396 #: modules/bibcirculation/lib/bibcirculation_templates.py:3948 #: modules/bibcirculation/lib/bibcirculation_templates.py:4127 #: modules/bibcirculation/lib/bibcirculation_templates.py:4307 #: modules/bibcirculation/lib/bibcirculation_templates.py:4558 #: modules/bibcirculation/lib/bibcirculation_templates.py:4685 msgid "Renewals" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3203 #: modules/bibcirculation/lib/bibcirculation_templates.py:3397 #: modules/bibcirculation/lib/bibcirculation_templates.py:3949 #: modules/bibcirculation/lib/bibcirculation_templates.py:4128 #: modules/bibcirculation/lib/bibcirculation_templates.py:4308 #: modules/bibcirculation/lib/bibcirculation_templates.py:4559 msgid "Overdue letters" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3462 #: modules/bibcirculation/lib/bibcirculation_templates.py:3566 #: modules/bibcirculation/lib/bibcirculation_templates.py:3966 #: modules/bibcirculation/lib/bibcirculation_templates.py:4704 #: modules/bibcirculation/lib/bibcirculation_templates.py:9922 #: modules/bibcirculation/lib/bibcirculation_templates.py:14145 #: modules/bibcirculation/lib/bibcirculation_templates.py:15138 msgid "No notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3467 msgid "Notes about this library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3515 msgid "Library details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3521 msgid "No of items" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3571 msgid "Notes about this borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3644 #: modules/bibcirculation/lib/bibcirculation_templates.py:4830 #: modules/bibcirculation/lib/bibcirculation_templates.py:8084 msgid "Personal details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3767 msgid "New loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3768 msgid "New request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3769 msgid "New ILL request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3770 msgid "Notify this borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3771 msgid "Requests, Loans and ILL overview on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3772 #: modules/bibcirculation/lib/bibcirculation_templates.py:3776 msgid "Requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3774 #: modules/bibcirculation/lib/bibcirculation_templates.py:3778 msgid "ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3839 msgid "Request option(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3946 #: modules/bibcirculation/lib/bibcirculation_templates.py:7925 #: modules/bibcirculation/lib/bibcirculation_templates.py:9433 msgid "Loan date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3950 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5908 #: modules/bibcirculation/lib/bibcirculation_templates.py:11076 msgid "Type" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3951 #: modules/bibcirculation/lib/bibcirculation_templates.py:4688 msgid "Loan notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3952 msgid "Loans status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3953 #: modules/bibcirculation/lib/bibcirculation_templates.py:4689 msgid "Loan options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3971 #: modules/bibcirculation/lib/bibcirculation_templates.py:4709 #: modules/bibcirculation/lib/bibcirculation_templates.py:9927 msgid "See notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4099 #: modules/bibcirculation/lib/bibcirculation_templates.py:4279 msgid "No result for your search." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4129 #: modules/bibcirculation/lib/bibcirculation_templates.py:4309 #: modules/bibcirculation/lib/bibcirculation_templates.py:4560 msgid "Loan Notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4143 #: modules/bibcirculation/lib/bibcirculation_templates.py:4323 #: modules/bibcirculation/lib/bibcirculation_templates.py:4574 msgid "see notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4148 #: modules/bibcirculation/lib/bibcirculation_templates.py:4328 #: modules/bibcirculation/lib/bibcirculation_templates.py:4579 msgid "no notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4182 #: modules/bibcirculation/lib/bibcirculation_templates.py:4362 #: modules/bibcirculation/lib/bibcirculation_templates.py:4489 msgid "Send recall" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4436 msgid "CERN Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4467 msgid "Message" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4468 msgid "Choose a template" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4485 msgid "Templates" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4486 #: modules/bibcirculation/lib/bibcirculation_templates.py:4686 msgid "Overdue letter" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4487 msgid "Reminder" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4488 msgid "Notification" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4490 msgid "Load" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4510 msgid "Send" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4687 #: modules/bibcirculation/lib/bibcirculation_templates.py:7927 msgid "Loan status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4874 #: modules/bibcirculation/lib/bibcirculation_templates.py:8115 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 msgid "Write notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4934 msgid "Notes about borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4943 #: modules/bibcirculation/lib/bibcirculation_templates.py:5041 #: modules/bibcirculation/lib/bibcirculation_templates.py:7806 #: modules/bibcirculation/lib/bibcirculation_templates.py:10012 #: modules/bibcirculation/lib/bibcirculation_templates.py:11204 #: modules/bibcirculation/lib/bibcirculation_templates.py:12427 #: modules/bibcirculation/lib/bibcirculation_templates.py:12522 #: modules/bibcirculation/lib/bibcirculation_templates.py:12616 #: modules/bibcirculation/lib/bibcirculation_templates.py:12721 #: modules/bibcirculation/lib/bibcirculation_templates.py:12825 #: modules/bibcirculation/lib/bibcirculation_templates.py:12931 #: modules/bibcirculation/lib/bibcirculation_templates.py:13244 #: modules/bibcirculation/lib/bibcirculation_templates.py:15236 msgid "[delete]" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4986 #: modules/bibcirculation/lib/bibcirculation_templates.py:5085 #: modules/bibcirculation/lib/bibcirculation_templates.py:7849 #: modules/bibcirculation/lib/bibcirculation_templates.py:10055 #: modules/bibcirculation/lib/bibcirculation_templates.py:15279 msgid "Write new note" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5032 msgid "Notes about loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5225 msgid "Book Information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5229 msgid "EAN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5232 +#: modules/bibformat/lib/elements/bfe_imprint.py:25 msgid "Publication date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5233 msgid "Publication place" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5234 #: modules/bibcirculation/lib/bibcirculation_templates.py:6321 #: modules/bibcirculation/lib/bibcirculation_templates.py:10937 #: modules/bibcirculation/lib/bibcirculation_templates.py:11355 #: modules/bibcirculation/lib/bibcirculation_templates.py:12324 #: modules/bibcirculation/lib/bibcirculation_templates.py:14385 #: modules/bibcirculation/lib/bibcirculation_templates.py:14601 #: modules/bibcirculation/lib/bibcirculation_templates.py:14850 #: modules/bibcirculation/lib/bibcirculation_templates.py:15869 #: modules/bibcirculation/lib/bibcirculation_templates.py:16093 msgid "Edition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5235 msgid "Number of pages" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5236 msgid "Sub-library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5237 msgid "CERN Central Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5476 msgid "A new borrower has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5661 #: modules/bibcirculation/lib/bibcirculation_templates.py:5723 msgid "Borrower information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5763 #: modules/bibcirculation/lib/bibcirculation_templates.py:6241 #: modules/bibcirculation/lib/bibcirculation_templates.py:13994 msgid "The information has been updated." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5842 #: modules/bibcirculation/lib/bibcirculation_templates.py:5903 msgid "New library information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5946 msgid "A new library has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5999 #: modules/bibcirculation/lib/bibcirculation_templates.py:7671 msgid "Search library by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6032 #: modules/bibcirculation/lib/bibcirculation_templates.py:7716 msgid "Library(ies)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6135 #: modules/bibcirculation/lib/bibcirculation_templates.py:6198 msgid "Library information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6316 #: modules/bibcirculation/lib/bibcirculation_templates.py:14380 #: modules/bibcirculation/lib/bibcirculation_templates.py:15864 msgid "Book title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6318 #: modules/bibcirculation/lib/bibcirculation_templates.py:10934 #: modules/bibcirculation/lib/bibcirculation_templates.py:11349 #: modules/bibcirculation/lib/bibcirculation_templates.py:11431 #: modules/bibcirculation/lib/bibcirculation_templates.py:12318 #: modules/bibcirculation/lib/bibcirculation_templates.py:14382 #: modules/bibcirculation/lib/bibcirculation_templates.py:14598 #: modules/bibcirculation/lib/bibcirculation_templates.py:14847 #: modules/bibcirculation/lib/bibcirculation_templates.py:15866 #: modules/bibcirculation/lib/bibcirculation_templates.py:16090 msgid "Place" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6555 #, python-format msgid "Copies of %s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 msgid "New copy details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6792 msgid "new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6819 #, python-format msgid "A %s has been added." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7181 msgid "Update copy information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7571 msgid "New copy information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7615 msgid "This item has been updated." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7698 msgid "0 library(ies) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7797 msgid "Notes about library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7929 msgid "Requested ?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7950 msgid "New due date: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7975 msgid "Submit new due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8019 #, python-format msgid "The due date has been updated. New due date: %s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8020 msgid "Back borrower's loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8273 msgid "Select item" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8312 #: modules/bibcirculation/lib/bibcirculation_templates.py:8907 #: modules/bibcirculation/lib/bibcirculation_templates.py:9365 #: modules/bibcirculation/lib/bibcirculation_templates.py:10437 #: modules/bibcirculation/lib/bibcirculation_templates.py:10603 #: modules/bibcirculation/lib/bibcirculation_templates.py:14893 #: modules/bibcirculation/lib/bibcirculation_templates.py:16100 msgid "Borrower details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8350 msgid "This item has no holdings." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8478 #: modules/bibcirculation/lib/bibcirculation_templates.py:8973 msgid "Enter the period of interest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8479 #: modules/bibcirculation/lib/bibcirculation_templates.py:8974 msgid "From: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8480 #: modules/bibcirculation/lib/bibcirculation_templates.py:8975 msgid "To: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8538 #: modules/bibcirculation/lib/bibcirculation_templates.py:9007 msgid "A new request has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9805 #: modules/bibcirculation/lib/bibcirculation_templates.py:13126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13414 msgid "Order details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9807 #: modules/bibcirculation/lib/bibcirculation_templates.py:9901 #: modules/bibcirculation/lib/bibcirculation_templates.py:13126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13415 msgid "Vendor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9625 #: modules/bibcirculation/lib/bibcirculation_templates.py:9808 #: modules/bibcirculation/lib/bibcirculation_templates.py:9903 #: modules/bibcirculation/lib/bibcirculation_templates.py:13416 msgid "Price" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9626 #: modules/bibcirculation/lib/bibcirculation_templates.py:9810 #: modules/bibcirculation/lib/bibcirculation_templates.py:13232 #: modules/bibcirculation/lib/bibcirculation_templates.py:13418 msgid "Order date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9627 #: modules/bibcirculation/lib/bibcirculation_templates.py:9811 #: modules/bibcirculation/lib/bibcirculation_templates.py:9905 #: modules/bibcirculation/lib/bibcirculation_templates.py:11692 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11965 #: modules/bibcirculation/lib/bibcirculation_templates.py:12081 #: modules/bibcirculation/lib/bibcirculation_templates.py:12509 #: modules/bibcirculation/lib/bibcirculation_templates.py:12603 #: modules/bibcirculation/lib/bibcirculation_templates.py:12706 #: modules/bibcirculation/lib/bibcirculation_templates.py:12809 #: modules/bibcirculation/lib/bibcirculation_templates.py:12915 #: modules/bibcirculation/lib/bibcirculation_templates.py:13233 #: modules/bibcirculation/lib/bibcirculation_templates.py:13419 #: modules/bibcirculation/lib/bibcirculation_templates.py:15100 msgid "Expected date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9853 msgid "A new purchase has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9902 msgid "Ordered date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9951 #: modules/bibcirculation/lib/bibcirculation_templates.py:11127 msgid "select" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10003 #: modules/bibcirculation/lib/bibcirculation_templates.py:15227 msgid "Notes about acquisition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10444 #: modules/bibcirculation/lib/bibcirculation_templates.py:10598 #: modules/bibcirculation/lib/bibcirculation_templates.py:10816 #: modules/bibcirculation/lib/bibcirculation_templates.py:11023 #: modules/bibcirculation/lib/bibcirculation_templates.py:11495 #: modules/bibcirculation/lib/bibcirculation_templates.py:12387 #: modules/bibcirculation/lib/bibcirculation_templates.py:14416 #: modules/bibcirculation/lib/bibcirculation_templates.py:14603 #: modules/bibcirculation/lib/bibcirculation_templates.py:14852 #: modules/bibcirculation/lib/bibcirculation_templates.py:15953 #: modules/bibcirculation/lib/bibcirculation_templates.py:16095 #: modules/bibcirculation/lib/bibcirculation_templates.py:16286 #: modules/bibcirculation/lib/bibcirculation_templates.py:16413 msgid "ILL request details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10445 #: modules/bibcirculation/lib/bibcirculation_templates.py:10599 #: modules/bibcirculation/lib/bibcirculation_templates.py:10817 #: modules/bibcirculation/lib/bibcirculation_templates.py:11023 #: modules/bibcirculation/lib/bibcirculation_templates.py:12383 #: modules/bibcirculation/lib/bibcirculation_templates.py:14604 #: modules/bibcirculation/lib/bibcirculation_templates.py:15953 #: modules/bibcirculation/lib/bibcirculation_templates.py:16096 #: modules/bibcirculation/lib/bibcirculation_templates.py:16287 #: modules/bibcirculation/lib/bibcirculation_templates.py:16414 msgid "Period of interest - From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10447 #: modules/bibcirculation/lib/bibcirculation_templates.py:10600 #: modules/bibcirculation/lib/bibcirculation_templates.py:10818 #: modules/bibcirculation/lib/bibcirculation_templates.py:11025 #: modules/bibcirculation/lib/bibcirculation_templates.py:12384 #: modules/bibcirculation/lib/bibcirculation_templates.py:14605 #: modules/bibcirculation/lib/bibcirculation_templates.py:15956 #: modules/bibcirculation/lib/bibcirculation_templates.py:16097 #: modules/bibcirculation/lib/bibcirculation_templates.py:16288 #: modules/bibcirculation/lib/bibcirculation_templates.py:16415 msgid "Period of interest - To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10449 #: modules/bibcirculation/lib/bibcirculation_templates.py:10601 #: modules/bibcirculation/lib/bibcirculation_templates.py:10819 #: modules/bibcirculation/lib/bibcirculation_templates.py:11026 #: modules/bibcirculation/lib/bibcirculation_templates.py:14472 #: modules/bibcirculation/lib/bibcirculation_templates.py:14606 #: modules/bibcirculation/lib/bibcirculation_templates.py:14855 #: modules/bibcirculation/lib/bibcirculation_templates.py:15958 #: modules/bibcirculation/lib/bibcirculation_templates.py:16098 #: modules/bibcirculation/lib/bibcirculation_templates.py:16289 #: modules/bibcirculation/lib/bibcirculation_templates.py:16416 msgid "Additional comments" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10450 msgid "Borrower wants only this edition?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10602 #: modules/bibcirculation/lib/bibcirculation_templates.py:14856 #: modules/bibcirculation/lib/bibcirculation_templates.py:16099 msgid "Only this edition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10666 msgid "A new ILL request has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10820 #: modules/bibcirculation/lib/bibcirculation_templates.py:11027 #, python-format msgid "" "I accept the %s of the service in particular the return of books in due time." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10821 #: modules/bibcirculation/lib/bibcirculation_templates.py:11028 msgid "I want this edition only." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11072 #: modules/bibcirculation/lib/bibcirculation_templates.py:15098 msgid "Supplier" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11075 msgid "Interest from" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11421 msgid "Periodical Title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11423 msgid "Article Title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11427 msgid "Volume, Issue, Page" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11429 #: modules/bibcirculation/lib/bibcirculation_templates.py:16226 #: modules/bibcirculation/lib/bibcirculation_templates.py:16412 msgid "ISSN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11488 #: modules/bibcirculation/lib/bibcirculation_templates.py:12380 msgid "Borrower request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11491 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14853 msgid "Period of interest (From)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11492 #: modules/bibcirculation/lib/bibcirculation_templates.py:14471 #: modules/bibcirculation/lib/bibcirculation_templates.py:14854 msgid "Period of interest (To)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11493 #: modules/bibcirculation/lib/bibcirculation_templates.py:12385 msgid "Borrower comments" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11494 #: modules/bibcirculation/lib/bibcirculation_templates.py:12386 msgid "Only this edition?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11531 #: modules/bibcirculation/lib/bibcirculation_templates.py:11560 #: modules/bibcirculation/lib/bibcirculation_templates.py:11616 #: modules/bibcirculation/lib/bibcirculation_templates.py:11648 #: modules/bibcirculation/lib/bibcirculation_templates.py:11790 #: modules/bibcirculation/lib/bibcirculation_templates.py:11963 #: modules/bibcirculation/lib/bibcirculation_templates.py:12079 #: modules/bibcirculation/lib/bibcirculation_templates.py:12416 #: modules/bibcirculation/lib/bibcirculation_templates.py:12506 #: modules/bibcirculation/lib/bibcirculation_templates.py:12600 #: modules/bibcirculation/lib/bibcirculation_templates.py:12703 #: modules/bibcirculation/lib/bibcirculation_templates.py:12806 #: modules/bibcirculation/lib/bibcirculation_templates.py:12912 msgid "ILL request ID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11531 #: modules/bibcirculation/lib/bibcirculation_templates.py:11560 #: modules/bibcirculation/lib/bibcirculation_templates.py:11728 #: modules/bibcirculation/lib/bibcirculation_templates.py:11873 #: modules/bibcirculation/lib/bibcirculation_templates.py:12001 #: modules/bibcirculation/lib/bibcirculation_templates.py:12116 #: modules/bibcirculation/lib/bibcirculation_templates.py:12417 #: modules/bibcirculation/lib/bibcirculation_templates.py:12512 #: modules/bibcirculation/lib/bibcirculation_templates.py:12606 #: modules/bibcirculation/lib/bibcirculation_templates.py:12711 #: modules/bibcirculation/lib/bibcirculation_templates.py:12815 #: modules/bibcirculation/lib/bibcirculation_templates.py:12921 #: modules/bibcirculation/lib/bibcirculation_templates.py:13234 #: modules/bibcirculation/lib/bibcirculation_templates.py:13420 msgid "Previous notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11578 #: modules/bibcirculation/lib/bibcirculation_templates.py:11745 #: modules/bibcirculation/lib/bibcirculation_templates.py:11891 #: modules/bibcirculation/lib/bibcirculation_templates.py:12018 #: modules/bibcirculation/lib/bibcirculation_templates.py:12133 #: modules/bibcirculation/lib/bibcirculation_templates.py:12451 #: modules/bibcirculation/lib/bibcirculation_templates.py:12545 #: modules/bibcirculation/lib/bibcirculation_templates.py:12639 #: modules/bibcirculation/lib/bibcirculation_templates.py:12744 #: modules/bibcirculation/lib/bibcirculation_templates.py:12848 #: modules/bibcirculation/lib/bibcirculation_templates.py:12954 #: modules/bibcirculation/lib/bibcirculation_templates.py:15104 msgid "Library notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11617 #: modules/bibcirculation/lib/bibcirculation_templates.py:11649 #: modules/bibcirculation/lib/bibcirculation_templates.py:12507 #: modules/bibcirculation/lib/bibcirculation_templates.py:12601 #: modules/bibcirculation/lib/bibcirculation_templates.py:12704 #: modules/bibcirculation/lib/bibcirculation_templates.py:12807 #: modules/bibcirculation/lib/bibcirculation_templates.py:12913 msgid "Library/Supplier" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11694 #: modules/bibcirculation/lib/bibcirculation_templates.py:11842 #: modules/bibcirculation/lib/bibcirculation_templates.py:11969 #: modules/bibcirculation/lib/bibcirculation_templates.py:12084 #: modules/bibcirculation/lib/bibcirculation_templates.py:12510 #: modules/bibcirculation/lib/bibcirculation_templates.py:12604 #: modules/bibcirculation/lib/bibcirculation_templates.py:12709 #: modules/bibcirculation/lib/bibcirculation_templates.py:12813 #: modules/bibcirculation/lib/bibcirculation_templates.py:12919 #: modules/bibcirculation/lib/bibcirculation_templates.py:13144 msgid "Cost" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11834 #: modules/bibcirculation/lib/bibcirculation_templates.py:11966 #: modules/bibcirculation/lib/bibcirculation_templates.py:12082 #: modules/bibcirculation/lib/bibcirculation_templates.py:12707 #: modules/bibcirculation/lib/bibcirculation_templates.py:12810 #: modules/bibcirculation/lib/bibcirculation_templates.py:12916 #: modules/bibcirculation/lib/bibcirculation_templates.py:15101 msgid "Arrival date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11873 msgid "Barcoce" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13014 msgid "An ILL request has been updated with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13502 msgid "Purchase information updated with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13576 #: modules/bibcirculation/lib/bibcirculation_templates.py:13641 msgid "New vendor information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13686 msgid "A new vendor has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13740 #: modules/bibcirculation/lib/bibcirculation_templates.py:14048 msgid "Search vendor by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13777 #: modules/bibcirculation/lib/bibcirculation_templates.py:14085 msgid "Vendor(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13884 #: modules/bibcirculation/lib/bibcirculation_templates.py:13951 msgid "Vendor information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14150 #: modules/bibcirculation/lib/bibcirculation_templates.py:14240 msgid "Notes about this vendor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14193 msgid "Vendor details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14279 msgid "Add notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14377 msgid "Book does not exists on Invenio." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14377 msgid "Please fill the following form." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14473 #: modules/bibcirculation/lib/bibcirculation_templates.py:15959 #, python-format msgid "" "Borrower accepts the %s of the service in particular the return of books in " "due time." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14474 #: modules/bibcirculation/lib/bibcirculation_templates.py:15960 msgid "Borrower wants this edition only." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14607 msgid "Only this edition." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15143 msgid "Notes about this ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15315 msgid "No more requests are pending or waiting." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15466 msgid "Printable format" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15526 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15684 -msgid "" -"Check if the book already exists on Invenio, before to send your ILL request." +msgid "Check if the book already exists on Invenio," msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15550 #: modules/bibcirculation/lib/bibcirculation_templates.py:15713 msgid "0 items found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15618 msgid "Proceed anyway" msgstr "" +#: modules/bibcirculation/lib/bibcirculation_templates.py:15684 +msgid "" +"Check if the book already exists on Invenio, before to send your ILL request." +msgstr "" + #: modules/bibcirculation/lib/bibcirculation_templates.py:15861 msgid "Book does not exists on Invenio. Please fill the following form." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16216 msgid "Article details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16217 #: modules/bibcirculation/lib/bibcirculation_templates.py:16404 msgid "Periodical title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16218 #: modules/bibcirculation/lib/bibcirculation_templates.py:16405 msgid "Article title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16220 #: modules/bibcirculation/lib/bibcirculation_templates.py:16407 +#: modules/websearch/lib/websearch_templates_epfl.py:986 +#: modules/websearch/lib/websearch_templates_epfl.py:1708 msgid "Report number" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16221 #: modules/bibcirculation/lib/bibcirculation_templates.py:16408 msgid "Volume" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16222 #: modules/bibcirculation/lib/bibcirculation_templates.py:16409 msgid "Issue" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16223 #: modules/bibcirculation/lib/bibcirculation_templates.py:16410 msgid "Page" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16225 msgid "Budget code" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:60 msgid "BibCheck Admin" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:70 #: modules/bibcheck/web/admin/bibcheckadmin.py:250 #: modules/bibcheck/web/admin/bibcheckadmin.py:290 #: modules/bibcheck/web/admin/bibcheckadmin.py:328 msgid "Not authorized" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:80 #: modules/bibcheck/web/admin/bibcheckadmin.py:82 #: modules/bibcheck/web/admin/bibcheckadmin.py:84 msgid "ERROR" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:80 msgid "does not exist" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:82 msgid "is not a directory" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:84 msgid "is not writable" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:117 msgid "Limit to knowledge bases containing string:" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:135 msgid "Really delete" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:141 msgid "Verify syntax" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:146 msgid "Create new" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:166 #, python-format msgid "File %s does not exist." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:175 msgid "Calling bibcheck -verify failed." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:182 msgid "Verify BibCheck config file" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:183 msgid "Verify problem" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:205 #: modules/bibcheck/web/admin/bibcheckadmin.py:265 #: modules/bibcheck/web/admin/bibcheckadmin.py:305 msgid "File" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:241 msgid "Edit BibCheck config file" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:270 msgid "already exists." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:273 msgid "written OK." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:279 msgid "write failed." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:281 msgid "Save BibCheck config file" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:315 msgid "deleted" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:317 msgid "delete failed" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:319 msgid "Delete BibCheck config file" msgstr "" #: modules/bibharvest/lib/oai_repository_admin.py:153 #: modules/bibharvest/lib/oai_repository_admin.py:258 #: modules/bibharvest/lib/oai_repository_admin.py:337 msgid "Return to main selection" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:118 msgid "Overview of sources" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:119 msgid "Harvesting status" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:137 msgid "Not Set" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:138 msgid "never" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:149 msgid "Never harvested" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:161 msgid "View Holding Pen" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:186 #: modules/bibharvest/lib/oai_harvest_admin.py:547 msgid "No OAI source ID selected." msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:285 #: modules/bibharvest/lib/oai_harvest_admin.py:422 #: modules/bibharvest/lib/oai_harvest_admin.py:436 #: modules/bibharvest/lib/oai_harvest_admin.py:451 #: modules/bibharvest/lib/oai_harvest_admin.py:488 #: modules/bibharvest/lib/oai_harvest_admin.py:535 msgid "Go back to the OAI sources overview" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:408 msgid "Try again with another url" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:415 msgid "Continue anyway" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:818 msgid "Return to the month view" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1092 msgid "Compare with original" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1098 #: modules/bibharvest/lib/oai_harvest_admin.py:1143 msgid "Delete from holding pen" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1116 msgid "Error when retrieving the Holding Pen entry" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1124 msgid "Error when retrieving the record" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1132 msgid "" "Error when formatting the Holding Pen entry. Probably it's content is broken" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1137 msgid "Accept Holding Pen version" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:75 msgid "Limit display to knowledge bases matching" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:76 msgid "in their rules and descriptions" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:140 msgid "Add New Knowledge Base" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:141 msgid "Configure a dynamic KB" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:142 msgid "Add New Taxonomy" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:183 msgid "This knowledge base already has a taxonomy file." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:184 msgid "If you upload another file, the current version will be replaced." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:186 msgid "The current taxonomy can be accessed with this URL" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:189 msgid "Please upload the RDF file for taxonomy" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:224 msgid "Please configure" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:225 msgid "" "A dynamic knowledge base is a list of values of a " "given field. The list is generated dynamically by " "searching the records using a search expression." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:229 msgid "" "Example: Your records contain field 270__a for the " "name and address of the author's institute. If you " "set the field to '270__a' and the expression to " "'270__a:*Paris*', a list of institutes in Paris " "will be created." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:234 msgid "" "If the expression is empty, a list of all values in " "270__a will be created." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:236 msgid "" "If the expression contains '%', like '270__a:*%*', " "it will be replaced by a search string when the " "knowledge base is used." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:239 msgid "" "You can enter a collection name if the expression " "should be evaluated in a specific collection." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:255 msgid "Exporting: " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:296 #: modules/bibknowledge/lib/bibknowledge_templates.py:557 #: modules/bibknowledge/lib/bibknowledge_templates.py:625 msgid "Knowledge Base Mappings" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:297 #: modules/bibknowledge/lib/bibknowledge_templates.py:558 #: modules/bibknowledge/lib/bibknowledge_templates.py:626 msgid "Knowledge Base Attributes" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:298 #: modules/bibknowledge/lib/bibknowledge_templates.py:559 #: modules/bibknowledge/lib/bibknowledge_templates.py:627 msgid "Knowledge Base Dependencies" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:318 msgid "" "Here you can add new mappings to this base and " "change the base attributes." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:333 msgid "Map From" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:396 msgid "Search for a mapping" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:514 msgid "You can get a these mappings in textual format by: " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:516 msgid "And the KBA version by:" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:667 msgid "Your rule" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:669 msgid "The left side of the rule " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:671 msgid "The right side of the rule " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:672 msgid "already appears in these knowledge bases" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:685 msgid "Please select action" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:686 msgid "Replace the selected rules with this rule" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:687 msgid "Add this rule in the current knowledge base" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:688 msgid "Cancel: do not add this rule" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:719 msgid "" "It is not possible to have two rules with the same left side in the same " "knowledge base." msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:80 msgid "BibKnowledge Admin" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:100 msgid "Knowledge Bases" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:118 msgid "upload is a file" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:130 msgid "Cannot create upload" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:144 msgid "File uploaded" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:173 #: modules/bibknowledge/lib/bibknowledgeadmin.py:217 #: modules/bibknowledge/lib/bibknowledgeadmin.py:267 #: modules/bibknowledge/lib/bibknowledgeadmin.py:304 #: modules/bibknowledge/lib/bibknowledgeadmin.py:357 #: modules/bibknowledge/lib/bibknowledgeadmin.py:466 #: modules/bibknowledge/lib/bibknowledgeadmin.py:525 #: modules/bibknowledge/lib/bibknowledgeadmin.py:587 #: modules/bibknowledge/lib/bibknowledgeadmin.py:679 #: modules/bibknowledge/lib/bibknowledgeadmin.py:696 #: modules/bibknowledge/lib/bibknowledgeadmin.py:711 #: modules/bibknowledge/lib/bibknowledgeadmin.py:747 msgid "Manage Knowledge Bases" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:186 #: modules/bibknowledge/lib/bibknowledgeadmin.py:231 #: modules/bibknowledge/lib/bibknowledgeadmin.py:317 #: modules/bibknowledge/lib/bibknowledgeadmin.py:371 #: modules/bibknowledge/lib/bibknowledgeadmin.py:479 #: modules/bibknowledge/lib/bibknowledgeadmin.py:544 #: modules/bibknowledge/lib/bibknowledgeadmin.py:723 msgid "Unknown Knowledge Base" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:193 #, python-format msgid "Knowledge Base %s" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:240 #, python-format msgid "Knowledge Base %s Attributes" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:326 #, python-format msgid "Knowledge Base %s Dependencies" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:408 msgid "Left side exists" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:416 msgid "Right side exists" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:589 msgid "Knowledge base name missing" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:609 msgid "Unknown knowledge base" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:610 msgid "There is no knowledge base with that name." msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:629 msgid "No such knowledge base" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:711 msgid "Delete Knowledge Base" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:157 msgid "BibSword Admin Interface" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:171 #: modules/bibsword/lib/bibsword_webinterface.py:277 #: modules/bibsword/lib/bibsword_webinterface.py:301 #: modules/bibsword/lib/bibsword_webinterface.py:330 msgid "Export with BibSword: Step 2/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:222 #: modules/bibsword/lib/bibsword_webinterface.py:233 #: modules/bibsword/lib/bibsword_webinterface.py:291 msgid "Export with BibSword: Step 1/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:315 #: modules/bibsword/lib/bibsword_webinterface.py:343 #: modules/bibsword/lib/bibsword_webinterface.py:374 msgid "Export with BibSword: Step 3/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:358 #: modules/bibsword/lib/bibsword_webinterface.py:389 msgid "Export with BibSword: Step 4/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:434 msgid "Export with BibSword: Acknowledgement" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:202 msgid "More than one possible recID, ambiguous behaviour" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:202 msgid "No records match that file name" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:203 msgid "File already exists" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:203 msgid "A file with the same name and format already exists" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:204 #, python-format msgid "No rights to upload to collection '%s'" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:413 #: modules/bibupload/lib/batchuploader_engine.py:426 #, python-format msgid "" "The user '%(x_user)s' is not authorized to modify collection '%(x_coll)s'" msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:284 +#, python-format +msgid "" +"You can set a new alert from %(x_url_open)syour searches%(x_url_close)s." +msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:381 +#: modules/webalert/lib/webalert_templates_epfl.py:429 +#: modules/webalert/lib/webalert_templates_epfl.py:488 +#: modules/webbasket/lib/webbasket_templates_epfl.py:391 +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +#: modules/webbasket/lib/webbasket_templates_epfl.py:491 +#: modules/webbasket/lib/webbasket_templates_epfl.py:590 +#: modules/webbasket/lib/webbasket_templates_epfl.py:683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:762 +msgid "New personal collection" +msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:383 +#: modules/websession/lib/websession_templates_epfl.py:148 +msgid "My alerts" +msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:431 +#: modules/webalert/lib/webalert_templates_epfl.py:490 +msgid "Performed searches" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:60 +msgid "You have no personal or group collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:61 +#, python-format +msgid "" +"You may want to start by %(x_url_open)screating a new collection" +"%(x_url_close)s." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:68 +msgid "Create collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:358 +#: modules/websearch/lib/websearch_templates_epfl.py:1524 +msgid "Export" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:359 +msgid "Add to my website" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:388 +#: modules/websearch/lib/websearch_templates_epfl.py:1251 +msgid "Search results" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:390 +msgid "Search collections for" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +msgid "Create new collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +#: modules/webbasket/lib/webbasket_templates_epfl.py:626 +msgid "Collection name" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:474 +#, python-format +msgid "%i items have been successfully added to your collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:475 +#, python-format +msgid "Proceed to the %(x_url_open)scollection%(x_url_close)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:480 +#, python-format +msgid " or return to your %(x_url_open)sprevious collection%(x_url_close)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:491 +msgid "Successfully added" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:519 +#, python-format +msgid "" +"Please choose a collection: %(x_basket_selection_box)s (or " +"%(x_url_open)screate a new one%(x_url_close)s first)" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:530 +#, python-format +msgid "Adding %i items to your collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:550 +msgid "Are you sure you want to delete this collection?" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:553 +#, python-format +msgid "%i users are subscribed to this collection." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:555 +#, python-format +msgid "%i user groups are subscribed to this collection." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:557 +#, python-format +msgid "You have set %i alerts on this collection." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:654 +#: modules/webbasket/lib/webbasket_templates_epfl.py:869 +msgid "Delete collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:684 +#, python-format +msgid "Editing collection %(x_basket_name)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:761 +msgid "Sharing collection to a new group" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:868 +msgid "Edit collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:883 +#, python-format +msgid "%(nb)i records, last modified on %(date)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:929 +msgid "collection is empty" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1188 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1193 +msgid "All my collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1197 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1202 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1275 +msgid "My personal collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1207 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1212 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1285 +msgid "My groups' collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1270 +msgid "*** collection name ***" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:246 +#: modules/websearch/lib/websearch_templates_epfl.py:386 +msgid "Infoscience, EPFL's scientific publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:250 +#: modules/websearch/lib/websearch_templates_epfl.py:390 +msgid "EPFL Directive for Research Integrity" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:254 +#: modules/websearch/lib/websearch_templates_epfl.py:394 +msgid "" +"SNSF regulations on information, valorisation and rights to research results" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:259 +#: modules/websearch/lib/websearch_templates_epfl.py:399 +msgid "Overview of SNSF Guidelines on Open Access" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:263 +#: modules/websearch/lib/websearch_templates_epfl.py:403 +msgid "Open Access Guidelines for researchers funded by the ERC" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:295 +msgid "Latest additions" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:356 +msgid "Search publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:359 +#, python-format +msgid "Access to the %s scientific publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:360 +#, python-format +msgid "Access to the %s documentary resources" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:362 +msgid "More news" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:509 +msgid "Filter by document type" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:510 +msgid "Publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:511 +#: modules/webstyle/lib/webstyle_templates_epfl.py:469 +msgid "Journal Articles" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:513 +#: modules/webstyle/lib/webstyle_templates_epfl.py:470 +msgid "Conference Papers" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:515 +msgid "Monographs" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:516 +msgid "Books" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:517 +#: modules/webstyle/lib/webstyle_templates_epfl.py:471 +msgid "Theses" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:518 +msgid "Book Chapters" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:519 +msgid "Conference Proceedings" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:521 +#: modules/websearch/lib/websearch_templates_epfl.py:523 +msgid "Presentations & Talks" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:522 +msgid "Posters" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:525 +msgid "Standards & Patents" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:526 +msgid "Standards" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:527 +msgid "Patents" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:529 +#: modules/webstyle/lib/webstyle_templates_epfl.py:472 +msgid "Reports" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:530 +msgid "Technical Reports" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:531 +msgid "Working Papers" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:533 +msgid "Lectures & teaching material" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:534 +msgid "Teaching Documents" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:535 +msgid "Student Projects" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:537 +msgid "Filter by publication status" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:538 +msgid "Peer-reviewed publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:539 +msgid "Published" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:540 +msgid "Accepted" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:541 +msgid "Submitted" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:543 +msgid "Filter by origin" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:544 +msgid "Work produced at EPFL" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:546 +msgid "Filter by fulltext availability" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:547 +msgid "Publicly available" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:548 +msgid "Restricted access" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:569 +msgid "Boolean operators" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:570 +msgid "" +"AND: vetterli AND wavelet (you can also use + char " +"instead of AND)" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:571 +msgid "" +"NOT: vetterli NOT wavelet (you can also use - char " +"instead of NOT)" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:572 +msgid "" +"OR: vetterli OR wavelet (you can also use | char " +"instead of OR)" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:573 +msgid "Parentheses" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:574 +msgid "" +"You can also use parentheses in your queries to group boolean expressions " +"together. Nested parentheses are also supported." +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:575 +msgid "Full documentation about searching" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:855 +msgid "Search specifically in" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:857 +msgid "Focus on" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:980 +#: modules/websearch/lib/websearch_templates_epfl.py:989 +msgid "Any field" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:983 +msgid "Keyword" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:985 +msgid "Source" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:987 +msgid "DOI" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1059 +#: modules/websearch/lib/websearch_templates_epfl.py:1061 +#, python-format +msgid "%s results" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1480 +msgid "Add record to collection" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1481 +msgid "Please choose a collection" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1482 +#, python-format +msgid "or %(x_url_open)screate a new one%(x_url_close)s first" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1485 +msgid "Add record" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1525 +msgid "Integrate these publications into my website" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1707 +msgid "First author" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1709 +msgid "Publication year" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1710 +msgid "Ascending" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1711 +msgid "Descending" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1713 +msgid "HTML detailed" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1714 +msgid "HTML MARC21" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1762 +msgid "Sort by" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:2110 +msgid "Add to my collections" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:146 +msgid "My profile" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:149 +msgid "to be validated" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:150 +msgid "to be imported" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:151 +msgid "to be matched" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:153 +msgid "XX-Translate-test" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:204 +msgid "Dropbox" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:205 +msgid "Delete by reference" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:206 +msgid "Laboratories management" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:207 +msgid "Laboratories stats" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:208 +msgid "Authors management" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:209 +msgid "Create user" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:210 +msgid "Publication statistics / bibliometrics" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:215 +msgid "Deduplicate" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:216 +msgid "Manual match" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:217 +msgid "Rejected imports" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:135 +#: modules/webstyle/lib/webstyle_templates_epfl.py:475 +msgid "About Infoscience" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:136 +msgid "Contact" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:137 +msgid "Accessibility" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:169 +#, python-format +msgid "Logout (%(username)s)" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:225 +msgid "Infoscience: Scientific publications of EPFL" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:333 +msgid "Choose your language" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:460 +msgid "Publications by school" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:461 +msgid "ENAC - Architecture, Civil and Environmental Engineering" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:462 +msgid "I&C - Computer & Communication Sciences" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:463 +msgid "SB - Basic Sciences" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:464 +msgid "STI - Engineering" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:465 +msgid "SV - Life Sciences" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:466 +msgid "CDM - Management of Technology" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:467 +msgid "CDH - College of Humanities" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:468 +msgid "Publications by document type" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:473 +msgid "Deposit / Publish" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:476 +msgid "Open Access & Copyright" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:477 +msgid "Start using Infoscience" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:478 +msgid "Add a document" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:479 +msgid "Document types" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:480 +msgid "Publication status" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:481 +msgid "Manage publications" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:482 +msgid "Edit a publication" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:483 +msgid "Remove a publication" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:484 +msgid "Export a publication list" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:485 +msgid "Manage my account" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:486 +msgid "Create a personal collection" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:487 +msgid "Display my publications in people@EPFL" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:527 +#: modules/webstyle/lib/webstyle_templates_epfl.py:542 +msgid "EPFL Homepage" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:543 +msgid "Infoscience Homepage" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:15 +msgid "Journal article" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:17 +msgid "Book" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:19 +msgid "Book Chapter" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:21 +msgid "Conference paper" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:23 +msgid "Lecture" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:25 +msgid "Report" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:29 +msgid "Patent" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:31 +msgid "Researcher's profile" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:33 +msgid "Teaching document" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:35 +msgid "Poster" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:37 +msgid "Conference proceedings" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:39 +msgid "Standard" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:41 +msgid "Student project" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:43 +msgid "Presentation / Talk" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:45 +msgid "Thesis" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:47 +msgid "Working paper" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:149 +msgid "Get the whole digitalized project" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:194 +msgid "EPFL intranet: Fulltext" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:204 +#, python-format +msgid "EPFL intranet: %s" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:208 +msgid "Order free pdf" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:280 +msgid "Thesis submitted - Forthcoming publication" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:282 +msgid "Official version" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:291 +msgid "There is no available fulltext. Please contact the lab or the authors." +msgstr "" + +#: modules/bibformat/lib/elements/bfe_host.py:31 +#: modules/bibformat/lib/elements/bfe_host.py:38 +msgid "Submitted to" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_host.py:33 +#: modules/bibformat/lib/elements/bfe_host.py:40 +msgid "Accepted in" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_host.py:35 +msgid "Published in" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:31 +msgid "Search for this record at the European Patent Office" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:42 +msgid "View record in Web of Science" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:45 +msgid "View record in Scopus" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:48 +msgid "View record in PubMed" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:51 +msgid "View record in arXiv" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:60 +msgid "Print copy in library catalog" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_updated_date.py:17 +#, python-format +msgid "Record created on %(creation_date)s, modified on %(modification_date)s" +msgstr "" diff --git a/po/fr.po b/po/fr.po index e44fff9d1..c9648323e 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,13147 +1,13121 @@ -# # This file is part of Invenio. -# # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 CERN. -# # -# # Invenio is free software; you can redistribute it and/or -# # modify it under the terms of the GNU General Public License as -# # published by the Free Software Foundation; either version 2 of the -# # License, or (at your option) any later version. -# # -# # Invenio is distributed in the hope that it will be useful, but -# # WITHOUT ANY WARRANTY; without even the implied warranty of -# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# # General Public License for more details. -# # -# # You should have received a copy of the GNU General Public License -# # along with Invenio; if not, write to the Free Software Foundation, Inc., -# # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -msgid "" -msgstr "" -"Project-Id-Version: Invenio 1.0.9\n" -"Report-Msgid-Bugs-To: info@invenio-software.org\n" -"POT-Creation-Date: 2014-08-31 21:44+0200\n" -"PO-Revision-Date: 2012-02-16 14:04+0100\n" -"Last-Translator: Jérôme Caffaro \n" -"Language-Team: FR \n" -"Language: \n" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: infoscience\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-16 16:21+0100\n" +"PO-Revision-Date: 2012-03-23 15:12+0100\n" +"Last-Translator: Gregory Favre\n" +"Language-Team: infoscience-admin\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: pygettext.py 1.5\n" - -#: modules/websearch/doc/search-guide.webdoc:361 -#: modules/websearch/doc/search-guide.webdoc:396 -#: modules/websearch/doc/search-guide.webdoc:493 -#: modules/websearch/doc/search-guide.webdoc:528 -#: modules/websearch/doc/search-guide.webdoc:630 -#: modules/websearch/doc/search-guide.webdoc:665 -#: modules/websearch/doc/search-guide.webdoc:768 -#: modules/websearch/doc/search-guide.webdoc:803 -#: modules/websearch/lib/search_engine.py:1116 -#: modules/websearch/lib/websearch_templates.py:1163 -msgid "AND NOT" -msgstr "ET NON PAS" - -#: modules/webhelp/web/admin/admin.webdoc:18 -#: modules/websearch/doc/admin/websearch-admin-guide.webdoc:21 -#: modules/websubmit/doc/admin/websubmit-admin-guide.webdoc:21 -#: modules/bibedit/doc/admin/bibedit-admin-guide.webdoc:21 -#: modules/bibupload/doc/admin/bibupload-admin-guide.webdoc:21 -#: modules/bibformat/doc/admin/bibformat-admin-guide.webdoc:21 -#: modules/bibharvest/doc/admin/bibharvest-admin-guide.webdoc:21 -#: modules/webmessage/doc/admin/webmessage-admin-guide.webdoc:21 -#: modules/webalert/doc/admin/webalert-admin-guide.webdoc:21 -#: modules/bibclassify/doc/admin/bibclassify-admin-guide.webdoc:22 -#: modules/bibmatch/doc/admin/bibmatch-admin-guide.webdoc:21 -#: modules/bibconvert/doc/admin/bibconvert-admin-guide.webdoc:21 -#: modules/bibsched/doc/admin/bibsched-admin-guide.webdoc:21 -#: modules/bibrank/doc/admin/bibrank-admin-guide.webdoc:21 -#: modules/webstat/doc/admin/webstat-admin-guide.webdoc:21 -#: modules/bibindex/doc/admin/bibindex-admin-guide.webdoc:21 -#: modules/webbasket/doc/admin/webbasket-admin-guide.webdoc:21 -#: modules/webcomment/doc/admin/webcomment-admin-guide.webdoc:21 -#: modules/websession/doc/admin/websession-admin-guide.webdoc:21 -#: modules/webstyle/doc/admin/webstyle-admin-guide.webdoc:21 -#: modules/elmsubmit/doc/admin/elmsubmit-admin-guide.webdoc:21 -#: modules/bibformat/lib/bibformatadminlib.py:55 -#: modules/bibformat/web/admin/bibformatadmin.py:68 -#: modules/webcomment/lib/webcommentadminlib.py:43 -#: modules/webstyle/lib/webdoc_webinterface.py:153 -#: modules/bibcheck/web/admin/bibcheckadmin.py:57 -#: modules/bibcheck/web/admin/bibcheckadmin.py:159 -#: modules/bibcheck/web/admin/bibcheckadmin.py:203 -#: modules/bibcheck/web/admin/bibcheckadmin.py:263 -#: modules/bibcheck/web/admin/bibcheckadmin.py:303 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:78 -msgid "Admin Area" -msgstr "Zone d'administration" - -#: modules/websearch/doc/search-guide.webdoc:427 -#: modules/websearch/doc/search-guide.webdoc:559 -#: modules/websearch/doc/search-guide.webdoc:696 -#: modules/websearch/doc/search-guide.webdoc:834 -#: modules/websearch/lib/search_engine.py:4510 -#: modules/websearch/lib/websearch_templates.py:804 -#: modules/websearch/lib/websearch_templates.py:882 -#: modules/websearch/lib/websearch_templates.py:1005 -#: modules/websearch/lib/websearch_templates.py:1963 -#: modules/websearch/lib/websearch_templates.py:2054 -#: modules/websearch/lib/websearch_templates.py:2111 -#: modules/websearch/lib/websearch_templates.py:2168 -#: modules/websearch/lib/websearch_templates.py:2207 -#: modules/websearch/lib/websearch_templates.py:2230 -#: modules/websearch/lib/websearch_templates.py:2261 -msgid "Browse" -msgstr "Liste" - -#: modules/webhelp/web/help-central.webdoc:50 -#: modules/websearch/doc/search-tips.webdoc:20 -#: modules/websearch/lib/websearch_templates.py:805 -#: modules/websearch/lib/websearch_templates.py:883 -#: modules/websearch/lib/websearch_templates.py:1006 -#: modules/websearch/lib/websearch_templates.py:2058 -#: modules/websearch/lib/websearch_templates.py:2115 -#: modules/websearch/lib/websearch_templates.py:2172 -msgid "Search Tips" -msgstr "Conseils de recherche" - -#: modules/websearch/doc/search-guide.webdoc:343 -#: modules/websearch/doc/search-guide.webdoc:378 -#: modules/websearch/doc/search-guide.webdoc:413 -#: modules/websearch/doc/search-guide.webdoc:475 -#: modules/websearch/doc/search-guide.webdoc:510 -#: modules/websearch/doc/search-guide.webdoc:545 -#: modules/websearch/doc/search-guide.webdoc:612 -#: modules/websearch/doc/search-guide.webdoc:647 -#: modules/websearch/doc/search-guide.webdoc:682 -#: modules/websearch/doc/search-guide.webdoc:750 -#: modules/websearch/doc/search-guide.webdoc:785 -#: modules/websearch/doc/search-guide.webdoc:820 -#: modules/miscutil/lib/inveniocfg.py:456 -msgid "abstract" -msgstr "résumé" - -#: modules/websearch/doc/search-guide.webdoc:348 -#: modules/websearch/doc/search-guide.webdoc:383 -#: modules/websearch/doc/search-guide.webdoc:418 -#: modules/websearch/doc/search-guide.webdoc:480 -#: modules/websearch/doc/search-guide.webdoc:515 -#: modules/websearch/doc/search-guide.webdoc:550 -#: modules/websearch/doc/search-guide.webdoc:617 -#: modules/websearch/doc/search-guide.webdoc:652 -#: modules/websearch/doc/search-guide.webdoc:687 -#: modules/websearch/doc/search-guide.webdoc:755 -#: modules/websearch/doc/search-guide.webdoc:790 -#: modules/websearch/doc/search-guide.webdoc:825 -#: modules/miscutil/lib/inveniocfg.py:461 -msgid "fulltext" -msgstr "texte intégral" - -#: modules/websearch/doc/search-guide.webdoc:337 -#: modules/websearch/doc/search-guide.webdoc:373 -#: modules/websearch/doc/search-guide.webdoc:408 -#: modules/websearch/doc/search-guide.webdoc:469 -#: modules/websearch/doc/search-guide.webdoc:505 -#: modules/websearch/doc/search-guide.webdoc:540 -#: modules/websearch/doc/search-guide.webdoc:606 -#: modules/websearch/doc/search-guide.webdoc:642 -#: modules/websearch/doc/search-guide.webdoc:677 -#: modules/websearch/doc/search-guide.webdoc:744 -#: modules/websearch/doc/search-guide.webdoc:780 -#: modules/websearch/doc/search-guide.webdoc:815 -#: modules/websearch/lib/search_engine.py:1138 -#: modules/websearch/lib/websearch_templates.py:1119 -msgid "Regular expression:" -msgstr "Expression régulière:" - -#: modules/websearch/doc/search-guide.webdoc:333 -#: modules/websearch/doc/search-guide.webdoc:369 -#: modules/websearch/doc/search-guide.webdoc:404 -#: modules/websearch/doc/search-guide.webdoc:465 -#: modules/websearch/doc/search-guide.webdoc:501 -#: modules/websearch/doc/search-guide.webdoc:536 -#: modules/websearch/doc/search-guide.webdoc:602 -#: modules/websearch/doc/search-guide.webdoc:638 -#: modules/websearch/doc/search-guide.webdoc:673 -#: modules/websearch/doc/search-guide.webdoc:740 -#: modules/websearch/doc/search-guide.webdoc:776 -#: modules/websearch/doc/search-guide.webdoc:811 -#: modules/websearch/lib/search_engine.py:1134 -#: modules/websearch/lib/websearch_templates.py:1111 -msgid "All of the words:" -msgstr "Tous les mots:" - -#: modules/websearch/doc/search-guide.webdoc:351 -#: modules/websearch/doc/search-guide.webdoc:386 -#: modules/websearch/doc/search-guide.webdoc:421 -#: modules/websearch/doc/search-guide.webdoc:483 -#: modules/websearch/doc/search-guide.webdoc:518 -#: modules/websearch/doc/search-guide.webdoc:553 -#: modules/websearch/doc/search-guide.webdoc:620 -#: modules/websearch/doc/search-guide.webdoc:655 -#: modules/websearch/doc/search-guide.webdoc:690 -#: modules/websearch/doc/search-guide.webdoc:758 -#: modules/websearch/doc/search-guide.webdoc:793 -#: modules/websearch/doc/search-guide.webdoc:828 -#: modules/miscutil/lib/inveniocfg.py:458 -msgid "report number" -msgstr "numéro de rapport" - -#: modules/websearch/doc/search-tips.webdoc:470 -#: modules/websearch/doc/search-tips.webdoc:477 -#: modules/websearch/doc/search-tips.webdoc:478 -#: modules/websearch/doc/search-tips.webdoc:479 -#: modules/websearch/doc/search-tips.webdoc:480 -#: modules/websearch/doc/search-tips.webdoc:481 -#: modules/websearch/doc/search-tips.webdoc:499 -#: modules/websearch/doc/search-tips.webdoc:500 -#: modules/websearch/doc/search-tips.webdoc:501 -#: modules/websearch/doc/search-tips.webdoc:502 -#: modules/websearch/doc/search-tips.webdoc:503 -#: modules/websearch/doc/search-guide.webdoc:354 -#: modules/websearch/doc/search-guide.webdoc:389 -#: modules/websearch/doc/search-guide.webdoc:424 -#: modules/websearch/doc/search-guide.webdoc:486 -#: modules/websearch/doc/search-guide.webdoc:521 -#: modules/websearch/doc/search-guide.webdoc:556 -#: modules/websearch/doc/search-guide.webdoc:623 -#: modules/websearch/doc/search-guide.webdoc:658 -#: modules/websearch/doc/search-guide.webdoc:693 -#: modules/websearch/doc/search-guide.webdoc:761 -#: modules/websearch/doc/search-guide.webdoc:796 -#: modules/websearch/doc/search-guide.webdoc:831 -#: modules/miscutil/lib/inveniocfg.py:464 -msgid "year" -msgstr "année" - -#: modules/websearch/doc/search-guide.webdoc:352 -#: modules/websearch/doc/search-guide.webdoc:387 -#: modules/websearch/doc/search-guide.webdoc:422 -#: modules/websearch/doc/search-guide.webdoc:484 -#: modules/websearch/doc/search-guide.webdoc:519 -#: modules/websearch/doc/search-guide.webdoc:554 -#: modules/websearch/doc/search-guide.webdoc:621 -#: modules/websearch/doc/search-guide.webdoc:656 -#: modules/websearch/doc/search-guide.webdoc:691 -#: modules/websearch/doc/search-guide.webdoc:759 -#: modules/websearch/doc/search-guide.webdoc:794 -#: modules/websearch/doc/search-guide.webdoc:829 -#: modules/miscutil/lib/inveniocfg.py:459 -msgid "subject" -msgstr "sujet" - -#: modules/websearch/doc/search-guide.webdoc:336 -#: modules/websearch/doc/search-guide.webdoc:372 -#: modules/websearch/doc/search-guide.webdoc:407 -#: modules/websearch/doc/search-guide.webdoc:468 -#: modules/websearch/doc/search-guide.webdoc:504 -#: modules/websearch/doc/search-guide.webdoc:539 -#: modules/websearch/doc/search-guide.webdoc:605 -#: modules/websearch/doc/search-guide.webdoc:641 -#: modules/websearch/doc/search-guide.webdoc:676 -#: modules/websearch/doc/search-guide.webdoc:743 -#: modules/websearch/doc/search-guide.webdoc:779 -#: modules/websearch/doc/search-guide.webdoc:814 -#: modules/websearch/lib/search_engine.py:1137 -#: modules/websearch/lib/websearch_templates.py:1117 -msgid "Partial phrase:" -msgstr "Phrase partielle:" - -#: modules/websearch/doc/search-guide.webdoc:350 -#: modules/websearch/doc/search-guide.webdoc:385 -#: modules/websearch/doc/search-guide.webdoc:420 -#: modules/websearch/doc/search-guide.webdoc:482 -#: modules/websearch/doc/search-guide.webdoc:517 -#: modules/websearch/doc/search-guide.webdoc:552 -#: modules/websearch/doc/search-guide.webdoc:619 -#: modules/websearch/doc/search-guide.webdoc:654 -#: modules/websearch/doc/search-guide.webdoc:689 -#: modules/websearch/doc/search-guide.webdoc:757 -#: modules/websearch/doc/search-guide.webdoc:792 -#: modules/websearch/doc/search-guide.webdoc:827 -#: modules/miscutil/lib/inveniocfg.py:460 -msgid "reference" -msgstr "référence" - -#: modules/websearch/doc/search-tips.webdoc:39 -#: modules/websearch/doc/search-tips.webdoc:75 -#: modules/websearch/doc/search-tips.webdoc:121 -#: modules/websearch/doc/search-tips.webdoc:178 -#: modules/websearch/doc/search-tips.webdoc:205 -#: modules/websearch/doc/search-tips.webdoc:233 -#: modules/websearch/doc/search-tips.webdoc:288 -#: modules/websearch/doc/search-tips.webdoc:336 -#: modules/websearch/doc/search-tips.webdoc:347 -#: modules/websearch/doc/search-tips.webdoc:371 -#: modules/websearch/doc/search-tips.webdoc:395 -#: modules/websearch/doc/search-tips.webdoc:433 -#: modules/websearch/doc/search-tips.webdoc:469 -#: modules/websearch/doc/search-tips.webdoc:492 -#: modules/websearch/doc/search-tips.webdoc:514 -#: modules/websearch/doc/search-tips.webdoc:550 -#: modules/websearch/doc/search-tips.webdoc:568 -#: modules/websearch/doc/search-tips.webdoc:587 -#: modules/websearch/doc/search-tips.webdoc:622 -#: modules/websearch/doc/search-tips.webdoc:651 -#: modules/websearch/doc/search-tips.webdoc:659 -#: modules/websearch/doc/search-tips.webdoc:662 -#: modules/websearch/doc/search-tips.webdoc:664 -#: modules/websearch/doc/search-tips.webdoc:666 -#: modules/websearch/doc/search-tips.webdoc:668 -#: modules/websearch/doc/search-tips.webdoc:679 -#: modules/websearch/doc/search-tips.webdoc:702 -#: modules/websearch/doc/search-guide.webdoc:226 -#: modules/websearch/doc/search-guide.webdoc:250 -#: modules/websearch/doc/search-guide.webdoc:276 -#: modules/websearch/doc/search-guide.webdoc:301 -#: modules/websearch/doc/search-guide.webdoc:344 -#: modules/websearch/doc/search-guide.webdoc:379 -#: modules/websearch/doc/search-guide.webdoc:414 -#: modules/websearch/doc/search-guide.webdoc:476 -#: modules/websearch/doc/search-guide.webdoc:511 -#: modules/websearch/doc/search-guide.webdoc:546 -#: modules/websearch/doc/search-guide.webdoc:613 -#: modules/websearch/doc/search-guide.webdoc:648 -#: modules/websearch/doc/search-guide.webdoc:683 -#: modules/websearch/doc/search-guide.webdoc:751 -#: modules/websearch/doc/search-guide.webdoc:786 -#: modules/websearch/doc/search-guide.webdoc:821 -#: modules/websearch/doc/search-guide.webdoc:881 -#: modules/websearch/doc/search-guide.webdoc:912 -#: modules/websearch/doc/search-guide.webdoc:952 -#: modules/websearch/doc/search-guide.webdoc:986 -#: modules/websearch/doc/search-guide.webdoc:1026 -#: modules/websearch/doc/search-guide.webdoc:1048 -#: modules/websearch/doc/search-guide.webdoc:1068 -#: modules/websearch/doc/search-guide.webdoc:1084 -#: modules/websearch/doc/search-guide.webdoc:1124 -#: modules/websearch/doc/search-guide.webdoc:1147 -#: modules/websearch/doc/search-guide.webdoc:1168 -#: modules/websearch/doc/search-guide.webdoc:1183 -#: modules/websearch/doc/search-guide.webdoc:1227 -#: modules/websearch/doc/search-guide.webdoc:1252 -#: modules/websearch/doc/search-guide.webdoc:1273 -#: modules/websearch/doc/search-guide.webdoc:1289 -#: modules/websearch/doc/search-guide.webdoc:1334 -#: modules/websearch/doc/search-guide.webdoc:1357 -#: modules/websearch/doc/search-guide.webdoc:1379 -#: modules/websearch/doc/search-guide.webdoc:1395 -#: modules/websearch/doc/search-guide.webdoc:1765 -#: modules/websearch/doc/search-guide.webdoc:1779 -#: modules/websearch/doc/search-guide.webdoc:1797 -#: modules/websearch/doc/search-guide.webdoc:1816 -#: modules/websearch/doc/search-guide.webdoc:1829 -#: modules/websearch/doc/search-guide.webdoc:1847 -#: modules/websearch/doc/search-guide.webdoc:1867 -#: modules/websearch/doc/search-guide.webdoc:1882 -#: modules/websearch/doc/search-guide.webdoc:1901 -#: modules/websearch/doc/search-guide.webdoc:1924 -#: modules/websearch/doc/search-guide.webdoc:1939 -#: modules/websearch/doc/search-guide.webdoc:1958 -#: modules/websearch/doc/search-guide.webdoc:1986 -#: modules/websearch/doc/search-guide.webdoc:2024 -#: modules/websearch/doc/search-guide.webdoc:2035 -#: modules/websearch/doc/search-guide.webdoc:2049 -#: modules/websearch/doc/search-guide.webdoc:2063 -#: modules/websearch/doc/search-guide.webdoc:2076 -#: modules/websearch/doc/search-guide.webdoc:2092 -#: modules/websearch/doc/search-guide.webdoc:2103 -#: modules/websearch/doc/search-guide.webdoc:2117 -#: modules/websearch/doc/search-guide.webdoc:2131 -#: modules/websearch/doc/search-guide.webdoc:2144 -#: modules/websearch/doc/search-guide.webdoc:2160 -#: modules/websearch/doc/search-guide.webdoc:2171 -#: modules/websearch/doc/search-guide.webdoc:2185 -#: modules/websearch/doc/search-guide.webdoc:2199 -#: modules/websearch/doc/search-guide.webdoc:2212 -#: modules/websearch/doc/search-guide.webdoc:2230 -#: modules/websearch/doc/search-guide.webdoc:2241 -#: modules/websearch/doc/search-guide.webdoc:2255 -#: modules/websearch/doc/search-guide.webdoc:2269 -#: modules/websearch/doc/search-guide.webdoc:2282 -#: modules/websearch/doc/search-guide.webdoc:2311 -#: modules/websearch/doc/search-guide.webdoc:2325 -#: modules/websearch/doc/search-guide.webdoc:2342 -#: modules/websearch/doc/search-guide.webdoc:2355 -#: modules/websearch/doc/search-guide.webdoc:2372 -#: modules/websearch/doc/search-guide.webdoc:2386 -#: modules/websearch/doc/search-guide.webdoc:2404 -#: modules/websearch/doc/search-guide.webdoc:2418 -#: modules/websearch/doc/search-guide.webdoc:2449 -#: modules/websearch/doc/search-guide.webdoc:2464 -#: modules/websearch/doc/search-guide.webdoc:2478 -#: modules/websearch/doc/search-guide.webdoc:2493 -#: modules/websearch/doc/search-guide.webdoc:2521 -#: modules/websearch/doc/search-guide.webdoc:2536 -#: modules/websearch/doc/search-guide.webdoc:2550 -#: modules/websearch/doc/search-guide.webdoc:2566 -#: modules/websearch/doc/search-guide.webdoc:2598 -#: modules/websearch/doc/search-guide.webdoc:2614 -#: modules/websearch/doc/search-guide.webdoc:2628 -#: modules/websearch/doc/search-guide.webdoc:2643 -#: modules/websearch/doc/search-guide.webdoc:2674 -#: modules/websearch/doc/search-guide.webdoc:2690 -#: modules/websearch/doc/search-guide.webdoc:2704 -#: modules/websearch/doc/search-guide.webdoc:2719 -#: modules/websearch/doc/search-guide.webdoc:2761 -#: modules/websearch/doc/search-guide.webdoc:2776 -#: modules/websearch/doc/search-guide.webdoc:2790 -#: modules/websearch/doc/search-guide.webdoc:2815 -#: modules/websearch/doc/search-guide.webdoc:2830 -#: modules/websearch/doc/search-guide.webdoc:2844 -#: modules/websearch/doc/search-guide.webdoc:2873 -#: modules/websearch/doc/search-guide.webdoc:2888 -#: modules/websearch/doc/search-guide.webdoc:2902 -#: modules/websearch/doc/search-guide.webdoc:2930 -#: modules/websearch/doc/search-guide.webdoc:2945 -#: modules/websearch/doc/search-guide.webdoc:2958 -#: modules/websearch/doc/search-guide.webdoc:2993 -#: modules/websearch/doc/search-guide.webdoc:3015 -#: modules/websearch/doc/search-guide.webdoc:3039 -#: modules/websearch/doc/search-guide.webdoc:3063 -#: modules/websearch/doc/search-guide.webdoc:3087 -#: modules/websearch/doc/search-guide.webdoc:3102 -#: modules/websearch/doc/search-guide.webdoc:3118 -#: modules/websearch/doc/search-guide.webdoc:3135 -#: modules/websearch/doc/search-guide.webdoc:3155 -#: modules/websearch/doc/search-guide.webdoc:3173 -#: modules/websearch/doc/search-guide.webdoc:3191 -#: modules/websearch/doc/search-guide.webdoc:3210 -#: modules/websearch/doc/search-guide.webdoc:3231 -#: modules/websearch/doc/search-guide.webdoc:3245 -#: modules/websearch/doc/search-guide.webdoc:3265 -#: modules/websearch/doc/search-guide.webdoc:3280 -#: modules/websearch/doc/search-guide.webdoc:3299 -#: modules/websearch/doc/search-guide.webdoc:3314 -#: modules/websearch/doc/search-guide.webdoc:3334 -#: modules/websearch/doc/search-guide.webdoc:3349 -#: modules/websearch/doc/search-guide.webdoc:3411 -#: modules/websearch/doc/search-guide.webdoc:3425 -#: modules/websearch/doc/search-guide.webdoc:3442 -#: modules/websearch/doc/search-guide.webdoc:3455 -#: modules/websearch/doc/search-guide.webdoc:3473 -#: modules/websearch/doc/search-guide.webdoc:3488 -#: modules/websearch/doc/search-guide.webdoc:3506 -#: modules/websearch/doc/search-guide.webdoc:3521 -#: modules/websearch/doc/search-guide.webdoc:3546 -#: modules/websearch/doc/search-guide.webdoc:3559 -#: modules/websearch/doc/search-guide.webdoc:3572 -#: modules/websearch/doc/search-guide.webdoc:3588 -#: modules/websearch/doc/search-guide.webdoc:3604 -#: modules/websearch/doc/search-guide.webdoc:3621 -#: modules/websearch/doc/search-guide.webdoc:3654 -#: modules/websearch/doc/search-guide.webdoc:3670 -#: modules/websearch/doc/search-guide.webdoc:3687 -#: modules/websearch/doc/search-guide.webdoc:3707 -#: modules/websearch/doc/search-guide.webdoc:3721 -#: modules/websearch/doc/search-guide.webdoc:3739 -#: modules/websearch/doc/search-guide.webdoc:3760 -#: modules/websearch/doc/search-guide.webdoc:3779 -#: modules/websearch/doc/search-guide.webdoc:3797 -#: modules/websearch/doc/search-guide.webdoc:3819 -#: modules/websearch/doc/search-guide.webdoc:3838 -#: modules/websearch/doc/search-guide.webdoc:3855 -#: modules/websearch/doc/search-guide.webdoc:3976 -#: modules/websearch/doc/search-guide.webdoc:4001 -#: modules/websearch/doc/search-guide.webdoc:4024 -#: modules/websearch/doc/search-guide.webdoc:4050 -#: modules/websearch/doc/search-guide.webdoc:4074 -#: modules/websearch/doc/search-guide.webdoc:4101 -#: modules/websearch/doc/search-guide.webdoc:4126 -#: modules/websearch/doc/search-guide.webdoc:4152 -#: modules/websearch/doc/search-guide.webdoc:4181 -#: modules/websearch/doc/search-guide.webdoc:4201 -#: modules/websearch/doc/search-guide.webdoc:4225 -#: modules/websearch/doc/search-guide.webdoc:4252 -#: modules/websearch/doc/search-guide.webdoc:4292 -#: modules/websearch/doc/search-guide.webdoc:4313 -#: modules/websearch/doc/search-guide.webdoc:4337 -#: modules/websearch/doc/search-guide.webdoc:4367 -#: modules/websearch/doc/search-guide.webdoc:4411 -#: modules/websearch/doc/search-guide.webdoc:4433 -#: modules/websearch/doc/search-guide.webdoc:4458 -#: modules/websearch/doc/search-guide.webdoc:4488 -#: modules/websearch/doc/search-guide.webdoc:4533 -#: modules/websearch/doc/search-guide.webdoc:4554 -#: modules/websearch/doc/search-guide.webdoc:4579 -#: modules/websearch/doc/search-guide.webdoc:4609 -#: modules/websearch/doc/search-guide.webdoc:4901 -#: modules/websearch/doc/search-guide.webdoc:4917 -#: modules/websearch/doc/search-guide.webdoc:4937 -#: modules/websearch/doc/search-guide.webdoc:4956 -#: modules/websearch/doc/search-guide.webdoc:4977 -#: modules/websearch/doc/search-guide.webdoc:4995 -#: modules/websearch/doc/search-guide.webdoc:5016 -#: modules/websearch/doc/search-guide.webdoc:5034 -#: modules/websearch/doc/search-guide.webdoc:5067 -#: modules/websearch/doc/search-guide.webdoc:5081 -#: modules/websearch/doc/search-guide.webdoc:5096 -#: modules/websearch/doc/search-guide.webdoc:5112 -#: modules/websearch/doc/search-guide.webdoc:5131 -#: modules/websearch/doc/search-guide.webdoc:5145 -#: modules/websearch/doc/search-guide.webdoc:5161 -#: modules/websearch/doc/search-guide.webdoc:5179 -#: modules/websearch/doc/search-guide.webdoc:5198 -#: modules/websearch/doc/search-guide.webdoc:5213 -#: modules/websearch/doc/search-guide.webdoc:5228 -#: modules/websearch/doc/search-guide.webdoc:5246 -#: modules/websearch/doc/search-guide.webdoc:5266 -#: modules/websearch/doc/search-guide.webdoc:5281 -#: modules/websearch/doc/search-guide.webdoc:5296 -#: modules/websearch/doc/search-guide.webdoc:5316 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:131 -#: modules/miscutil/lib/inveniocfg.py:455 -msgid "author" -msgstr "auteur" - -#: modules/webhelp/web/help-central.webdoc:98 -#: modules/websearch/doc/search-guide.webdoc:20 -msgid "Search Guide" -msgstr "Guide de recherche" - -#: modules/websearch/doc/search-guide.webdoc:347 -#: modules/websearch/doc/search-guide.webdoc:382 -#: modules/websearch/doc/search-guide.webdoc:417 -#: modules/websearch/doc/search-guide.webdoc:479 -#: modules/websearch/doc/search-guide.webdoc:514 -#: modules/websearch/doc/search-guide.webdoc:549 -#: modules/websearch/doc/search-guide.webdoc:616 -#: modules/websearch/doc/search-guide.webdoc:651 -#: modules/websearch/doc/search-guide.webdoc:686 -#: modules/websearch/doc/search-guide.webdoc:754 -#: modules/websearch/doc/search-guide.webdoc:789 -#: modules/websearch/doc/search-guide.webdoc:824 -#: modules/miscutil/lib/inveniocfg.py:466 -msgid "experiment" -msgstr "expérience" - -#: modules/websearch/doc/search-guide.webdoc:334 -#: modules/websearch/doc/search-guide.webdoc:370 -#: modules/websearch/doc/search-guide.webdoc:405 -#: modules/websearch/doc/search-guide.webdoc:466 -#: modules/websearch/doc/search-guide.webdoc:502 -#: modules/websearch/doc/search-guide.webdoc:537 -#: modules/websearch/doc/search-guide.webdoc:603 -#: modules/websearch/doc/search-guide.webdoc:639 -#: modules/websearch/doc/search-guide.webdoc:674 -#: modules/websearch/doc/search-guide.webdoc:741 -#: modules/websearch/doc/search-guide.webdoc:777 -#: modules/websearch/doc/search-guide.webdoc:812 -#: modules/websearch/lib/search_engine.py:1135 -#: modules/websearch/lib/websearch_templates.py:1113 -msgid "Any of the words:" -msgstr "Au moins un des mots:" - -#: modules/websearch/doc/search-guide.webdoc:346 -#: modules/websearch/doc/search-guide.webdoc:381 -#: modules/websearch/doc/search-guide.webdoc:416 -#: modules/websearch/doc/search-guide.webdoc:478 -#: modules/websearch/doc/search-guide.webdoc:513 -#: modules/websearch/doc/search-guide.webdoc:548 -#: modules/websearch/doc/search-guide.webdoc:615 -#: modules/websearch/doc/search-guide.webdoc:650 -#: modules/websearch/doc/search-guide.webdoc:685 -#: modules/websearch/doc/search-guide.webdoc:753 -#: modules/websearch/doc/search-guide.webdoc:788 -#: modules/websearch/doc/search-guide.webdoc:823 -#: modules/miscutil/lib/inveniocfg.py:463 -msgid "division" -msgstr "division" - -#: modules/websearch/doc/search-tips.webdoc:41 -#: modules/websearch/doc/search-tips.webdoc:77 -#: modules/websearch/doc/search-tips.webdoc:123 -#: modules/websearch/doc/search-tips.webdoc:180 -#: modules/websearch/doc/search-tips.webdoc:207 -#: modules/websearch/doc/search-tips.webdoc:235 -#: modules/websearch/doc/search-tips.webdoc:290 -#: modules/websearch/doc/search-tips.webdoc:338 -#: modules/websearch/doc/search-tips.webdoc:349 -#: modules/websearch/doc/search-tips.webdoc:373 -#: modules/websearch/doc/search-tips.webdoc:397 -#: modules/websearch/doc/search-tips.webdoc:435 -#: modules/websearch/doc/search-tips.webdoc:472 -#: modules/websearch/doc/search-tips.webdoc:494 -#: modules/websearch/doc/search-tips.webdoc:516 -#: modules/websearch/doc/search-tips.webdoc:552 -#: modules/websearch/doc/search-tips.webdoc:570 -#: modules/websearch/doc/search-tips.webdoc:589 -#: modules/websearch/doc/search-tips.webdoc:624 -#: modules/websearch/doc/search-tips.webdoc:653 -#: modules/websearch/doc/search-tips.webdoc:681 -#: modules/websearch/doc/search-tips.webdoc:704 -#: modules/websearch/doc/search-guide.webdoc:227 -#: modules/websearch/doc/search-guide.webdoc:251 -#: modules/websearch/doc/search-guide.webdoc:277 -#: modules/websearch/doc/search-guide.webdoc:302 -#: modules/websearch/doc/search-guide.webdoc:427 -#: modules/websearch/doc/search-guide.webdoc:559 -#: modules/websearch/doc/search-guide.webdoc:696 -#: modules/websearch/doc/search-guide.webdoc:834 -#: modules/websearch/doc/search-guide.webdoc:882 -#: modules/websearch/doc/search-guide.webdoc:913 -#: modules/websearch/doc/search-guide.webdoc:953 -#: modules/websearch/doc/search-guide.webdoc:987 -#: modules/websearch/doc/search-guide.webdoc:1027 -#: modules/websearch/doc/search-guide.webdoc:1049 -#: modules/websearch/doc/search-guide.webdoc:1069 -#: modules/websearch/doc/search-guide.webdoc:1085 -#: modules/websearch/doc/search-guide.webdoc:1125 -#: modules/websearch/doc/search-guide.webdoc:1148 -#: modules/websearch/doc/search-guide.webdoc:1169 -#: modules/websearch/doc/search-guide.webdoc:1184 -#: modules/websearch/doc/search-guide.webdoc:1228 -#: modules/websearch/doc/search-guide.webdoc:1253 -#: modules/websearch/doc/search-guide.webdoc:1274 -#: modules/websearch/doc/search-guide.webdoc:1290 -#: modules/websearch/doc/search-guide.webdoc:1335 -#: modules/websearch/doc/search-guide.webdoc:1358 -#: modules/websearch/doc/search-guide.webdoc:1380 -#: modules/websearch/doc/search-guide.webdoc:1396 -#: modules/websearch/doc/search-guide.webdoc:1766 -#: modules/websearch/doc/search-guide.webdoc:1780 -#: modules/websearch/doc/search-guide.webdoc:1798 -#: modules/websearch/doc/search-guide.webdoc:1817 -#: modules/websearch/doc/search-guide.webdoc:1830 -#: modules/websearch/doc/search-guide.webdoc:1848 -#: modules/websearch/doc/search-guide.webdoc:1868 -#: modules/websearch/doc/search-guide.webdoc:1883 -#: modules/websearch/doc/search-guide.webdoc:1902 -#: modules/websearch/doc/search-guide.webdoc:1925 -#: modules/websearch/doc/search-guide.webdoc:1940 -#: modules/websearch/doc/search-guide.webdoc:1959 -#: modules/websearch/doc/search-guide.webdoc:1988 -#: modules/websearch/doc/search-guide.webdoc:2025 -#: modules/websearch/doc/search-guide.webdoc:2036 -#: modules/websearch/doc/search-guide.webdoc:2050 -#: modules/websearch/doc/search-guide.webdoc:2064 -#: modules/websearch/doc/search-guide.webdoc:2077 -#: modules/websearch/doc/search-guide.webdoc:2093 -#: modules/websearch/doc/search-guide.webdoc:2104 -#: modules/websearch/doc/search-guide.webdoc:2118 -#: modules/websearch/doc/search-guide.webdoc:2132 -#: modules/websearch/doc/search-guide.webdoc:2145 -#: modules/websearch/doc/search-guide.webdoc:2161 -#: modules/websearch/doc/search-guide.webdoc:2172 -#: modules/websearch/doc/search-guide.webdoc:2186 -#: modules/websearch/doc/search-guide.webdoc:2200 -#: modules/websearch/doc/search-guide.webdoc:2213 -#: modules/websearch/doc/search-guide.webdoc:2231 -#: modules/websearch/doc/search-guide.webdoc:2242 -#: modules/websearch/doc/search-guide.webdoc:2256 -#: modules/websearch/doc/search-guide.webdoc:2270 -#: modules/websearch/doc/search-guide.webdoc:2283 -#: modules/websearch/doc/search-guide.webdoc:2312 -#: modules/websearch/doc/search-guide.webdoc:2326 -#: modules/websearch/doc/search-guide.webdoc:2343 -#: modules/websearch/doc/search-guide.webdoc:2356 -#: modules/websearch/doc/search-guide.webdoc:2373 -#: modules/websearch/doc/search-guide.webdoc:2387 -#: modules/websearch/doc/search-guide.webdoc:2405 -#: modules/websearch/doc/search-guide.webdoc:2419 -#: modules/websearch/doc/search-guide.webdoc:2450 -#: modules/websearch/doc/search-guide.webdoc:2465 -#: modules/websearch/doc/search-guide.webdoc:2479 -#: modules/websearch/doc/search-guide.webdoc:2494 -#: modules/websearch/doc/search-guide.webdoc:2522 -#: modules/websearch/doc/search-guide.webdoc:2537 -#: modules/websearch/doc/search-guide.webdoc:2551 -#: modules/websearch/doc/search-guide.webdoc:2567 -#: modules/websearch/doc/search-guide.webdoc:2599 -#: modules/websearch/doc/search-guide.webdoc:2615 -#: modules/websearch/doc/search-guide.webdoc:2629 -#: modules/websearch/doc/search-guide.webdoc:2644 -#: modules/websearch/doc/search-guide.webdoc:2675 -#: modules/websearch/doc/search-guide.webdoc:2691 -#: modules/websearch/doc/search-guide.webdoc:2705 -#: modules/websearch/doc/search-guide.webdoc:2720 -#: modules/websearch/doc/search-guide.webdoc:2762 -#: modules/websearch/doc/search-guide.webdoc:2777 -#: modules/websearch/doc/search-guide.webdoc:2791 -#: modules/websearch/doc/search-guide.webdoc:2816 -#: modules/websearch/doc/search-guide.webdoc:2831 -#: modules/websearch/doc/search-guide.webdoc:2845 -#: modules/websearch/doc/search-guide.webdoc:2874 -#: modules/websearch/doc/search-guide.webdoc:2889 -#: modules/websearch/doc/search-guide.webdoc:2903 -#: modules/websearch/doc/search-guide.webdoc:2931 -#: modules/websearch/doc/search-guide.webdoc:2946 -#: modules/websearch/doc/search-guide.webdoc:2959 -#: modules/websearch/doc/search-guide.webdoc:2994 -#: modules/websearch/doc/search-guide.webdoc:3016 -#: modules/websearch/doc/search-guide.webdoc:3040 -#: modules/websearch/doc/search-guide.webdoc:3064 -#: modules/websearch/doc/search-guide.webdoc:3088 -#: modules/websearch/doc/search-guide.webdoc:3103 -#: modules/websearch/doc/search-guide.webdoc:3119 -#: modules/websearch/doc/search-guide.webdoc:3136 -#: modules/websearch/doc/search-guide.webdoc:3156 -#: modules/websearch/doc/search-guide.webdoc:3174 -#: modules/websearch/doc/search-guide.webdoc:3192 -#: modules/websearch/doc/search-guide.webdoc:3211 -#: modules/websearch/doc/search-guide.webdoc:3232 -#: modules/websearch/doc/search-guide.webdoc:3246 -#: modules/websearch/doc/search-guide.webdoc:3266 -#: modules/websearch/doc/search-guide.webdoc:3281 -#: modules/websearch/doc/search-guide.webdoc:3300 -#: modules/websearch/doc/search-guide.webdoc:3315 -#: modules/websearch/doc/search-guide.webdoc:3335 -#: modules/websearch/doc/search-guide.webdoc:3350 -#: modules/websearch/doc/search-guide.webdoc:3412 -#: modules/websearch/doc/search-guide.webdoc:3426 -#: modules/websearch/doc/search-guide.webdoc:3443 -#: modules/websearch/doc/search-guide.webdoc:3456 -#: modules/websearch/doc/search-guide.webdoc:3474 -#: modules/websearch/doc/search-guide.webdoc:3489 -#: modules/websearch/doc/search-guide.webdoc:3507 -#: modules/websearch/doc/search-guide.webdoc:3522 -#: modules/websearch/doc/search-guide.webdoc:3547 -#: modules/websearch/doc/search-guide.webdoc:3560 -#: modules/websearch/doc/search-guide.webdoc:3573 -#: modules/websearch/doc/search-guide.webdoc:3589 -#: modules/websearch/doc/search-guide.webdoc:3605 -#: modules/websearch/doc/search-guide.webdoc:3622 -#: modules/websearch/doc/search-guide.webdoc:3655 -#: modules/websearch/doc/search-guide.webdoc:3671 -#: modules/websearch/doc/search-guide.webdoc:3688 -#: modules/websearch/doc/search-guide.webdoc:3708 -#: modules/websearch/doc/search-guide.webdoc:3722 -#: modules/websearch/doc/search-guide.webdoc:3740 -#: modules/websearch/doc/search-guide.webdoc:3761 -#: modules/websearch/doc/search-guide.webdoc:3780 -#: modules/websearch/doc/search-guide.webdoc:3798 -#: modules/websearch/doc/search-guide.webdoc:3820 -#: modules/websearch/doc/search-guide.webdoc:3839 -#: modules/websearch/doc/search-guide.webdoc:3856 -#: modules/websearch/doc/search-guide.webdoc:3977 -#: modules/websearch/doc/search-guide.webdoc:4002 -#: modules/websearch/doc/search-guide.webdoc:4025 -#: modules/websearch/doc/search-guide.webdoc:4051 -#: modules/websearch/doc/search-guide.webdoc:4075 -#: modules/websearch/doc/search-guide.webdoc:4102 -#: modules/websearch/doc/search-guide.webdoc:4127 -#: modules/websearch/doc/search-guide.webdoc:4153 -#: modules/websearch/doc/search-guide.webdoc:4182 -#: modules/websearch/doc/search-guide.webdoc:4202 -#: modules/websearch/doc/search-guide.webdoc:4226 -#: modules/websearch/doc/search-guide.webdoc:4253 -#: modules/websearch/doc/search-guide.webdoc:4293 -#: modules/websearch/doc/search-guide.webdoc:4314 -#: modules/websearch/doc/search-guide.webdoc:4338 -#: modules/websearch/doc/search-guide.webdoc:4368 -#: modules/websearch/doc/search-guide.webdoc:4412 -#: modules/websearch/doc/search-guide.webdoc:4434 -#: modules/websearch/doc/search-guide.webdoc:4459 -#: modules/websearch/doc/search-guide.webdoc:4489 -#: modules/websearch/doc/search-guide.webdoc:4534 -#: modules/websearch/doc/search-guide.webdoc:4555 -#: modules/websearch/doc/search-guide.webdoc:4580 -#: modules/websearch/doc/search-guide.webdoc:4610 -#: modules/websearch/doc/search-guide.webdoc:4902 -#: modules/websearch/doc/search-guide.webdoc:4918 -#: modules/websearch/doc/search-guide.webdoc:4938 -#: modules/websearch/doc/search-guide.webdoc:4957 -#: modules/websearch/doc/search-guide.webdoc:4978 -#: modules/websearch/doc/search-guide.webdoc:4996 -#: modules/websearch/doc/search-guide.webdoc:5017 -#: modules/websearch/doc/search-guide.webdoc:5035 -#: modules/websearch/doc/search-guide.webdoc:5068 -#: modules/websearch/doc/search-guide.webdoc:5082 -#: modules/websearch/doc/search-guide.webdoc:5097 -#: modules/websearch/doc/search-guide.webdoc:5113 -#: modules/websearch/doc/search-guide.webdoc:5132 -#: modules/websearch/doc/search-guide.webdoc:5146 -#: modules/websearch/doc/search-guide.webdoc:5162 -#: modules/websearch/doc/search-guide.webdoc:5180 -#: modules/websearch/doc/search-guide.webdoc:5199 -#: modules/websearch/doc/search-guide.webdoc:5214 -#: modules/websearch/doc/search-guide.webdoc:5229 -#: modules/websearch/doc/search-guide.webdoc:5247 -#: modules/websearch/doc/search-guide.webdoc:5267 -#: modules/websearch/doc/search-guide.webdoc:5282 -#: modules/websearch/doc/search-guide.webdoc:5297 -#: modules/websearch/doc/search-guide.webdoc:5317 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:133 -#: modules/websearch/lib/websearch_templates.py:803 -#: modules/websearch/lib/websearch_templates.py:881 -#: modules/websearch/lib/websearch_templates.py:1004 -#: modules/websearch/lib/websearch_templates.py:1960 -#: modules/websearch/lib/websearch_templates.py:2053 -#: modules/websearch/lib/websearch_templates.py:2110 -#: modules/websearch/lib/websearch_templates.py:2167 -#: modules/webstyle/lib/webstyle_templates.py:431 -#: modules/webstyle/lib/webstyle_templates.py:499 -#: modules/webstyle/lib/webdoc_tests.py:86 -#: modules/bibedit/lib/bibeditmulti_templates.py:296 -#: modules/bibcirculation/lib/bibcirculation_templates.py:1819 -#: modules/bibcirculation/lib/bibcirculation_templates.py:1877 -#: modules/bibcirculation/lib/bibcirculation_templates.py:7673 -#: modules/bibcirculation/lib/bibcirculation_templates.py:8240 -#: modules/bibcirculation/lib/bibcirculation_templates.py:14050 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15528 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15686 -#: modules/bibcirculation/lib/bibcirculation_templates.py:16648 -#: modules/bibknowledge/lib/bibknowledge_templates.py:394 -msgid "Search" -msgstr "Recherche" - -#: modules/webhelp/web/help-central.webdoc:133 -msgid "Citation Metrics" -msgstr "Métriques des Citations" - -#: modules/websearch/doc/search-tips.webdoc:37 -#: modules/websearch/doc/search-tips.webdoc:73 -#: modules/websearch/doc/search-tips.webdoc:119 -#: modules/websearch/doc/search-tips.webdoc:176 -#: modules/websearch/doc/search-tips.webdoc:203 -#: modules/websearch/doc/search-tips.webdoc:231 -#: modules/websearch/doc/search-tips.webdoc:286 -#: modules/websearch/doc/search-tips.webdoc:334 -#: modules/websearch/doc/search-tips.webdoc:345 -#: modules/websearch/doc/search-tips.webdoc:369 -#: modules/websearch/doc/search-tips.webdoc:393 -#: modules/websearch/doc/search-tips.webdoc:431 -#: modules/websearch/doc/search-tips.webdoc:467 -#: modules/websearch/doc/search-tips.webdoc:490 -#: modules/websearch/doc/search-tips.webdoc:512 -#: modules/websearch/doc/search-tips.webdoc:548 -#: modules/websearch/doc/search-tips.webdoc:566 -#: modules/websearch/doc/search-tips.webdoc:585 -#: modules/websearch/doc/search-tips.webdoc:620 -#: modules/websearch/doc/search-tips.webdoc:631 -#: modules/websearch/doc/search-tips.webdoc:633 -#: modules/websearch/doc/search-tips.webdoc:636 -#: modules/websearch/doc/search-tips.webdoc:638 -#: modules/websearch/doc/search-tips.webdoc:640 -#: modules/websearch/doc/search-tips.webdoc:649 -#: modules/websearch/doc/search-tips.webdoc:677 -#: modules/websearch/doc/search-tips.webdoc:700 -#: modules/websearch/doc/search-guide.webdoc:224 -#: modules/websearch/doc/search-guide.webdoc:248 -#: modules/websearch/doc/search-guide.webdoc:274 -#: modules/websearch/doc/search-guide.webdoc:299 -#: modules/websearch/doc/search-guide.webdoc:342 -#: modules/websearch/doc/search-guide.webdoc:377 -#: modules/websearch/doc/search-guide.webdoc:412 -#: modules/websearch/doc/search-guide.webdoc:474 -#: modules/websearch/doc/search-guide.webdoc:509 -#: modules/websearch/doc/search-guide.webdoc:544 -#: modules/websearch/doc/search-guide.webdoc:611 -#: modules/websearch/doc/search-guide.webdoc:646 -#: modules/websearch/doc/search-guide.webdoc:681 -#: modules/websearch/doc/search-guide.webdoc:749 -#: modules/websearch/doc/search-guide.webdoc:784 -#: modules/websearch/doc/search-guide.webdoc:819 -#: modules/websearch/doc/search-guide.webdoc:879 -#: modules/websearch/doc/search-guide.webdoc:910 -#: modules/websearch/doc/search-guide.webdoc:950 -#: modules/websearch/doc/search-guide.webdoc:984 -#: modules/websearch/doc/search-guide.webdoc:1024 -#: modules/websearch/doc/search-guide.webdoc:1046 -#: modules/websearch/doc/search-guide.webdoc:1066 -#: modules/websearch/doc/search-guide.webdoc:1082 -#: modules/websearch/doc/search-guide.webdoc:1122 -#: modules/websearch/doc/search-guide.webdoc:1145 -#: modules/websearch/doc/search-guide.webdoc:1166 -#: modules/websearch/doc/search-guide.webdoc:1181 -#: modules/websearch/doc/search-guide.webdoc:1225 -#: modules/websearch/doc/search-guide.webdoc:1250 -#: modules/websearch/doc/search-guide.webdoc:1271 -#: modules/websearch/doc/search-guide.webdoc:1287 -#: modules/websearch/doc/search-guide.webdoc:1332 -#: modules/websearch/doc/search-guide.webdoc:1355 -#: modules/websearch/doc/search-guide.webdoc:1377 -#: modules/websearch/doc/search-guide.webdoc:1393 -#: modules/websearch/doc/search-guide.webdoc:1763 -#: modules/websearch/doc/search-guide.webdoc:1777 -#: modules/websearch/doc/search-guide.webdoc:1795 -#: modules/websearch/doc/search-guide.webdoc:1814 -#: modules/websearch/doc/search-guide.webdoc:1827 -#: modules/websearch/doc/search-guide.webdoc:1845 -#: modules/websearch/doc/search-guide.webdoc:1865 -#: modules/websearch/doc/search-guide.webdoc:1880 -#: modules/websearch/doc/search-guide.webdoc:1899 -#: modules/websearch/doc/search-guide.webdoc:1922 -#: modules/websearch/doc/search-guide.webdoc:1937 -#: modules/websearch/doc/search-guide.webdoc:1956 -#: modules/websearch/doc/search-guide.webdoc:1984 -#: modules/websearch/doc/search-guide.webdoc:2022 -#: modules/websearch/doc/search-guide.webdoc:2033 -#: modules/websearch/doc/search-guide.webdoc:2047 -#: modules/websearch/doc/search-guide.webdoc:2061 -#: modules/websearch/doc/search-guide.webdoc:2074 -#: modules/websearch/doc/search-guide.webdoc:2090 -#: modules/websearch/doc/search-guide.webdoc:2101 -#: modules/websearch/doc/search-guide.webdoc:2115 -#: modules/websearch/doc/search-guide.webdoc:2129 -#: modules/websearch/doc/search-guide.webdoc:2142 -#: modules/websearch/doc/search-guide.webdoc:2158 -#: modules/websearch/doc/search-guide.webdoc:2169 -#: modules/websearch/doc/search-guide.webdoc:2183 -#: modules/websearch/doc/search-guide.webdoc:2197 -#: modules/websearch/doc/search-guide.webdoc:2210 -#: modules/websearch/doc/search-guide.webdoc:2228 -#: modules/websearch/doc/search-guide.webdoc:2239 -#: modules/websearch/doc/search-guide.webdoc:2253 -#: modules/websearch/doc/search-guide.webdoc:2267 -#: modules/websearch/doc/search-guide.webdoc:2280 -#: modules/websearch/doc/search-guide.webdoc:2309 -#: modules/websearch/doc/search-guide.webdoc:2323 -#: modules/websearch/doc/search-guide.webdoc:2340 -#: modules/websearch/doc/search-guide.webdoc:2353 -#: modules/websearch/doc/search-guide.webdoc:2370 -#: modules/websearch/doc/search-guide.webdoc:2384 -#: modules/websearch/doc/search-guide.webdoc:2402 -#: modules/websearch/doc/search-guide.webdoc:2416 -#: modules/websearch/doc/search-guide.webdoc:2447 -#: modules/websearch/doc/search-guide.webdoc:2462 -#: modules/websearch/doc/search-guide.webdoc:2476 -#: modules/websearch/doc/search-guide.webdoc:2491 -#: modules/websearch/doc/search-guide.webdoc:2519 -#: modules/websearch/doc/search-guide.webdoc:2534 -#: modules/websearch/doc/search-guide.webdoc:2548 -#: modules/websearch/doc/search-guide.webdoc:2564 -#: modules/websearch/doc/search-guide.webdoc:2596 -#: modules/websearch/doc/search-guide.webdoc:2612 -#: modules/websearch/doc/search-guide.webdoc:2626 -#: modules/websearch/doc/search-guide.webdoc:2641 -#: modules/websearch/doc/search-guide.webdoc:2672 -#: modules/websearch/doc/search-guide.webdoc:2688 -#: modules/websearch/doc/search-guide.webdoc:2702 -#: modules/websearch/doc/search-guide.webdoc:2717 -#: modules/websearch/doc/search-guide.webdoc:2759 -#: modules/websearch/doc/search-guide.webdoc:2774 -#: modules/websearch/doc/search-guide.webdoc:2788 -#: modules/websearch/doc/search-guide.webdoc:2813 -#: modules/websearch/doc/search-guide.webdoc:2828 -#: modules/websearch/doc/search-guide.webdoc:2842 -#: modules/websearch/doc/search-guide.webdoc:2871 -#: modules/websearch/doc/search-guide.webdoc:2886 -#: modules/websearch/doc/search-guide.webdoc:2900 -#: modules/websearch/doc/search-guide.webdoc:2928 -#: modules/websearch/doc/search-guide.webdoc:2943 -#: modules/websearch/doc/search-guide.webdoc:2956 -#: modules/websearch/doc/search-guide.webdoc:2991 -#: modules/websearch/doc/search-guide.webdoc:3013 -#: modules/websearch/doc/search-guide.webdoc:3037 -#: modules/websearch/doc/search-guide.webdoc:3061 -#: modules/websearch/doc/search-guide.webdoc:3085 -#: modules/websearch/doc/search-guide.webdoc:3100 -#: modules/websearch/doc/search-guide.webdoc:3116 -#: modules/websearch/doc/search-guide.webdoc:3133 -#: modules/websearch/doc/search-guide.webdoc:3153 -#: modules/websearch/doc/search-guide.webdoc:3171 -#: modules/websearch/doc/search-guide.webdoc:3189 -#: modules/websearch/doc/search-guide.webdoc:3208 -#: modules/websearch/doc/search-guide.webdoc:3229 -#: modules/websearch/doc/search-guide.webdoc:3243 -#: modules/websearch/doc/search-guide.webdoc:3263 -#: modules/websearch/doc/search-guide.webdoc:3278 -#: modules/websearch/doc/search-guide.webdoc:3297 -#: modules/websearch/doc/search-guide.webdoc:3312 -#: modules/websearch/doc/search-guide.webdoc:3332 -#: modules/websearch/doc/search-guide.webdoc:3347 -#: modules/websearch/doc/search-guide.webdoc:3409 -#: modules/websearch/doc/search-guide.webdoc:3423 -#: modules/websearch/doc/search-guide.webdoc:3440 -#: modules/websearch/doc/search-guide.webdoc:3453 -#: modules/websearch/doc/search-guide.webdoc:3471 -#: modules/websearch/doc/search-guide.webdoc:3486 -#: modules/websearch/doc/search-guide.webdoc:3504 -#: modules/websearch/doc/search-guide.webdoc:3519 -#: modules/websearch/doc/search-guide.webdoc:3544 -#: modules/websearch/doc/search-guide.webdoc:3557 -#: modules/websearch/doc/search-guide.webdoc:3570 -#: modules/websearch/doc/search-guide.webdoc:3586 -#: modules/websearch/doc/search-guide.webdoc:3602 -#: modules/websearch/doc/search-guide.webdoc:3619 -#: modules/websearch/doc/search-guide.webdoc:3652 -#: modules/websearch/doc/search-guide.webdoc:3668 -#: modules/websearch/doc/search-guide.webdoc:3685 -#: modules/websearch/doc/search-guide.webdoc:3705 -#: modules/websearch/doc/search-guide.webdoc:3719 -#: modules/websearch/doc/search-guide.webdoc:3737 -#: modules/websearch/doc/search-guide.webdoc:3758 -#: modules/websearch/doc/search-guide.webdoc:3777 -#: modules/websearch/doc/search-guide.webdoc:3795 -#: modules/websearch/doc/search-guide.webdoc:3817 -#: modules/websearch/doc/search-guide.webdoc:3836 -#: modules/websearch/doc/search-guide.webdoc:3853 -#: modules/websearch/doc/search-guide.webdoc:3974 -#: modules/websearch/doc/search-guide.webdoc:3999 -#: modules/websearch/doc/search-guide.webdoc:4022 -#: modules/websearch/doc/search-guide.webdoc:4048 -#: modules/websearch/doc/search-guide.webdoc:4072 -#: modules/websearch/doc/search-guide.webdoc:4099 -#: modules/websearch/doc/search-guide.webdoc:4124 -#: modules/websearch/doc/search-guide.webdoc:4150 -#: modules/websearch/doc/search-guide.webdoc:4179 -#: modules/websearch/doc/search-guide.webdoc:4199 -#: modules/websearch/doc/search-guide.webdoc:4223 -#: modules/websearch/doc/search-guide.webdoc:4250 -#: modules/websearch/doc/search-guide.webdoc:4290 -#: modules/websearch/doc/search-guide.webdoc:4311 -#: modules/websearch/doc/search-guide.webdoc:4335 -#: modules/websearch/doc/search-guide.webdoc:4365 -#: modules/websearch/doc/search-guide.webdoc:4409 -#: modules/websearch/doc/search-guide.webdoc:4431 -#: modules/websearch/doc/search-guide.webdoc:4456 -#: modules/websearch/doc/search-guide.webdoc:4486 -#: modules/websearch/doc/search-guide.webdoc:4531 -#: modules/websearch/doc/search-guide.webdoc:4552 -#: modules/websearch/doc/search-guide.webdoc:4577 -#: modules/websearch/doc/search-guide.webdoc:4607 -#: modules/websearch/doc/search-guide.webdoc:4899 -#: modules/websearch/doc/search-guide.webdoc:4915 -#: modules/websearch/doc/search-guide.webdoc:4935 -#: modules/websearch/doc/search-guide.webdoc:4954 -#: modules/websearch/doc/search-guide.webdoc:4975 -#: modules/websearch/doc/search-guide.webdoc:4993 -#: modules/websearch/doc/search-guide.webdoc:5014 -#: modules/websearch/doc/search-guide.webdoc:5032 -#: modules/websearch/doc/search-guide.webdoc:5065 -#: modules/websearch/doc/search-guide.webdoc:5079 -#: modules/websearch/doc/search-guide.webdoc:5094 -#: modules/websearch/doc/search-guide.webdoc:5110 -#: modules/websearch/doc/search-guide.webdoc:5129 -#: modules/websearch/doc/search-guide.webdoc:5143 -#: modules/websearch/doc/search-guide.webdoc:5159 -#: modules/websearch/doc/search-guide.webdoc:5177 -#: modules/websearch/doc/search-guide.webdoc:5196 -#: modules/websearch/doc/search-guide.webdoc:5211 -#: modules/websearch/doc/search-guide.webdoc:5226 -#: modules/websearch/doc/search-guide.webdoc:5244 -#: modules/websearch/doc/search-guide.webdoc:5264 -#: modules/websearch/doc/search-guide.webdoc:5279 -#: modules/websearch/doc/search-guide.webdoc:5294 -#: modules/websearch/doc/search-guide.webdoc:5314 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:129 -#: modules/miscutil/lib/inveniocfg.py:453 -msgid "any field" -msgstr "tous les champs" - -#: modules/webhelp/web/help-central.webdoc:20 -#: modules/webhelp/web/help-central.webdoc:25 -#: modules/webhelp/web/help-central.webdoc:26 -#: modules/webhelp/web/help-central.webdoc:27 -#: modules/webhelp/web/help-central.webdoc:28 -#: modules/webhelp/web/help-central.webdoc:29 -#: modules/webhelp/web/help-central.webdoc:30 -#: modules/webhelp/web/help-central.webdoc:31 -#: modules/webhelp/web/help-central.webdoc:32 -#: modules/webhelp/web/help-central.webdoc:33 -#: modules/webhelp/web/help-central.webdoc:34 -#: modules/webhelp/web/help-central.webdoc:35 -#: modules/webhelp/web/help-central.webdoc:36 -#: modules/webhelp/web/help-central.webdoc:37 -#: modules/webhelp/web/help-central.webdoc:38 -#: modules/webhelp/web/help-central.webdoc:39 -#: modules/webhelp/web/help-central.webdoc:40 -#: modules/webhelp/web/help-central.webdoc:41 -#: modules/webhelp/web/help-central.webdoc:42 -#: modules/webhelp/web/help-central.webdoc:43 -#: modules/webhelp/web/help-central.webdoc:44 -#: modules/webhelp/web/help-central.webdoc:45 -#: modules/websearch/doc/search-tips.webdoc:21 -#: modules/websearch/doc/search-guide.webdoc:21 -#: modules/websubmit/doc/submit-guide.webdoc:21 -#: modules/webstyle/lib/webdoc_tests.py:105 -#: modules/webstyle/lib/webdoc_webinterface.py:155 -msgid "Help Central" -msgstr "Centre d'aide" - -#: modules/bibformat/etc/format_templates/Default_HTML_actions.bft:6 -msgid "Export as" -msgstr "Exporter vers" - -#: modules/websearch/doc/search-guide.webdoc:345 -#: modules/websearch/doc/search-guide.webdoc:380 -#: modules/websearch/doc/search-guide.webdoc:415 -#: modules/websearch/doc/search-guide.webdoc:477 -#: modules/websearch/doc/search-guide.webdoc:512 -#: modules/websearch/doc/search-guide.webdoc:547 -#: modules/websearch/doc/search-guide.webdoc:614 -#: modules/websearch/doc/search-guide.webdoc:649 -#: modules/websearch/doc/search-guide.webdoc:684 -#: modules/websearch/doc/search-guide.webdoc:752 -#: modules/websearch/doc/search-guide.webdoc:787 -#: modules/websearch/doc/search-guide.webdoc:822 -#: modules/miscutil/lib/inveniocfg.py:462 -msgid "collection" -msgstr "collection" - -#: modules/websearch/doc/admin/websearch-admin-guide.webdoc:20 -msgid "WebSearch Admin Guide" -msgstr "Guide d'administration de WebSearch" - -#: modules/websearch/doc/search-guide.webdoc:335 -#: modules/websearch/doc/search-guide.webdoc:371 -#: modules/websearch/doc/search-guide.webdoc:406 -#: modules/websearch/doc/search-guide.webdoc:467 -#: modules/websearch/doc/search-guide.webdoc:503 -#: modules/websearch/doc/search-guide.webdoc:538 -#: modules/websearch/doc/search-guide.webdoc:604 -#: modules/websearch/doc/search-guide.webdoc:640 -#: modules/websearch/doc/search-guide.webdoc:675 -#: modules/websearch/doc/search-guide.webdoc:742 -#: modules/websearch/doc/search-guide.webdoc:778 -#: modules/websearch/doc/search-guide.webdoc:813 -#: modules/websearch/lib/search_engine.py:1136 -#: modules/websearch/lib/websearch_templates.py:1115 -msgid "Exact phrase:" -msgstr "Phrase exacte:" - -#: modules/webhelp/web/help-central.webdoc:108 -#: modules/websubmit/doc/submit-guide.webdoc:20 -msgid "Submit Guide" -msgstr "Aide à la soumission" - -#: modules/websearch/doc/search-guide.webdoc:360 -#: modules/websearch/doc/search-guide.webdoc:395 -#: modules/websearch/doc/search-guide.webdoc:492 -#: modules/websearch/doc/search-guide.webdoc:527 -#: modules/websearch/doc/search-guide.webdoc:629 -#: modules/websearch/doc/search-guide.webdoc:664 -#: modules/websearch/doc/search-guide.webdoc:767 -#: modules/websearch/doc/search-guide.webdoc:802 -#: modules/websearch/lib/search_engine.py:960 -#: modules/websearch/lib/search_engine.py:1115 -#: modules/websearch/lib/websearch_templates.py:1162 -#: modules/websearch/lib/websearch_webcoll.py:591 -msgid "OR" -msgstr "OU" - -#: modules/websearch/doc/search-guide.webdoc:359 -#: modules/websearch/doc/search-guide.webdoc:394 -#: modules/websearch/doc/search-guide.webdoc:491 -#: modules/websearch/doc/search-guide.webdoc:526 -#: modules/websearch/doc/search-guide.webdoc:628 -#: modules/websearch/doc/search-guide.webdoc:663 -#: modules/websearch/doc/search-guide.webdoc:766 -#: modules/websearch/doc/search-guide.webdoc:801 -#: modules/websearch/lib/search_engine.py:1114 -#: modules/websearch/lib/websearch_templates.py:1161 -msgid "AND" -msgstr "ET" - -#: modules/websearch/doc/search-guide.webdoc:349 -#: modules/websearch/doc/search-guide.webdoc:384 -#: modules/websearch/doc/search-guide.webdoc:419 -#: modules/websearch/doc/search-guide.webdoc:481 -#: modules/websearch/doc/search-guide.webdoc:516 -#: modules/websearch/doc/search-guide.webdoc:551 -#: modules/websearch/doc/search-guide.webdoc:618 -#: modules/websearch/doc/search-guide.webdoc:653 -#: modules/websearch/doc/search-guide.webdoc:688 -#: modules/websearch/doc/search-guide.webdoc:756 -#: modules/websearch/doc/search-guide.webdoc:791 -#: modules/websearch/doc/search-guide.webdoc:826 -#: modules/miscutil/lib/inveniocfg.py:457 -msgid "keyword" -msgstr "mot clé" - -#: modules/websearch/doc/search-tips.webdoc:38 -#: modules/websearch/doc/search-tips.webdoc:74 -#: modules/websearch/doc/search-tips.webdoc:120 -#: modules/websearch/doc/search-tips.webdoc:177 -#: modules/websearch/doc/search-tips.webdoc:204 -#: modules/websearch/doc/search-tips.webdoc:232 -#: modules/websearch/doc/search-tips.webdoc:287 -#: modules/websearch/doc/search-tips.webdoc:335 -#: modules/websearch/doc/search-tips.webdoc:346 -#: modules/websearch/doc/search-tips.webdoc:370 -#: modules/websearch/doc/search-tips.webdoc:394 -#: modules/websearch/doc/search-tips.webdoc:432 -#: modules/websearch/doc/search-tips.webdoc:468 -#: modules/websearch/doc/search-tips.webdoc:491 -#: modules/websearch/doc/search-tips.webdoc:513 -#: modules/websearch/doc/search-tips.webdoc:549 -#: modules/websearch/doc/search-tips.webdoc:567 -#: modules/websearch/doc/search-tips.webdoc:586 -#: modules/websearch/doc/search-tips.webdoc:621 -#: modules/websearch/doc/search-tips.webdoc:650 -#: modules/websearch/doc/search-tips.webdoc:678 -#: modules/websearch/doc/search-tips.webdoc:701 -#: modules/websearch/doc/search-guide.webdoc:225 -#: modules/websearch/doc/search-guide.webdoc:249 -#: modules/websearch/doc/search-guide.webdoc:275 -#: modules/websearch/doc/search-guide.webdoc:300 -#: modules/websearch/doc/search-guide.webdoc:353 -#: modules/websearch/doc/search-guide.webdoc:388 -#: modules/websearch/doc/search-guide.webdoc:423 -#: modules/websearch/doc/search-guide.webdoc:485 -#: modules/websearch/doc/search-guide.webdoc:520 -#: modules/websearch/doc/search-guide.webdoc:555 -#: modules/websearch/doc/search-guide.webdoc:622 -#: modules/websearch/doc/search-guide.webdoc:657 -#: modules/websearch/doc/search-guide.webdoc:692 -#: modules/websearch/doc/search-guide.webdoc:760 -#: modules/websearch/doc/search-guide.webdoc:795 -#: modules/websearch/doc/search-guide.webdoc:830 -#: modules/websearch/doc/search-guide.webdoc:880 -#: modules/websearch/doc/search-guide.webdoc:911 -#: modules/websearch/doc/search-guide.webdoc:951 -#: modules/websearch/doc/search-guide.webdoc:985 -#: modules/websearch/doc/search-guide.webdoc:1025 -#: modules/websearch/doc/search-guide.webdoc:1047 -#: modules/websearch/doc/search-guide.webdoc:1067 -#: modules/websearch/doc/search-guide.webdoc:1083 -#: modules/websearch/doc/search-guide.webdoc:1123 -#: modules/websearch/doc/search-guide.webdoc:1146 -#: modules/websearch/doc/search-guide.webdoc:1167 -#: modules/websearch/doc/search-guide.webdoc:1182 -#: modules/websearch/doc/search-guide.webdoc:1226 -#: modules/websearch/doc/search-guide.webdoc:1251 -#: modules/websearch/doc/search-guide.webdoc:1272 -#: modules/websearch/doc/search-guide.webdoc:1288 -#: modules/websearch/doc/search-guide.webdoc:1333 -#: modules/websearch/doc/search-guide.webdoc:1356 -#: modules/websearch/doc/search-guide.webdoc:1378 -#: modules/websearch/doc/search-guide.webdoc:1394 -#: modules/websearch/doc/search-guide.webdoc:1764 -#: modules/websearch/doc/search-guide.webdoc:1778 -#: modules/websearch/doc/search-guide.webdoc:1796 -#: modules/websearch/doc/search-guide.webdoc:1815 -#: modules/websearch/doc/search-guide.webdoc:1828 -#: modules/websearch/doc/search-guide.webdoc:1846 -#: modules/websearch/doc/search-guide.webdoc:1866 -#: modules/websearch/doc/search-guide.webdoc:1881 -#: modules/websearch/doc/search-guide.webdoc:1900 -#: modules/websearch/doc/search-guide.webdoc:1923 -#: modules/websearch/doc/search-guide.webdoc:1938 -#: modules/websearch/doc/search-guide.webdoc:1957 -#: modules/websearch/doc/search-guide.webdoc:1985 -#: modules/websearch/doc/search-guide.webdoc:2023 -#: modules/websearch/doc/search-guide.webdoc:2034 -#: modules/websearch/doc/search-guide.webdoc:2048 -#: modules/websearch/doc/search-guide.webdoc:2062 -#: modules/websearch/doc/search-guide.webdoc:2075 -#: modules/websearch/doc/search-guide.webdoc:2091 -#: modules/websearch/doc/search-guide.webdoc:2102 -#: modules/websearch/doc/search-guide.webdoc:2116 -#: modules/websearch/doc/search-guide.webdoc:2130 -#: modules/websearch/doc/search-guide.webdoc:2143 -#: modules/websearch/doc/search-guide.webdoc:2159 -#: modules/websearch/doc/search-guide.webdoc:2170 -#: modules/websearch/doc/search-guide.webdoc:2184 -#: modules/websearch/doc/search-guide.webdoc:2198 -#: modules/websearch/doc/search-guide.webdoc:2211 -#: modules/websearch/doc/search-guide.webdoc:2229 -#: modules/websearch/doc/search-guide.webdoc:2240 -#: modules/websearch/doc/search-guide.webdoc:2254 -#: modules/websearch/doc/search-guide.webdoc:2268 -#: modules/websearch/doc/search-guide.webdoc:2281 -#: modules/websearch/doc/search-guide.webdoc:2310 -#: modules/websearch/doc/search-guide.webdoc:2324 -#: modules/websearch/doc/search-guide.webdoc:2341 -#: modules/websearch/doc/search-guide.webdoc:2354 -#: modules/websearch/doc/search-guide.webdoc:2371 -#: modules/websearch/doc/search-guide.webdoc:2385 -#: modules/websearch/doc/search-guide.webdoc:2403 -#: modules/websearch/doc/search-guide.webdoc:2417 -#: modules/websearch/doc/search-guide.webdoc:2448 -#: modules/websearch/doc/search-guide.webdoc:2463 -#: modules/websearch/doc/search-guide.webdoc:2477 -#: modules/websearch/doc/search-guide.webdoc:2492 -#: modules/websearch/doc/search-guide.webdoc:2520 -#: modules/websearch/doc/search-guide.webdoc:2535 -#: modules/websearch/doc/search-guide.webdoc:2549 -#: modules/websearch/doc/search-guide.webdoc:2565 -#: modules/websearch/doc/search-guide.webdoc:2597 -#: modules/websearch/doc/search-guide.webdoc:2613 -#: modules/websearch/doc/search-guide.webdoc:2627 -#: modules/websearch/doc/search-guide.webdoc:2642 -#: modules/websearch/doc/search-guide.webdoc:2673 -#: modules/websearch/doc/search-guide.webdoc:2689 -#: modules/websearch/doc/search-guide.webdoc:2703 -#: modules/websearch/doc/search-guide.webdoc:2718 -#: modules/websearch/doc/search-guide.webdoc:2760 -#: modules/websearch/doc/search-guide.webdoc:2775 -#: modules/websearch/doc/search-guide.webdoc:2789 -#: modules/websearch/doc/search-guide.webdoc:2814 -#: modules/websearch/doc/search-guide.webdoc:2829 -#: modules/websearch/doc/search-guide.webdoc:2843 -#: modules/websearch/doc/search-guide.webdoc:2872 -#: modules/websearch/doc/search-guide.webdoc:2887 -#: modules/websearch/doc/search-guide.webdoc:2901 -#: modules/websearch/doc/search-guide.webdoc:2929 -#: modules/websearch/doc/search-guide.webdoc:2944 -#: modules/websearch/doc/search-guide.webdoc:2957 -#: modules/websearch/doc/search-guide.webdoc:2992 -#: modules/websearch/doc/search-guide.webdoc:3014 -#: modules/websearch/doc/search-guide.webdoc:3038 -#: modules/websearch/doc/search-guide.webdoc:3062 -#: modules/websearch/doc/search-guide.webdoc:3086 -#: modules/websearch/doc/search-guide.webdoc:3101 -#: modules/websearch/doc/search-guide.webdoc:3117 -#: modules/websearch/doc/search-guide.webdoc:3134 -#: modules/websearch/doc/search-guide.webdoc:3154 -#: modules/websearch/doc/search-guide.webdoc:3172 -#: modules/websearch/doc/search-guide.webdoc:3190 -#: modules/websearch/doc/search-guide.webdoc:3209 -#: modules/websearch/doc/search-guide.webdoc:3230 -#: modules/websearch/doc/search-guide.webdoc:3244 -#: modules/websearch/doc/search-guide.webdoc:3264 -#: modules/websearch/doc/search-guide.webdoc:3279 -#: modules/websearch/doc/search-guide.webdoc:3298 -#: modules/websearch/doc/search-guide.webdoc:3313 -#: modules/websearch/doc/search-guide.webdoc:3333 -#: modules/websearch/doc/search-guide.webdoc:3348 -#: modules/websearch/doc/search-guide.webdoc:3410 -#: modules/websearch/doc/search-guide.webdoc:3424 -#: modules/websearch/doc/search-guide.webdoc:3441 -#: modules/websearch/doc/search-guide.webdoc:3454 -#: modules/websearch/doc/search-guide.webdoc:3472 -#: modules/websearch/doc/search-guide.webdoc:3487 -#: modules/websearch/doc/search-guide.webdoc:3505 -#: modules/websearch/doc/search-guide.webdoc:3520 -#: modules/websearch/doc/search-guide.webdoc:3545 -#: modules/websearch/doc/search-guide.webdoc:3558 -#: modules/websearch/doc/search-guide.webdoc:3571 -#: modules/websearch/doc/search-guide.webdoc:3587 -#: modules/websearch/doc/search-guide.webdoc:3603 -#: modules/websearch/doc/search-guide.webdoc:3620 -#: modules/websearch/doc/search-guide.webdoc:3653 -#: modules/websearch/doc/search-guide.webdoc:3669 -#: modules/websearch/doc/search-guide.webdoc:3686 -#: modules/websearch/doc/search-guide.webdoc:3706 -#: modules/websearch/doc/search-guide.webdoc:3720 -#: modules/websearch/doc/search-guide.webdoc:3738 -#: modules/websearch/doc/search-guide.webdoc:3759 -#: modules/websearch/doc/search-guide.webdoc:3778 -#: modules/websearch/doc/search-guide.webdoc:3796 -#: modules/websearch/doc/search-guide.webdoc:3818 -#: modules/websearch/doc/search-guide.webdoc:3837 -#: modules/websearch/doc/search-guide.webdoc:3854 -#: modules/websearch/doc/search-guide.webdoc:3975 -#: modules/websearch/doc/search-guide.webdoc:4000 -#: modules/websearch/doc/search-guide.webdoc:4023 -#: modules/websearch/doc/search-guide.webdoc:4049 -#: modules/websearch/doc/search-guide.webdoc:4073 -#: modules/websearch/doc/search-guide.webdoc:4100 -#: modules/websearch/doc/search-guide.webdoc:4125 -#: modules/websearch/doc/search-guide.webdoc:4151 -#: modules/websearch/doc/search-guide.webdoc:4180 -#: modules/websearch/doc/search-guide.webdoc:4200 -#: modules/websearch/doc/search-guide.webdoc:4224 -#: modules/websearch/doc/search-guide.webdoc:4251 -#: modules/websearch/doc/search-guide.webdoc:4291 -#: modules/websearch/doc/search-guide.webdoc:4312 -#: modules/websearch/doc/search-guide.webdoc:4336 -#: modules/websearch/doc/search-guide.webdoc:4366 -#: modules/websearch/doc/search-guide.webdoc:4410 -#: modules/websearch/doc/search-guide.webdoc:4432 -#: modules/websearch/doc/search-guide.webdoc:4457 -#: modules/websearch/doc/search-guide.webdoc:4487 -#: modules/websearch/doc/search-guide.webdoc:4532 -#: modules/websearch/doc/search-guide.webdoc:4553 -#: modules/websearch/doc/search-guide.webdoc:4578 -#: modules/websearch/doc/search-guide.webdoc:4608 -#: modules/websearch/doc/search-guide.webdoc:4900 -#: modules/websearch/doc/search-guide.webdoc:4916 -#: modules/websearch/doc/search-guide.webdoc:4936 -#: modules/websearch/doc/search-guide.webdoc:4955 -#: modules/websearch/doc/search-guide.webdoc:4976 -#: modules/websearch/doc/search-guide.webdoc:4994 -#: modules/websearch/doc/search-guide.webdoc:5015 -#: modules/websearch/doc/search-guide.webdoc:5033 -#: modules/websearch/doc/search-guide.webdoc:5066 -#: modules/websearch/doc/search-guide.webdoc:5080 -#: modules/websearch/doc/search-guide.webdoc:5095 -#: modules/websearch/doc/search-guide.webdoc:5111 -#: modules/websearch/doc/search-guide.webdoc:5130 -#: modules/websearch/doc/search-guide.webdoc:5144 -#: modules/websearch/doc/search-guide.webdoc:5160 -#: modules/websearch/doc/search-guide.webdoc:5178 -#: modules/websearch/doc/search-guide.webdoc:5197 -#: modules/websearch/doc/search-guide.webdoc:5212 -#: modules/websearch/doc/search-guide.webdoc:5227 -#: modules/websearch/doc/search-guide.webdoc:5245 -#: modules/websearch/doc/search-guide.webdoc:5265 -#: modules/websearch/doc/search-guide.webdoc:5280 -#: modules/websearch/doc/search-guide.webdoc:5295 -#: modules/websearch/doc/search-guide.webdoc:5315 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:130 -#: modules/miscutil/lib/inveniocfg.py:454 -msgid "title" -msgstr "titre" - -#: modules/websearch/doc/search-tips.webdoc:79 -#: modules/websearch/doc/search-tips.webdoc:125 -#: modules/websearch/lib/websearch_templates.py:1275 -msgid "Narrow by collection:" -msgstr "Limiter par collection:" - -#: modules/bibformat/etc/format_templates/Default_HTML_actions.bft:5 -msgid "Add to personal basket" -msgstr "Ajouter au panier personnel" - -#: modules/websubmit/doc/admin/websubmit-admin-guide.webdoc:20 -msgid "WebSubmit Admin Guide" -msgstr "Guide d'administration de WebSubmit" - -#: modules/websearch/doc/search-tips.webdoc:340 -#: modules/websubmit/lib/websubmit_templates.py:1118 -#: modules/bibharvest/lib/oai_harvest_admin.py:409 -#: modules/bibharvest/lib/oai_harvest_admin.py:417 -#: modules/bibharvest/lib/oai_harvest_admin.py:431 -#: modules/bibharvest/lib/oai_harvest_admin.py:446 -msgid "or" -msgstr "ou" #: modules/bibedit/lib/bibedit_templates.py:266 +#: modules/bibedit/lib/bibedit_templates_epfl.py:105 msgid "Comparison of:" msgstr "Comparaison de:" #: modules/bibedit/lib/bibedit_templates.py:267 +#: modules/bibedit/lib/bibedit_templates_epfl.py:106 msgid "Revision" msgstr "Révision" #: modules/bibformat/lib/bibformat_templates.py:315 #: modules/bibformat/lib/bibformat_templates.py:427 #: modules/bibformat/lib/bibformat_templates.py:574 #: modules/bibformat/lib/bibformat_templates.py:590 #: modules/bibformat/lib/bibformat_templates.py:621 #: modules/bibformat/lib/bibformat_templates.py:931 #: modules/bibformat/lib/bibformat_templates.py:1063 #: modules/bibformat/lib/bibformat_templates.py:1379 #: modules/bibformat/lib/bibformat_templates.py:1483 #: modules/bibformat/lib/bibformat_templates.py:1542 #: modules/webcomment/lib/webcomment_templates.py:1415 #: modules/webjournal/lib/webjournal_templates.py:164 #: modules/webjournal/lib/webjournal_templates.py:535 #: modules/webjournal/lib/webjournal_templates.py:676 #: modules/bibknowledge/lib/bibknowledge_templates.py:299 #: modules/bibknowledge/lib/bibknowledge_templates.py:556 #: modules/bibknowledge/lib/bibknowledge_templates.py:624 msgid "Menu" msgstr "Menu" #: modules/bibformat/lib/bibformat_templates.py:317 #: modules/bibformat/lib/bibformat_templates.py:428 #: modules/bibformat/lib/bibformat_templates.py:577 #: modules/bibformat/lib/bibformat_templates.py:593 #: modules/bibformat/lib/bibformat_templates.py:624 #: modules/bibknowledge/lib/bibknowledge_templates.py:295 #: modules/bibknowledge/lib/bibknowledge_templates.py:555 #: modules/bibknowledge/lib/bibknowledge_templates.py:623 msgid "Close Editor" msgstr "Fermer l'éditeur" #: modules/bibformat/lib/bibformat_templates.py:318 #: modules/bibformat/lib/bibformat_templates.py:429 #: modules/bibformat/lib/bibformat_templates.py:578 #: modules/bibformat/lib/bibformat_templates.py:594 #: modules/bibformat/lib/bibformat_templates.py:625 msgid "Modify Template Attributes" msgstr "Modifier les attributs du modèle" #: modules/bibformat/lib/bibformat_templates.py:319 #: modules/bibformat/lib/bibformat_templates.py:430 #: modules/bibformat/lib/bibformat_templates.py:579 #: modules/bibformat/lib/bibformat_templates.py:595 #: modules/bibformat/lib/bibformat_templates.py:626 msgid "Template Editor" msgstr "Éditeur de modèles" #: modules/bibformat/lib/bibformat_templates.py:320 #: modules/bibformat/lib/bibformat_templates.py:431 #: modules/bibformat/lib/bibformat_templates.py:580 #: modules/bibformat/lib/bibformat_templates.py:596 #: modules/bibformat/lib/bibformat_templates.py:627 #: modules/bibformat/lib/bibformat_templates.py:1178 #: modules/bibformat/lib/bibformat_templates.py:1378 #: modules/bibformat/lib/bibformat_templates.py:1482 msgid "Check Dependencies" msgstr "Vérifier les dépendances" #: modules/bibformat/lib/bibformat_templates.py:370 #: modules/bibformat/lib/bibformat_templates.py:929 #: modules/bibformat/lib/bibformat_templates.py:1054 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/webalert/lib/webalert_templates.py:318 #: modules/websubmit/lib/websubmit_managedocfiles.py:370 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:194 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:255 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:345 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:398 #: modules/bibcirculation/lib/bibcirculation_utils.py:340 #: modules/bibcirculation/lib/bibcirculation_templates.py:1072 #: modules/bibcirculation/lib/bibcirculation_templates.py:1258 #: modules/bibcirculation/lib/bibcirculation_templates.py:1423 #: modules/bibcirculation/lib/bibcirculation_templates.py:1668 #: modules/bibcirculation/lib/bibcirculation_templates.py:2184 #: modules/bibcirculation/lib/bibcirculation_templates.py:2270 #: modules/bibcirculation/lib/bibcirculation_templates.py:2476 #: modules/bibcirculation/lib/bibcirculation_templates.py:2481 #: modules/bibcirculation/lib/bibcirculation_templates.py:2824 #: modules/bibcirculation/lib/bibcirculation_templates.py:3516 #: modules/bibcirculation/lib/bibcirculation_templates.py:3645 #: modules/bibcirculation/lib/bibcirculation_templates.py:4831 #: modules/bibcirculation/lib/bibcirculation_templates.py:5358 #: modules/bibcirculation/lib/bibcirculation_templates.py:5402 #: modules/bibcirculation/lib/bibcirculation_templates.py:5662 #: modules/bibcirculation/lib/bibcirculation_templates.py:5724 #: modules/bibcirculation/lib/bibcirculation_templates.py:5842 #: modules/bibcirculation/lib/bibcirculation_templates.py:5904 #: modules/bibcirculation/lib/bibcirculation_templates.py:6136 #: modules/bibcirculation/lib/bibcirculation_templates.py:6199 #: modules/bibcirculation/lib/bibcirculation_templates.py:6544 #: modules/bibcirculation/lib/bibcirculation_templates.py:7002 #: modules/bibcirculation/lib/bibcirculation_templates.py:7153 #: modules/bibcirculation/lib/bibcirculation_templates.py:8085 #: modules/bibcirculation/lib/bibcirculation_templates.py:8313 #: modules/bibcirculation/lib/bibcirculation_templates.py:8631 #: modules/bibcirculation/lib/bibcirculation_templates.py:8864 #: modules/bibcirculation/lib/bibcirculation_templates.py:8909 #: modules/bibcirculation/lib/bibcirculation_templates.py:9098 #: modules/bibcirculation/lib/bibcirculation_templates.py:9323 #: modules/bibcirculation/lib/bibcirculation_templates.py:9367 #: modules/bibcirculation/lib/bibcirculation_templates.py:9526 #: modules/bibcirculation/lib/bibcirculation_templates.py:9740 #: modules/bibcirculation/lib/bibcirculation_templates.py:10139 #: modules/bibcirculation/lib/bibcirculation_templates.py:10336 #: modules/bibcirculation/lib/bibcirculation_templates.py:10439 #: modules/bibcirculation/lib/bibcirculation_templates.py:10593 #: modules/bibcirculation/lib/bibcirculation_templates.py:10605 #: modules/bibcirculation/lib/bibcirculation_templates.py:10735 #: modules/bibcirculation/lib/bibcirculation_templates.py:11270 #: modules/bibcirculation/lib/bibcirculation_templates.py:11488 #: modules/bibcirculation/lib/bibcirculation_templates.py:12242 #: modules/bibcirculation/lib/bibcirculation_templates.py:12314 #: modules/bibcirculation/lib/bibcirculation_templates.py:12380 #: modules/bibcirculation/lib/bibcirculation_templates.py:13098 #: modules/bibcirculation/lib/bibcirculation_templates.py:13375 #: modules/bibcirculation/lib/bibcirculation_templates.py:13576 #: modules/bibcirculation/lib/bibcirculation_templates.py:13642 #: modules/bibcirculation/lib/bibcirculation_templates.py:13885 #: modules/bibcirculation/lib/bibcirculation_templates.py:13952 #: modules/bibcirculation/lib/bibcirculation_templates.py:14194 #: modules/bibcirculation/lib/bibcirculation_templates.py:14596 #: modules/bibcirculation/lib/bibcirculation_templates.py:14845 #: modules/bibcirculation/lib/bibcirculation_templates.py:14894 #: modules/bibcirculation/lib/bibcirculation_templates.py:15355 #: modules/bibcirculation/lib/bibcirculation_templates.py:16088 #: modules/bibcirculation/lib/bibcirculation_templates.py:16101 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:447 +#: modules/webalert/lib/webalert_templates_epfl.py:302 msgid "Name" -msgstr "Nom" +msgstr "Nome" #: modules/bibformat/lib/bibformat_templates.py:389 #: modules/bibformat/lib/bibformat_templates.py:930 #: modules/bibformat/lib/bibformat_templates.py:1055 #: modules/webbasket/lib/webbasket_templates.py:1247 #: modules/websession/lib/websession_templates.py:1525 #: modules/websession/lib/websession_templates.py:1599 #: modules/websession/lib/websession_templates.py:1662 #: modules/websubmit/lib/websubmit_managedocfiles.py:372 #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:2868 #: modules/bibcirculation/lib/bibcirculation_templates.py:5242 #: modules/bibcirculation/lib/bibcirculation_templates.py:6580 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6774 #: modules/bibcirculation/lib/bibcirculation_templates.py:7034 #: modules/bibcirculation/lib/bibcirculation_templates.py:7428 #: modules/bibcirculation/lib/bibcirculation_templates.py:7576 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:451 msgid "Description" msgstr "Description" #: modules/bibformat/lib/bibformat_templates.py:390 msgid "Update Format Attributes" msgstr "Mettre à jour les attributs de format" #: modules/bibformat/lib/bibformat_templates.py:575 #: modules/bibformat/lib/bibformat_templates.py:591 #: modules/bibformat/lib/bibformat_templates.py:622 msgid "Show Documentation" msgstr "Afficher la documentation" #: modules/bibformat/lib/bibformat_templates.py:576 #: modules/bibformat/lib/bibformat_templates.py:592 #: modules/bibformat/lib/bibformat_templates.py:623 #: modules/bibformat/lib/bibformat_templates.py:674 msgid "Hide Documentation" msgstr "Masquer la documentation" #: modules/bibformat/lib/bibformat_templates.py:583 #: modules/websubmit/lib/websubmit_templates.py:867 msgid "Your modifications will not be saved." msgstr "Vos modifications ne seront pas enregistrées." #: modules/bibformat/lib/bibformat_templates.py:932 #: modules/bibformat/lib/bibformat_templates.py:1056 #: modules/bibupload/lib/batchuploader_templates.py:221 #: modules/bibupload/lib/batchuploader_templates.py:263 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/websubmit/lib/websubmit_templates.py:1484 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:536 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:633 #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:630 #: modules/bibcirculation/lib/bibcirculation_templates.py:2588 #: modules/bibcirculation/lib/bibcirculation_templates.py:2696 #: modules/bibcirculation/lib/bibcirculation_templates.py:2861 #: modules/bibcirculation/lib/bibcirculation_templates.py:6573 #: modules/bibcirculation/lib/bibcirculation_templates.py:6704 #: modules/bibcirculation/lib/bibcirculation_templates.py:6776 #: modules/bibcirculation/lib/bibcirculation_templates.py:7028 #: modules/bibcirculation/lib/bibcirculation_templates.py:7458 #: modules/bibcirculation/lib/bibcirculation_templates.py:7578 #: modules/bibcirculation/lib/bibcirculation_templates.py:8375 #: modules/bibcirculation/lib/bibcirculation_templates.py:9625 #: modules/bibcirculation/lib/bibcirculation_templates.py:9809 #: modules/bibcirculation/lib/bibcirculation_templates.py:9904 #: modules/bibcirculation/lib/bibcirculation_templates.py:11073 #: modules/bibcirculation/lib/bibcirculation_templates.py:11530 #: modules/bibcirculation/lib/bibcirculation_templates.py:11559 #: modules/bibcirculation/lib/bibcirculation_templates.py:11615 #: modules/bibcirculation/lib/bibcirculation_templates.py:11647 #: modules/bibcirculation/lib/bibcirculation_templates.py:11789 #: modules/bibcirculation/lib/bibcirculation_templates.py:11963 #: modules/bibcirculation/lib/bibcirculation_templates.py:12079 #: modules/bibcirculation/lib/bibcirculation_templates.py:12415 #: modules/bibcirculation/lib/bibcirculation_templates.py:12505 #: modules/bibcirculation/lib/bibcirculation_templates.py:12599 #: modules/bibcirculation/lib/bibcirculation_templates.py:12702 #: modules/bibcirculation/lib/bibcirculation_templates.py:12805 #: modules/bibcirculation/lib/bibcirculation_templates.py:12911 #: modules/bibcirculation/lib/bibcirculation_templates.py:13174 #: modules/bibcirculation/lib/bibcirculation_templates.py:13417 #: modules/bibcirculation/lib/bibcirculation_templates.py:15103 msgid "Status" msgstr "Statut" #: modules/bibformat/lib/bibformat_templates.py:933 #: modules/bibformat/lib/bibformat_templates.py:1057 msgid "Last Modification Date" msgstr "Dernière modification:" #: modules/bibformat/lib/bibformat_templates.py:934 #: modules/bibformat/lib/bibformat_templates.py:1058 #: modules/webalert/lib/webalert_templates.py:325 #: modules/webalert/lib/webalert_templates.py:462 #: modules/webmessage/lib/webmessage_templates.py:89 #: modules/websubmit/lib/websubmit_templates.py:1483 +#: modules/webalert/lib/webalert_templates_epfl.py:309 +#: modules/webalert/lib/webalert_templates_epfl.py:453 msgid "Action" msgstr "Action" #: modules/bibformat/lib/bibformat_templates.py:936 #: modules/bibformat/lib/bibformat_templates.py:1060 #: modules/bibformat/lib/bibformat_templates.py:1543 #: modules/bibformat/web/admin/bibformatadmin.py:99 #: modules/bibformat/web/admin/bibformatadmin.py:160 #: modules/bibformat/web/admin/bibformatadmin.py:231 #: modules/bibformat/web/admin/bibformatadmin.py:276 #: modules/bibformat/web/admin/bibformatadmin.py:367 #: modules/bibformat/web/admin/bibformatadmin.py:942 msgid "Manage Output Formats" msgstr "Gérer les formats de sortie" #: modules/bibformat/lib/bibformat_templates.py:937 #: modules/bibformat/lib/bibformat_templates.py:1061 #: modules/bibformat/lib/bibformat_templates.py:1544 #: modules/bibformat/web/admin/bibformatadmin.py:441 #: modules/bibformat/web/admin/bibformatadmin.py:474 #: modules/bibformat/web/admin/bibformatadmin.py:545 #: modules/bibformat/web/admin/bibformatadmin.py:590 #: modules/bibformat/web/admin/bibformatadmin.py:656 #: modules/bibformat/web/admin/bibformatadmin.py:963 msgid "Manage Format Templates" msgstr "Gérer les modèles de formatage" #: modules/bibformat/lib/bibformat_templates.py:938 #: modules/bibformat/lib/bibformat_templates.py:1062 #: modules/bibformat/lib/bibformat_templates.py:1545 #: modules/bibformat/web/admin/bibformatadmin.py:837 #: modules/bibformat/web/admin/bibformatadmin.py:858 #: modules/bibformat/web/admin/bibformatadmin.py:891 #: modules/bibformat/web/admin/bibformatadmin.py:981 msgid "Format Elements Documentation" msgstr "Documentation des éléments de formatage" #: modules/bibformat/lib/bibformat_templates.py:990 #: modules/bibformat/web/admin/bibformatadmin.py:388 #: modules/bibformat/web/admin/bibformatadmin.py:390 #: modules/bibformat/web/admin/bibformatadmin.py:676 #: modules/bibformat/web/admin/bibformatadmin.py:678 #: modules/webbasket/lib/webbasket_templates.py:2858 #: modules/webmessage/lib/webmessage_templates.py:115 #: modules/webjournal/lib/webjournaladminlib.py:113 #: modules/webjournal/lib/webjournaladminlib.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:175 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:324 #: modules/bibcirculation/lib/bibcirculation_templates.py:1136 #: modules/bibcirculation/lib/bibcirculation_templates.py:1709 #: modules/bibcirculation/lib/bibcirculation_templates.py:15424 #: modules/bibcheck/web/admin/bibcheckadmin.py:137 #: modules/bibknowledge/lib/bibknowledgeadmin.py:740 #: modules/bibknowledge/lib/bibknowledgeadmin.py:742 msgid "Delete" msgstr "Supprimer" #: modules/bibformat/lib/bibformat_templates.py:1013 msgid "Add New Format Template" msgstr "Ajouter un nouveau modèle de formatage" #: modules/bibformat/lib/bibformat_templates.py:1014 msgid "Check Format Templates Extensively" msgstr "Vérifier les modèles de formatage en détail" #: modules/bibformat/lib/bibformat_templates.py:1053 msgid "Code" msgstr "Code" #: modules/bibformat/lib/bibformat_templates.py:1136 msgid "Add New Output Format" msgstr "Ajouter un format de sortie" #: modules/bibformat/lib/bibformat_templates.py:1174 msgid "menu" msgstr "menu" #: modules/bibformat/lib/bibformat_templates.py:1175 #: modules/bibformat/lib/bibformat_templates.py:1375 #: modules/bibformat/lib/bibformat_templates.py:1479 msgid "Close Output Format" msgstr "Fermer le format" #: modules/bibformat/lib/bibformat_templates.py:1176 #: modules/bibformat/lib/bibformat_templates.py:1376 #: modules/bibformat/lib/bibformat_templates.py:1480 msgid "Rules" msgstr "Règles" #: modules/bibformat/lib/bibformat_templates.py:1177 #: modules/bibformat/lib/bibformat_templates.py:1377 #: modules/bibformat/lib/bibformat_templates.py:1481 msgid "Modify Output Format Attributes" msgstr "Modifier les attributs du format de sortie" #: modules/bibformat/lib/bibformat_templates.py:1276 #: modules/bibformat/lib/bibformatadminlib.py:553 msgid "Remove Rule" msgstr "Supprimer la règle" #: modules/bibformat/lib/bibformat_templates.py:1329 #: modules/bibformat/lib/bibformatadminlib.py:560 msgid "Add New Rule" msgstr "Ajouter une règle" #: modules/bibformat/lib/bibformat_templates.py:1330 #: modules/bibformat/lib/bibformatadminlib.py:557 #: modules/bibcheck/web/admin/bibcheckadmin.py:239 msgid "Save Changes" msgstr "Enregistrer les modifications" #: modules/bibformat/lib/bibformat_templates.py:1894 msgid "No problem found with format" msgstr "Aucun problème n'a été trouvé pour ce format" #: modules/bibformat/lib/bibformat_templates.py:1896 msgid "An error has been found" msgstr "Une erreur a été découverte" #: modules/bibformat/lib/bibformat_templates.py:1898 msgid "The following errors have been found" msgstr "Les erreurs suivantes ont été découvertes" +#: modules/bibformat/lib/bibformatadminlib.py:55 +#: modules/bibformat/web/admin/bibformatadmin.py:68 +#: modules/webcomment/lib/webcommentadminlib.py:43 +#: modules/webstyle/lib/webdoc_webinterface.py:153 +#: modules/bibcheck/web/admin/bibcheckadmin.py:57 +#: modules/bibcheck/web/admin/bibcheckadmin.py:159 +#: modules/bibcheck/web/admin/bibcheckadmin.py:203 +#: modules/bibcheck/web/admin/bibcheckadmin.py:263 +#: modules/bibcheck/web/admin/bibcheckadmin.py:303 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:78 +msgid "Admin Area" +msgstr "Zone d'administration" + #: modules/bibformat/lib/bibformatadminlib.py:55 #: modules/bibformat/web/admin/bibformatadmin.py:70 msgid "BibFormat Admin" msgstr "Administration de BibFormat" #: modules/bibformat/lib/bibformatadminlib.py:347 #: modules/bibformat/lib/bibformatadminlib.py:386 #: modules/bibformat/lib/bibformatadminlib.py:388 msgid "Test with record:" msgstr "Tester avec la notice:" #: modules/bibformat/lib/bibformatadminlib.py:348 msgid "Enter a search query here." msgstr "Entrez une requête de recherche ici." -#: modules/bibformat/lib/elements/bfe_authors.py:117 -msgid "Hide" -msgstr "Masquer" +#: modules/bibformat/lib/elements/bfe_authors.py:73 +msgid "Editors" +msgstr "Editeurs" + +#: modules/bibformat/lib/elements/bfe_authors.py:75 +#: modules/bibcirculation/lib/bibcirculation_utils.py:321 +msgid "Editor" +msgstr "Editeur" + +#: modules/bibformat/lib/elements/bfe_authors.py:89 +msgid "Translators: " +msgstr "Traducteurs" + +#: modules/bibformat/lib/elements/bfe_authors.py:89 +msgid "Translator: " +msgstr "Traducteur: " + +#: modules/bibformat/lib/elements/bfe_authors.py:97 +msgid "Advisor: " +msgstr "Directeur: " + +#: modules/bibformat/lib/elements/bfe_authors.py:97 +msgid "Advisors: " +msgstr "Directeurs: " -#: modules/bibformat/lib/elements/bfe_authors.py:118 +#: modules/bibformat/lib/elements/bfe_authors.py:145 #, python-format msgid "Show all %i authors" msgstr "Afficher les %i auteurs" #: modules/bibformat/lib/elements/bfe_fulltext.py:75 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:70 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:73 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:104 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:107 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:124 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:126 msgid "Download fulltext" -msgstr "Télécharger le document" +msgstr "Télécharger le fulltext" #: modules/bibformat/lib/elements/bfe_fulltext.py:84 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:59 msgid "additional files" -msgstr "Fichiers additionnels" +msgstr "fichiers additionels" #: modules/bibformat/lib/elements/bfe_fulltext.py:121 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:111 #, python-format msgid "%(x_sitename)s link" msgstr "lien %(x_sitename)s" #: modules/bibformat/lib/elements/bfe_fulltext.py:121 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:111 #, python-format msgid "%(x_sitename)s links" msgstr "liens %(x_sitename)s" #: modules/bibformat/lib/elements/bfe_fulltext.py:130 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:129 msgid "external link" msgstr "lien externe" #: modules/bibformat/lib/elements/bfe_fulltext.py:130 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:129 msgid "external links" msgstr "liens externes" #: modules/bibformat/lib/elements/bfe_fulltext.py:272 +#: modules/bibformat/lib/elements/bfe_brief_links.py:64 +#: modules/bibformat/lib/elements/bfe_brief_links.py:66 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:136 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:173 msgid "Fulltext" -msgstr "Fichiers" +msgstr "Texte intégral" #: modules/bibformat/lib/elements/bfe_edit_files.py:50 msgid "Manage Files of This Record" msgstr "Gérer les fichiers de cette notice" -#: modules/bibformat/lib/elements/bfe_edit_record.py:51 -msgid "Edit This Record" -msgstr "Editer cette notice" +#: modules/bibformat/lib/elements/bfe_edit_record.py:59 +#: modules/websearch/lib/websearch_templates_epfl.py:1484 +msgid "This field is required" +msgstr "Ce champ est requis" -#: modules/bibformat/web/admin/bibformatadmin.py:175 -#: modules/bibformat/web/admin/bibformatadmin.py:243 -#: modules/bibformat/web/admin/bibformatadmin.py:288 -#: modules/bibformat/web/admin/bibformatadmin.py:945 -msgid "Restricted Output Format" -msgstr "Format de sortie à accès restreint" +#: modules/bibformat/lib/elements/bfe_edit_record.py:60 +msgid "Please wait while your message is being sent" +msgstr "Veuillez patienter pendant que le message est envoyé" -#: modules/bibformat/web/admin/bibformatadmin.py:201 -#: modules/bibformat/web/admin/bibformatadmin.py:508 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:564 -msgid "Ok" -msgstr "Ok" +#: modules/bibformat/lib/elements/bfe_edit_record.py:61 +msgid "Your request has been successfully sent." +msgstr "Votre requête a été envoyé avec succès." -#: modules/bibformat/web/admin/bibformatadmin.py:203 -#, python-format -msgid "Output Format %s Rules" -msgstr "Règles du format de sortie %s" +#: modules/bibformat/lib/elements/bfe_edit_record.py:103 +msgid "Ask for removal" +msgstr "Demande de suppression" -#: modules/bibformat/web/admin/bibformatadmin.py:256 -#, python-format -msgid "Output Format %s Attributes" -msgstr "Attributs du format de sortie %s" +#: modules/bibformat/lib/elements/bfe_edit_record.py:105 +msgid "Removal request" +msgstr "Demande de suppression" -#: modules/bibformat/web/admin/bibformatadmin.py:301 -#, python-format -msgid "Output Format %s Dependencies" -msgstr "Dépendances du format de sortie %s" +#: modules/bibformat/lib/elements/bfe_edit_record.py:106 +msgid "Please tell us the reason you want to remove it" +msgstr "Veuillez indiquer les raisons de cette demande de suppression" -#: modules/bibformat/web/admin/bibformatadmin.py:367 -msgid "Delete Output Format" -msgstr "Supprimer le format de sortie" +#: modules/bibformat/lib/elements/bfe_edit_record.py:108 +msgid "Send request" +msgstr "Envoyer la requête" +#: modules/bibformat/lib/elements/bfe_edit_record.py:109 #: modules/bibformat/web/admin/bibformatadmin.py:388 #: modules/bibformat/web/admin/bibformatadmin.py:676 #: modules/webbasket/lib/webbasket_templates.py:1413 #: modules/webbasket/lib/webbasket_templates.py:1481 #: modules/webbasket/lib/webbasket_templates.py:1588 #: modules/webbasket/lib/webbasket_templates.py:1643 #: modules/webbasket/lib/webbasket_templates.py:1733 #: modules/webbasket/lib/webbasket_templates.py:2803 #: modules/webbasket/lib/webbasket_templates.py:3607 #: modules/websession/lib/websession_templates.py:1802 #: modules/websession/lib/websession_templates.py:1910 #: modules/websession/lib/websession_templates.py:2112 #: modules/websession/lib/websession_templates.py:2195 #: modules/websubmit/lib/websubmit_managedocfiles.py:846 #: modules/websubmit/lib/websubmit_templates.py:2526 #: modules/websubmit/lib/websubmit_templates.py:2589 #: modules/websubmit/lib/websubmit_templates.py:2609 #: modules/websubmit/web/publiline.py:1225 #: modules/webjournal/lib/webjournaladminlib.py:114 #: modules/webjournal/lib/webjournaladminlib.py:224 #: modules/bibedit/lib/bibeditmulti_templates.py:517 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:261 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:403 #: modules/bibcirculation/lib/bibcirculation_templates.py:641 #: modules/bibcirculation/lib/bibcirculation_templates.py:1319 #: modules/bibcirculation/lib/bibcirculation_templates.py:1455 #: modules/bibcirculation/lib/bibcirculation_templates.py:3866 #: modules/bibknowledge/lib/bibknowledgeadmin.py:740 +#: modules/webbasket/lib/webbasket_templates_epfl.py:528 +#: modules/webbasket/lib/webbasket_templates_epfl.py:600 +#: modules/webbasket/lib/webbasket_templates_epfl.py:689 +#: modules/webbasket/lib/webbasket_templates_epfl.py:766 +#: modules/websearch/lib/websearch_templates_epfl.py:1486 msgid "Cancel" msgstr "Annuler" +#: modules/bibformat/lib/elements/bfe_edit_record.py:146 +#: modules/bibcirculation/lib/bibcirculation_templates.py:2830 +msgid "Edit this record" +msgstr "Éditer cette publication" + +#: modules/bibformat/lib/elements/bfe_edit_record.py:157 +msgid "Edit this record (BibEdit)" +msgstr "Éditer avec BibEdit" + +#: modules/bibformat/web/admin/bibformatadmin.py:175 +#: modules/bibformat/web/admin/bibformatadmin.py:243 +#: modules/bibformat/web/admin/bibformatadmin.py:288 +#: modules/bibformat/web/admin/bibformatadmin.py:945 +msgid "Restricted Output Format" +msgstr "Format de sortie à accès restreint" + +#: modules/bibformat/web/admin/bibformatadmin.py:201 +#: modules/bibformat/web/admin/bibformatadmin.py:508 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:564 +msgid "Ok" +msgstr "Ok" + +#: modules/bibformat/web/admin/bibformatadmin.py:203 +#, python-format +msgid "Output Format %s Rules" +msgstr "Règles du format de sortie %s" + +#: modules/bibformat/web/admin/bibformatadmin.py:256 +#, python-format +msgid "Output Format %s Attributes" +msgstr "Attributs du format de sortie %s" + +#: modules/bibformat/web/admin/bibformatadmin.py:301 +#, python-format +msgid "Output Format %s Dependencies" +msgstr "Dépendances du format de sortie %s" + +#: modules/bibformat/web/admin/bibformatadmin.py:367 +msgid "Delete Output Format" +msgstr "Supprimer le format de sortie" + #: modules/bibformat/web/admin/bibformatadmin.py:413 msgid "Cannot create output format" msgstr "Impossible de créer le format de sortie" #: modules/bibformat/web/admin/bibformatadmin.py:487 #: modules/bibformat/web/admin/bibformatadmin.py:559 #: modules/bibformat/web/admin/bibformatadmin.py:966 msgid "Restricted Format Template" msgstr "Modèle de formatage à accès restreint" #: modules/bibformat/web/admin/bibformatadmin.py:513 #, python-format msgid "Format Template %s" msgstr "Modèle de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:570 #, python-format msgid "Format Template %s Attributes" msgstr "Attributs du modèle de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:602 #, python-format msgid "Format Template %s Dependencies" msgstr "Dépendances du modèle de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:656 msgid "Delete Format Template" msgstr "Supprimer le modèle de formatage" #: modules/bibformat/web/admin/bibformatadmin.py:867 #, python-format msgid "Format Element %s Dependencies" msgstr "Dépendances de l'élément de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:898 #, python-format msgid "Test Format Element %s" msgstr "Tester l'élément de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:959 #, python-format msgid "Validation of Output Format %s" msgstr "Validation du format de sortie %s" #: modules/bibformat/web/admin/bibformatadmin.py:977 #, python-format msgid "Validation of Format Template %s" msgstr "Validation du modèle de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:985 msgid "Restricted Format Element" msgstr "Élément de formatage à accès restreint" #: modules/bibformat/web/admin/bibformatadmin.py:993 #, python-format msgid "Validation of Format Element %s" msgstr "Validation de l'élément de formatage %s" #: modules/bibformat/web/admin/bibformatadmin.py:996 msgid "Format Validation" msgstr "Validation du format" #: modules/bibharvest/lib/bibharvest_templates.py:53 #: modules/bibharvest/lib/bibharvest_templates.py:70 msgid "See Guide" msgstr "Voir le guide" #: modules/bibharvest/lib/bibharvest_templates.py:81 msgid "OAI sources currently present in the database" msgstr "Sources OAI actuellement présentes dans la base de données" #: modules/bibharvest/lib/bibharvest_templates.py:82 msgid "No OAI sources currently present in the database" msgstr "Pas de sources OAI présentes dans la base de données" #: modules/bibharvest/lib/bibharvest_templates.py:92 msgid "Next oaiharvest task" msgstr "Prochaine récolte OAI" #: modules/bibharvest/lib/bibharvest_templates.py:93 msgid "scheduled time:" msgstr "heure programmée:" #: modules/bibharvest/lib/bibharvest_templates.py:94 msgid "current status:" msgstr "statut actuel:" #: modules/bibharvest/lib/bibharvest_templates.py:95 msgid "No oaiharvest task currently scheduled." msgstr "Pas de prochaine récolte OAI prévue." #: modules/bibharvest/lib/bibharvest_templates.py:201 msgid "successfully validated" msgstr "validation effectuée" #: modules/bibharvest/lib/bibharvest_templates.py:202 msgid "does not seem to be a OAI-compliant baseURL" msgstr "ne semble pas être une URL de base compatible OAI" #: modules/bibharvest/lib/bibharvest_templates.py:283 msgid "View next entries..." msgstr "Afficher les prochaines entrées..." #: modules/bibharvest/lib/bibharvest_templates.py:340 msgid "previous month" msgstr "mois précédent" #: modules/bibharvest/lib/bibharvest_templates.py:347 msgid "next month" msgstr "mois prochain" #: modules/bibharvest/lib/bibharvest_templates.py:442 msgid "main Page" msgstr "Page principale" #: modules/bibharvest/lib/bibharvest_templates.py:449 #: modules/bibharvest/lib/oai_harvest_admin.py:93 msgid "edit" msgstr "Éditer" #: modules/bibharvest/lib/bibharvest_templates.py:453 #: modules/websubmit/lib/websubmit_managedocfiles.py:997 #: modules/bibharvest/lib/oai_harvest_admin.py:97 msgid "delete" msgstr "Supprimer" #: modules/bibharvest/lib/bibharvest_templates.py:457 #: modules/bibharvest/lib/oai_harvest_admin.py:101 msgid "test" msgstr "test" #: modules/bibharvest/lib/bibharvest_templates.py:461 #: modules/bibharvest/lib/oai_harvest_admin.py:105 msgid "history" msgstr "historique" #: modules/bibharvest/lib/bibharvest_templates.py:465 #: modules/bibharvest/lib/oai_harvest_admin.py:109 msgid "harvest" msgstr "moissonner" #: modules/bibrank/lib/bibrank_citation_grapher.py:127 msgid "Citation history:" msgstr "Historique des citations:" #: modules/bibrank/lib/bibrank_downloads_grapher.py:81 msgid "Download history:" msgstr "Historique des téléchargements:" #: modules/bibrank/lib/bibrank_downloads_grapher.py:103 msgid "Download user distribution:" msgstr "Distribution des téléchargements" #: modules/bibupload/lib/batchuploader_templates.py:129 msgid "Warning: Please, select a valid time" msgstr "Attention: veuillez spécifier une heure valide" #: modules/bibupload/lib/batchuploader_templates.py:133 msgid "Warning: Please, select a valid file" msgstr "Attention: veuillez sélectionner un fichier valide" #: modules/bibupload/lib/batchuploader_templates.py:137 msgid "Warning: The date format is not correct" msgstr "Attention: le format de date est incorrect" #: modules/bibupload/lib/batchuploader_templates.py:141 msgid "Warning: Please, select a valid date" msgstr "Attention: veuillez sélectionner une date valide" #: modules/bibupload/lib/batchuploader_templates.py:167 msgid "Select file to upload" msgstr "Sélectionnez un fichier à envoyer" #: modules/bibupload/lib/batchuploader_templates.py:168 msgid "File type" msgstr "Type de fichier" #: modules/bibupload/lib/batchuploader_templates.py:169 #: modules/bibupload/lib/batchuploader_templates.py:357 msgid "Upload mode" msgstr "Mode d'envoi" #: modules/bibupload/lib/batchuploader_templates.py:170 #: modules/bibupload/lib/batchuploader_templates.py:358 msgid "Upload later? then select:" msgstr "Envoyer plus tard? Si oui:" #: modules/bibupload/lib/batchuploader_templates.py:171 #: modules/bibupload/lib/batchuploader_templates.py:359 #: modules/webmessage/lib/webmessage_templates.py:88 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:535 msgid "Date" msgstr "Date" #: modules/bibupload/lib/batchuploader_templates.py:172 #: modules/bibupload/lib/batchuploader_templates.py:360 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/webstyle/lib/webstyle_templates.py:668 msgid "Time" msgstr "Heure" #: modules/bibupload/lib/batchuploader_templates.py:173 #: modules/bibupload/lib/batchuploader_templates.py:355 #: modules/bibupload/lib/batchuploader_templates.py:361 #: modules/websession/lib/websession_templates.py:163 #: modules/websession/lib/websession_templates.py:166 #: modules/websession/lib/websession_templates.py:1050 msgid "Example" msgstr "Exemple" #: modules/bibupload/lib/batchuploader_templates.py:174 #: modules/bibupload/lib/batchuploader_templates.py:362 #, python-format msgid "All fields with %(x_fmt_open)s*%(x_fmt_close)s are mandatory" msgstr "" "Tous les champs marqués %(x_fmt_open)s*%(x_fmt_close)s sont obligatoires" #: modules/bibupload/lib/batchuploader_templates.py:191 #, python-format msgid "" "Your file has been successfully queued. You can check your " "%(x_url1_open)supload history%(x_url1_close)s or %(x_url2_open)ssubmit " "another file%(x_url2_close)s" msgstr "" "Votre fichier a été inséré dans la file d'attente avec succès. Vous pouvez\n" "affichier votre %(x_url1_open)shistorique d'envois%(x_url1_close)s ou \n" "%(x_url2_open)ssoumettre un autre fichier%(x_url2_close)s" #: modules/bibupload/lib/batchuploader_templates.py:205 msgid "No metadata files have been uploaded yet." msgstr "Aucun fichier de métadonnées n'a été envoyé pour le moment." #: modules/bibupload/lib/batchuploader_templates.py:218 #: modules/bibupload/lib/batchuploader_templates.py:260 msgid "Submit time" msgstr "Soumis le" #: modules/bibupload/lib/batchuploader_templates.py:219 #: modules/bibupload/lib/batchuploader_templates.py:261 msgid "File name" msgstr "Nom du fichier" #: modules/bibupload/lib/batchuploader_templates.py:220 #: modules/bibupload/lib/batchuploader_templates.py:262 msgid "Execution time" msgstr "Date d'exécution" #: modules/bibupload/lib/batchuploader_templates.py:247 msgid "No document files have been uploaded yet." msgstr "Aucun document n'a été envoyé pour le moment." #: modules/bibupload/lib/batchuploader_templates.py:302 #: modules/bibupload/lib/batchuploader_webinterface.py:137 #: modules/bibupload/lib/batchuploader_webinterface.py:301 msgid "Metadata batch upload" msgstr "Envoi des métadonnées par lots" #: modules/bibupload/lib/batchuploader_templates.py:305 #: modules/bibupload/lib/batchuploader_webinterface.py:160 #: modules/bibupload/lib/batchuploader_webinterface.py:213 msgid "Document batch upload" msgstr "Envoi de documents par lots" #: modules/bibupload/lib/batchuploader_templates.py:308 #: modules/bibupload/lib/batchuploader_webinterface.py:325 msgid "Upload history" msgstr "Historique des envois" #: modules/bibupload/lib/batchuploader_templates.py:311 msgid "Daemon monitor" msgstr "Moniteur de processus" #: modules/bibupload/lib/batchuploader_templates.py:354 msgid "Input directory" msgstr "Dossier source" #: modules/bibupload/lib/batchuploader_templates.py:356 msgid "Filename matching" msgstr "Nom du fichier correspondant à" #: modules/bibupload/lib/batchuploader_templates.py:371 #, python-format msgid "%s documents have been found." msgstr "%s documents ont été trouvés." #: modules/bibupload/lib/batchuploader_templates.py:373 msgid "The following files have been successfully queued:" msgstr "" "Les fichiers suivants ont été placés dans la file d'attente avec succès:" #: modules/bibupload/lib/batchuploader_templates.py:378 msgid "The following errors have occurred:" msgstr "Les erreurs suivantes sont survenues:" #: modules/bibupload/lib/batchuploader_templates.py:385 msgid "" "Some files could not be moved to DONE folder. Please remove them manually." msgstr "" "Quelques fichiers n'ont pas pu être déplacés dans le dossier \"Done\". " "Veuillez les enlever manuellement." #: modules/bibupload/lib/batchuploader_templates.py:387 msgid "All uploaded files were moved to DONE folder." msgstr "Tous les fichiers envoyés ont été déplacés dans le dossier \"Done\"." #: modules/bibupload/lib/batchuploader_templates.py:397 #, python-format msgid "" "Using %(x_fmt_open)sweb interface upload%(x_fmt_close)s, actions are " "executed a single time." msgstr "" "En utilisant %(x_fmt_open)sl'interface web d'envoi%(x_fmt_close)s, les " "actions sont exécutées une seule fois." #: modules/bibupload/lib/batchuploader_templates.py:399 #, python-format msgid "" "Check the %(x_url_open)sBatch Uploader daemon help page%(x_url_close)s for " "executing these actions periodically." msgstr "" "Veuillez vous référer à la %(x_url_open)spage d'aide de \"Batch Uploader" "\"%(x_url_close)s pour exécuter ces actions périodiquement." #: modules/bibupload/lib/batchuploader_templates.py:404 msgid "Metadata folders" msgstr "Dossiers de métadonnées" #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/bibcirculation/lib/bibcirculation_templates.py:2183 #: modules/bibcirculation/lib/bibcirculation_templates.py:2269 #: modules/bibcirculation/lib/bibcirculation_templates.py:8908 #: modules/bibcirculation/lib/bibcirculation_templates.py:9366 #: modules/bibcirculation/lib/bibcirculation_templates.py:10438 #: modules/bibcirculation/lib/bibcirculation_templates.py:10604 #: modules/bibcirculation/lib/bibcirculation_templates.py:11074 msgid "ID" msgstr "ID" #: modules/bibupload/lib/batchuploader_templates.py:426 msgid "Progress" msgstr "Progression" #: modules/bibupload/lib/batchuploader_templates.py:428 msgid "Last BibSched tasks:" msgstr "Dernières tâches BibSched:" #: modules/bibupload/lib/batchuploader_templates.py:437 msgid "Next scheduled BibSched run:" msgstr "Prochaine exécution dans BibSched:" #: modules/bibupload/lib/batchuploader_webinterface.py:98 msgid "Guests are not authorized to run batchuploader" msgstr "Vous n'êtes pas autorisé à utiliser batchuploader." #: modules/bibupload/lib/batchuploader_webinterface.py:105 #, python-format msgid "The user '%s' is not authorized to run batchuploader" msgstr "L'utilisateur '%s' n'est pas autorisé à exécuter batchuploader" #: modules/bibupload/lib/batchuploader_webinterface.py:216 msgid "Document batch upload result" msgstr "Résultat envoi de document par lot" #: modules/bibupload/lib/batchuploader_webinterface.py:299 msgid "Upload succesful" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:349 msgid "Batch Uploader: Daemon monitor" msgstr "Batch Uploader: moniteur de processus" #: modules/miscutil/lib/dateutils.py:82 modules/miscutil/lib/dateutils.py:109 -#: modules/webbasket/lib/webbasket.py:181 -#: modules/webbasket/lib/webbasket.py:784 -#: modules/webbasket/lib/webbasket.py:879 -#: modules/websession/lib/webuser.py:306 +#: modules/webbasket/lib/webbasket.py:182 +#: modules/webbasket/lib/webbasket.py:787 +#: modules/webbasket/lib/webbasket.py:882 +#: modules/websession/lib/webuser.py:329 #: modules/webstyle/lib/webstyle_templates.py:577 msgid "N/A" msgstr "N/A" #: modules/miscutil/lib/dateutils.py:172 msgid "Sun" msgstr "Dim" #: modules/miscutil/lib/dateutils.py:173 msgid "Mon" msgstr "Lun" #: modules/miscutil/lib/dateutils.py:174 msgid "Tue" msgstr "Mar" #: modules/miscutil/lib/dateutils.py:175 msgid "Wed" msgstr "Mer" #: modules/miscutil/lib/dateutils.py:176 msgid "Thu" msgstr "Jeu" #: modules/miscutil/lib/dateutils.py:177 msgid "Fri" msgstr "Ven" #: modules/miscutil/lib/dateutils.py:178 msgid "Sat" msgstr "Sam" #: modules/miscutil/lib/dateutils.py:180 msgid "Sunday" msgstr "Dimanche" #: modules/miscutil/lib/dateutils.py:181 msgid "Monday" msgstr "Lundi" #: modules/miscutil/lib/dateutils.py:182 msgid "Tuesday" msgstr "Mardi" #: modules/miscutil/lib/dateutils.py:183 msgid "Wednesday" msgstr "Mercredi" #: modules/miscutil/lib/dateutils.py:184 msgid "Thursday" msgstr "Jeudi" #: modules/miscutil/lib/dateutils.py:185 msgid "Friday" msgstr "Vendredi" #: modules/miscutil/lib/dateutils.py:186 msgid "Saturday" msgstr "Samedi" #: modules/miscutil/lib/dateutils.py:200 modules/miscutil/lib/dateutils.py:214 #: modules/bibcirculation/lib/bibcirculation_templates.py:782 #: modules/bibcirculation/lib/bibcirculation_templates.py:804 msgid "Month" msgstr "Mois" #: modules/miscutil/lib/dateutils.py:201 msgid "Jan" msgstr "jan" #: modules/miscutil/lib/dateutils.py:202 msgid "Feb" msgstr "fév" #: modules/miscutil/lib/dateutils.py:203 msgid "Mar" msgstr "mar" #: modules/miscutil/lib/dateutils.py:204 msgid "Apr" msgstr "avr" #: modules/miscutil/lib/dateutils.py:205 modules/miscutil/lib/dateutils.py:219 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "May" msgstr "mai" #: modules/miscutil/lib/dateutils.py:206 msgid "Jun" msgstr "jun" #: modules/miscutil/lib/dateutils.py:207 msgid "Jul" msgstr "jul" #: modules/miscutil/lib/dateutils.py:208 msgid "Aug" msgstr "aoû" #: modules/miscutil/lib/dateutils.py:209 msgid "Sep" msgstr "sep" #: modules/miscutil/lib/dateutils.py:210 msgid "Oct" msgstr "oct" #: modules/miscutil/lib/dateutils.py:211 msgid "Nov" msgstr "nov" #: modules/miscutil/lib/dateutils.py:212 msgid "Dec" msgstr "déc" #: modules/miscutil/lib/dateutils.py:215 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "January" msgstr "janvier" #: modules/miscutil/lib/dateutils.py:216 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "February" msgstr "février" #: modules/miscutil/lib/dateutils.py:217 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "March" msgstr "mars" #: modules/miscutil/lib/dateutils.py:218 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "April" msgstr "avril" #: modules/miscutil/lib/dateutils.py:220 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "June" msgstr "juin" #: modules/miscutil/lib/dateutils.py:221 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "July" msgstr "juillet" #: modules/miscutil/lib/dateutils.py:222 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "August" msgstr "août" #: modules/miscutil/lib/dateutils.py:223 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "September" msgstr "septembre" #: modules/miscutil/lib/dateutils.py:224 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "October" msgstr "octobre" #: modules/miscutil/lib/dateutils.py:225 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "November" msgstr "novembre" #: modules/miscutil/lib/dateutils.py:226 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "December" msgstr "décembre" #: modules/miscutil/lib/dateutils.py:244 #: modules/bibcirculation/lib/bibcirculation_templates.py:783 #: modules/bibcirculation/lib/bibcirculation_templates.py:805 msgid "Day" msgstr "jour" #: modules/miscutil/lib/dateutils.py:295 #: modules/bibcirculation/lib/bibcirculation_utils.py:323 #: modules/bibcirculation/lib/bibcirculation_templates.py:781 #: modules/bibcirculation/lib/bibcirculation_templates.py:803 #: modules/bibcirculation/lib/bibcirculation_templates.py:1625 #: modules/bibcirculation/lib/bibcirculation_templates.py:2483 #: modules/bibcirculation/lib/bibcirculation_templates.py:2826 #: modules/bibcirculation/lib/bibcirculation_templates.py:6320 #: modules/bibcirculation/lib/bibcirculation_templates.py:6548 #: modules/bibcirculation/lib/bibcirculation_templates.py:7006 #: modules/bibcirculation/lib/bibcirculation_templates.py:7157 #: modules/bibcirculation/lib/bibcirculation_templates.py:8633 #: modules/bibcirculation/lib/bibcirculation_templates.py:8866 #: modules/bibcirculation/lib/bibcirculation_templates.py:9100 #: modules/bibcirculation/lib/bibcirculation_templates.py:9325 #: modules/bibcirculation/lib/bibcirculation_templates.py:9530 #: modules/bibcirculation/lib/bibcirculation_templates.py:9742 #: modules/bibcirculation/lib/bibcirculation_templates.py:10141 #: modules/bibcirculation/lib/bibcirculation_templates.py:10340 #: modules/bibcirculation/lib/bibcirculation_templates.py:10595 #: modules/bibcirculation/lib/bibcirculation_templates.py:10739 #: modules/bibcirculation/lib/bibcirculation_templates.py:10936 #: modules/bibcirculation/lib/bibcirculation_templates.py:11274 #: modules/bibcirculation/lib/bibcirculation_templates.py:11353 #: modules/bibcirculation/lib/bibcirculation_templates.py:11435 #: modules/bibcirculation/lib/bibcirculation_templates.py:12246 #: modules/bibcirculation/lib/bibcirculation_templates.py:12322 #: modules/bibcirculation/lib/bibcirculation_templates.py:13102 #: modules/bibcirculation/lib/bibcirculation_templates.py:13377 #: modules/bibcirculation/lib/bibcirculation_templates.py:14384 #: modules/bibcirculation/lib/bibcirculation_templates.py:14599 #: modules/bibcirculation/lib/bibcirculation_templates.py:14848 #: modules/bibcirculation/lib/bibcirculation_templates.py:15868 #: modules/bibcirculation/lib/bibcirculation_templates.py:16091 #: modules/bibcirculation/lib/bibcirculation_templates.py:16224 #: modules/bibcirculation/lib/bibcirculation_templates.py:16411 +#: modules/websearch/lib/websearch_templates_epfl.py:984 msgid "Year" -msgstr "année" +msgstr "Année" #: modules/miscutil/lib/errorlib_webinterface.py:64 #: modules/miscutil/lib/errorlib_webinterface.py:69 #: modules/miscutil/lib/errorlib_webinterface.py:74 #: modules/miscutil/lib/errorlib_webinterface.py:79 msgid "Sorry" msgstr "Désolé" #: modules/miscutil/lib/errorlib_webinterface.py:65 #: modules/miscutil/lib/errorlib_webinterface.py:70 #: modules/miscutil/lib/errorlib_webinterface.py:75 #: modules/miscutil/lib/errorlib_webinterface.py:80 #, python-format msgid "Cannot send error request, %s parameter missing." msgstr "" "Impossible d'envoyer le rapport d'erreur, le paramètre %s est manquant." #: modules/miscutil/lib/errorlib_webinterface.py:98 msgid "The error report has been sent." msgstr "Le rapport d'erreur a été envoyé." #: modules/miscutil/lib/errorlib_webinterface.py:99 msgid "Many thanks for helping us to improve the service." msgstr "Merci beaucoup de nous aider à améliorer le service." #: modules/miscutil/lib/errorlib_webinterface.py:101 msgid "Use the back button of your browser to return to the previous page." msgstr "" "Utiliser le bouton de retour de votre navigateur pour retourner à la page " "précédente." #: modules/miscutil/lib/errorlib_webinterface.py:103 msgid "Thank you!" msgstr "Merci!" -#: modules/miscutil/lib/inveniocfg.py:465 -msgid "journal" -msgstr "journal" +#: modules/miscutil/lib/inveniocfg.py:453 +msgid "any field" +msgstr "tous les champs" -#: modules/miscutil/lib/inveniocfg.py:467 -msgid "record ID" -msgstr "identifiant de notice" +#: modules/miscutil/lib/inveniocfg.py:454 +msgid "title" +msgstr "titre" + +#: modules/miscutil/lib/inveniocfg.py:455 +msgid "author" +msgstr "auteur" + +#: modules/miscutil/lib/inveniocfg.py:456 +msgid "abstract" +msgstr "résumé" + +#: modules/miscutil/lib/inveniocfg.py:457 +msgid "keyword" +msgstr "mot clé" + +#: modules/miscutil/lib/inveniocfg.py:458 +msgid "report number" +msgstr "numéro de rapport" + +#: modules/miscutil/lib/inveniocfg.py:459 +msgid "subject" +msgstr "sujet" + +#: modules/miscutil/lib/inveniocfg.py:460 +msgid "reference" +msgstr "référence" + +#: modules/miscutil/lib/inveniocfg.py:461 +msgid "fulltext" +msgstr "texte intégral" + +#: modules/miscutil/lib/inveniocfg.py:462 +msgid "collection" +msgstr "collection" + +#: modules/miscutil/lib/inveniocfg.py:463 +msgid "division" +msgstr "division" + +#: modules/miscutil/lib/inveniocfg.py:464 +msgid "year" +msgstr "année" + +#: modules/miscutil/lib/inveniocfg.py:465 +msgid "journal" +msgstr "journal" + +#: modules/miscutil/lib/inveniocfg.py:466 +msgid "experiment" +msgstr "expérience" + +#: modules/miscutil/lib/inveniocfg.py:467 +msgid "record ID" +msgstr "identifiant de notice" #: modules/miscutil/lib/inveniocfg.py:480 msgid "word similarity" msgstr "similarité de mots" #: modules/miscutil/lib/inveniocfg.py:481 msgid "journal impact factor" msgstr "journal impact factor" #: modules/miscutil/lib/inveniocfg.py:482 msgid "times cited" msgstr "nombre de fois cité" #: modules/miscutil/lib/inveniocfg.py:483 msgid "time-decay cite count" msgstr "nombre de citations \"récentes\"" #: modules/miscutil/lib/inveniocfg.py:484 msgid "all-time-best cite rank" msgstr "score de citations" #: modules/miscutil/lib/inveniocfg.py:485 msgid "time-decay cite rank" msgstr "score de citation \"récent\"" #: modules/miscutil/lib/mailutils.py:161 modules/miscutil/lib/mailutils.py:174 #: modules/webcomment/lib/webcomment_templates.py:2046 msgid "Hello:" msgstr "Bonjour:" #: modules/miscutil/lib/mailutils.py:192 modules/miscutil/lib/mailutils.py:212 msgid "Best regards" msgstr "Meilleures salutations" #: modules/miscutil/lib/mailutils.py:194 modules/miscutil/lib/mailutils.py:214 msgid "Need human intervention? Contact" msgstr "Besoin d'une intervention humaine? Veuillez contacter" -#: modules/webaccess/lib/access_control_config.py:262 +#: modules/webaccess/lib/access_control_config.py:270 #: modules/websession/lib/websession_templates.py:1102 -#: modules/websession/lib/webuser.py:891 modules/websession/lib/webuser.py:900 -#: modules/websession/lib/webuser.py:901 +#: modules/websession/lib/webuser.py:914 modules/websession/lib/webuser.py:923 +#: modules/websession/lib/webuser.py:924 +#: modules/websession/lib/websession_templates_epfl.py:49 msgid "Run Record Editor" -msgstr "Lancer éditeur de notices" +msgstr "Édition de notices" -#: modules/webaccess/lib/access_control_config.py:263 +#: modules/webaccess/lib/access_control_config.py:271 #: modules/websession/lib/websession_templates.py:1104 +#: modules/websession/lib/websession_templates_epfl.py:51 msgid "Run Multi-Record Editor" -msgstr "Lancer éditeur de notices multiples" +msgstr "Édition par lot" -#: modules/webaccess/lib/access_control_config.py:264 -#: modules/websession/lib/webuser.py:892 +#: modules/webaccess/lib/access_control_config.py:272 +#: modules/websession/lib/webuser.py:915 msgid "Run Document File Manager" msgstr "Lancer gestionnaire de fichiers" -#: modules/webaccess/lib/access_control_config.py:265 +#: modules/webaccess/lib/access_control_config.py:273 #: modules/websession/lib/websession_templates.py:1108 +#: modules/websession/lib/websession_templates_epfl.py:55 msgid "Run Record Merger" -msgstr "Lancer fusionneur de notices" +msgstr "Fusion de notices" -#: modules/webaccess/lib/access_control_config.py:266 +#: modules/webaccess/lib/access_control_config.py:274 msgid "Run BibSword client" msgstr "Lancer client BibSword" -#: modules/webaccess/lib/access_control_config.py:267 +#: modules/webaccess/lib/access_control_config.py:275 #: modules/websession/lib/websession_templates.py:1116 +#: modules/websession/lib/websession_templates_epfl.py:62 msgid "Configure BibKnowledge" msgstr "Configurer BibKnowledge" -#: modules/webaccess/lib/access_control_config.py:268 +#: modules/webaccess/lib/access_control_config.py:276 #: modules/websession/lib/websession_templates.py:1114 +#: modules/websession/lib/websession_templates_epfl.py:61 msgid "Configure BibFormat" msgstr "Configurer BibFormat" -#: modules/webaccess/lib/access_control_config.py:269 +#: modules/webaccess/lib/access_control_config.py:277 #: modules/websession/lib/websession_templates.py:1118 +#: modules/websession/lib/websession_templates_epfl.py:64 msgid "Configure OAI Harvest" msgstr "Configurer l'Import OAI" -#: modules/webaccess/lib/access_control_config.py:270 +#: modules/webaccess/lib/access_control_config.py:278 #: modules/websession/lib/websession_templates.py:1120 +#: modules/websession/lib/websession_templates_epfl.py:66 msgid "Configure OAI Repository" msgstr "Configurer l'Archive OAI" -#: modules/webaccess/lib/access_control_config.py:271 +#: modules/webaccess/lib/access_control_config.py:279 #: modules/websession/lib/websession_templates.py:1122 +#: modules/websession/lib/websession_templates_epfl.py:68 msgid "Configure BibIndex" msgstr "Configurer BibIndex" -#: modules/webaccess/lib/access_control_config.py:272 +#: modules/webaccess/lib/access_control_config.py:280 #: modules/websession/lib/websession_templates.py:1124 +#: modules/websession/lib/websession_templates_epfl.py:70 msgid "Configure BibRank" msgstr "Configurer BibRank" -#: modules/webaccess/lib/access_control_config.py:273 +#: modules/webaccess/lib/access_control_config.py:281 #: modules/websession/lib/websession_templates.py:1126 +#: modules/websession/lib/websession_templates_epfl.py:72 msgid "Configure WebAccess" msgstr "Configurer WebAccess" -#: modules/webaccess/lib/access_control_config.py:274 +#: modules/webaccess/lib/access_control_config.py:282 #: modules/websession/lib/websession_templates.py:1128 +#: modules/websession/lib/websession_templates_epfl.py:74 msgid "Configure WebComment" msgstr "Configurer WebComment" -#: modules/webaccess/lib/access_control_config.py:275 +#: modules/webaccess/lib/access_control_config.py:283 #: modules/websession/lib/websession_templates.py:1132 +#: modules/websession/lib/websession_templates_epfl.py:78 msgid "Configure WebSearch" msgstr "Configurer WebSearch" -#: modules/webaccess/lib/access_control_config.py:276 +#: modules/webaccess/lib/access_control_config.py:284 #: modules/websession/lib/websession_templates.py:1134 +#: modules/websession/lib/websession_templates_epfl.py:80 msgid "Configure WebSubmit" msgstr "Configurer WebSubmit" -#: modules/webaccess/lib/access_control_config.py:277 +#: modules/webaccess/lib/access_control_config.py:285 #: modules/websession/lib/websession_templates.py:1130 +#: modules/websession/lib/websession_templates_epfl.py:76 msgid "Configure WebJournal" msgstr "Configurer WebJournal" -#: modules/webaccess/lib/access_control_config.py:278 +#: modules/webaccess/lib/access_control_config.py:286 #: modules/websession/lib/websession_templates.py:1106 +#: modules/websession/lib/websession_templates_epfl.py:53 msgid "Run BibCirculation" msgstr "Lancer BibCirculation" -#: modules/webaccess/lib/access_control_config.py:279 +#: modules/webaccess/lib/access_control_config.py:287 #: modules/websession/lib/websession_templates.py:1112 +#: modules/websession/lib/websession_templates_epfl.py:59 msgid "Run Batch Uploader" -msgstr "Lancer Batch Uploader" +msgstr "Dropbox - MARC21" #: modules/webaccess/lib/webaccessadmin_lib.py:3704 #, python-format msgid "Your account on '%s' has been activated" msgstr "Votre compte sur '%s' a été créé." #: modules/webaccess/lib/webaccessadmin_lib.py:3705 #, python-format msgid "Your account earlier created on '%s' has been activated:" msgstr "Votre compte créé précédemment sur '%s' a été activé." #: modules/webaccess/lib/webaccessadmin_lib.py:3707 #: modules/webaccess/lib/webaccessadmin_lib.py:3720 #: modules/webaccess/lib/webaccessadmin_lib.py:3746 msgid "Username/Email:" msgstr "Nom d'utilisateur/Email" #: modules/webaccess/lib/webaccessadmin_lib.py:3708 #: modules/webaccess/lib/webaccessadmin_lib.py:3721 msgid "Password:" msgstr "Mot de passe:" #: modules/webaccess/lib/webaccessadmin_lib.py:3718 #, python-format msgid "Account created on '%s'" msgstr "Compte créé sur '%s'" #: modules/webaccess/lib/webaccessadmin_lib.py:3719 #, python-format msgid "An account has been created for you on '%s':" msgstr "Votre compte a été créé sur '%s':" #: modules/webaccess/lib/webaccessadmin_lib.py:3731 #, python-format msgid "Account rejected on '%s'" msgstr "Compte sur '%s' rejeté" #: modules/webaccess/lib/webaccessadmin_lib.py:3732 #, python-format msgid "Your request for an account has been rejected on '%s':" msgstr "Votre demande d'adhésion au groupe %s a été rejetée:" #: modules/webaccess/lib/webaccessadmin_lib.py:3734 #, python-format msgid "Username/Email: %s" msgstr "Nom d'utilisateur/Email: %s" #: modules/webaccess/lib/webaccessadmin_lib.py:3744 #, python-format msgid "Account deleted on '%s'" msgstr "Compte sur '%s' effacé" #: modules/webaccess/lib/webaccessadmin_lib.py:3745 #, python-format msgid "Your account on '%s' has been deleted:" msgstr "Votre compte sur '%s' a été supprimé:" #: modules/webalert/lib/htmlparser.py:186 #: modules/webbasket/lib/webbasket_templates.py:2337 #: modules/webbasket/lib/webbasket_templates.py:3214 #: modules/websearch/lib/websearch_templates.py:1608 #: modules/websearch/lib/websearch_templates.py:3328 #: modules/websearch/lib/websearch_templates.py:3334 #: modules/websearch/lib/websearch_templates.py:3339 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1069 +#: modules/bibformat/lib/elements/bfe_brief_links.py:55 msgid "Detailed record" msgstr "Notice détaillée" #: modules/webalert/lib/htmlparser.py:187 #: modules/websearch/lib/websearch_templates.py:1611 #: modules/websearch/lib/websearch_templates.py:3346 #: modules/webstyle/lib/webstyle_templates.py:829 msgid "Similar records" msgstr "Notices similaires" #: modules/webalert/lib/htmlparser.py:188 msgid "Cited by" msgstr "Cité par" #: modules/webalert/lib/webalert.py:54 #, python-format msgid "You already have an alert named %s." msgstr "Vous avez déjà défini une alerte dont le nom est %s." #: modules/webalert/lib/webalert.py:111 #: modules/websearch/lib/websearch_templates.py:3913 +#: modules/websearch/lib/websearch_templates_epfl.py:2303 msgid "unknown" msgstr "inconnu" #: modules/webalert/lib/webalert.py:163 modules/webalert/lib/webalert.py:217 #: modules/webalert/lib/webalert.py:303 modules/webalert/lib/webalert.py:341 msgid "You do not have rights for this operation." msgstr "Vous n'êtes pas autorisé à effectuer cette opération." #: modules/webalert/lib/webalert.py:198 msgid "You already have an alert defined for the specified query and basket." msgstr "Vous avez déjà défini une alerte pour cette requête sur ce panier." #: modules/webalert/lib/webalert.py:221 modules/webalert/lib/webalert.py:345 msgid "The alert name cannot be empty." msgstr "Le nom de l'alerte ne peut pas être vide." #: modules/webalert/lib/webalert.py:226 msgid "You are not the owner of this basket." msgstr "Vous n'êtes pas le prpriétaire de ce panier." #: modules/webalert/lib/webalert.py:237 #, python-format msgid "The alert %s has been added to your profile." msgstr "L'alerte %s a été ajoutée à votre compte." #: modules/webalert/lib/webalert.py:376 #, python-format msgid "The alert %s has been successfully updated." msgstr "L'alerte %s a été mise à jour." #: modules/webalert/lib/webalert.py:428 #, python-format msgid "" "You have made %(x_nb)s queries. A %(x_url_open)sdetailed list%(x_url_close)s " "is available with a possibility to (a) view search results and (b) subscribe " "to an automatic email alerting service for these queries." msgstr "" "Vous avez effectué %(x_nb)s recherches. Une %(x_url_open)sliste\n" "détaillée%(x_url_close)s est disponible, offrant la possibilité de (a)\n" "voir les résultats de la recherche et (b) s'abonner à un service\n" "d'alerte automatique par email pour ces recherches." #: modules/webalert/lib/webalert_templates.py:74 +#: modules/webalert/lib/webalert_templates_epfl.py:58 msgid "Pattern" -msgstr "Recherche" +msgstr "Clé" #: modules/webalert/lib/webalert_templates.py:76 #: modules/bibedit/lib/bibeditmulti_templates.py:509 +#: modules/webalert/lib/webalert_templates_epfl.py:60 msgid "Field" msgstr "Champ" #: modules/webalert/lib/webalert_templates.py:78 +#: modules/webalert/lib/webalert_templates_epfl.py:62 msgid "Pattern 1" -msgstr "Recherche 1" +msgstr "Clé 1" #: modules/webalert/lib/webalert_templates.py:80 +#: modules/webalert/lib/webalert_templates_epfl.py:64 msgid "Field 1" msgstr "Champ 1" #: modules/webalert/lib/webalert_templates.py:82 +#: modules/webalert/lib/webalert_templates_epfl.py:66 msgid "Pattern 2" -msgstr "Recherche 2" +msgstr "Clé 2" #: modules/webalert/lib/webalert_templates.py:84 +#: modules/webalert/lib/webalert_templates_epfl.py:68 msgid "Field 2" msgstr "Champ 2" #: modules/webalert/lib/webalert_templates.py:86 +#: modules/webalert/lib/webalert_templates_epfl.py:70 msgid "Pattern 3" -msgstr "Recherche 3" +msgstr "Clé 3" #: modules/webalert/lib/webalert_templates.py:88 +#: modules/webalert/lib/webalert_templates_epfl.py:72 msgid "Field 3" msgstr "Champ 3" #: modules/webalert/lib/webalert_templates.py:90 +#: modules/webalert/lib/webalert_templates_epfl.py:74 msgid "Collections" msgstr "Collections" #: modules/webalert/lib/webalert_templates.py:92 #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:2867 #: modules/bibcirculation/lib/bibcirculation_templates.py:5241 #: modules/bibcirculation/lib/bibcirculation_templates.py:6579 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6773 #: modules/bibcirculation/lib/bibcirculation_templates.py:7033 #: modules/bibcirculation/lib/bibcirculation_templates.py:7206 #: modules/bibcirculation/lib/bibcirculation_templates.py:7575 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 +#: modules/webalert/lib/webalert_templates_epfl.py:76 msgid "Collection" msgstr "Collection" #: modules/webalert/lib/webalert_templates.py:113 +#: modules/webalert/lib/webalert_templates_epfl.py:97 msgid "You own the following alerts:" msgstr "Vous avez défini les alertes suivantes:" #: modules/webalert/lib/webalert_templates.py:114 +#: modules/webalert/lib/webalert_templates_epfl.py:98 msgid "alert name" msgstr "nom de l'alerte" #: modules/webalert/lib/webalert_templates.py:122 +#: modules/webalert/lib/webalert_templates_epfl.py:107 msgid "SHOW" -msgstr "AFFICHER" +msgstr "Afficher" #: modules/webalert/lib/webalert_templates.py:171 +#: modules/webalert/lib/webalert_templates_epfl.py:156 msgid "" "This alert will notify you each time/only if a new item satisfies the " "following query:" msgstr "" -"Cette alerte vous préviendra dès qu'un nouvel article satisfera la recherche " -"suivante:" +"Cette alerte vous préviendra à chaque fois qu'une nouvelle publication " +"satisfait la requête suivante:" #: modules/webalert/lib/webalert_templates.py:172 +#: modules/webalert/lib/webalert_templates_epfl.py:157 msgid "QUERY" -msgstr "RECHERCHE" +msgstr "Requête" #: modules/webalert/lib/webalert_templates.py:210 +#: modules/webalert/lib/webalert_templates_epfl.py:195 msgid "Alert identification name:" -msgstr "Nom de l'alerte:" +msgstr "Nom de l'alerte" #: modules/webalert/lib/webalert_templates.py:212 +#: modules/webalert/lib/webalert_templates_epfl.py:197 msgid "Search-checking frequency:" -msgstr "Fréquence de vérification:" +msgstr "Fréquence d'interrogation:" #: modules/webalert/lib/webalert_templates.py:216 #: modules/webalert/lib/webalert_templates.py:336 #: modules/bibharvest/lib/oai_harvest_admin.py:141 +#: modules/webalert/lib/webalert_templates_epfl.py:201 +#: modules/webalert/lib/webalert_templates_epfl.py:320 msgid "monthly" msgstr "mensuel" #: modules/webalert/lib/webalert_templates.py:217 #: modules/webalert/lib/webalert_templates.py:334 #: modules/bibharvest/lib/oai_harvest_admin.py:140 +#: modules/webalert/lib/webalert_templates_epfl.py:202 +#: modules/webalert/lib/webalert_templates_epfl.py:318 msgid "weekly" msgstr "hebdomadaire" #: modules/webalert/lib/webalert_templates.py:218 #: modules/webalert/lib/webalert_templates.py:331 #: modules/bibharvest/lib/oai_harvest_admin.py:139 +#: modules/webalert/lib/webalert_templates_epfl.py:203 +#: modules/webalert/lib/webalert_templates_epfl.py:315 msgid "daily" msgstr "quotidien" #: modules/webalert/lib/webalert_templates.py:219 +#: modules/webalert/lib/webalert_templates_epfl.py:204 msgid "Send notification email?" -msgstr "Envoyer une notification par email?" +msgstr "Envoyer un email de notification?" #: modules/webalert/lib/webalert_templates.py:222 #: modules/webalert/lib/webalert_templates.py:339 +#: modules/webalert/lib/webalert_templates_epfl.py:207 +#: modules/webalert/lib/webalert_templates_epfl.py:323 msgid "yes" msgstr "oui" #: modules/webalert/lib/webalert_templates.py:223 #: modules/webalert/lib/webalert_templates.py:341 +#: modules/webalert/lib/webalert_templates_epfl.py:208 +#: modules/webalert/lib/webalert_templates_epfl.py:325 msgid "no" msgstr "non" #: modules/webalert/lib/webalert_templates.py:224 +#: modules/webalert/lib/webalert_templates_epfl.py:209 #, python-format msgid "if %(x_fmt_open)sno%(x_fmt_close)s you must specify a basket" msgstr "" -"si %(x_fmt_open)snon%(x_fmt_close)s vous devez indiquer un nom de panier" +"si %(x_fmt_open)snon%(x_fmt_close)s il vous faut définir une collection " +"privée" #: modules/webalert/lib/webalert_templates.py:226 +#: modules/webalert/lib/webalert_templates_epfl.py:211 msgid "Store results in basket?" -msgstr "Enregistrer les résultats dans un panier?" +msgstr "Enregistrer les résultats dans une collection privée?" #: modules/webalert/lib/webalert_templates.py:247 +#: modules/webalert/lib/webalert_templates_epfl.py:232 msgid "SET ALERT" -msgstr "ACTIVER L'ALERTE" +msgstr "Définir l'alerte" #: modules/webalert/lib/webalert_templates.py:248 +#: modules/webalert/lib/webalert_templates_epfl.py:233 msgid "CLEAR DATA" -msgstr "EFFACER" +msgstr "Effacer" #: modules/webalert/lib/webalert_templates.py:299 #, python-format msgid "" "Set a new alert from %(x_url1_open)syour searches%(x_url1_close)s, the " "%(x_url2_open)spopular searches%(x_url2_close)s, or the input form." msgstr "" "Créer une nouvelle alerte depuis %(x_url1_open)svos recherches" "%(x_url1_close)s, les %(x_url2_open)srecherches populaires%(x_url2_close)s, " "ou le formulaire." #: modules/webalert/lib/webalert_templates.py:317 #: modules/webcomment/lib/webcomment_templates.py:230 #: modules/webcomment/lib/webcomment_templates.py:632 #: modules/webcomment/lib/webcomment_templates.py:1904 #: modules/webcomment/lib/webcomment_templates.py:1928 #: modules/webcomment/lib/webcomment_templates.py:1954 #: modules/webmessage/lib/webmessage_templates.py:509 #: modules/websession/lib/websession_templates.py:2236 #: modules/websession/lib/websession_templates.py:2276 msgid "No" msgstr "Non" #: modules/webalert/lib/webalert_templates.py:319 +#: modules/webalert/lib/webalert_templates_epfl.py:303 msgid "Search checking frequency" -msgstr "Fréquence de vérification" +msgstr "Fréquence d'interrogation" #: modules/webalert/lib/webalert_templates.py:320 +#: modules/webalert/lib/webalert_templates_epfl.py:304 msgid "Notification by email" msgstr "Notification par email" #: modules/webalert/lib/webalert_templates.py:321 +#: modules/webalert/lib/webalert_templates_epfl.py:305 msgid "Result in basket" -msgstr "résultat dans le panier" +msgstr "Enregistrement dans une collection privée" #: modules/webalert/lib/webalert_templates.py:322 +#: modules/webalert/lib/webalert_templates_epfl.py:306 msgid "Date last run" -msgstr "Date de la dernière vérification" +msgstr "Dernière interrogation" #: modules/webalert/lib/webalert_templates.py:323 +#: modules/webalert/lib/webalert_templates_epfl.py:307 +#: modules/websearch/lib/websearch_templates_epfl.py:1705 msgid "Creation date" msgstr "Date de création" #: modules/webalert/lib/webalert_templates.py:324 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:346 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:399 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:459 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:632 +#: modules/webalert/lib/webalert_templates_epfl.py:308 msgid "Query" -msgstr "Recherche" +msgstr "Requête" #: modules/webalert/lib/webalert_templates.py:367 #: modules/webbasket/lib/webbasket_templates.py:1748 +#: modules/webalert/lib/webalert_templates_epfl.py:350 msgid "no basket" -msgstr "aucun panier" +msgstr "pas de collection" #: modules/webalert/lib/webalert_templates.py:384 +#: modules/webalert/lib/webalert_templates_epfl.py:367 msgid "Modify" -msgstr "Changer" +msgstr "Modifier" #: modules/webalert/lib/webalert_templates.py:390 #: modules/webjournal/lib/webjournaladminlib.py:225 #: modules/webjournal/lib/webjournaladminlib.py:231 +#: modules/webalert/lib/webalert_templates_epfl.py:373 msgid "Remove" msgstr "Supprimer" #: modules/webalert/lib/webalert_templates.py:392 #: modules/webalert/lib/webalert_templates.py:482 +#: modules/webalert/lib/webalert_templates_epfl.py:375 +#: modules/webalert/lib/webalert_templates_epfl.py:477 msgid "Execute search" -msgstr "Exécuter la recherche" +msgstr "Lancer la recherche" #: modules/webalert/lib/webalert_templates.py:398 #, python-format msgid "You have defined %s alerts." msgstr "Vous avez défini %s alertes." #: modules/webalert/lib/webalert_templates.py:436 +#: modules/webalert/lib/webalert_templates_epfl.py:426 #, python-format msgid "" "You have not executed any search yet. Please go to the %(x_url_open)ssearch " "interface%(x_url_close)s first." msgstr "" -"Vous n'avez pas encore effectué de recherche. Vous pouvez aller sur " +"Vous n'avez pas encore lancé de recherche. Veuillez commencer par " "%(x_url_open)sl'interface de recherche%(x_url_close)s." #: modules/webalert/lib/webalert_templates.py:445 +#: modules/webalert/lib/webalert_templates_epfl.py:438 #, python-format msgid "" "You have performed %(x_nb1)s searches (%(x_nb2)s different questions) during " "the last 30 days or so." msgstr "" -"Vous avez effectué %(x_nb1)s recherches (%(x_nb2)s différentes questions) " +"Vous avez exécuté %(x_nb1)s recherches (%(x_nb2)s différentes questions) " "durant les 30 derniers jours." #: modules/webalert/lib/webalert_templates.py:450 +#: modules/webalert/lib/webalert_templates_epfl.py:442 #, python-format msgid "Here are the %s most popular searches." -msgstr "Liste des %s requêtes les plus populaires." +msgstr "Voici les %s recherches les plus populaires." #: modules/webalert/lib/webalert_templates.py:461 +#: modules/webalert/lib/webalert_templates_epfl.py:452 msgid "Question" -msgstr "Requête" +msgstr "Recherche" #: modules/webalert/lib/webalert_templates.py:465 +#: modules/webalert/lib/webalert_templates_epfl.py:457 msgid "Last Run" msgstr "Dernière exécution" #: modules/webalert/lib/webalert_templates.py:483 +#: modules/webalert/lib/webalert_templates_epfl.py:478 msgid "Set new alert" -msgstr "Définir une nouvelle alerte" +msgstr "Créer une alerte" #: modules/webalert/lib/webalert_webinterface.py:76 #: modules/webalert/lib/webalert_webinterface.py:139 #: modules/webalert/lib/webalert_webinterface.py:224 #: modules/webalert/lib/webalert_webinterface.py:302 #: modules/webalert/lib/webalert_webinterface.py:358 #: modules/webalert/lib/webalert_webinterface.py:435 #: modules/webalert/lib/webalert_webinterface.py:509 msgid "You are not authorized to use alerts." msgstr "Vous n'êtes pas autorisé à utiliser les alertes." #: modules/webalert/lib/webalert_webinterface.py:79 msgid "Popular Searches" msgstr "Recherches Populaires" #: modules/webalert/lib/webalert_webinterface.py:81 #: modules/websession/lib/websession_templates.py:471 #: modules/websession/lib/websession_templates.py:631 msgid "Your Searches" msgstr "Vos Recherches" #: modules/webalert/lib/webalert_webinterface.py:98 #: modules/webalert/lib/webalert_webinterface.py:150 #: modules/webalert/lib/webalert_webinterface.py:183 #: modules/webalert/lib/webalert_webinterface.py:235 #: modules/webalert/lib/webalert_webinterface.py:268 #: modules/webalert/lib/webalert_webinterface.py:319 #: modules/webalert/lib/webalert_webinterface.py:369 #: modules/webalert/lib/webalert_webinterface.py:395 #: modules/webalert/lib/webalert_webinterface.py:446 #: modules/webalert/lib/webalert_webinterface.py:472 #: modules/webalert/lib/webalert_webinterface.py:520 #: modules/webalert/lib/webalert_webinterface.py:548 -#: modules/webbasket/lib/webbasket.py:2097 #: modules/webbasket/lib/webbasket_webinterface.py:804 #: modules/webbasket/lib/webbasket_webinterface.py:899 #: modules/webbasket/lib/webbasket_webinterface.py:1021 #: modules/webbasket/lib/webbasket_webinterface.py:1123 #: modules/webbasket/lib/webbasket_webinterface.py:1220 #: modules/webmessage/lib/webmessage_templates.py:466 #: modules/websession/lib/websession_templates.py:617 #: modules/websession/lib/websession_templates.py:2349 -#: modules/websession/lib/websession_webinterface.py:214 -#: modules/websession/lib/websession_webinterface.py:236 -#: modules/websession/lib/websession_webinterface.py:282 -#: modules/websession/lib/websession_webinterface.py:533 -#: modules/websession/lib/websession_webinterface.py:556 -#: modules/websession/lib/websession_webinterface.py:584 -#: modules/websession/lib/websession_webinterface.py:600 -#: modules/websession/lib/websession_webinterface.py:652 -#: modules/websession/lib/websession_webinterface.py:675 -#: modules/websession/lib/websession_webinterface.py:701 -#: modules/websession/lib/websession_webinterface.py:767 -#: modules/websession/lib/websession_webinterface.py:816 -#: modules/websession/lib/websession_webinterface.py:851 -#: modules/websession/lib/websession_webinterface.py:882 -#: modules/websession/lib/websession_webinterface.py:954 -#: modules/websession/lib/websession_webinterface.py:992 +#: modules/websession/lib/websession_webinterface.py:218 +#: modules/websession/lib/websession_webinterface.py:240 +#: modules/websession/lib/websession_webinterface.py:287 +#: modules/websession/lib/websession_webinterface.py:538 +#: modules/websession/lib/websession_webinterface.py:561 +#: modules/websession/lib/websession_webinterface.py:589 +#: modules/websession/lib/websession_webinterface.py:605 +#: modules/websession/lib/websession_webinterface.py:657 +#: modules/websession/lib/websession_webinterface.py:680 +#: modules/websession/lib/websession_webinterface.py:706 +#: modules/websession/lib/websession_webinterface.py:772 +#: modules/websession/lib/websession_webinterface.py:834 +#: modules/websession/lib/websession_webinterface.py:869 +#: modules/websession/lib/websession_webinterface.py:900 +#: modules/websession/lib/websession_webinterface.py:972 +#: modules/websession/lib/websession_webinterface.py:1010 #: modules/websubmit/web/publiline.py:133 #: modules/websubmit/web/publiline.py:154 #: modules/websubmit/web/yourapprovals.py:91 #: modules/websubmit/web/yoursubmissions.py:163 +#: modules/websession/lib/websession_templates_epfl.py:264 msgid "Your Account" -msgstr "Votre Compte" +msgstr "Mon compte" #: modules/webalert/lib/webalert_webinterface.py:100 #, python-format msgid "%s Personalize, Display searches" msgstr "%s Personnaliser, Afficher requêtes" #: modules/webalert/lib/webalert_webinterface.py:101 #: modules/webalert/lib/webalert_webinterface.py:153 #: modules/webalert/lib/webalert_webinterface.py:186 #: modules/webalert/lib/webalert_webinterface.py:238 #: modules/webalert/lib/webalert_webinterface.py:271 #: modules/webalert/lib/webalert_webinterface.py:322 #: modules/webalert/lib/webalert_webinterface.py:372 #: modules/webalert/lib/webalert_webinterface.py:398 #: modules/webalert/lib/webalert_webinterface.py:449 #: modules/webalert/lib/webalert_webinterface.py:475 #: modules/webalert/lib/webalert_webinterface.py:523 #: modules/webalert/lib/webalert_webinterface.py:551 -#: modules/websession/lib/websession_webinterface.py:217 -#: modules/websession/lib/websession_webinterface.py:239 -#: modules/websession/lib/websession_webinterface.py:284 -#: modules/websession/lib/websession_webinterface.py:535 -#: modules/websession/lib/websession_webinterface.py:558 -#: modules/websession/lib/websession_webinterface.py:587 -#: modules/websession/lib/websession_webinterface.py:603 -#: modules/websession/lib/websession_webinterface.py:621 -#: modules/websession/lib/websession_webinterface.py:631 -#: modules/websession/lib/websession_webinterface.py:654 -#: modules/websession/lib/websession_webinterface.py:677 -#: modules/websession/lib/websession_webinterface.py:703 +#: modules/websession/lib/websession_webinterface.py:221 +#: modules/websession/lib/websession_webinterface.py:243 +#: modules/websession/lib/websession_webinterface.py:289 +#: modules/websession/lib/websession_webinterface.py:540 +#: modules/websession/lib/websession_webinterface.py:563 +#: modules/websession/lib/websession_webinterface.py:592 +#: modules/websession/lib/websession_webinterface.py:608 +#: modules/websession/lib/websession_webinterface.py:626 +#: modules/websession/lib/websession_webinterface.py:636 +#: modules/websession/lib/websession_webinterface.py:659 +#: modules/websession/lib/websession_webinterface.py:682 +#: modules/websession/lib/websession_webinterface.py:708 #, python-format msgid "%s, personalize" msgstr "%s, personnaliser" #: modules/webalert/lib/webalert_webinterface.py:145 #: modules/webalert/lib/webalert_webinterface.py:230 #: modules/webalert/lib/webalert_webinterface.py:364 #: modules/webalert/lib/webalert_webinterface.py:441 #: modules/webalert/lib/webalert_webinterface.py:515 #: modules/webstyle/lib/webstyle_templates.py:581 #: modules/webstyle/lib/webstyle_templates.py:618 #: modules/webstyle/lib/webstyle_templates.py:620 #: modules/websubmit/lib/websubmit_engine.py:1736 #: modules/websubmit/lib/websubmit_webinterface.py:1112 #: modules/bibcatalog/lib/bibcatalog_templates.py:37 #: modules/bibedit/lib/bibedit_webinterface.py:208 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:496 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:559 #: modules/bibknowledge/lib/bibknowledgeadmin.py:280 msgid "Error" msgstr "Erreur" #: modules/webalert/lib/webalert_webinterface.py:152 #: modules/webalert/lib/webalert_webinterface.py:185 #: modules/webalert/lib/webalert_webinterface.py:237 #: modules/webalert/lib/webalert_webinterface.py:371 #: modules/webalert/lib/webalert_webinterface.py:448 #: modules/webalert/lib/webalert_webinterface.py:522 #, python-format msgid "%s Personalize, Set a new alert" msgstr "%s Personnaliser, Définir une nouvelle alerte" #: modules/webalert/lib/webalert_webinterface.py:178 msgid "Set a new alert" msgstr "Définir une nouvelle alerte" #: modules/webalert/lib/webalert_webinterface.py:263 msgid "Modify alert settings" msgstr "Modifier les propriétés des alertes" #: modules/webalert/lib/webalert_webinterface.py:270 #, python-format msgid "%s Personalize, Modify alert settings" msgstr "%s Personnaliser, Modifier les propriétés des alertes" #: modules/webalert/lib/webalert_webinterface.py:314 #: modules/websession/lib/websession_templates.py:488 msgid "Your Alerts" msgstr "Vos Alertes" #: modules/webalert/lib/webalert_webinterface.py:321 #: modules/webalert/lib/webalert_webinterface.py:397 #: modules/webalert/lib/webalert_webinterface.py:474 #: modules/webalert/lib/webalert_webinterface.py:550 #, python-format msgid "%s Personalize, Display alerts" msgstr "%s Personnaliser, Afficher les alertes" #: modules/webalert/lib/webalert_webinterface.py:390 #: modules/webalert/lib/webalert_webinterface.py:467 #: modules/webalert/lib/webalert_webinterface.py:543 msgid "Display alerts" msgstr "Afficher les alertes" -#: modules/webbasket/lib/webbasket.py:2014 -#: modules/webbasket/lib/webbasket.py:2127 -#: modules/webbasket/lib/webbasket_templates.py:100 -#: modules/webbasket/lib/webbasket_templates.py:150 -#: modules/webbasket/lib/webbasket_templates.py:156 -#: modules/webbasket/lib/webbasket_templates.py:604 -#: modules/webbasket/lib/webbasket_templates.py:656 -msgid "Personal baskets" -msgstr "Paniers personnels" - -#: modules/webbasket/lib/webbasket.py:2038 -#: modules/webbasket/lib/webbasket.py:2144 -#: modules/webbasket/lib/webbasket_templates.py:166 -#: modules/webbasket/lib/webbasket_templates.py:198 -#: modules/webbasket/lib/webbasket_templates.py:204 -#: modules/webbasket/lib/webbasket_templates.py:613 -#: modules/webbasket/lib/webbasket_templates.py:690 -msgid "Group baskets" -msgstr "Paniers de groupes" - -#: modules/webbasket/lib/webbasket.py:2064 -msgid "Others' baskets" -msgstr "Paniers des autres" - -#: modules/webbasket/lib/webbasket.py:2100 -#: modules/websession/lib/websession_templates.py:479 -#: modules/websession/lib/websession_templates.py:625 -msgid "Your Baskets" -msgstr "Vos Paniers" - -#: modules/webbasket/lib/webbasket.py:2105 -#: modules/webbasket/lib/webbasket_webinterface.py:1254 -#: modules/webbasket/lib/webbasket_webinterface.py:1329 -#: modules/webbasket/lib/webbasket_webinterface.py:1373 -#: modules/webbasket/lib/webbasket_webinterface.py:1434 -msgid "List of public baskets" -msgstr "Liste des paniers publics" - -#: modules/webbasket/lib/webbasket.py:2116 -#: modules/webbasket/lib/webbasket_webinterface.py:429 -msgid "Search baskets" -msgstr "Chercher dans les paniers" +#: modules/webbasket/lib/webbasket.py:2030 +#: modules/webbasket/lib/webbasket.py:2098 +#: modules/webbasket/lib/webbasket_templates_epfl.py:73 +#: modules/webbasket/lib/webbasket_templates_epfl.py:259 +msgid "Personal collections" +msgstr "Collections personnelles" + +#: modules/webbasket/lib/webbasket.py:2044 +#: modules/webbasket/lib/webbasket_templates_epfl.py:290 +msgid "Group collections" +msgstr "Collections de groupe" + +#: modules/webbasket/lib/webbasket.py:2084 +#: modules/webstyle/lib/webstyle_templates_epfl.py:371 +msgid "My account" +msgstr "Mon compte" + +#: modules/webbasket/lib/webbasket.py:2085 +#: modules/websession/lib/websession_templates_epfl.py:147 +msgid "My collections" +msgstr "Mes collections" + +#: modules/webbasket/lib/webbasket.py:2088 +msgid "Search collections" +msgstr "Recherche" -#: modules/webbasket/lib/webbasket.py:2121 -#: modules/webbasket/lib/webbasket_webinterface.py:741 -#: modules/websearch/lib/websearch_templates.py:2850 -#: modules/websearch/lib/websearch_templates.py:3036 -msgid "Add to basket" -msgstr "Ajouter au panier" +#: modules/webbasket/lib/webbasket.py:2090 +msgid "Add to collection" +msgstr "Ajout à la collection" -#: modules/webbasket/lib/webbasket.py:2161 -#: modules/webbasket/lib/webbasket_templates.py:217 -#: modules/webbasket/lib/webbasket_templates.py:223 -#: modules/webbasket/lib/webbasket_templates.py:622 -#: modules/webbasket/lib/webbasket_templates.py:724 -msgid "Public baskets" -msgstr "Paniers publics" +#: modules/webbasket/lib/webbasket.py:2111 +#: modules/webbasket/lib/webbasket_templates_epfl.py:119 +msgid "Groups' collections" +msgstr "Collection de mes groupes" -#: modules/webbasket/lib/webbasket.py:2191 +#: modules/webbasket/lib/webbasket.py:2143 #, python-format msgid "" -"You have %(x_nb_perso)s personal baskets and are subscribed to " -"%(x_nb_group)s group baskets and %(x_nb_public)s other users public baskets." +"You have %(x_nb_perso)s personal collections and are subscribed to " +"%(x_nb_group)s group collections." msgstr "" -"Vous possédez %(x_nb_perso)s paniers personnels et êtes abonnés à " -"%(x_nb_group)s paniers de groupes et à %(x_nb_public)s paniers publics." +"Vous possédez %(x_nb_perso)s collections personnelles et avez accès à " +"%(x_nb_group)s collections de groupe." #: modules/webbasket/lib/webbasket_templates.py:86 msgid "" "You have no personal or group baskets or are subscribed to any public " "baskets." msgstr "" "Vous n'avez pas de panier personnel ou de groupe, ni souscrit à un panier " "public." #: modules/webbasket/lib/webbasket_templates.py:87 #, python-format msgid "" "You may want to start by %(x_url_open)screating a new basket%(x_url_close)s." msgstr "" "Vous pouvez commencer par %(x_url_open)scréer un nouveau panier" "%(x_url_close)s." +#: modules/webbasket/lib/webbasket_templates.py:100 +#: modules/webbasket/lib/webbasket_templates.py:150 +#: modules/webbasket/lib/webbasket_templates.py:156 +#: modules/webbasket/lib/webbasket_templates.py:604 +#: modules/webbasket/lib/webbasket_templates.py:656 +msgid "Personal baskets" +msgstr "Paniers personnels" + #: modules/webbasket/lib/webbasket_templates.py:111 #: modules/webbasket/lib/webbasket_templates.py:177 msgid "Back to Your Baskets" msgstr "Retour à Vos Paniers" #: modules/webbasket/lib/webbasket_templates.py:117 #: modules/webbasket/lib/webbasket_webinterface.py:1223 msgid "Create basket" msgstr "Créer un panier" #: modules/webbasket/lib/webbasket_templates.py:123 #: modules/webbasket/lib/webbasket_webinterface.py:1145 msgid "Edit topic" msgstr "Éditer le thème" +#: modules/webbasket/lib/webbasket_templates.py:166 +#: modules/webbasket/lib/webbasket_templates.py:198 +#: modules/webbasket/lib/webbasket_templates.py:204 +#: modules/webbasket/lib/webbasket_templates.py:613 +#: modules/webbasket/lib/webbasket_templates.py:690 +msgid "Group baskets" +msgstr "Paniers de groupes" + +#: modules/webbasket/lib/webbasket_templates.py:217 +#: modules/webbasket/lib/webbasket_templates.py:223 +#: modules/webbasket/lib/webbasket_templates.py:622 +#: modules/webbasket/lib/webbasket_templates.py:724 +msgid "Public baskets" +msgstr "Paniers publics" + #: modules/webbasket/lib/webbasket_templates.py:558 msgid "Search baskets for" msgstr "Rechercher dans les paniers" #: modules/webbasket/lib/webbasket_templates.py:559 msgid "Search also in notes (where allowed)" msgstr "Rechercher aussi dans les notes (si possible)" #: modules/webbasket/lib/webbasket_templates.py:596 msgid "Results overview" msgstr "Aperçu des résultats" #: modules/webbasket/lib/webbasket_templates.py:597 #: modules/webbasket/lib/webbasket_templates.py:606 #: modules/webbasket/lib/webbasket_templates.py:615 #: modules/webbasket/lib/webbasket_templates.py:624 #: modules/webbasket/lib/webbasket_templates.py:633 #: modules/webbasket/lib/webbasket_templates.py:658 #: modules/webbasket/lib/webbasket_templates.py:676 #: modules/webbasket/lib/webbasket_templates.py:692 #: modules/webbasket/lib/webbasket_templates.py:710 #: modules/webbasket/lib/webbasket_templates.py:726 #: modules/webbasket/lib/webbasket_templates.py:743 #: modules/webbasket/lib/webbasket_templates.py:759 #: modules/webbasket/lib/webbasket_templates.py:775 +#: modules/webbasket/lib/webbasket_templates_epfl.py:261 +#: modules/webbasket/lib/webbasket_templates_epfl.py:278 +#: modules/webbasket/lib/webbasket_templates_epfl.py:292 +#: modules/webbasket/lib/webbasket_templates_epfl.py:309 #, python-format msgid "%i items found" -msgstr "%i résultats" +msgstr "%i publications trouvées" #: modules/webbasket/lib/webbasket_templates.py:631 #: modules/webbasket/lib/webbasket_templates.py:757 msgid "All public baskets" msgstr "Tous les paniers publics" #: modules/webbasket/lib/webbasket_templates.py:647 +#: modules/webbasket/lib/webbasket_templates_epfl.py:249 msgid "No items found." -msgstr "Aucun élément trouvé." +msgstr "Aucune publication trouvée" #: modules/webbasket/lib/webbasket_templates.py:674 #: modules/webbasket/lib/webbasket_templates.py:708 #: modules/webbasket/lib/webbasket_templates.py:741 #: modules/webbasket/lib/webbasket_templates.py:773 +#: modules/webbasket/lib/webbasket_templates_epfl.py:276 +#: modules/webbasket/lib/webbasket_templates_epfl.py:307 #, python-format msgid "In %(x_linked_basket_name)s" -msgstr "Dans %(x_linked_basket_name)s" +msgstr "In %(x_linked_basket_name)s" #: modules/webbasket/lib/webbasket_templates.py:868 #: modules/webbasket/lib/webbasket_webinterface.py:1272 #: modules/webbasket/lib/webbasket_webinterface.py:1388 #: modules/webbasket/lib/webbasket_webinterface.py:1449 msgid "Public basket" msgstr "Panier public" #: modules/webbasket/lib/webbasket_templates.py:869 msgid "Owner" msgstr "Propriétaire" #: modules/webbasket/lib/webbasket_templates.py:870 msgid "Last update" msgstr "Dernière mise à jour" #: modules/webbasket/lib/webbasket_templates.py:871 msgid "Items" msgstr "Notices" #: modules/webbasket/lib/webbasket_templates.py:872 msgid "Views" msgstr "Vues" #: modules/webbasket/lib/webbasket_templates.py:954 msgid "There is currently no publicly accessible basket" msgstr "Il n'y a pas de panier public actuellement" #: modules/webbasket/lib/webbasket_templates.py:976 #, python-format msgid "" "Displaying public baskets %(x_from)i - %(x_to)i out of " "%(x_total_public_basket)i public baskets in total." msgstr "" "Affichage des paniers publics de %(x_from)i - %(x_to)i parmi " "%(x_total_public_basket)i paniers publics." #: modules/webbasket/lib/webbasket_templates.py:1043 #: modules/webbasket/lib/webbasket_templates.py:1067 #, python-format msgid "%(x_title)s, by %(x_name)s on %(x_date)s:" msgstr "%(x_title)s, par %(x_name)s le %(x_date)s:" #: modules/webbasket/lib/webbasket_templates.py:1046 #: modules/webbasket/lib/webbasket_templates.py:1070 #: modules/webcomment/lib/webcomment.py:1477 #: modules/webcomment/lib/webcomment_templates.py:365 #, python-format msgid "%(x_name)s wrote on %(x_date)s:" msgstr "%(x_name)s a écrit le %(x_date)s:" #: modules/webbasket/lib/webbasket_templates.py:1126 msgid "Select topic" msgstr "Choisir un thème" #: modules/webbasket/lib/webbasket_templates.py:1142 #: modules/webbasket/lib/webbasket_templates.py:1503 #: modules/webbasket/lib/webbasket_templates.py:1512 msgid "Choose topic" msgstr "Choisir un thème" #: modules/webbasket/lib/webbasket_templates.py:1143 #: modules/webbasket/lib/webbasket_templates.py:1514 msgid "or create a new one" msgstr "ou en créer un nouveau" #: modules/webbasket/lib/webbasket_templates.py:1143 msgid "Create new topic" msgstr "Créer un nouveau thème" #: modules/webbasket/lib/webbasket_templates.py:1144 #: modules/webbasket/lib/webbasket_templates.py:1500 msgid "Basket name" msgstr "Nom du panier" #: modules/webbasket/lib/webbasket_templates.py:1146 msgid "Create a new basket" msgstr "Créer un nouveau panier" #: modules/webbasket/lib/webbasket_templates.py:1173 msgid "Create new basket" msgstr "Créer un nouveau panier" #: modules/webbasket/lib/webbasket_templates.py:1243 #: modules/webbasket/lib/webbasket_templates.py:2260 #: modules/webbasket/lib/webbasket_templates.py:2637 #: modules/webbasket/lib/webbasket_templates.py:3146 #: modules/webbasket/lib/webbasket_templates.py:3463 msgid "External item" msgstr "Notice externe" #: modules/webbasket/lib/webbasket_templates.py:1244 msgid "" "Provide a url for the external item you wish to add and fill in a title and " "description" msgstr "" "Spécifiez l'URL de l'élément externe à ajouter, et indiquez un titre et une " "description" #: modules/webbasket/lib/webbasket_templates.py:1245 #: modules/websubmit/lib/websubmit_templates.py:2717 #: modules/bibcirculation/lib/bibcirculation_utils.py:319 #: modules/bibcirculation/lib/bibcirculation_templates.py:1924 #: modules/bibcirculation/lib/bibcirculation_templates.py:5226 #: modules/bibcirculation/lib/bibcirculation_templates.py:7923 #: modules/bibcirculation/lib/bibcirculation_templates.py:10932 #: modules/bibcirculation/lib/bibcirculation_templates.py:11345 #: modules/bibcirculation/lib/bibcirculation_templates.py:15576 #: modules/bibcirculation/lib/bibcirculation_templates.py:15738 +#: modules/websearch/lib/websearch_templates_epfl.py:981 +#: modules/websearch/lib/websearch_templates_epfl.py:1706 msgid "Title" msgstr "Titre" #: modules/webbasket/lib/webbasket_templates.py:1249 msgid "URL" msgstr "URL" #: modules/webbasket/lib/webbasket_templates.py:1279 #, python-format msgid "%i items have been successfully added to your basket" msgstr "%i notices ont été ajoutées à votre panier" #: modules/webbasket/lib/webbasket_templates.py:1280 #, python-format msgid "Proceed to the %(x_url_open)sbasket%(x_url_close)s" msgstr "Aller aux %(x_url_open)spaniers%(x_url_close)s" #: modules/webbasket/lib/webbasket_templates.py:1285 #, python-format msgid " or return to your %(x_url_open)sprevious basket%(x_url_close)s" msgstr " ou retourner à votre %(x_url_open)spanier précédent%(x_url_close)s" #: modules/webbasket/lib/webbasket_templates.py:1289 +#: modules/webbasket/lib/webbasket_templates_epfl.py:484 #, python-format msgid " or return to your %(x_url_open)ssearch%(x_url_close)s" msgstr " ou retourner à votre %(x_url_open)srecherche%(x_url_close)s" #: modules/webbasket/lib/webbasket_templates.py:1398 #, python-format msgid "Adding %i items to your baskets" msgstr "Ajout de %i notices à vos paniers" #: modules/webbasket/lib/webbasket_templates.py:1399 #, python-format msgid "" "Please choose a basket: %(x_basket_selection_box)s %(x_fmt_open)s(or " "%(x_url_open)screate a new one%(x_url_close)s first)%(x_fmt_close)s" msgstr "" "Veuillez choisir un panier %(x_basket_selection_box)s %(x_fmt_open)s(ou " "%(x_url_open)scréez en un nouveau%(x_url_close)s d'abord)%(x_fmt_close)s" #: modules/webbasket/lib/webbasket_templates.py:1405 msgid "Optionally, add a note to each one of these items" msgstr "Optionnellement, ajoutez une note à chacun de ces éléments" #: modules/webbasket/lib/webbasket_templates.py:1406 msgid "Optionally, add a note to this item" msgstr "Optionnellement, ajoutez une note à cet élément" #: modules/webbasket/lib/webbasket_templates.py:1412 +#: modules/webbasket/lib/webbasket_templates_epfl.py:527 msgid "Add items" -msgstr "Ajouter les notices" +msgstr "Ajouter les publications" #: modules/webbasket/lib/webbasket_templates.py:1436 msgid "Are you sure you want to delete this basket?" msgstr "Êtes-vous sûr de vouloir supprimer ce panier?" #: modules/webbasket/lib/webbasket_templates.py:1438 #, python-format msgid "%i users are subscribed to this basket." msgstr "%i utilisateurs sont abonnés à ce panier." #: modules/webbasket/lib/webbasket_templates.py:1440 #, python-format msgid "%i user groups are subscribed to this basket." msgstr "%i groupes sont abonnés à ce panier." #: modules/webbasket/lib/webbasket_templates.py:1442 #, python-format msgid "You have set %i alerts on this basket." msgstr "Vous avez défini %i alertes sur ce panier." #: modules/webbasket/lib/webbasket_templates.py:1480 #: modules/webcomment/lib/webcomment_templates.py:229 #: modules/webcomment/lib/webcomment_templates.py:630 #: modules/webcomment/lib/webcomment_templates.py:1904 #: modules/webcomment/lib/webcomment_templates.py:1928 #: modules/webcomment/lib/webcomment_templates.py:1954 #: modules/webmessage/lib/webmessage_templates.py:508 #: modules/websession/lib/websession_templates.py:2235 #: modules/websession/lib/websession_templates.py:2275 +#: modules/webbasket/lib/webbasket_templates_epfl.py:599 msgid "Yes" msgstr "Oui" #: modules/webbasket/lib/webbasket_templates.py:1517 #: modules/webbasket/lib/webbasket_templates.py:1613 +#: modules/webbasket/lib/webbasket_templates_epfl.py:625 msgid "General settings" -msgstr "Paramètres généraux" +msgstr "Configuration de la collection" #: modules/webbasket/lib/webbasket_templates.py:1532 #: modules/webbasket/lib/webbasket_templates.py:1707 #: modules/webbasket/lib/webbasket_templates.py:1734 +#: modules/webbasket/lib/webbasket_templates_epfl.py:650 +#: modules/webbasket/lib/webbasket_templates_epfl.py:764 +#: modules/webbasket/lib/webbasket_templates_epfl.py:767 msgid "Add group" msgstr "Ajouter un groupe" #: modules/webbasket/lib/webbasket_templates.py:1537 +#: modules/webbasket/lib/webbasket_templates_epfl.py:648 msgid "Manage group rights" -msgstr "Gérer les permissions des groupes" +msgstr "Gérer les droits du groupe" #: modules/webbasket/lib/webbasket_templates.py:1549 msgid "Manage global sharing rights" msgstr "Gérer les permissions globales" #: modules/webbasket/lib/webbasket_templates.py:1554 #: modules/webbasket/lib/webbasket_templates.py:1620 #: modules/webbasket/lib/webbasket_templates.py:1969 #: modules/webbasket/lib/webbasket_templates.py:2048 msgid "Delete basket" msgstr "Supprimer le panier" #: modules/webbasket/lib/webbasket_templates.py:1578 #, python-format msgid "Editing basket %(x_basket_name)s" msgstr "Édition du panier %(x_basket_name)s" #: modules/webbasket/lib/webbasket_templates.py:1587 #: modules/webbasket/lib/webbasket_templates.py:1642 +#: modules/webbasket/lib/webbasket_templates_epfl.py:689 msgid "Save changes" -msgstr "Enregistrer les modifications" +msgstr "Enregistrer" #: modules/webbasket/lib/webbasket_templates.py:1608 msgid "Topic name" msgstr "Thème" #: modules/webbasket/lib/webbasket_templates.py:1637 #, python-format msgid "Editing topic: %(x_topic_name)s" msgstr "Édition du thème: %(x_topic_name)s" #: modules/webbasket/lib/webbasket_templates.py:1654 #: modules/webbasket/lib/webbasket_templates.py:1669 +#: modules/webbasket/lib/webbasket_templates_epfl.py:701 msgid "No rights" msgstr "Aucun droit" #: modules/webbasket/lib/webbasket_templates.py:1656 #: modules/webbasket/lib/webbasket_templates.py:1671 +#: modules/webbasket/lib/webbasket_templates_epfl.py:703 msgid "View records" -msgstr "Voir notices" +msgstr "Afficher le contenu" #: modules/webbasket/lib/webbasket_templates.py:1658 #: modules/webbasket/lib/webbasket_templates.py:1660 #: modules/webbasket/lib/webbasket_templates.py:1673 #: modules/webbasket/lib/webbasket_templates.py:1675 #: modules/webbasket/lib/webbasket_templates.py:1677 #: modules/webbasket/lib/webbasket_templates.py:1679 #: modules/webbasket/lib/webbasket_templates.py:1681 #: modules/webbasket/lib/webbasket_templates.py:1683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:705 +#: modules/webbasket/lib/webbasket_templates_epfl.py:707 +#: modules/webbasket/lib/webbasket_templates_epfl.py:709 msgid "and" msgstr "et" #: modules/webbasket/lib/webbasket_templates.py:1658 msgid "view comments" msgstr "voir les commentaires" #: modules/webbasket/lib/webbasket_templates.py:1660 msgid "add comments" msgstr "ajouter des commentaires" #: modules/webbasket/lib/webbasket_templates.py:1673 msgid "view notes" msgstr "voir les notes" #: modules/webbasket/lib/webbasket_templates.py:1675 msgid "add notes" msgstr "ajouter des notes" #: modules/webbasket/lib/webbasket_templates.py:1677 +#: modules/webbasket/lib/webbasket_templates_epfl.py:705 msgid "add records" -msgstr "ajouter des notices" +msgstr "ajouter des publications" #: modules/webbasket/lib/webbasket_templates.py:1679 msgid "delete notes" msgstr "effacer des notes" #: modules/webbasket/lib/webbasket_templates.py:1681 +#: modules/webbasket/lib/webbasket_templates_epfl.py:707 msgid "remove records" -msgstr "supprimer les notices" +msgstr "supprimer des publications" #: modules/webbasket/lib/webbasket_templates.py:1683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:709 msgid "manage sharing rights" msgstr "gérer les droits d'accès" #: modules/webbasket/lib/webbasket_templates.py:1705 +#: modules/webbasket/lib/webbasket_templates_epfl.py:734 msgid "You are not a member of a group." -msgstr "Vous n'êtes pas membre de groupe." +msgstr "Vous n'êtes pas membre de ce groupe" #: modules/webbasket/lib/webbasket_templates.py:1727 msgid "Sharing basket to a new group" msgstr "Partager le panier avec un nouveau groupe" #: modules/webbasket/lib/webbasket_templates.py:1756 #: modules/websession/lib/websession_templates.py:522 msgid "" "You are logged in as a guest user, so your baskets will disappear at the end " "of the current session." msgstr "" "Vous êtes actuellement enregistré en tant qu'invité. Vos paniers " "disparaîtront à la fin de la session." #: modules/webbasket/lib/webbasket_templates.py:1757 #: modules/webbasket/lib/webbasket_templates.py:1772 #: modules/websession/lib/websession_templates.py:525 #, python-format msgid "" "If you wish you can %(x_url_open)slogin or register here%(x_url_close)s." msgstr "" "Si vous le souhaitez, vous pouvez vous %(x_url_open)sidentifier ou vous " "enregistrer ici%(x_url_close)s." #: modules/webbasket/lib/webbasket_templates.py:1771 -#: modules/websession/lib/websession_webinterface.py:261 +#: modules/websession/lib/websession_webinterface.py:266 msgid "This functionality is forbidden to guest users." msgstr "Cette fonctionnalité est indisponible pour les invités." #: modules/webbasket/lib/webbasket_templates.py:1825 #: modules/webcomment/lib/webcomment_templates.py:823 msgid "Back to search results" msgstr "Retour aux résultats de recherche" #: modules/webbasket/lib/webbasket_templates.py:1953 #: modules/webbasket/lib/webbasket_templates.py:2986 #, python-format msgid "%i items" msgstr "%i notices" #: modules/webbasket/lib/webbasket_templates.py:1954 #: modules/webbasket/lib/webbasket_templates.py:2988 #, python-format msgid "%i notes" msgstr "%i notes" #: modules/webbasket/lib/webbasket_templates.py:1954 msgid "no notes yet" msgstr "aucune note" #: modules/webbasket/lib/webbasket_templates.py:1957 #, python-format msgid "%i subscribers" msgstr "%i abonnés" #: modules/webbasket/lib/webbasket_templates.py:1959 #: modules/webbasket/lib/webbasket_templates.py:2990 msgid "last update" msgstr "dernière mise à jour" #: modules/webbasket/lib/webbasket_templates.py:1963 #: modules/webbasket/lib/webbasket_templates.py:2042 msgid "Add item" msgstr "Ajouter une notice" #: modules/webbasket/lib/webbasket_templates.py:1966 #: modules/webbasket/lib/webbasket_templates.py:2045 #: modules/webbasket/lib/webbasket_webinterface.py:1043 msgid "Edit basket" msgstr "Éditer le panier" #: modules/webbasket/lib/webbasket_templates.py:1979 #: modules/webbasket/lib/webbasket_templates.py:2056 #: modules/webbasket/lib/webbasket_templates.py:2998 #: modules/webbasket/lib/webbasket_templates.py:3051 msgid "Unsubscribe from basket" msgstr "Se désabonner du panier" #: modules/webbasket/lib/webbasket_templates.py:2061 msgid "This basket is publicly accessible at the following address:" msgstr "Ce panier est publiquement accessible à l'adresse suivante:" #: modules/webbasket/lib/webbasket_templates.py:2125 #: modules/webbasket/lib/webbasket_templates.py:3101 msgid "Basket is empty" msgstr "Le panier est vide" #: modules/webbasket/lib/webbasket_templates.py:2159 +#: modules/webbasket/lib/webbasket_templates_epfl.py:961 msgid "You do not have sufficient rights to view this basket's content." -msgstr "Vous n'êtes pas autorisé à voir le contenu de ce panier." +msgstr "Vous n'avez pas le droit de voir le contenu de cette collection." #: modules/webbasket/lib/webbasket_templates.py:2202 msgid "Move item up" msgstr "Remonter" #: modules/webbasket/lib/webbasket_templates.py:2206 msgid "You cannot move this item up" msgstr "Vous ne pouvez pas monter cet élément" #: modules/webbasket/lib/webbasket_templates.py:2220 msgid "Move item down" msgstr "Descendre" #: modules/webbasket/lib/webbasket_templates.py:2224 msgid "You cannot move this item down" msgstr "Vous ne pouvez pas descendre cet élément" #: modules/webbasket/lib/webbasket_templates.py:2238 #: modules/webbasket/lib/webbasket_templates.py:3142 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1035 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1036 msgid "Copy item" msgstr "Copier" #: modules/webbasket/lib/webbasket_templates.py:2254 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1049 msgid "Remove item" msgstr "Supprimer" #: modules/webbasket/lib/webbasket_templates.py:2329 #: modules/webbasket/lib/webbasket_templates.py:2832 #: modules/webbasket/lib/webbasket_templates.py:3206 #: modules/webbasket/lib/webbasket_templates.py:3636 #: modules/bibcirculation/lib/bibcirculation_templates.py:3520 #: modules/bibcirculation/lib/bibcirculation_templates.py:3650 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5407 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5909 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9813 #: modules/bibcirculation/lib/bibcirculation_templates.py:9906 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13464 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13646 #: modules/bibcirculation/lib/bibcirculation_templates.py:14198 msgid "Notes" msgstr "Notes" #: modules/webbasket/lib/webbasket_templates.py:2329 #: modules/webbasket/lib/webbasket_templates.py:3206 msgid "Add a note..." msgstr "Ajouter une note..." #: modules/webbasket/lib/webbasket_templates.py:2335 #: modules/webbasket/lib/webbasket_templates.py:3212 msgid "notes" msgstr "notes" #: modules/webbasket/lib/webbasket_templates.py:2336 #: modules/webbasket/lib/webbasket_templates.py:3213 msgid "last note on" msgstr "dernière note le" #: modules/webbasket/lib/webbasket_templates.py:2442 #: modules/webbasket/lib/webbasket_templates.py:3295 #, python-format msgid "Item %(x_item_index)i of %(x_item_total)i" msgstr "Élément %(x_item_index)i sur %(x_item_total)i" #: modules/webbasket/lib/webbasket_templates.py:2455 #: modules/webbasket/lib/webbasket_templates.py:2458 #: modules/webbasket/lib/webbasket_templates.py:2542 #: modules/webbasket/lib/webbasket_templates.py:2545 #: modules/webbasket/lib/webbasket_templates.py:3305 #: modules/webbasket/lib/webbasket_templates.py:3308 #: modules/webbasket/lib/webbasket_templates.py:3380 #: modules/webbasket/lib/webbasket_templates.py:3383 msgid "Previous item" msgstr "Notice précédente" #: modules/webbasket/lib/webbasket_templates.py:2470 #: modules/webbasket/lib/webbasket_templates.py:2473 #: modules/webbasket/lib/webbasket_templates.py:2557 #: modules/webbasket/lib/webbasket_templates.py:2560 #: modules/webbasket/lib/webbasket_templates.py:3317 #: modules/webbasket/lib/webbasket_templates.py:3320 #: modules/webbasket/lib/webbasket_templates.py:3392 #: modules/webbasket/lib/webbasket_templates.py:3395 msgid "Next item" msgstr "Notice suivante" #: modules/webbasket/lib/webbasket_templates.py:2483 #: modules/webbasket/lib/webbasket_templates.py:2570 #: modules/webbasket/lib/webbasket_templates.py:3327 #: modules/webbasket/lib/webbasket_templates.py:3402 msgid "Return to basket" msgstr "Retour au panier" #: modules/webbasket/lib/webbasket_templates.py:2630 #: modules/webbasket/lib/webbasket_templates.py:3456 msgid "The item you have selected does not exist." msgstr "La notice sélectionnée n'existe pas." #: modules/webbasket/lib/webbasket_templates.py:2658 #: modules/webbasket/lib/webbasket_templates.py:3480 msgid "You do not have sufficient rights to view this item's notes." msgstr "Vous n'êtes pas autorisé à voir les notes de cette notice." #: modules/webbasket/lib/webbasket_templates.py:2699 msgid "You do not have sufficient rights to view this item." msgstr "Vous n'êtes pas autorisé à voir cette notice." #: modules/webbasket/lib/webbasket_templates.py:2806 #: modules/webbasket/lib/webbasket_templates.py:2816 #: modules/webbasket/lib/webbasket_templates.py:3610 #: modules/webbasket/lib/webbasket_templates.py:3620 #: modules/webbasket/lib/webbasket_webinterface.py:495 #: modules/webbasket/lib/webbasket_webinterface.py:1512 msgid "Add a note" msgstr "Ajouter une note" #: modules/webbasket/lib/webbasket_templates.py:2807 #: modules/webbasket/lib/webbasket_templates.py:3611 msgid "Add note" msgstr "Ajouter la note" #: modules/webbasket/lib/webbasket_templates.py:2853 #: modules/webbasket/lib/webbasket_templates.py:3657 #: modules/webcomment/lib/webcomment_templates.py:371 #: modules/webmessage/lib/webmessage_templates.py:111 msgid "Reply" msgstr "Répondre" #: modules/webbasket/lib/webbasket_templates.py:2883 #: modules/webbasket/lib/webbasket_templates.py:3682 #, python-format msgid "%(x_title)s, by %(x_name)s on %(x_date)s" msgstr "%(x_title)s, par %(x_name)s le %(x_date)s" #: modules/webbasket/lib/webbasket_templates.py:2885 #: modules/webbasket/lib/webbasket_templates.py:3684 #: modules/websession/lib/websession_templates.py:167 #: modules/websession/lib/websession_templates.py:218 #: modules/websession/lib/websession_templates.py:927 #: modules/websession/lib/websession_templates.py:1051 msgid "Note" msgstr "Note" #: modules/webbasket/lib/webbasket_templates.py:2988 msgid ", no notes yet" msgstr ", aucune note" #: modules/webbasket/lib/webbasket_templates.py:2995 #: modules/webbasket/lib/webbasket_templates.py:3048 msgid "Subscribe to basket" msgstr "S'abonner au panier" #: modules/webbasket/lib/webbasket_templates.py:3054 msgid "This public basket belongs to the user " msgstr "Ce panier public appartient à l'utilisateur " #: modules/webbasket/lib/webbasket_templates.py:3078 msgid "This public basket belongs to you." msgstr "Ce panier public vous appartient." #: modules/webbasket/lib/webbasket_templates.py:3849 msgid "All your baskets" msgstr "Tous vos paniers" #: modules/webbasket/lib/webbasket_templates.py:3851 #: modules/webbasket/lib/webbasket_templates.py:3926 msgid "Your personal baskets" msgstr "Vos paniers personnels" #: modules/webbasket/lib/webbasket_templates.py:3857 #: modules/webbasket/lib/webbasket_templates.py:3937 msgid "Your group baskets" msgstr "Vos paniers de groupe" #: modules/webbasket/lib/webbasket_templates.py:3863 msgid "Your public baskets" msgstr "Vos paniers publics" #: modules/webbasket/lib/webbasket_templates.py:3864 msgid "All the public baskets" msgstr "Tous les paniers publics" #: modules/webbasket/lib/webbasket_templates.py:3921 msgid "*** basket name ***" msgstr "*** nom du panier ***" #: modules/webbasket/lib/webbasket_webinterface.py:159 #: modules/webbasket/lib/webbasket_webinterface.py:331 #: modules/webbasket/lib/webbasket_webinterface.py:407 #: modules/webbasket/lib/webbasket_webinterface.py:473 #: modules/webbasket/lib/webbasket_webinterface.py:541 #: modules/webbasket/lib/webbasket_webinterface.py:619 #: modules/webbasket/lib/webbasket_webinterface.py:706 #: modules/webbasket/lib/webbasket_webinterface.py:784 #: modules/webbasket/lib/webbasket_webinterface.py:869 #: modules/webbasket/lib/webbasket_webinterface.py:967 #: modules/webbasket/lib/webbasket_webinterface.py:1084 #: modules/webbasket/lib/webbasket_webinterface.py:1186 #: modules/webbasket/lib/webbasket_webinterface.py:1369 #: modules/webbasket/lib/webbasket_webinterface.py:1430 #: modules/webbasket/lib/webbasket_webinterface.py:1493 #: modules/webbasket/lib/webbasket_webinterface.py:1556 msgid "You are not authorized to use baskets." msgstr "Vous n'êtes pas autorisé à utiliser les paniers." #: modules/webbasket/lib/webbasket_webinterface.py:170 msgid "You are not authorized to view this attachment" msgstr "Vous n'êtes pas autorisé à consulter cette pièce jointe" #: modules/webbasket/lib/webbasket_webinterface.py:362 msgid "Display baskets" msgstr "Afficher paniers" +#: modules/webbasket/lib/webbasket_webinterface.py:429 +msgid "Search baskets" +msgstr "Chercher dans les paniers" + #: modules/webbasket/lib/webbasket_webinterface.py:567 #: modules/webbasket/lib/webbasket_webinterface.py:643 #: modules/webbasket/lib/webbasket_webinterface.py:1579 msgid "Display item and notes" msgstr "Afficher les notices et notes" +#: modules/webbasket/lib/webbasket_webinterface.py:741 +#: modules/websearch/lib/websearch_templates.py:2850 +#: modules/websearch/lib/websearch_templates.py:3036 +msgid "Add to basket" +msgstr "Ajouter au panier" + #: modules/webbasket/lib/webbasket_webinterface.py:825 msgid "Delete a basket" msgstr "Supprimer un panier" #: modules/webbasket/lib/webbasket_webinterface.py:884 msgid "Copy record to basket" msgstr "Copier la notice dans le panier" +#: modules/webbasket/lib/webbasket_webinterface.py:1254 +#: modules/webbasket/lib/webbasket_webinterface.py:1329 +#: modules/webbasket/lib/webbasket_webinterface.py:1373 +#: modules/webbasket/lib/webbasket_webinterface.py:1434 +msgid "List of public baskets" +msgstr "Liste des paniers publics" + #: modules/webcomment/lib/webcomment.py:1072 #, python-format msgid "Record %i" msgstr "Notice %i" #: modules/webcomment/lib/webcomment.py:1083 #, python-format msgid "%(report_number)s\"%(title)s\" has been reviewed" msgstr "%(report_number)s\\\"%(title)s\\\" a été évalué" #: modules/webcomment/lib/webcomment.py:1087 #, python-format msgid "%(report_number)s\"%(title)s\" has been commented" msgstr "%(report_number)s\\\"%(title)s\\\" a été commenté" #: modules/webcomment/lib/webcomment_templates.py:86 #: modules/webcomment/lib/webcomment_templates.py:241 #: modules/webcomment/lib/webcomment_templates.py:671 #: modules/webcomment/lib/webcomment_templates.py:681 #, python-format msgid "%(x_nb)i comments for round \"%(x_name)s\"" msgstr "%(x_nb)i commentaires au tour \"%(x_name)s\"" #: modules/webcomment/lib/webcomment_templates.py:112 #: modules/webcomment/lib/webcomment_templates.py:798 #: modules/websubmit/lib/websubmit_templates.py:2665 msgid "Write a comment" msgstr "Écrire un commentaire" #: modules/webcomment/lib/webcomment_templates.py:120 #, python-format msgid "Showing the latest %i comments:" msgstr "Affichage des derniers %i commentaires:" #: modules/webcomment/lib/webcomment_templates.py:136 #: modules/webcomment/lib/webcomment_templates.py:161 msgid "Discuss this document" msgstr "Discuter ce document" #: modules/webcomment/lib/webcomment_templates.py:162 #: modules/webcomment/lib/webcomment_templates.py:808 msgid "Start a discussion about any aspect of this document." msgstr "Commencer la discussion sur n'importe quel aspect de ce document." #: modules/webcomment/lib/webcomment_templates.py:178 #, python-format msgid "Sorry, the record %s does not seem to exist." msgstr "Désolé, la notice %s n'existe pas." #: modules/webcomment/lib/webcomment_templates.py:180 #, python-format msgid "Sorry, %s is not a valid ID value." msgstr "Désolé, %s n'est pas un identifiant valide." #: modules/webcomment/lib/webcomment_templates.py:182 msgid "Sorry, no record ID was provided." msgstr "Désolé, aucun identifiant de notice n'a été fourni." #: modules/webcomment/lib/webcomment_templates.py:186 #, python-format msgid "You may want to start browsing from %s" msgstr "Vous pouvez recommencer à chercher depuis %s" #: modules/webcomment/lib/webcomment_templates.py:264 #: modules/webcomment/lib/webcomment_templates.py:722 msgid "Was this review helpful?" msgstr "Est-ce que cette évaluation a été utile?" #: modules/webcomment/lib/webcomment_templates.py:275 #: modules/webcomment/lib/webcomment_templates.py:312 #: modules/webcomment/lib/webcomment_templates.py:798 msgid "Write a review" msgstr "Écrire une évaluation" #: modules/webcomment/lib/webcomment_templates.py:282 #: modules/webcomment/lib/webcomment_templates.py:786 #: modules/webcomment/lib/webcomment_templates.py:1975 #, python-format msgid "Average review score: %(x_nb_score)s based on %(x_nb_reviews)s reviews" msgstr "Note moyenne: %(x_nb_score)s basée sur %(x_nb_reviews)s évaluations" #: modules/webcomment/lib/webcomment_templates.py:285 #, python-format msgid "Readers found the following %s reviews to be most helpful." msgstr "Les lecteurs ont trouvé les %s évaluations suivantes les plus utiles." #: modules/webcomment/lib/webcomment_templates.py:288 #: modules/webcomment/lib/webcomment_templates.py:311 #, python-format msgid "View all %s reviews" msgstr "Visualiser toutes les %s évaluations" #: modules/webcomment/lib/webcomment_templates.py:307 #: modules/webcomment/lib/webcomment_templates.py:329 #: modules/webcomment/lib/webcomment_templates.py:2016 msgid "Rate this document" msgstr "Évaluer ce document" #: modules/webcomment/lib/webcomment_templates.py:330 #: modules/webcomment/lib/webcomment_templates.py:810 msgid "Be the first to review this document." msgstr "Soyez le premier à évaluer ce document." #: modules/webcomment/lib/webcomment_templates.py:375 #: modules/webcomment/lib/webcomment_templates.py:723 msgid "Report abuse" msgstr "Signaler un abus" #: modules/webcomment/lib/webcomment_templates.py:390 msgid "Undelete comment" msgstr "Rétablir le commentaire" #: modules/webcomment/lib/webcomment_templates.py:399 #: modules/webcomment/lib/webcomment_templates.py:401 msgid "Delete comment" msgstr "Supprimer le commentaire" #: modules/webcomment/lib/webcomment_templates.py:408 msgid "Unreport comment" msgstr "Supprimer le rapport du commentaire" #: modules/webcomment/lib/webcomment_templates.py:419 msgid "Attached file" msgstr "Fichier attaché" #: modules/webcomment/lib/webcomment_templates.py:419 msgid "Attached files" msgstr "Fichiers attachés" #: modules/webcomment/lib/webcomment_templates.py:473 #, python-format msgid "Reviewed by %(x_nickname)s on %(x_date)s" msgstr "Évalué par %(x_nickname)s le %(x_date)s" #: modules/webcomment/lib/webcomment_templates.py:474 #, python-format msgid "%(x_nb_people)i out of %(x_nb_total)i people found this review useful" msgstr "" "%(x_nb_people)i sur %(x_nb_total)i utilisateurs ont trouvé cette évaluation " "utile" #: modules/webcomment/lib/webcomment_templates.py:496 msgid "Undelete review" msgstr "Rétablir l'évaluation" #: modules/webcomment/lib/webcomment_templates.py:505 msgid "Delete review" msgstr "Effacer l'évaluation" #: modules/webcomment/lib/webcomment_templates.py:511 msgid "Unreport review" msgstr "Supprimer le rapport sur l'évaluation" #: modules/webcomment/lib/webcomment_templates.py:600 #: modules/webcomment/lib/webcomment_templates.py:615 -#: modules/webcomment/lib/webcomment_webinterface.py:231 -#: modules/webcomment/lib/webcomment_webinterface.py:444 +#: modules/webcomment/lib/webcomment_webinterface.py:230 +#: modules/webcomment/lib/webcomment_webinterface.py:436 #: modules/websubmit/lib/websubmit_templates.py:2663 msgid "Comments" msgstr "Commentaires" #: modules/webcomment/lib/webcomment_templates.py:601 #: modules/webcomment/lib/webcomment_templates.py:616 -#: modules/webcomment/lib/webcomment_webinterface.py:231 -#: modules/webcomment/lib/webcomment_webinterface.py:444 +#: modules/webcomment/lib/webcomment_webinterface.py:230 +#: modules/webcomment/lib/webcomment_webinterface.py:436 +#: modules/websearch/lib/websearch_templates_epfl.py:512 msgid "Reviews" -msgstr "Évaluations" +msgstr "Reviews" #: modules/webcomment/lib/webcomment_templates.py:761 #: modules/websearch/lib/websearch_templates.py:1862 #: modules/bibcatalog/lib/bibcatalog_templates.py:50 #: modules/bibknowledge/lib/bibknowledge_templates.py:159 +#: modules/websearch/lib/websearch_templates_epfl.py:1186 +#: modules/websearch/lib/websearch_templates_epfl.py:1603 +#: modules/websearch/lib/websearch_templates_epfl.py:1606 msgid "Previous" msgstr "Précédent" #: modules/webcomment/lib/webcomment_templates.py:777 #: modules/bibcatalog/lib/bibcatalog_templates.py:72 #: modules/bibknowledge/lib/bibknowledge_templates.py:157 +#: modules/websearch/lib/websearch_templates_epfl.py:1623 +#: modules/websearch/lib/websearch_templates_epfl.py:1626 msgid "Next" msgstr "Suivant" #: modules/webcomment/lib/webcomment_templates.py:801 #, python-format msgid "There is a total of %s reviews" msgstr "Il y a un total de %s évaluations" #: modules/webcomment/lib/webcomment_templates.py:803 #, python-format msgid "There is a total of %s comments" msgstr "Il y a un total de %s commentaires" #: modules/webcomment/lib/webcomment_templates.py:822 #: modules/webcomment/lib/webcomment_templates.py:1583 #: modules/websearch/lib/websearch_templates.py:569 +#: modules/websearch/lib/websearch_templates_epfl.py:175 +#: modules/bibformat/lib/elements/bfe_doctype.py:49 msgid "Record" -msgstr "Notice" +msgstr "Publication" #: modules/webcomment/lib/webcomment_templates.py:829 #: modules/webcomment/lib/webcomment_templates.py:888 msgid "review" msgstr "évaluation" #: modules/webcomment/lib/webcomment_templates.py:829 #: modules/webcomment/lib/webcomment_templates.py:888 msgid "comment" msgstr "commentaire" #: modules/webcomment/lib/webcomment_templates.py:830 #: modules/webcomment/lib/webcomment_templates.py:1818 +#: modules/bibformat/lib/elements/bfe_doctype.py:27 msgid "Review" -msgstr "Évaluation" +msgstr "Review" #: modules/webcomment/lib/webcomment_templates.py:830 #: modules/webcomment/lib/webcomment_templates.py:1147 #: modules/webcomment/lib/webcomment_templates.py:1586 #: modules/webcomment/lib/webcomment_templates.py:1818 #: modules/websubmit/lib/websubmit_managedocfiles.py:374 #: modules/websubmit/lib/websubmit_templates.py:2719 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:347 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:401 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:455 msgid "Comment" msgstr "Commentaire" #: modules/webcomment/lib/webcomment_templates.py:886 msgid "Viewing" msgstr "Affichage" #: modules/webcomment/lib/webcomment_templates.py:887 msgid "Page:" msgstr "Page:" #: modules/webcomment/lib/webcomment_templates.py:905 msgid "Subscribe" msgstr "S'abonner" #: modules/webcomment/lib/webcomment_templates.py:914 msgid "Unsubscribe" msgstr "Se désabonner" #: modules/webcomment/lib/webcomment_templates.py:921 msgid "You are not authorized to comment or review." msgstr "Vous n'êtes pas autorisé à comment ou évaluer." #: modules/webcomment/lib/webcomment_templates.py:1078 #, python-format msgid "Note: Your nickname, %s, will be displayed as author of this comment." msgstr "" "Note: Votre pseudonyme, %s, sera affiché en temps qu'auteur de ce " "commentaire " #: modules/webcomment/lib/webcomment_templates.py:1082 #: modules/webcomment/lib/webcomment_templates.py:1195 #, python-format msgid "" "Note: you have not %(x_url_open)sdefined your nickname%(x_url_close)s. " "%(x_nickname)s will be displayed as the author of this comment." msgstr "" "Note: Vous n'avez pas %(x_url_open)sdéfini de pseudonyme%(x_url_close)s. " "%(x_nickname)s sera affiché en temps qu'auteur de ce commentaire." #: modules/webcomment/lib/webcomment_templates.py:1099 msgid "Once logged in, authorized users can also attach files." msgstr "" "Les utilisateurs connectés et autorisés peuvent également attacher des " "fichiers." #: modules/webcomment/lib/webcomment_templates.py:1114 msgid "Optionally, attach a file to this comment" msgstr "Optionnellement attachez un fichier à ce commentaire" #: modules/webcomment/lib/webcomment_templates.py:1115 msgid "Optionally, attach files to this comment" msgstr "Optionnellement attachez des fichiers à ce commentaire" #: modules/webcomment/lib/webcomment_templates.py:1116 msgid "Max one file" msgstr "Maximum un fichier" #: modules/webcomment/lib/webcomment_templates.py:1117 #, python-format msgid "Max %i files" msgstr "Max %i fichiers" #: modules/webcomment/lib/webcomment_templates.py:1118 #, python-format msgid "Max %(x_nb_bytes)s per file" msgstr "Max %(x_nb_bytes)s par fichier" #: modules/webcomment/lib/webcomment_templates.py:1132 msgid "Send me an email when a new comment is posted" msgstr "M'envoyez un email lorsqu'un nouveau commentaire est posté" #: modules/webcomment/lib/webcomment_templates.py:1146 #: modules/webcomment/lib/webcomment_templates.py:1265 msgid "Article" msgstr "Article" #: modules/webcomment/lib/webcomment_templates.py:1148 msgid "Add comment" msgstr "Ajouter un commentaire" #: modules/webcomment/lib/webcomment_templates.py:1190 #, python-format msgid "" "Note: Your nickname, %s, will be displayed as the author of this review." msgstr "" "Note: Votre pseudonyme, %s, sera affiché en temps qu'auteur de cette " "évaluation." #: modules/webcomment/lib/webcomment_templates.py:1266 msgid "Rate this article" msgstr "Évaluer ce document" #: modules/webcomment/lib/webcomment_templates.py:1267 msgid "Select a score" msgstr "Choisir une note" #: modules/webcomment/lib/webcomment_templates.py:1268 msgid "Give a title to your review" msgstr "Donner un titre à cette évaluation" #: modules/webcomment/lib/webcomment_templates.py:1269 msgid "Write your review" msgstr "Ecrire votre évaluation" #: modules/webcomment/lib/webcomment_templates.py:1274 msgid "Add review" msgstr "Ajouter une évaluation" #: modules/webcomment/lib/webcomment_templates.py:1284 -#: modules/webcomment/lib/webcomment_webinterface.py:489 +#: modules/webcomment/lib/webcomment_webinterface.py:481 msgid "Add Review" msgstr "Ajouter une évaluation" #: modules/webcomment/lib/webcomment_templates.py:1305 msgid "Your review was successfully added." msgstr "Votre évaluation à été ajoutée." #: modules/webcomment/lib/webcomment_templates.py:1307 msgid "Your comment was successfully added." msgstr "Votre commentaire a été ajouté." #: modules/webcomment/lib/webcomment_templates.py:1310 msgid "Back to record" msgstr "Revenir à la notice" #: modules/webcomment/lib/webcomment_templates.py:1388 #: modules/webcomment/web/admin/webcommentadmin.py:173 msgid "View most commented records" msgstr "Voir les notices les plus commentées" #: modules/webcomment/lib/webcomment_templates.py:1390 #: modules/webcomment/web/admin/webcommentadmin.py:209 msgid "View latest commented records" msgstr "Voir les notices dernièrement commentées" #: modules/webcomment/lib/webcomment_templates.py:1392 #: modules/webcomment/web/admin/webcommentadmin.py:142 msgid "View all comments reported as abuse" msgstr "Voir tous les commentaires rapportés comme abus" #: modules/webcomment/lib/webcomment_templates.py:1396 #: modules/webcomment/web/admin/webcommentadmin.py:172 msgid "View most reviewed records" msgstr "Voir les notices les plus évaluées" #: modules/webcomment/lib/webcomment_templates.py:1398 #: modules/webcomment/web/admin/webcommentadmin.py:208 msgid "View latest reviewed records" msgstr "Voir les dernières notices évaluées" #: modules/webcomment/lib/webcomment_templates.py:1400 #: modules/webcomment/web/admin/webcommentadmin.py:142 msgid "View all reviews reported as abuse" msgstr "Voir toutes les évaluations rapportées comme abus" #: modules/webcomment/lib/webcomment_templates.py:1408 msgid "View all users who have been reported" msgstr "Voir tous les utilisateurs qui ont été signalés" #: modules/webcomment/lib/webcomment_templates.py:1410 msgid "Guide" msgstr "Guide" #: modules/webcomment/lib/webcomment_templates.py:1412 msgid "Comments and reviews are disabled" msgstr "Les commentaires et évaluations sont désactivés" #: modules/webcomment/lib/webcomment_templates.py:1432 msgid "" "Please enter the ID of the comment/review so that you can view it before " "deciding whether to delete it or not" msgstr "" "Veuillez entrer l'identifiant du commentaire ou de l'évaluation pour le voir " "avant de le supprimer" #: modules/webcomment/lib/webcomment_templates.py:1456 msgid "Comment ID:" msgstr "Identifiant du commentaire:" #: modules/webcomment/lib/webcomment_templates.py:1457 msgid "Or enter a record ID to list all the associated comments/reviews:" msgstr "" "Ou entrez l'identifiant d'une notice pour lister les commentaires/" "évaluations associés:" #: modules/webcomment/lib/webcomment_templates.py:1458 msgid "Record ID:" msgstr "Identifiant de la notice:" #: modules/webcomment/lib/webcomment_templates.py:1460 msgid "View Comment" msgstr "Afficher le commentaire" #: modules/webcomment/lib/webcomment_templates.py:1481 msgid "There have been no reports so far." msgstr "Aucun commentaire n'a, jusqu'à maintenant, été signalé." #: modules/webcomment/lib/webcomment_templates.py:1485 #, python-format msgid "View all %s reported comments" msgstr "Afficher tous les %s commentaires signalés" #: modules/webcomment/lib/webcomment_templates.py:1488 #, python-format msgid "View all %s reported reviews" msgstr "Afficher toutes les %s évaluations signalées" #: modules/webcomment/lib/webcomment_templates.py:1525 msgid "" "Here is a list, sorted by total number of reports, of all users who have had " "a comment reported at least once." msgstr "" "Liste des utilisateurs ayant été signalés au moins une fois. Cette liste est " "triée par nombre de signalement d'abus." #: modules/webcomment/lib/webcomment_templates.py:1533 #: modules/webcomment/lib/webcomment_templates.py:1562 #: modules/websession/lib/websession_templates.py:159 #: modules/websession/lib/websession_templates.py:1046 msgid "Nickname" msgstr "Pseudonyme" #: modules/webcomment/lib/webcomment_templates.py:1534 #: modules/webcomment/lib/webcomment_templates.py:1566 #: modules/bibcirculation/lib/bibcirculation_utils.py:342 #: modules/bibcirculation/lib/bibcirculation_templates.py:2185 #: modules/bibcirculation/lib/bibcirculation_templates.py:2271 #: modules/bibcirculation/lib/bibcirculation_templates.py:2477 #: modules/bibcirculation/lib/bibcirculation_templates.py:3518 #: modules/bibcirculation/lib/bibcirculation_templates.py:3646 #: modules/bibcirculation/lib/bibcirculation_templates.py:4832 #: modules/bibcirculation/lib/bibcirculation_templates.py:5358 #: modules/bibcirculation/lib/bibcirculation_templates.py:5403 #: modules/bibcirculation/lib/bibcirculation_templates.py:5663 #: modules/bibcirculation/lib/bibcirculation_templates.py:5725 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5905 #: modules/bibcirculation/lib/bibcirculation_templates.py:6137 #: modules/bibcirculation/lib/bibcirculation_templates.py:6200 #: modules/bibcirculation/lib/bibcirculation_templates.py:8086 #: modules/bibcirculation/lib/bibcirculation_templates.py:8314 #: modules/bibcirculation/lib/bibcirculation_templates.py:8910 #: modules/bibcirculation/lib/bibcirculation_templates.py:9368 #: modules/bibcirculation/lib/bibcirculation_templates.py:10440 #: modules/bibcirculation/lib/bibcirculation_templates.py:10606 #: modules/bibcirculation/lib/bibcirculation_templates.py:11489 #: modules/bibcirculation/lib/bibcirculation_templates.py:12381 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13643 #: modules/bibcirculation/lib/bibcirculation_templates.py:13886 #: modules/bibcirculation/lib/bibcirculation_templates.py:13953 #: modules/bibcirculation/lib/bibcirculation_templates.py:14196 #: modules/bibcirculation/lib/bibcirculation_templates.py:14895 #: modules/bibcirculation/lib/bibcirculation_templates.py:16102 msgid "Email" msgstr "Email" #: modules/webcomment/lib/webcomment_templates.py:1535 #: modules/webcomment/lib/webcomment_templates.py:1564 msgid "User ID" msgstr "Identifiant d'utilisateur" #: modules/webcomment/lib/webcomment_templates.py:1537 msgid "Number positive votes" msgstr "Nombre de votes positifs" #: modules/webcomment/lib/webcomment_templates.py:1538 msgid "Number negative votes" msgstr "Nombre de votes négatifs" #: modules/webcomment/lib/webcomment_templates.py:1539 msgid "Total number votes" msgstr "Nombre total de votes" #: modules/webcomment/lib/webcomment_templates.py:1540 msgid "Total number of reports" msgstr "Nombre total de signalements" #: modules/webcomment/lib/webcomment_templates.py:1541 msgid "View all user's reported comments/reviews" msgstr "Afficher tous les commentaires/évaluations signalés de cet utilisateur" #: modules/webcomment/lib/webcomment_templates.py:1574 #, python-format msgid "This review has been reported %i times" msgstr "Cette évaluation a été signalée %i fois" #: modules/webcomment/lib/webcomment_templates.py:1576 #, python-format msgid "This comment has been reported %i times" msgstr "Ce commentaire a été signalé %i fois" #: modules/webcomment/lib/webcomment_templates.py:1819 msgid "Written by" msgstr "Écrit par" #: modules/webcomment/lib/webcomment_templates.py:1820 msgid "General informations" msgstr "Informations générales" #: modules/webcomment/lib/webcomment_templates.py:1821 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:652 msgid "Select" msgstr "Choisir" #: modules/webcomment/lib/webcomment_templates.py:1835 msgid "Delete selected reviews" msgstr "Effacer les évaluations sélectionnées" #: modules/webcomment/lib/webcomment_templates.py:1836 #: modules/webcomment/lib/webcomment_templates.py:1843 msgid "Suppress selected abuse report" msgstr "Supprimer les signalements d'abus sélectionnés" #: modules/webcomment/lib/webcomment_templates.py:1837 msgid "Undelete selected reviews" msgstr "Rétablir les évaluations sélectionnées" #: modules/webcomment/lib/webcomment_templates.py:1841 msgid "Undelete selected comments" msgstr "Rétablir les commentaires sélectionnés" #: modules/webcomment/lib/webcomment_templates.py:1842 msgid "Delete selected comments" msgstr "Effacer les commentaires sélectionnés" #: modules/webcomment/lib/webcomment_templates.py:1851 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:494 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:557 #: modules/bibcirculation/lib/bibcirculation_templates.py:1529 msgid "OK" msgstr "OK" #: modules/webcomment/lib/webcomment_templates.py:1857 #, python-format msgid "Here are the reported reviews of user %s" msgstr "Évaluations signalées de l'utilisateur %s" #: modules/webcomment/lib/webcomment_templates.py:1859 #, python-format msgid "Here are the reported comments of user %s" msgstr "Commentaires signalés de l'utilisateur %s" #: modules/webcomment/lib/webcomment_templates.py:1863 #, python-format msgid "Here is review %s" msgstr "Évaluation %s" #: modules/webcomment/lib/webcomment_templates.py:1865 #, python-format msgid "Here is comment %s" msgstr "Commentaire %s" #: modules/webcomment/lib/webcomment_templates.py:1868 #, python-format msgid "Here is review %(x_cmtID)s written by user %(x_user)s" msgstr "Évaluation %(x_cmtID)s écrit par l'utilisateur %(x_user)s" #: modules/webcomment/lib/webcomment_templates.py:1870 #, python-format msgid "Here is comment %(x_cmtID)s written by user %(x_user)s" msgstr "Commentaire %(x_cmtID)s écrit par l'utilisateur %(x_user)s" #: modules/webcomment/lib/webcomment_templates.py:1876 msgid "Here are all reported reviews sorted by the most reported" msgstr "Toutes les évaluations signalées triées par ordre décroissant" #: modules/webcomment/lib/webcomment_templates.py:1878 msgid "Here are all reported comments sorted by the most reported" msgstr "Tous les commentaires signalés triés par ordre décroissant" #: modules/webcomment/lib/webcomment_templates.py:1883 #, python-format msgid "Here are all reviews for record %i, sorted by the most reported" msgstr "" "Toutes les évaluations signalées pour la notice %i, triées par ordre " "décroissant" #: modules/webcomment/lib/webcomment_templates.py:1884 msgid "Show comments" msgstr "Voir les commentaires" #: modules/webcomment/lib/webcomment_templates.py:1886 #, python-format msgid "Here are all comments for record %i, sorted by the most reported" msgstr "" "Tous les commentaires signalés pour la notice %i, triés par ordre décroissant" #: modules/webcomment/lib/webcomment_templates.py:1887 msgid "Show reviews" msgstr "Voir les évaluations" #: modules/webcomment/lib/webcomment_templates.py:1912 #: modules/webcomment/lib/webcomment_templates.py:1936 #: modules/webcomment/lib/webcomment_templates.py:1962 msgid "comment ID" msgstr "Identifiant du commentaire" #: modules/webcomment/lib/webcomment_templates.py:1912 msgid "successfully deleted" msgstr "supprimé" #: modules/webcomment/lib/webcomment_templates.py:1936 msgid "successfully undeleted" msgstr "rétablic avec succès" #: modules/webcomment/lib/webcomment_templates.py:1962 msgid "successfully suppressed abuse report" msgstr "signalement d'abus supprimé" #: modules/webcomment/lib/webcomment_templates.py:1979 msgid "Not yet reviewed" msgstr "Pas encore évalué" #: modules/webcomment/lib/webcomment_templates.py:2047 #, python-format msgid "" "The following review was sent to %(CFG_SITE_NAME)s by %(user_nickname)s:" msgstr "" "L'évaluation suivante a été soumise sur %(CFG_SITE_NAME)s par " "%(user_nickname)s:" #: modules/webcomment/lib/webcomment_templates.py:2048 #, python-format msgid "" "The following comment was sent to %(CFG_SITE_NAME)s by %(user_nickname)s:" msgstr "" "Le commentaire suivant a été soumis sur %(CFG_SITE_NAME)s par " "%(user_nickname)s:" #: modules/webcomment/lib/webcomment_templates.py:2075 msgid "This is an automatic message, please don't reply to it." msgstr "Ceci est un message automatique, merci de ne pas y répondre." #: modules/webcomment/lib/webcomment_templates.py:2077 #, python-format msgid "To post another comment, go to <%(x_url)s> instead." msgstr "Pour poster un nouveau commentaire, allez à <%(x_url)s>." #: modules/webcomment/lib/webcomment_templates.py:2082 #, python-format msgid "To specifically reply to this comment, go to <%(x_url)s>" msgstr "Pour répondre spécifiquement à ce commentaire, allez à <%(x_url)s>" #: modules/webcomment/lib/webcomment_templates.py:2087 #, python-format msgid "To unsubscribe from this discussion, go to <%(x_url)s>" msgstr "Pour vous désinscrire de cette discussion, allez à <%(x_url)s>" #: modules/webcomment/lib/webcomment_templates.py:2091 #, python-format msgid "For any question, please use <%(CFG_SITE_SUPPORT_EMAIL)s>" msgstr "" "Pour d'autres questions, veuillez contacter <%(CFG_SITE_SUPPORT_EMAIL)s>" -#: modules/webcomment/lib/webcomment_webinterface.py:256 -#: modules/webcomment/lib/webcomment_webinterface.py:511 +#: modules/webcomment/lib/webcomment_webinterface.py:255 +#: modules/webcomment/lib/webcomment_webinterface.py:503 msgid "Record Not Found" -msgstr "Notice introuvable" +msgstr "Publication introuvable" -#: modules/webcomment/lib/webcomment_webinterface.py:335 -#: modules/webcomment/lib/webcomment_webinterface.py:573 -#: modules/webcomment/lib/webcomment_webinterface.py:650 +#: modules/webcomment/lib/webcomment_webinterface.py:334 +#: modules/webcomment/lib/webcomment_webinterface.py:565 +#: modules/webcomment/lib/webcomment_webinterface.py:642 msgid "Specified comment does not belong to this record" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:344 -#: modules/webcomment/lib/webcomment_webinterface.py:579 -#: modules/webcomment/lib/webcomment_webinterface.py:656 +#: modules/webcomment/lib/webcomment_webinterface.py:343 +#: modules/webcomment/lib/webcomment_webinterface.py:571 +#: modules/webcomment/lib/webcomment_webinterface.py:648 #, fuzzy msgid "You do not have access to the specified comment" msgstr "Vous n'avez pas l'autorisation d'effacer cette note." -#: modules/webcomment/lib/webcomment_webinterface.py:491 +#: modules/webcomment/lib/webcomment_webinterface.py:483 #: modules/websubmit/lib/websubmit_templates.py:2659 #: modules/websubmit/lib/websubmit_templates.py:2660 msgid "Add Comment" msgstr "Ajouter un commentaire" -#: modules/webcomment/lib/webcomment_webinterface.py:584 +#: modules/webcomment/lib/webcomment_webinterface.py:576 +#, fuzzy msgid "You cannot vote for a deleted comment" -msgstr "" +msgstr "Voir tous les commentaires signalés" -#: modules/webcomment/lib/webcomment_webinterface.py:661 +#: modules/webcomment/lib/webcomment_webinterface.py:653 #, fuzzy msgid "You cannot report a deleted comment" msgstr "Voir tous les commentaires signalés" -#: modules/webcomment/lib/webcomment_webinterface.py:788 -#: modules/webcomment/lib/webcomment_webinterface.py:828 +#: modules/webcomment/lib/webcomment_webinterface.py:780 +#: modules/webcomment/lib/webcomment_webinterface.py:820 msgid "Page Not Found" -msgstr "Page Introuvable" +msgstr "Page introuvable" -#: modules/webcomment/lib/webcomment_webinterface.py:789 +#: modules/webcomment/lib/webcomment_webinterface.py:781 msgid "The requested comment could not be found" -msgstr "Le commentaire demandé n'a pas été trouvé" +msgstr "Le commentaire est introuvable" -#: modules/webcomment/lib/webcomment_webinterface.py:809 +#: modules/webcomment/lib/webcomment_webinterface.py:801 +#, fuzzy msgid "You cannot access files of a deleted comment" -msgstr "" +msgstr "Voir tous les commentaires signalés" -#: modules/webcomment/lib/webcomment_webinterface.py:829 +#: modules/webcomment/lib/webcomment_webinterface.py:821 msgid "The requested file could not be found" -msgstr "Le fichier demandé n'a pas été trouvé" +msgstr "Le fichier est introuvable" #: modules/webcomment/web/admin/webcommentadmin.py:45 #: modules/webcomment/web/admin/webcommentadmin.py:59 #: modules/webcomment/web/admin/webcommentadmin.py:83 #: modules/webcomment/web/admin/webcommentadmin.py:128 #: modules/webcomment/web/admin/webcommentadmin.py:166 #: modules/webcomment/web/admin/webcommentadmin.py:194 #: modules/webcomment/web/admin/webcommentadmin.py:230 #: modules/webcomment/web/admin/webcommentadmin.py:268 msgid "WebComment Admin" msgstr "Administration de WebComment" #: modules/webcomment/web/admin/webcommentadmin.py:50 #: modules/webcomment/web/admin/webcommentadmin.py:88 #: modules/webcomment/web/admin/webcommentadmin.py:133 #: modules/webcomment/web/admin/webcommentadmin.py:199 #: modules/webcomment/web/admin/webcommentadmin.py:235 #: modules/webcomment/web/admin/webcommentadmin.py:273 #: modules/websearch/lib/websearch_webinterface.py:969 #: modules/websearch/web/admin/websearchadmin.py:1040 -#: modules/websession/lib/websession_webinterface.py:948 +#: modules/websession/lib/websession_webinterface.py:966 #: modules/webstyle/lib/webstyle_templates.py:583 #: modules/webjournal/web/admin/webjournaladmin.py:390 #: modules/bibcheck/web/admin/bibcheckadmin.py:333 msgid "Internal Error" msgstr "Erreur interne" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid "Delete/Undelete Reviews" msgstr "Supprimer/Rétablir des évaluations" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid "Delete/Undelete Comments" msgstr "Supprimer/Rétablir des commentaires" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid " or Suppress abuse reports" msgstr "or Supprimer des signalement d'abus" #: modules/webcomment/web/admin/webcommentadmin.py:244 msgid "View all reported users" msgstr "Afficher tous les utilisateurs signalés" #: modules/webcomment/web/admin/webcommentadmin.py:291 msgid "Delete comments" msgstr "Effacer des commentaires" #: modules/webcomment/web/admin/webcommentadmin.py:294 msgid "Suppress abuse reports" msgstr "Supprimer des signalement d'abus" #: modules/webcomment/web/admin/webcommentadmin.py:297 msgid "Undelete comments" msgstr "Rétablir les commentaires" #: modules/webmessage/lib/webmessage.py:127 msgid "The message could not be deleted." msgstr "Ce message n'a pas pu être supprimé." #: modules/webmessage/lib/webmessage.py:129 msgid "The message was successfully deleted." msgstr "Le message a été supprimé" #: modules/webmessage/lib/webmessage.py:146 msgid "Your mailbox has been emptied." msgstr "Tous les messages de votre boîte de réception ont été supprimés." #: modules/webmessage/lib/webmessage.py:347 #, python-format msgid "The chosen date (%(x_year)i/%(x_month)i/%(x_day)i) is invalid." msgstr "La date choisie (%(x_day)i.%(x_month)i.%(x_year)i) n'est pas valide." #: modules/webmessage/lib/webmessage.py:356 msgid "Please enter a user name or a group name." msgstr "Veuillez entrer un nom d'utilisateur ou de groupe." #: modules/webmessage/lib/webmessage.py:360 #, python-format msgid "" "Your message is too long, please edit it. Maximum size allowed is %i " "characters." msgstr "" "Votre message est trop long, veuillez l'éditer. La taille maximale est de %i " "caractères." #: modules/webmessage/lib/webmessage.py:375 #, python-format msgid "Group %s does not exist." msgstr "Le groupe %s n'existe pas." #: modules/webmessage/lib/webmessage.py:400 #, python-format msgid "User %s does not exist." msgstr "L'utilisateur %s n'existe pas." #: modules/webmessage/lib/webmessage.py:413 #: modules/webmessage/lib/webmessage_webinterface.py:147 #: modules/webmessage/lib/webmessage_webinterface.py:247 msgid "Write a message" msgstr "Écrire un message" #: modules/webmessage/lib/webmessage.py:428 msgid "" "Your message could not be sent to the following recipients due to their " "quota:" msgstr "" "Votre message n'a pas pu être envoyé aux destinataires suivants dont la " "boîte de réception est pleine:" #: modules/webmessage/lib/webmessage.py:432 msgid "Your message has been sent." msgstr "Votre message a été envoyé." #: modules/webmessage/lib/webmessage.py:439 #: modules/webmessage/lib/webmessage_templates.py:472 #: modules/webmessage/lib/webmessage_webinterface.py:87 #: modules/webmessage/lib/webmessage_webinterface.py:318 #: modules/webmessage/lib/webmessage_webinterface.py:366 #: modules/websession/lib/websession_templates.py:619 msgid "Your Messages" msgstr "Vos Messages" #: modules/webmessage/lib/webmessage_templates.py:86 #: modules/bibcirculation/lib/bibcirculation_templates.py:4465 msgid "Subject" msgstr "Sujet" #: modules/webmessage/lib/webmessage_templates.py:87 msgid "Sender" msgstr "Expéditeur" #: modules/webmessage/lib/webmessage_templates.py:96 msgid "No messages" msgstr "Pas de messages" #: modules/webmessage/lib/webmessage_templates.py:100 msgid "No subject" msgstr "Pas de sujet" #: modules/webmessage/lib/webmessage_templates.py:146 msgid "Write new message" msgstr "Écrire un nouveau message" #: modules/webmessage/lib/webmessage_templates.py:147 msgid "Delete All" msgstr "Effacer tout" #: modules/webmessage/lib/webmessage_templates.py:189 msgid "Re:" msgstr "Re:" #: modules/webmessage/lib/webmessage_templates.py:281 msgid "Send later?" msgstr "Envoyer plus tard?" #: modules/webmessage/lib/webmessage_templates.py:282 #: modules/websubmit/lib/websubmit_templates.py:3071 msgid "To:" msgstr "À:" #: modules/webmessage/lib/webmessage_templates.py:283 msgid "Users" msgstr "Utilisateurs" #: modules/webmessage/lib/webmessage_templates.py:284 msgid "Groups" msgstr "Groupes" #: modules/webmessage/lib/webmessage_templates.py:285 #: modules/webmessage/lib/webmessage_templates.py:447 #: modules/websubmit/lib/websubmit_templates.py:3072 msgid "Subject:" msgstr "Sujet:" #: modules/webmessage/lib/webmessage_templates.py:286 #: modules/websubmit/lib/websubmit_templates.py:3073 msgid "Message:" msgstr "Message:" #: modules/webmessage/lib/webmessage_templates.py:287 #: modules/websubmit/lib/websubmit_templates.py:3074 msgid "SEND" msgstr "ENVOYER" #: modules/webmessage/lib/webmessage_templates.py:446 msgid "From:" msgstr "De:" #: modules/webmessage/lib/webmessage_templates.py:448 msgid "Sent on:" msgstr "Envoyé le:" #: modules/webmessage/lib/webmessage_templates.py:449 msgid "Received on:" msgstr "Reçu le:" #: modules/webmessage/lib/webmessage_templates.py:450 msgid "Sent to:" msgstr "Envoyé à:" #: modules/webmessage/lib/webmessage_templates.py:451 msgid "Sent to groups:" msgstr "Envoyé aux groupes:" #: modules/webmessage/lib/webmessage_templates.py:452 msgid "REPLY" msgstr "RÉPONDRE" #: modules/webmessage/lib/webmessage_templates.py:453 msgid "DELETE" msgstr "SUPPRIMER" #: modules/webmessage/lib/webmessage_templates.py:506 msgid "Are you sure you want to empty your whole mailbox?" msgstr "" "Êtes-vous sûr de vouloir effacer tout le contenu de votre boîte de réception?" #: modules/webmessage/lib/webmessage_templates.py:568 #, python-format msgid "Quota used: %(x_nb_used)i messages out of max. %(x_nb_total)i" msgstr "Quota utilisé: %(x_nb_used)i messages sur max. %(x_nb_total)i" #: modules/webmessage/lib/webmessage_templates.py:586 msgid "Please select one or more:" msgstr "Veuillez choisir un ou plusieurs:" #: modules/webmessage/lib/webmessage_templates.py:617 msgid "Add to users" msgstr "Ajouter aux utilisateurs" #: modules/webmessage/lib/webmessage_templates.py:619 msgid "Add to groups" msgstr "Ajouter aux groupes" #: modules/webmessage/lib/webmessage_templates.py:622 msgid "No matching user" msgstr "Pas d'utilisateur correspondant" #: modules/webmessage/lib/webmessage_templates.py:624 #: modules/websession/lib/websession_templates.py:1840 msgid "No matching group" msgstr "Pas de groupe correspondant" #: modules/webmessage/lib/webmessage_templates.py:661 msgid "Find users or groups:" msgstr "Trouver des utilisateurs ou des groupes:" #: modules/webmessage/lib/webmessage_templates.py:662 msgid "Find a user" msgstr "Trouver un utilisateur" #: modules/webmessage/lib/webmessage_templates.py:663 msgid "Find a group" msgstr "Trouver un groupe" #: modules/webmessage/lib/webmessage_templates.py:678 #, python-format msgid "You have %(x_nb_new)s new messages out of %(x_nb_total)s messages" msgstr "" "Vous avez reçu %(x_nb_new)s nouveaux messages sur un total de\n" "%(x_nb_total)s messages" #: modules/webmessage/lib/webmessage_webinterface.py:82 #: modules/webmessage/lib/webmessage_webinterface.py:136 #: modules/webmessage/lib/webmessage_webinterface.py:233 #: modules/webmessage/lib/webmessage_webinterface.py:312 #: modules/webmessage/lib/webmessage_webinterface.py:360 #: modules/webmessage/lib/webmessage_webinterface.py:408 msgid "You are not authorized to use messages." msgstr "Vous n'êtes pas autorisé à utiliser les messages." #: modules/webmessage/lib/webmessage_webinterface.py:414 msgid "Read a message" msgstr "Lire un message" -#: modules/websearch/lib/search_engine.py:750 -#: modules/websearch/lib/search_engine.py:777 -#: modules/websearch/lib/search_engine.py:4533 -#: modules/websearch/lib/search_engine.py:4586 +#: modules/websearch/lib/search_engine.py:768 +#: modules/websearch/lib/search_engine.py:798 +#: modules/websearch/lib/search_engine.py:4603 +#: modules/websearch/lib/search_engine.py:4656 msgid "Search Results" -msgstr "Résultats de la recherche" +msgstr "Résultats" -#: modules/websearch/lib/search_engine.py:880 +#: modules/websearch/lib/search_engine.py:920 #: modules/websearch/lib/websearch_templates.py:1185 msgid "any day" msgstr "jour quelconque" -#: modules/websearch/lib/search_engine.py:886 +#: modules/websearch/lib/search_engine.py:926 #: modules/websearch/lib/websearch_templates.py:1197 msgid "any month" msgstr "mois quelconque" -#: modules/websearch/lib/search_engine.py:894 +#: modules/websearch/lib/search_engine.py:934 #: modules/websearch/lib/websearch_templates.py:1211 msgid "any year" msgstr "année quelconque" -#: modules/websearch/lib/search_engine.py:935 -#: modules/websearch/lib/search_engine.py:954 +#: modules/websearch/lib/search_engine.py:975 +#: modules/websearch/lib/search_engine.py:994 msgid "any public collection" msgstr "toutes les collections" -#: modules/websearch/lib/search_engine.py:939 +#: modules/websearch/lib/search_engine.py:979 msgid "remove this collection" -msgstr "enlever cette collection" +msgstr "supprimer cette collection" -#: modules/websearch/lib/search_engine.py:950 +#: modules/websearch/lib/search_engine.py:990 msgid "add another collection" msgstr "ajouter une nouvelle collection" -#: modules/websearch/lib/search_engine.py:960 -#: modules/websearch/lib/websearch_webcoll.py:591 +#: modules/websearch/lib/search_engine.py:1000 +#: modules/websearch/lib/search_engine.py:1156 +#: modules/websearch/lib/websearch_templates.py:1162 +#: modules/websearch/lib/websearch_webcoll.py:596 +msgid "OR" +msgstr "OU" + +#: modules/websearch/lib/search_engine.py:1000 +#: modules/websearch/lib/websearch_webcoll.py:596 msgid "rank by" msgstr "ordonner par" -#: modules/websearch/lib/search_engine.py:980 +#: modules/websearch/lib/search_engine.py:1020 +#: modules/websearch/lib/websearch_templates_epfl.py:1712 msgid "HTML brief" msgstr "HTML condensé" -#: modules/websearch/lib/search_engine.py:1093 -#: modules/websearch/lib/websearch_webcoll.py:561 +#: modules/websearch/lib/search_engine.py:1134 +#: modules/websearch/lib/websearch_webcoll.py:566 msgid "latest first" msgstr "les plus récents en premier" -#: modules/websearch/lib/search_engine.py:1702 +#: modules/websearch/lib/search_engine.py:1155 +#: modules/websearch/lib/websearch_templates.py:1161 +msgid "AND" +msgstr "ET" + +#: modules/websearch/lib/search_engine.py:1157 +#: modules/websearch/lib/websearch_templates.py:1163 +msgid "AND NOT" +msgstr "ET NON PAS" + +#: modules/websearch/lib/search_engine.py:1175 +#: modules/websearch/lib/websearch_templates.py:1111 +msgid "All of the words:" +msgstr "Tous les mots:" + +#: modules/websearch/lib/search_engine.py:1176 +#: modules/websearch/lib/websearch_templates.py:1113 +msgid "Any of the words:" +msgstr "Au moins un des mots:" + +#: modules/websearch/lib/search_engine.py:1177 +#: modules/websearch/lib/websearch_templates.py:1115 +msgid "Exact phrase:" +msgstr "Phrase exacte:" + +#: modules/websearch/lib/search_engine.py:1178 +#: modules/websearch/lib/websearch_templates.py:1117 +msgid "Partial phrase:" +msgstr "Phrase partielle:" + +#: modules/websearch/lib/search_engine.py:1179 +#: modules/websearch/lib/websearch_templates.py:1119 +msgid "Regular expression:" +msgstr "Expression régulière:" + +#: modules/websearch/lib/search_engine.py:1744 msgid "No values found." msgstr "Pas de résultat" -#: modules/websearch/lib/search_engine.py:1825 +#: modules/websearch/lib/search_engine.py:1867 #, fuzzy, python-format msgid "" "Warning: full-text search is only available for a subset of papers mostly " "from %(x_range_from_year)s-%(x_range_to_year)s." msgstr "" "Attention: la recherche dans les fichiers n'est disponible que pour un sous-" "ensemble des papiers, principalement pour 2006-2011." -#: modules/websearch/lib/search_engine.py:1829 +#: modules/websearch/lib/search_engine.py:1871 #, fuzzy, python-format msgid "" "Warning: figure caption search is only available for a subset of papers " "mostly from %(x_range_from_year)s-%(x_range_to_year)s." msgstr "" "Attention: la recherche dans les légendes des figures n'est disponible que " "pour un sous-ensemble des papiers, principalement pour 2008-2011." -#: modules/websearch/lib/search_engine.py:1838 +#: modules/websearch/lib/search_engine.py:1880 msgid "" "No phrase index available for fulltext yet, looking for word combination..." msgstr "" -"Aucun index de phrase disponible pour le texte intégral, recherche pour une " -"combinaison de mots..." +"No phrase index available for fulltext yet, looking for word combination..." -#: modules/websearch/lib/search_engine.py:1878 +#: modules/websearch/lib/search_engine.py:1920 #, python-format msgid "No exact match found for %(x_query1)s, using %(x_query2)s instead..." msgstr "" "Aucun résultat précis pour %(x_query1)s n'a été trouvé, remplacement par " "%(x_query2)s..." -#: modules/websearch/lib/search_engine.py:1888 -#: modules/websearch/lib/search_engine.py:1897 -#: modules/websearch/lib/search_engine.py:4505 -#: modules/websearch/lib/search_engine.py:4543 -#: modules/websearch/lib/search_engine.py:4594 +#: modules/websearch/lib/search_engine.py:1930 +#: modules/websearch/lib/search_engine.py:1939 +#: modules/websearch/lib/search_engine.py:4575 +#: modules/websearch/lib/search_engine.py:4613 +#: modules/websearch/lib/search_engine.py:4664 #: modules/websubmit/lib/websubmit_webinterface.py:110 #: modules/websubmit/lib/websubmit_webinterface.py:145 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:327 msgid "Requested record does not seem to exist." -msgstr "Désolé, cette notice n'existe pas." +msgstr "Désolé, cette publication n'existe pas." -#: modules/websearch/lib/search_engine.py:2019 +#: modules/websearch/lib/search_engine.py:2061 msgid "" "Search syntax misunderstood. Ignoring all parentheses in the query. If this " "doesn't help, please check your search and try again." msgstr "" -"Syntaxe de recherche non reconnue. Les parenthèses sont ignorées. En cas de " -"doute vérifiez votre recherche et réessayez." +"Erreur dans la syntaxe des termes de recherche. Les parenthèses ont été " +"ignorées." -#: modules/websearch/lib/search_engine.py:2341 +#: modules/websearch/lib/search_engine.py:2383 #, python-format msgid "" "No match found in collection %(x_collection)s. Other public collections gave " "%(x_url_open)s%(x_nb_hits)d hits%(x_url_close)s." msgstr "" "Aucun résultat n'a été trouvé dans la collection %(x_collection)s. Les " "autres collections publiques ont donné %(x_url_open)s%(x_nb_hits)d résultats" "%(x_url_close)s." -#: modules/websearch/lib/search_engine.py:2350 +#: modules/websearch/lib/search_engine.py:2392 msgid "" "No public collection matched your query. If you were looking for a non-" "public document, please choose the desired restricted collection first." msgstr "" "Aucune collection publique ne satisfait votre requête. Si vous recherchez " "des documents non publics, veuillez d'abord choisir la collection restreinte." -#: modules/websearch/lib/search_engine.py:2467 +#: modules/websearch/lib/search_engine.py:2509 #, python-format msgid "There are no records referring to %s." -msgstr "Il n'y a aucune notice se référant à %s." +msgstr "Aucune publication ne fait référence à %s." -#: modules/websearch/lib/search_engine.py:2469 +#: modules/websearch/lib/search_engine.py:2511 #, python-format msgid "There are no records cited by %s." -msgstr "Il n'y a aucune notice citée par %s." +msgstr "Aucune publication n'a été citée par %s." -#: modules/websearch/lib/search_engine.py:2474 +#: modules/websearch/lib/search_engine.py:2516 #, python-format msgid "No word index is available for %s." -msgstr "Aucun index des mots n'est disponible pour %s." +msgstr "Aucun mot indexé n'est disponible pour %s." -#: modules/websearch/lib/search_engine.py:2485 +#: modules/websearch/lib/search_engine.py:2527 #, python-format msgid "No phrase index is available for %s." -msgstr "Aucun index des phrases n'est disponible pour %s." +msgstr "Aucune phrase indexée n'est disponible pour %s." -#: modules/websearch/lib/search_engine.py:2530 +#: modules/websearch/lib/search_engine.py:2572 #, python-format msgid "" "Search term %(x_term)s inside index %(x_index)s did not match any record. " "Nearest terms in any collection are:" msgstr "" "Le terme de recherche %(x_term)s dans l'index %(x_index)s ne se trouve dans " -"aucune notice. Les termes les plus proches parmi toutes les collections sont:" +"aucune publication. Les termes les plus proches parmi toutes les collections " +"sont:" -#: modules/websearch/lib/search_engine.py:2534 +#: modules/websearch/lib/search_engine.py:2576 #, python-format msgid "" "Search term %s did not match any record. Nearest terms in any collection are:" msgstr "" -"Le terme de recherche %s ne se trouve dans aucune notice. Les termes les " -"plus proches parmi toutes les collections sont:" +"Le terme de recherche %s ne se trouve dans aucune publication. Les termes " +"les plus proches parmi toutes les collections sont:" -#: modules/websearch/lib/search_engine.py:3290 +#: modules/websearch/lib/search_engine.py:3333 #, python-format msgid "" "Sorry, sorting is allowed on sets of up to %d records only. Using default " "sort order." msgstr "" -"Désolé, le tri n'est pas autorisé sur un ensemble de plus de %d notices. Les " -"notices les plus récentes sont affichées en premier." +"Désolé, le tri n'est pas autorisé sur un ensemble de plus de %d " +"publications. Les publications les plus récentes sont affichées en premier." -#: modules/websearch/lib/search_engine.py:3314 +#: modules/websearch/lib/search_engine.py:3357 #, python-format msgid "" "Sorry, %s does not seem to be a valid sort option. Choosing title sort " "instead." msgstr "" "Désolé, %s n'est pas une option de tri valide. Le tri par titre est utilisé " "à la place." -#: modules/websearch/lib/search_engine.py:3507 -#: modules/websearch/lib/search_engine.py:3836 -#: modules/websearch/lib/search_engine.py:4014 -#: modules/websearch/lib/search_engine.py:4037 -#: modules/websearch/lib/search_engine.py:4045 -#: modules/websearch/lib/search_engine.py:4053 -#: modules/websearch/lib/search_engine.py:4099 +#: modules/websearch/lib/search_engine.py:3552 +#: modules/websearch/lib/search_engine.py:3881 +#: modules/websearch/lib/search_engine.py:4059 +#: modules/websearch/lib/search_engine.py:4082 +#: modules/websearch/lib/search_engine.py:4090 +#: modules/websearch/lib/search_engine.py:4098 +#: modules/websearch/lib/search_engine.py:4144 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:325 msgid "The record has been deleted." -msgstr "La notice a été supprimée." +msgstr "La publication a été supprimée." -#: modules/websearch/lib/search_engine.py:3735 +#: modules/websearch/lib/search_engine.py:3780 msgid "Use different search terms." -msgstr "Utiliser d'autres termes de recherche" +msgstr "Utiliser différents termes de recherche" + +#: modules/websearch/lib/search_engine.py:4580 +#: modules/websearch/lib/websearch_templates.py:804 +#: modules/websearch/lib/websearch_templates.py:882 +#: modules/websearch/lib/websearch_templates.py:1005 +#: modules/websearch/lib/websearch_templates.py:1963 +#: modules/websearch/lib/websearch_templates.py:2054 +#: modules/websearch/lib/websearch_templates.py:2111 +#: modules/websearch/lib/websearch_templates.py:2168 +#: modules/websearch/lib/websearch_templates.py:2207 +#: modules/websearch/lib/websearch_templates.py:2230 +#: modules/websearch/lib/websearch_templates.py:2261 +#: modules/websearch/lib/websearch_templates_epfl.py:744 +#: modules/websearch/lib/websearch_templates_epfl.py:1318 +#: modules/websearch/lib/websearch_templates_epfl.py:1341 +#: modules/websearch/lib/websearch_templates_epfl.py:1372 +#: modules/webstyle/lib/webstyle_templates_epfl.py:459 +msgid "Browse" +msgstr "Parcourir" -#: modules/websearch/lib/search_engine.py:4815 +#: modules/websearch/lib/search_engine.py:4885 msgid "No match within your time limits, discarding this condition..." msgstr "" "Pas de résultat pour l'intervalle de temps spécifé, la condition n'est pas " "prise en compte..." -#: modules/websearch/lib/search_engine.py:4842 +#: modules/websearch/lib/search_engine.py:4912 msgid "No match within your search limits, discarding this condition..." msgstr "" "Pas de résultat pour les limites spécifiées, la condition n'est pas prise en " "compte..." #: modules/websearch/lib/websearchadminlib.py:3374 msgid "Information" msgstr "Informations" #: modules/websearch/lib/websearchadminlib.py:3375 msgid "References" msgstr "Références" #: modules/websearch/lib/websearchadminlib.py:3376 msgid "Citations" msgstr "Citations" #: modules/websearch/lib/websearchadminlib.py:3377 msgid "Keywords" msgstr "Mot clé" #: modules/websearch/lib/websearchadminlib.py:3378 msgid "Discussion" msgstr "Discussion" #: modules/websearch/lib/websearchadminlib.py:3379 msgid "Usage statistics" msgstr "Statistiques d'utilisation" #: modules/websearch/lib/websearchadminlib.py:3380 msgid "Files" msgstr "Fichiers" #: modules/websearch/lib/websearchadminlib.py:3381 msgid "Plots" msgstr "Graphiques" #: modules/websearch/lib/websearchadminlib.py:3382 msgid "Holdings" msgstr "Exemplaires" #: modules/websearch/lib/websearch_templates.py:469 #, python-format msgid "Search on %(x_CFG_SITE_NAME_INTL)s" msgstr "Rechercher sur %(x_CFG_SITE_NAME_INTL)s" #: modules/websearch/lib/websearch_templates.py:693 #: modules/websearch/lib/websearch_templates.py:842 #, python-format msgid "Search %s records for:" msgstr "Chercher dans %s notices:" #: modules/websearch/lib/websearch_templates.py:745 msgid "less" msgstr "moins" #: modules/websearch/lib/websearch_templates.py:746 #: modules/websearch/lib/websearch_templates.py:1506 #: modules/websearch/lib/websearch_templates.py:3708 #: modules/websearch/lib/websearch_templates.py:3785 #: modules/websearch/lib/websearch_templates.py:3845 +#: modules/websearch/lib/websearch_templates_epfl.py:952 +#: modules/websearch/lib/websearch_templates_epfl.py:2256 msgid "more" -msgstr "davantage" +msgstr "Plus de publications" #: modules/websearch/lib/websearch_templates.py:751 #, python-format msgid "Example: %(x_sample_search_query)s" msgstr "Exemple: %(x_sample_search_query)s" #: modules/websearch/lib/websearch_templates.py:763 #: modules/websearch/lib/websearch_templates.py:2127 #, python-format msgid "Search in %(x_collection_name)s" msgstr "Rechercher dans %(x_collection_name)s" #: modules/websearch/lib/websearch_templates.py:767 #: modules/websearch/lib/websearch_templates.py:2131 msgid "Search everywhere" msgstr "Rechercher partout" #: modules/websearch/lib/websearch_templates.py:801 #: modules/websearch/lib/websearch_templates.py:878 #: modules/websearch/lib/websearch_templates.py:2099 #: modules/websearch/lib/websearch_templates.py:2157 +#: modules/websearch/lib/websearch_templates_epfl.py:633 +#: modules/websearch/lib/websearch_templates_epfl.py:1283 msgid "Advanced Search" msgstr "Recherche avancée" -#: modules/websearch/lib/websearch_templates.py:939 -#, python-format -msgid "Search %s records for" -msgstr "Chercher dans %s notices:" - -#: modules/websearch/lib/websearch_templates.py:990 -#: modules/websearch/lib/websearch_templates.py:2015 -msgid "Simple Search" -msgstr "Recherche simple" +#: modules/websearch/lib/websearch_templates.py:803 +#: modules/websearch/lib/websearch_templates.py:881 +#: modules/websearch/lib/websearch_templates.py:1004 +#: modules/websearch/lib/websearch_templates.py:1960 +#: modules/websearch/lib/websearch_templates.py:2053 +#: modules/websearch/lib/websearch_templates.py:2110 +#: modules/websearch/lib/websearch_templates.py:2167 +#: modules/webstyle/lib/webstyle_templates.py:431 +#: modules/webstyle/lib/webstyle_templates.py:499 +#: modules/webstyle/lib/webdoc_tests.py:86 +#: modules/bibedit/lib/bibeditmulti_templates.py:296 +#: modules/bibcirculation/lib/bibcirculation_templates.py:1819 +#: modules/bibcirculation/lib/bibcirculation_templates.py:1877 +#: modules/bibcirculation/lib/bibcirculation_templates.py:7673 +#: modules/bibcirculation/lib/bibcirculation_templates.py:8240 +#: modules/bibcirculation/lib/bibcirculation_templates.py:14050 +#: modules/bibcirculation/lib/bibcirculation_templates.py:15528 +#: modules/bibcirculation/lib/bibcirculation_templates.py:15686 +#: modules/bibcirculation/lib/bibcirculation_templates.py:16648 +#: modules/bibknowledge/lib/bibknowledge_templates.py:394 +#: modules/webbasket/lib/webbasket_templates_epfl.py:217 +#: modules/websearch/lib/websearch_templates_epfl.py:631 +#: modules/websearch/lib/websearch_templates_epfl.py:743 +#: modules/websearch/lib/websearch_templates_epfl.py:1281 +#: modules/webstyle/lib/webstyle_templates_epfl.py:458 +msgid "Search" +msgstr "Rechercher" + +#: modules/websearch/lib/websearch_templates.py:805 +#: modules/websearch/lib/websearch_templates.py:883 +#: modules/websearch/lib/websearch_templates.py:1006 +#: modules/websearch/lib/websearch_templates.py:2058 +#: modules/websearch/lib/websearch_templates.py:2115 +#: modules/websearch/lib/websearch_templates.py:2172 +#: modules/websearch/lib/websearch_templates_epfl.py:632 +#: modules/websearch/lib/websearch_templates_epfl.py:745 +#: modules/websearch/lib/websearch_templates_epfl.py:1282 +msgid "Search Tips" +msgstr "Conseils de recherche" + +#: modules/websearch/lib/websearch_templates.py:939 +#: modules/websearch/lib/websearch_templates_epfl.py:678 +#, python-format +msgid "Search %s records for" +msgstr "Chercher parmi %s notices:" + +#: modules/websearch/lib/websearch_templates.py:990 +#: modules/websearch/lib/websearch_templates.py:2015 +#: modules/websearch/lib/websearch_templates_epfl.py:729 +msgid "Simple Search" +msgstr "Recherche simple" #: modules/websearch/lib/websearch_templates.py:1023 +#: modules/websearch/lib/websearch_templates_epfl.py:762 msgid "Search options:" msgstr "Options de recherche:" #: modules/websearch/lib/websearch_templates.py:1070 #: modules/websearch/lib/websearch_templates.py:2253 +#: modules/websearch/lib/websearch_templates_epfl.py:809 +#: modules/websearch/lib/websearch_templates_epfl.py:1364 msgid "Added/modified since:" msgstr "Ajouté/modifié depuis:" #: modules/websearch/lib/websearch_templates.py:1071 #: modules/websearch/lib/websearch_templates.py:2254 +#: modules/websearch/lib/websearch_templates_epfl.py:810 +#: modules/websearch/lib/websearch_templates_epfl.py:1365 msgid "until:" msgstr "jusqu'à:" #: modules/websearch/lib/websearch_templates.py:1076 #: modules/websearch/lib/websearch_templates.py:2296 +#: modules/websearch/lib/websearch_templates_epfl.py:815 +#: modules/websearch/lib/websearch_templates_epfl.py:1407 msgid "Sort by:" msgstr "Trier par:" #: modules/websearch/lib/websearch_templates.py:1077 #: modules/websearch/lib/websearch_templates.py:2297 +#: modules/websearch/lib/websearch_templates_epfl.py:816 +#: modules/websearch/lib/websearch_templates_epfl.py:1408 msgid "Display results:" msgstr "Afficher:" #: modules/websearch/lib/websearch_templates.py:1078 #: modules/websearch/lib/websearch_templates.py:2298 +#: modules/websearch/lib/websearch_templates_epfl.py:817 +#: modules/websearch/lib/websearch_templates_epfl.py:1409 msgid "Output format:" msgstr "Format de sortie:" #: modules/websearch/lib/websearch_templates.py:1238 msgid "Added since:" msgstr "Ajouté depuis:" #: modules/websearch/lib/websearch_templates.py:1239 msgid "Modified since:" msgstr "Modifié depuis:" +#: modules/websearch/lib/websearch_templates.py:1275 +msgid "Narrow by collection:" +msgstr "Limiter par collection:" + #: modules/websearch/lib/websearch_templates.py:1276 msgid "Focus on:" msgstr "Focaliser sur:" #: modules/websearch/lib/websearch_templates.py:1339 msgid "restricted" msgstr "restreint" #: modules/websearch/lib/websearch_templates.py:1366 msgid "Search also:" msgstr "Rechercher également dans:" #: modules/websearch/lib/websearch_templates.py:1437 msgid "" "This collection is restricted. If you are authorized to access it, please " "click on the Search button." msgstr "" "L'accès à cette collection est restreint. Si vous êtes autorisé à y " "accéder,\n" "cliquez sur le bouton Recherche." #: modules/websearch/lib/websearch_templates.py:1452 msgid "" "This is a hosted external collection. Please click on the Search button to " "see its content." msgstr "" "Ceci est une collection externe. Merci de cliquer sur le bouton \"Recherche" "\" pour afficher son contenu." #: modules/websearch/lib/websearch_templates.py:1467 msgid "This collection does not contain any document yet." msgstr "Cette collection ne contient pas encore de document." #: modules/websearch/lib/websearch_templates.py:1521 msgid "Latest additions:" msgstr "Derniers ajouts:" #: modules/websearch/lib/websearch_templates.py:1624 #: modules/websearch/lib/websearch_templates.py:3359 #, python-format msgid "Cited by %i records" msgstr "Cité par: %i notices" #: modules/websearch/lib/websearch_templates.py:1690 +#: modules/websearch/lib/websearch_templates_epfl.py:1028 #, python-format msgid "Words nearest to %(x_word)s inside %(x_field)s in any collection are:" msgstr "" "Les mots les plus proches de %(x_word)s dans %(x_field)s parmi toutes les " "collections sont:" #: modules/websearch/lib/websearch_templates.py:1693 +#: modules/websearch/lib/websearch_templates_epfl.py:1031 #, python-format msgid "Words nearest to %(x_word)s in any collection are:" msgstr "" "Les mots les plus proches de %(x_word)s parmi toutes les collections sont:" #: modules/websearch/lib/websearch_templates.py:1785 +#: modules/websearch/lib/websearch_templates_epfl.py:1109 msgid "Hits" msgstr "Résultats" #: modules/websearch/lib/websearch_templates.py:1864 #: modules/websearch/lib/websearch_templates.py:2516 #: modules/websearch/lib/websearch_templates.py:2706 #: modules/bibedit/lib/bibeditmulti_templates.py:577 +#: modules/websearch/lib/websearch_templates_epfl.py:1188 msgid "next" msgstr "suivant" #: modules/websearch/lib/websearch_templates.py:2202 +#: modules/websearch/lib/websearch_templates_epfl.py:1313 msgid "collections" msgstr "collections" #: modules/websearch/lib/websearch_templates.py:2224 +#: modules/websearch/lib/websearch_templates_epfl.py:1335 msgid "Limit to:" msgstr "Limiter à:" #: modules/websearch/lib/websearch_templates.py:2266 -#: modules/websearch/lib/websearch_webcoll.py:609 +#: modules/websearch/lib/websearch_webcoll.py:614 +#: modules/websearch/lib/websearch_templates_epfl.py:1377 +#: modules/websearch/lib/websearch_templates_epfl.py:1779 msgid "results" msgstr "résultats" #: modules/websearch/lib/websearch_templates.py:2302 -#: modules/websearch/lib/websearch_webcoll.py:579 +#: modules/websearch/lib/websearch_webcoll.py:584 +#: modules/websearch/lib/websearch_templates_epfl.py:1413 msgid "asc." msgstr "croissant" #: modules/websearch/lib/websearch_templates.py:2305 -#: modules/websearch/lib/websearch_webcoll.py:580 +#: modules/websearch/lib/websearch_webcoll.py:585 +#: modules/websearch/lib/websearch_templates_epfl.py:1416 msgid "desc." msgstr "décroissant" #: modules/websearch/lib/websearch_templates.py:2311 -#: modules/websearch/lib/websearch_webcoll.py:624 +#: modules/websearch/lib/websearch_webcoll.py:629 +#: modules/websearch/lib/websearch_templates_epfl.py:1422 msgid "single list" msgstr "liste unique" #: modules/websearch/lib/websearch_templates.py:2314 -#: modules/websearch/lib/websearch_webcoll.py:623 +#: modules/websearch/lib/websearch_webcoll.py:628 +#: modules/websearch/lib/websearch_templates_epfl.py:1425 msgid "split by collection" msgstr "regrouper par collection" #: modules/websearch/lib/websearch_templates.py:2352 msgid "MARC tag" msgstr "Champ MARC" #: modules/websearch/lib/websearch_templates.py:2467 #: modules/websearch/lib/websearch_templates.py:2472 #: modules/websearch/lib/websearch_templates.py:2650 #: modules/websearch/lib/websearch_templates.py:2662 #: modules/websearch/lib/websearch_templates.py:2983 #: modules/websearch/lib/websearch_templates.py:2992 +#: modules/websearch/lib/websearch_templates_epfl.py:1761 +#: modules/websearch/lib/websearch_templates_epfl.py:1958 +#: modules/websearch/lib/websearch_templates_epfl.py:1967 #, python-format msgid "%s records found" msgstr "%s notices trouvées" #: modules/websearch/lib/websearch_templates.py:2499 #: modules/websearch/lib/websearch_templates.py:2689 #: modules/bibedit/lib/bibeditmulti_templates.py:575 msgid "begin" msgstr "début" #: modules/websearch/lib/websearch_templates.py:2504 #: modules/websearch/lib/websearch_templates.py:2694 #: modules/websubmit/lib/websubmit_templates.py:1235 #: modules/bibedit/lib/bibeditmulti_templates.py:576 msgid "previous" msgstr "précédent" #: modules/websearch/lib/websearch_templates.py:2523 #: modules/websearch/lib/websearch_templates.py:2713 msgid "end" msgstr "fin" #: modules/websearch/lib/websearch_templates.py:2543 #: modules/websearch/lib/websearch_templates.py:2733 msgid "jump to record:" msgstr "aller vers la notice:" #: modules/websearch/lib/websearch_templates.py:2556 #: modules/websearch/lib/websearch_templates.py:2746 #, python-format msgid "Search took %s seconds." msgstr "La recherche a duré %s secondes." #: modules/websearch/lib/websearch_templates.py:2950 +#: modules/websearch/lib/websearch_templates_epfl.py:1925 #, python-format msgid "" "%(x_fmt_open)sResults overview:%(x_fmt_close)s Found %(x_nb_records)s " "records in %(x_nb_seconds)s seconds." msgstr "" -"%(x_fmt_open)sAperçu des résultats:%(x_fmt_close)s Trouvé %(x_nb_records)s " -"notices en %(x_nb_seconds)s secondes." +"%(x_fmt_open)sVue d'ensemble sur les résultats:%(x_fmt_close)s Trouvé " +"%(x_nb_records)s notices en %(x_nb_seconds)s secondes." #: modules/websearch/lib/websearch_templates.py:2962 +#: modules/websearch/lib/websearch_templates_epfl.py:1937 #, python-format msgid "%(x_fmt_open)sResults overview%(x_fmt_close)s" -msgstr "%(x_fmt_open)sAperçu des résultats%(x_fmt_close)s" +msgstr "%(x_fmt_open)sVue d'ensemble sur les résultats%(x_fmt_close)s" #: modules/websearch/lib/websearch_templates.py:2970 +#: modules/websearch/lib/websearch_templates_epfl.py:1945 #, python-format msgid "" "%(x_fmt_open)sResults overview:%(x_fmt_close)s Found at least " "%(x_nb_records)s records in %(x_nb_seconds)s seconds." msgstr "" -"%(x_fmt_open)sAperçu des résultats:%(x_fmt_close)s Trouvé au moins " +"%(x_fmt_open)sVue d'ensemble sur les résultats:%(x_fmt_close)s Trouvé " "%(x_nb_records)s notices en %(x_nb_seconds)s secondes." #: modules/websearch/lib/websearch_templates.py:3047 msgid "No results found..." msgstr "Aucun résultat trouvé..." #: modules/websearch/lib/websearch_templates.py:3080 +#: modules/websearch/lib/websearch_templates_epfl.py:2002 msgid "" "Boolean query returned no hits. Please combine your search terms differently." msgstr "" "La requête booléenne n'a rien donné. Essayez de combiner les termes de " "recherche différemment." #: modules/websearch/lib/websearch_templates.py:3112 +#: modules/websearch/lib/websearch_templates_epfl.py:2034 msgid "See also: similar author names" msgstr "Voir aussi: noms d'auteurs similaires" #: modules/websearch/lib/websearch_templates.py:3360 msgid "Cited by 1 record" msgstr "Cité par 1 notice" #: modules/websearch/lib/websearch_templates.py:3370 #, python-format msgid "%i comments" msgstr "%i commentaires" #: modules/websearch/lib/websearch_templates.py:3371 msgid "1 comment" msgstr "1 commentaire" #: modules/websearch/lib/websearch_templates.py:3381 #, python-format msgid "%i reviews" msgstr "%i évaluations" #: modules/websearch/lib/websearch_templates.py:3382 msgid "1 review" msgstr "1 évaluation" #: modules/websearch/lib/websearch_templates.py:3525 #: modules/websearch/lib/websearch_webinterface.py:986 #, python-format msgid "Collection %s Not Found" msgstr "Collection %s introuvable" #: modules/websearch/lib/websearch_templates.py:3537 #: modules/websearch/lib/websearch_webinterface.py:982 +#: modules/websearch/lib/websearch_templates_epfl.py:2123 #, python-format msgid "Sorry, collection %s does not seem to exist." -msgstr "Désolé, la collection %s n'existe pas." +msgstr "Désolé, la collection %s n'existe pas" #: modules/websearch/lib/websearch_templates.py:3539 #: modules/websearch/lib/websearch_webinterface.py:983 +#: modules/websearch/lib/websearch_templates_epfl.py:2125 #, python-format msgid "You may want to start browsing from %s." msgstr "Vous pouvez recommencer à chercher depuis %s." #: modules/websearch/lib/websearch_templates.py:3566 #, python-format msgid "" "Set up a personal %(x_url1_open)semail alert%(x_url1_close)s\n" " or subscribe to the %(x_url2_open)sRSS feed" "%(x_url2_close)s." msgstr "" "Abonnez-vous à une %(x_url1_open)salerte email%(x_url1_close)s " "personnalisée\n" "ou inscrivez-vous via le %(x_url2_open)sflux RSS%(x_url2_close)s." #: modules/websearch/lib/websearch_templates.py:3573 #, python-format msgid "Subscribe to the %(x_url2_open)sRSS feed%(x_url2_close)s." msgstr "S'abonner au %(x_url2_open)sflux RSS%(x_url2_close)s." #: modules/websearch/lib/websearch_templates.py:3582 msgid "Interested in being notified about new results for this query?" msgstr "Vous désirez être averti des nouveaux résultats pour cette recherche?" #: modules/websearch/lib/websearch_templates.py:3701 +#: modules/websearch/lib/websearch_templates_epfl.py:2249 msgid "People who downloaded this document also downloaded:" msgstr "Les utilisateurs qui ont téléchargé ce document ont aussi téléchargé:" #: modules/websearch/lib/websearch_templates.py:3717 +#: modules/websearch/lib/websearch_templates_epfl.py:2265 msgid "People who viewed this page also viewed:" msgstr "Les utilisateurs qui ont vu cette page ont aussi vu:" #: modules/websearch/lib/websearch_templates.py:3771 #, python-format msgid "Cited by: %s records" msgstr "Cité par: %s notices" #: modules/websearch/lib/websearch_templates.py:3838 #, python-format msgid "Co-cited with: %s records" msgstr "Co-cité avec: %s notices" #: modules/websearch/lib/websearch_templates.py:3880 #, python-format msgid ".. of which self-citations: %s records" msgstr "parmi lesquelles auto-citations: %s notices" #: modules/websearch/lib/websearch_templates.py:3925 +#: modules/websearch/lib/websearch_templates_epfl.py:2315 msgid "Papers:" msgstr "Articles:" #: modules/websearch/lib/websearch_templates.py:3928 +#: modules/websearch/lib/websearch_templates_epfl.py:2318 msgid "downloaded" msgstr "telechargé" #: modules/websearch/lib/websearch_templates.py:3929 +#: modules/websearch/lib/websearch_templates_epfl.py:2319 msgid "times" msgstr "fois" #: modules/websearch/lib/websearch_templates.py:3962 +#: modules/websearch/lib/websearch_templates_epfl.py:2353 msgid "Affiliations:" msgstr "Affiliations:" #: modules/websearch/lib/websearch_templates.py:3981 +#: modules/websearch/lib/websearch_templates_epfl.py:2372 msgid "Frequent keywords:" msgstr "Mots clés fréquents:" #: modules/websearch/lib/websearch_templates.py:4002 +#: modules/websearch/lib/websearch_templates_epfl.py:2393 msgid "Frequent co-authors:" msgstr "Co-auteurs fréquents:" #: modules/websearch/lib/websearch_templates.py:4022 +#: modules/websearch/lib/websearch_templates_epfl.py:2413 msgid "Citations:" msgstr "Citations:" #: modules/websearch/lib/websearch_templates.py:4052 msgid "Citation summary results" msgstr "Résultats du résumé des citations" #: modules/websearch/lib/websearch_templates.py:4057 msgid "Total number of citable papers analyzed:" msgstr "Nombre d'articles analysés:" #: modules/websearch/lib/websearch_templates.py:4080 msgid "Total number of citations:" msgstr "Nombre de citations:" #: modules/websearch/lib/websearch_templates.py:4085 msgid "Average citations per paper:" msgstr "Moyenne des citations par rapport" #: modules/websearch/lib/websearch_templates.py:4090 msgid "Breakdown of papers by citations:" msgstr "Répartition des documents par citations" #: modules/websearch/lib/websearch_templates.py:4123 msgid "Additional Citation Metrics" msgstr "Métriques de Citations Additionnelles" #: modules/websearch/lib/websearch_webinterface.py:584 msgid "You are not authorized to view this area." msgstr "Vous n'avez pas l'autorisation de voir cette page." #: modules/websearch/lib/websearch_webinterface.py:988 msgid "Not found" msgstr "Notice introuvable" #: modules/websearch/lib/websearch_external_collections.py:143 msgid "in" msgstr "dans" #: modules/websearch/lib/websearch_external_collections_templates.py:51 msgid "" "Haven't found what you were looking for? Try your search on other servers:" msgstr "" "Vous n'avez pas trouvé ce que vous avez cherché? Essayez votre requête sur " "d'autres serveurs:" #: modules/websearch/lib/websearch_external_collections_templates.py:79 msgid "External collections results overview:" msgstr "Revue des résultats des collections externes:" #: modules/websearch/lib/websearch_external_collections_templates.py:119 msgid "Search timed out." msgstr "La recherche a dépassé le délai d'attente." #: modules/websearch/lib/websearch_external_collections_templates.py:120 msgid "" "The external search engine has not responded in time. You can check its " "results here:" msgstr "" "Le moteur de recherche externe n'a pas répondu dans les délais. Vous pouvez " "vérifier ses résultats ici:" #: modules/websearch/lib/websearch_external_collections_templates.py:145 #: modules/websearch/lib/websearch_external_collections_templates.py:153 #: modules/websearch/lib/websearch_external_collections_templates.py:166 msgid "No results found." msgstr "Aucun résultat trouvé." #: modules/websearch/lib/websearch_external_collections_templates.py:149 #, python-format msgid "%s results found" msgstr "%s résultats trouvés" #: modules/websearch/lib/websearch_external_collections_templates.py:151 #, python-format msgid "%s seconds" msgstr "%s secondes" -#: modules/websearch/lib/websearch_webcoll.py:645 +#: modules/websearch/lib/websearch_webcoll.py:650 msgid "brief" msgstr "condensé" #: modules/websession/lib/webaccount.py:115 #, python-format msgid "" "You are logged in as guest. You may want to %(x_url_open)slogin" "%(x_url_close)s as a regular user." msgstr "" "Vous êtes identifié comme invité. Vous pouvez vous %(x_url_open)sidentifier" "%(x_url_close)s en tant qu'utilisateur." #: modules/websession/lib/webaccount.py:119 #, python-format msgid "" "The %(x_fmt_open)sguest%(x_fmt_close)s users need to %(x_url_open)sregister" "%(x_url_close)s first" msgstr "" "Les %(x_fmt_open)sinvités%(x_fmt_close)s doivent d'abord " "%(x_url_open)s'enregistrer%(x_url_close)s." #: modules/websession/lib/webaccount.py:124 msgid "No queries found" msgstr "Pas de requête trouvée" #: modules/websession/lib/webaccount.py:371 msgid "" "This collection is restricted. If you think you have right to access it, " "please authenticate yourself." msgstr "" "Cette collection est restreinte d'accès. Identifiez-vous pour y accéder." #: modules/websession/lib/webaccount.py:372 msgid "" "This file is restricted. If you think you have right to access it, please " "authenticate yourself." msgstr "L'accès à ce fichier est restreint. Identifiez-vous pour y accéder." #: modules/websession/lib/websession_templates.py:92 msgid "External account settings" msgstr "Paramètres de compte externe" #: modules/websession/lib/websession_templates.py:94 #, python-format msgid "" "You can consult the list of your external groups directly in the " "%(x_url_open)sgroups page%(x_url_close)s." msgstr "" "Vous pouvez consulter la liste de vos groupes externes directement sur\n" "la %(x_url_open)spage des groupes%(x_url_close)s." #: modules/websession/lib/websession_templates.py:98 msgid "External user groups" msgstr "Groupes utilisateurs externes" #: modules/websession/lib/websession_templates.py:157 msgid "" "If you want to change your email or set for the first time your nickname, " "please set new values in the form below." msgstr "" "Pour changer votre adresse email ou choisir votre pseudonyme la première " "fois,\n" "utilisez les champs ci-dessous." #: modules/websession/lib/websession_templates.py:158 msgid "Edit login credentials" msgstr "Modifier les données d'identification" #: modules/websession/lib/websession_templates.py:164 msgid "New email address" msgstr "Nouvelle adresse email" #: modules/websession/lib/websession_templates.py:165 #: modules/websession/lib/websession_templates.py:213 #: modules/websession/lib/websession_templates.py:1048 msgid "mandatory" msgstr "obligatoire" #: modules/websession/lib/websession_templates.py:168 msgid "Set new values" msgstr "Enregistrer les nouvelles valeurs" #: modules/websession/lib/websession_templates.py:172 msgid "" "Since this is considered as a signature for comments and reviews, once set " "it can not be changed." msgstr "" "Puisque ce nom est considéré comme une signature pour les commentaires et " "les évaluations, il n'est pas possible\n" "de le changer une fois choisi." #: modules/websession/lib/websession_templates.py:212 msgid "" "If you want to change your password, please enter the old one and set the " "new value in the form below." msgstr "" "Pour changer votre adresse email ou votre mot de passe, utilisez le\n" "formulaire ci-dessous." #: modules/websession/lib/websession_templates.py:214 msgid "Old password" msgstr "Ancien mot de passe" #: modules/websession/lib/websession_templates.py:215 msgid "New password" msgstr "Nouveau mot de passe" #: modules/websession/lib/websession_templates.py:217 #: modules/websession/lib/websession_templates.py:1049 msgid "optional" msgstr "optionnel" #: modules/websession/lib/websession_templates.py:219 #: modules/websession/lib/websession_templates.py:1052 msgid "The password phrase may contain punctuation, spaces, etc." msgstr "Le mot de passe peut contenir de la ponctuation, des espaces, etc." #: modules/websession/lib/websession_templates.py:220 msgid "You must fill the old password in order to set a new one." msgstr "Vous devez entrer l'ancien mot de passe pour en choisir un nouveau." #: modules/websession/lib/websession_templates.py:221 msgid "Retype password" msgstr "Inscrivez à nouveau votre mot de passe" #: modules/websession/lib/websession_templates.py:222 msgid "Set new password" msgstr "Enregistrer nouveau mot de passe" #: modules/websession/lib/websession_templates.py:227 #, python-format msgid "" "If you are using a lightweight CERN account you can\n" " %(x_url_open)sreset the password%(x_url_close)s." msgstr "" "Si vous utilisez un compte CERN \"lightweight\", vous pouvez\n" "%(x_url_open)sréinitialiser le mot de passe%(x_url_close)s." #: modules/websession/lib/websession_templates.py:233 #, python-format msgid "" "You can change or reset your CERN account password by means of the " "%(x_url_open)sCERN account system%(x_url_close)s." msgstr "" "Vous pouvez changer ou réinitialiser votre mot de passe CERN\n" "directement sur la %(x_url_open)spage de gestion des comptes\n" "CERN%(x_url_close)s." #: modules/websession/lib/websession_templates.py:259 msgid "Edit cataloging interface settings" msgstr "Modifier les préférences de l'interface de cataloguage" #: modules/websession/lib/websession_templates.py:260 #: modules/websession/lib/websession_templates.py:912 msgid "Username" msgstr "Nom d'utilisateur" #: modules/websession/lib/websession_templates.py:261 #: modules/websession/lib/websession_templates.py:913 #: modules/websession/lib/websession_templates.py:1047 msgid "Password" msgstr "Mot de passe" #: modules/websession/lib/websession_templates.py:262 #: modules/websession/lib/websession_templates.py:289 #: modules/websession/lib/websession_templates.py:325 msgid "Update settings" msgstr "Modifier les préférences" #: modules/websession/lib/websession_templates.py:277 msgid "Edit language-related settings" msgstr "Modifier les préférences de langue" #: modules/websession/lib/websession_templates.py:288 msgid "Select desired language of the web interface." msgstr "Choisir la langue de l'interface." #: modules/websession/lib/websession_templates.py:307 msgid "Edit search-related settings" msgstr "Modifier les préférences de recherche" #: modules/websession/lib/websession_templates.py:308 msgid "Show the latest additions box" msgstr "Afficher les listes des derniers ajouts" #: modules/websession/lib/websession_templates.py:310 msgid "Show collection help boxes" msgstr "Afficher les boites d'aide des collections" #: modules/websession/lib/websession_templates.py:326 msgid "Number of search results per page" msgstr "Nombre de résultats par page" #: modules/websession/lib/websession_templates.py:359 msgid "Edit login method" msgstr "Éditer la méthode d'identification" #: modules/websession/lib/websession_templates.py:360 msgid "" "Please select which login method you would like to use to authenticate " "yourself" msgstr "Veuillez sélectionner la méthode utilisée pour vous identifier." #: modules/websession/lib/websession_templates.py:361 #: modules/websession/lib/websession_templates.py:376 msgid "Select method" msgstr "Choisir la méthode" #: modules/websession/lib/websession_templates.py:395 #, python-format msgid "" "If you have lost the password for your %(sitename)s %(x_fmt_open)sinternal " "account%(x_fmt_close)s, then please enter your email address in the " "following form in order to have a password reset link emailed to you." msgstr "" "Si vous avez perdu le mot de passe de votre %(x_fmt_open)scompte\n" "interne%(x_fmt_close)s %(sitename)s, entrez votre adresse email\n" "ci-dessous pour recevoir un lien permettant de réinitialiser votre mot\n" "de passe." #: modules/websession/lib/websession_templates.py:417 #: modules/websession/lib/websession_templates.py:1045 msgid "Email address" msgstr "Adresse email" #: modules/websession/lib/websession_templates.py:418 msgid "Send password reset link" msgstr "Envoyer le lien de réinitialisation" #: modules/websession/lib/websession_templates.py:422 #, python-format msgid "" "If you have been using the %(x_fmt_open)sCERN login system%(x_fmt_close)s, " "then you can recover your password through the %(x_url_open)sCERN " "authentication system%(x_url_close)s." msgstr "" "Si votre compte utilise le %(x_fmt_open)ssystème d'identification du CERN" "%(x_fmt_close)s, vous pouvez retrouver votre mot de passe sur la " "%(x_url_open)spage de gestion des comptes CERN%(x_url_close)s." #: modules/websession/lib/websession_templates.py:425 msgid "" "Note that if you have been using an external login system, then we cannot do " "anything and you have to ask there." msgstr "" "Si vous utilisez un système d'identification externe, vous devez vous " "adresser directement aux responsables de ce système." #: modules/websession/lib/websession_templates.py:426 #, python-format msgid "" "Alternatively, you can ask %s to change your login system from external to " "internal." msgstr "" "Autrement vous pouvez demander à %s de changer le système d'enregistrement " "de externe à interne." #: modules/websession/lib/websession_templates.py:453 #, python-format msgid "" "%s offers you the possibility to personalize the interface, to set up your " "own personal library of documents, or to set up an automatic alert query " "that would run periodically and would notify you of search results by email." msgstr "" "%s vous permet de pesonnaliser l'interface, de créer votre propre " "bibliothèque de documents personnels, ou de créer une alerte automatique " "tournant périodiquement et vous avertissant lorsque de nouveaux résultats de " "recherche sont disponibles." #: modules/websession/lib/websession_templates.py:463 -#: modules/websession/lib/websession_webinterface.py:277 +#: modules/websession/lib/websession_webinterface.py:282 msgid "Your Settings" msgstr "Vos Paramètres" #: modules/websession/lib/websession_templates.py:464 msgid "" "Set or change your account email address or password. Specify your " "preferences about the look and feel of the interface." msgstr "" "Inscrivez ou modifiez l'adresse email ou le mot de passe de votre compte. " "Indiquez vos préférences pour l'affichage de l'interface." #: modules/websession/lib/websession_templates.py:472 msgid "View all the searches you performed during the last 30 days." msgstr "" "Afficher les recherches que vous avez effectuées durant les 30 derniers " "jours." +#: modules/websession/lib/websession_templates.py:479 +#: modules/websession/lib/websession_templates.py:625 +msgid "Your Baskets" +msgstr "Vos Paniers" + #: modules/websession/lib/websession_templates.py:480 msgid "" "With baskets you can define specific collections of items, store interesting " "records you want to access later or share with others." msgstr "" "Les paniers vous permettent de définir des collections spécifiques de " "notices, d'enregistrer des notices que vous souhaiteriez revoir plus tard ou " "partager avec d'autres." #: modules/websession/lib/websession_templates.py:489 msgid "" "Subscribe to a search which will be run periodically by our service. The " "result can be sent to you via Email or stored in one of your baskets." msgstr "" "S'abonner à une recherche qui sera effectuée périodiquement par nos " "services. Les résultats peuvent vous être communiqués par email ou être " "directement enregistrés dans l'un de vos paniers." #: modules/websession/lib/websession_templates.py:498 #: modules/websession/lib/websession_templates.py:622 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:116 msgid "Your Loans" msgstr "Vos Prêts" #: modules/websession/lib/websession_templates.py:499 msgid "" "Check out book you have on loan, submit borrowing requests, etc. Requires " "CERN ID." msgstr "" "Vérifiez la liste des ouvrages que vous avez en prêt, soumettez des demandes " "d'emprunt, etc. Nécessite un CERN ID." #: modules/websession/lib/websession_templates.py:524 msgid "" "You are logged in as a guest user, so your alerts will disappear at the end " "of the current session." msgstr "" "Vous êtes actuellement enregistré en tant qu'invité. Vos alertes " "disparaîtront à la fin de la session." #: modules/websession/lib/websession_templates.py:547 #, python-format msgid "" "You are logged in as %(x_user)s. You may want to a) %(x_url1_open)slogout" "%(x_url1_close)s; b) edit your %(x_url2_open)saccount settings" "%(x_url2_close)s." msgstr "" "Vous êtes enregistré comme %(x_user)s. Vous pouvez a) %(x_url1_open)svous " "déconnecter%(x_url1_close)s; b) modifier vos %(x_url2_open)spréférences de " "compte%(x_url2_close)s." #: modules/websession/lib/websession_templates.py:628 msgid "Your Alert Searches" msgstr "Vos Alertes" #: modules/websession/lib/websession_templates.py:634 #, python-format msgid "" "You can consult the list of %(x_url_open)syour groups%(x_url_close)s you are " "administering or are a member of." msgstr "" "Vous pouvez consulter la liste de %(x_url_open)svos groupes%(x_url_close)s " "pour lesquels vous êtes administrateur ou membre." #: modules/websession/lib/websession_templates.py:637 #: modules/websession/lib/websession_templates.py:2347 -#: modules/websession/lib/websession_webinterface.py:1031 +#: modules/websession/lib/websession_webinterface.py:1049 +#: modules/websession/lib/websession_templates_epfl.py:262 msgid "Your Groups" -msgstr "Vos Groupes" +msgstr "Mes groupes" #: modules/websession/lib/websession_templates.py:640 #, python-format msgid "" "You can consult the list of %(x_url_open)syour submissions%(x_url_close)s " "and inquire about their status." msgstr "" "Vous pouvez consulter la liste de %(x_url_open)svos soumissions" "%(x_url_close)s et vous informer sur leur statut." #: modules/websession/lib/websession_templates.py:643 #: modules/websubmit/web/yoursubmissions.py:160 msgid "Your Submissions" msgstr "Vos Soumissions" #: modules/websession/lib/websession_templates.py:646 #, python-format msgid "" "You can consult the list of %(x_url_open)syour approvals%(x_url_close)s with " "the documents you approved or refereed." msgstr "" "Vous pouvez consulter la liste de %(x_url_open)svos approbations" "%(x_url_close)s contenant les références des documents que vous avez " "approuvés ou relus." #: modules/websession/lib/websession_templates.py:649 #: modules/websubmit/web/yourapprovals.py:88 msgid "Your Approvals" msgstr "Vos Approbations" #: modules/websession/lib/websession_templates.py:653 #, python-format msgid "You can consult the list of %(x_url_open)syour tickets%(x_url_close)s." msgstr "" "Vous pouvez consulter la liste de %(x_url_open)svos tickets%(x_url_close)s." #: modules/websession/lib/websession_templates.py:656 msgid "Your Tickets" msgstr "Vos Tickets" #: modules/websession/lib/websession_templates.py:658 -#: modules/websession/lib/websession_webinterface.py:650 +#: modules/websession/lib/websession_webinterface.py:655 msgid "Your Administrative Activities" msgstr "Vos Activités Administratives" #: modules/websession/lib/websession_templates.py:685 #: modules/bibharvest/lib/oai_harvest_admin.py:429 #: modules/bibharvest/lib/oai_harvest_admin.py:444 msgid "Try again" msgstr "Réessayer" #: modules/websession/lib/websession_templates.py:707 #, python-format msgid "" "Somebody (possibly you) coming from %(x_ip_address)s has asked\n" "for a password reset at %(x_sitename)s\n" "for the account \"%(x_email)s\"." msgstr "" "Quelqu'un (vous-même?) provenant de %(x_ip_address)s a demandé de " "réinitialiser le mot de passe %(x_sitename)s pour le compte \"%(x_email)s\"." #: modules/websession/lib/websession_templates.py:715 msgid "If you want to reset the password for this account, please go to:" msgstr "Pour réinitialiser le mot de passe de ce compte, allez ici:" #: modules/websession/lib/websession_templates.py:721 #: modules/websession/lib/websession_templates.py:758 msgid "in order to confirm the validity of this request." msgstr "afin de confirmer la validité de cette demande." #: modules/websession/lib/websession_templates.py:722 #: modules/websession/lib/websession_templates.py:759 #, python-format msgid "" "Please note that this URL will remain valid for about %(days)s days only." msgstr "Notez que ce lien restera valide seulement %(days)s jours." #: modules/websession/lib/websession_templates.py:744 #, python-format msgid "" "Somebody (possibly you) coming from %(x_ip_address)s has asked\n" "to register a new account at %(x_sitename)s\n" "for the email address \"%(x_email)s\"." msgstr "" "Quelqu'un (vous-même?) provenant de %(x_ip_address)s a demandé " "l'enregistrement d'un nouveau compte %(x_sitename)s pour l'adresse " "\"%(x_email)s\"." #: modules/websession/lib/websession_templates.py:752 msgid "If you want to complete this account registration, please go to:" msgstr "Pour procéder à l'enregistrement de ce compte, allez ici:" #: modules/websession/lib/websession_templates.py:778 #, python-format msgid "Okay, a password reset link has been emailed to %s." msgstr "Le lien de réinitialisation du mot de passe a été envoyé à %s." #: modules/websession/lib/websession_templates.py:793 msgid "Deleting your account" msgstr "Effacement de votre compte" #: modules/websession/lib/websession_templates.py:807 msgid "You are no longer recognized by our system." msgstr "Vous n'êtes plus connecté sur notre système." #: modules/websession/lib/websession_templates.py:809 #, python-format msgid "" "You are still recognized by the centralized\n" " %(x_fmt_open)sSSO%(x_fmt_close)s system. You can\n" " %(x_url_open)slogout from SSO%(x_url_close)s, too." msgstr "" "Vous êtes par contre toujours reconnu par le %(x_fmt_open)ssystème " "centralisé SSO%(x_fmt_close)s. Vous pouvez également vous " "%(x_url_open)sdéconnecter de SSO%(x_url_close)s." #: modules/websession/lib/websession_templates.py:816 #, python-format msgid "If you wish you can %(x_url_open)slogin here%(x_url_close)s." msgstr "" "Si vous le souhaitez, vous pouvez vous %(x_url_open)sidentifier" "%(x_url_close)s." #: modules/websession/lib/websession_templates.py:847 msgid "If you already have an account, please login using the form below." msgstr "" "Si vous possédez déjà un compte, veuillez utiliser le formulaire ci-dessous " "pour vous identifier." #: modules/websession/lib/websession_templates.py:851 #, python-format msgid "" "If you don't own a CERN account yet, you can register a %(x_url_open)snew " "CERN lightweight account%(x_url_close)s." msgstr "" "Si vous ne possédez pas encore de compte CERN, vous pouvez " "%(x_url_open)scréer un compte CERN \"lightweight\"%(x_url_close)s." #: modules/websession/lib/websession_templates.py:854 #, python-format msgid "" "If you don't own an account yet, please %(x_url_open)sregister" "%(x_url_close)s an internal account." msgstr "" "Si vous ne possédez pas encore de compte, vous pouvez vous " "%(x_url_open)senregistrer%(x_url_close)s pour créer un compte interne." #: modules/websession/lib/websession_templates.py:862 #, python-format msgid "If you don't own an account yet, please contact %s." msgstr "Si vous ne possédez pas encore de compte, veuillez contacter %s." #: modules/websession/lib/websession_templates.py:885 msgid "Login method:" msgstr "Méthode d'identification:" #: modules/websession/lib/websession_templates.py:914 msgid "Remember login on this computer." msgstr "Mémoriser ma session sur cet ordinateur." #: modules/websession/lib/websession_templates.py:915 #: modules/websession/lib/websession_templates.py:1193 -#: modules/websession/lib/websession_webinterface.py:101 -#: modules/websession/lib/websession_webinterface.py:196 -#: modules/websession/lib/websession_webinterface.py:766 -#: modules/websession/lib/websession_webinterface.py:850 +#: modules/websession/lib/websession_webinterface.py:104 +#: modules/websession/lib/websession_webinterface.py:199 +#: modules/websession/lib/websession_webinterface.py:771 +#: modules/websession/lib/websession_webinterface.py:868 +#: modules/websession/lib/websession_templates_epfl.py:298 msgid "login" -msgstr "identification" +msgstr "Connexion" #: modules/websession/lib/websession_templates.py:920 -#: modules/websession/lib/websession_webinterface.py:554 +#: modules/websession/lib/websession_webinterface.py:559 msgid "Lost your password?" msgstr "Vous avez perdu votre mot de passe?" #: modules/websession/lib/websession_templates.py:928 msgid "You can use your nickname or your email address to login." msgstr "" "Vous pouvez utiliser votre pseudonyme ou votre adresse email pour vous " "identifier." #: modules/websession/lib/websession_templates.py:952 msgid "" "Your request is valid. Please set the new desired password in the following " "form." msgstr "" "Votre demande a été vérifiée. Veuillez entrer le nouveau mot de passe désiré " "dans le formulaire ci-dessous." #: modules/websession/lib/websession_templates.py:975 msgid "Set a new password for" msgstr "Enregistrer un nouveau mot de passe pour" #: modules/websession/lib/websession_templates.py:976 msgid "Type the new password" msgstr "Indiquez le nouveau mot de passe" #: modules/websession/lib/websession_templates.py:977 msgid "Type again the new password" msgstr "Retapez le nouveau mot de passe" #: modules/websession/lib/websession_templates.py:978 msgid "Set the new password" msgstr "Appliquer le nouveau mot de passe" #: modules/websession/lib/websession_templates.py:1000 msgid "Please enter your email address and desired nickname and password:" msgstr "" "Veuillez entrer votre adresse email, ainsi que le nom d'utilisateur souhaité " "et le mot de passe:" #: modules/websession/lib/websession_templates.py:1002 msgid "" "It will not be possible to use the account before it has been verified and " "activated." msgstr "" "Le compte ne pourra pas être utilisé avant qu'il ait été vérifié et activé " "par nos services." #: modules/websession/lib/websession_templates.py:1053 msgid "Retype Password" msgstr "Réinscrivez votre mot de passe" #: modules/websession/lib/websession_templates.py:1054 -#: modules/websession/lib/websession_webinterface.py:953 +#: modules/websession/lib/websession_webinterface.py:971 msgid "register" msgstr "s'enregistrer" #: modules/websession/lib/websession_templates.py:1055 #, python-format msgid "" "Please do not use valuable passwords such as your Unix, AFS or NICE " "passwords with this service. Your email address will stay strictly " "confidential and will not be disclosed to any third party. It will be used " "to identify you for personal services of %s. For example, you may set up an " "automatic alert search that will look for new preprints and will notify you " "daily of new arrivals by email." msgstr "" "Veuillez ne pas utiliser de mot de passe précieux, comme votre mot de passe " "Unix, AFS ou NICE avec ce service. Votre adresse email restera strictement " "confidentielle et ne sera en aucun cas donnée ou vendue à un tiers. Elle ne " "sera utilisée que pour vous identifier sur les services personnalisés de %s. " "Par exemple, vous pourriez créer une alerte automatique qui cherche des " "preprints et vous informe quotidiennement par email des nouveautés " "disponibles." #: modules/websession/lib/websession_templates.py:1059 #, python-format msgid "" "It is not possible to create an account yourself. Contact %s if you want an " "account." msgstr "" "Il n'est pas possible de créer un compte vous-même. Veuillez contacter %s si " "vous désirez un compte." #: modules/websession/lib/websession_templates.py:1085 +#: modules/websession/lib/websession_templates_epfl.py:32 #, python-format msgid "" "You seem to be a guest user. You have to %(x_url_open)slogin%(x_url_close)s " "first." msgstr "" "Vous n'êtes pas identifé. Vous devez d'abord vous %(x_url_open)sidentifier" "%(x_url_close)s." #: modules/websession/lib/websession_templates.py:1091 +#: modules/websession/lib/websession_templates_epfl.py:38 msgid "You are not authorized to access administrative functions." msgstr "Vous n'êtes pas autorisé à accéder aux fonctions administratives." #: modules/websession/lib/websession_templates.py:1094 +#: modules/websession/lib/websession_templates_epfl.py:41 #, python-format msgid "You are enabled to the following roles: %(x_role)s." msgstr "Vous avez accès aux rôles suivants: %(x_role)s." #: modules/websession/lib/websession_templates.py:1110 +#: modules/websession/lib/websession_templates_epfl.py:57 msgid "Run BibSword Client" -msgstr "Lancer client BibSword" +msgstr "BibSword" #: modules/websession/lib/websession_templates.py:1136 +#: modules/websession/lib/websession_templates_epfl.py:82 msgid "Here are some interesting web admin links for you:" msgstr "Voici quelques liens administratifs intéressants pour vous:" #: modules/websession/lib/websession_templates.py:1138 +#: modules/websession/lib/websession_templates_epfl.py:84 #, python-format msgid "" "For more admin-level activities, see the complete %(x_url_open)sAdmin Area" "%(x_url_close)s." msgstr "" "Pour plus d'activités administratives, affichez la %(x_url_open)szone " "d'administration%(x_url_close)s." #: modules/websession/lib/websession_templates.py:1191 msgid "guest" msgstr "visiteur" #: modules/websession/lib/websession_templates.py:1205 +#: modules/websession/lib/websession_templates_epfl.py:304 msgid "logout" msgstr "déconnexion" #: modules/websession/lib/websession_templates.py:1253 #: modules/webstyle/lib/webstyle_templates.py:433 #: modules/webstyle/lib/webstyle_templates.py:501 msgid "Personalize" msgstr "Personnaliser" #: modules/websession/lib/websession_templates.py:1261 msgid "Your account" msgstr "Votre compte" #: modules/websession/lib/websession_templates.py:1267 msgid "Your alerts" msgstr "Vos alertes" #: modules/websession/lib/websession_templates.py:1273 msgid "Your approvals" msgstr "Vos approbations" #: modules/websession/lib/websession_templates.py:1279 msgid "Your baskets" msgstr "Vos paniers" #: modules/websession/lib/websession_templates.py:1285 msgid "Your groups" msgstr "Vos groupes" #: modules/websession/lib/websession_templates.py:1291 msgid "Your loans" msgstr "Vos emprunts" #: modules/websession/lib/websession_templates.py:1297 msgid "Your messages" msgstr "Vos messages" #: modules/websession/lib/websession_templates.py:1303 msgid "Your submissions" msgstr "Vos soumissions" #: modules/websession/lib/websession_templates.py:1309 msgid "Your searches" msgstr "Vos recherches" #: modules/websession/lib/websession_templates.py:1362 msgid "Administration" msgstr "Administration" #: modules/websession/lib/websession_templates.py:1378 msgid "Statistics" msgstr "Statistiques" #: modules/websession/lib/websession_templates.py:1505 msgid "You are an administrator of the following groups:" msgstr "Vous êtes administrateur des groupes suivants:" #: modules/websession/lib/websession_templates.py:1525 #: modules/websession/lib/websession_templates.py:1599 #: modules/websession/lib/websession_templates.py:1662 #: modules/websubmit/lib/websubmit_templates.py:3003 #: modules/websubmit/lib/websubmit_templates.py:3009 msgid "Group" msgstr "Groupe" #: modules/websession/lib/websession_templates.py:1532 msgid "You are not an administrator of any groups." msgstr "Vous n'êtes administrateur d'aucun groupe." #: modules/websession/lib/websession_templates.py:1539 msgid "Edit group" msgstr "Éditer le groupe" #: modules/websession/lib/websession_templates.py:1546 #, python-format msgid "Edit %s members" msgstr "Éditer les %s membres du groupe" #: modules/websession/lib/websession_templates.py:1569 #: modules/websession/lib/websession_templates.py:1709 #: modules/websession/lib/websession_templates.py:1711 -#: modules/websession/lib/websession_webinterface.py:1091 +#: modules/websession/lib/websession_webinterface.py:1109 msgid "Create new group" msgstr "Créer un nouveau groupe" #: modules/websession/lib/websession_templates.py:1583 msgid "You are a member of the following groups:" msgstr "Vous êtes membre des groupes suivants:" #: modules/websession/lib/websession_templates.py:1606 msgid "You are not a member of any groups." msgstr "Vous n'êtes membre d'aucun groupe." #: modules/websession/lib/websession_templates.py:1630 msgid "Join new group" msgstr "Adhérer à un nouveau groupe" #: modules/websession/lib/websession_templates.py:1631 #: modules/websession/lib/websession_templates.py:2183 #: modules/websession/lib/websession_templates.py:2194 msgid "Leave group" msgstr "Quitter un groupe" #: modules/websession/lib/websession_templates.py:1646 msgid "You are a member of the following external groups:" msgstr "Vous êtes membre des groupes externes suivants:" #: modules/websession/lib/websession_templates.py:1669 msgid "You are not a member of any external groups." msgstr "Vous n'êtes membre d'aucun groupe externe." #: modules/websession/lib/websession_templates.py:1717 msgid "Update group" msgstr "Mettre à jour le groupe" #: modules/websession/lib/websession_templates.py:1719 #, python-format msgid "Edit group %s" msgstr "Éditer le groupe %s" #: modules/websession/lib/websession_templates.py:1721 msgid "Delete group" msgstr "Effacer le groupe" #: modules/websession/lib/websession_templates.py:1794 msgid "Group name:" msgstr "Nom du groupe:" #: modules/websession/lib/websession_templates.py:1796 msgid "Group description:" msgstr "Description du groupe:" #: modules/websession/lib/websession_templates.py:1797 msgid "Group join policy:" msgstr "Règle adhésion au groupe:" #: modules/websession/lib/websession_templates.py:1838 #: modules/websession/lib/websession_templates.py:1911 #: modules/websession/lib/websession_templates.py:2052 #: modules/websession/lib/websession_templates.py:2061 #: modules/websession/lib/websession_templates.py:2181 #: modules/websession/lib/websession_templates.py:2293 msgid "Please select:" msgstr "Veuillez choisir:" #: modules/websession/lib/websession_templates.py:1904 msgid "Join group" msgstr "Adhérer au groupe" #: modules/websession/lib/websession_templates.py:1906 msgid "or find it" msgstr "ou en trouver un" #: modules/websession/lib/websession_templates.py:1907 msgid "Choose group:" msgstr "Choisissez un groupe:" #: modules/websession/lib/websession_templates.py:1909 msgid "Find group" msgstr "Chercher un groupe" #: modules/websession/lib/websession_templates.py:2057 msgid "Remove member" msgstr "Supprimer un membre" #: modules/websession/lib/websession_templates.py:2059 msgid "No members." msgstr "Aucun membre." #: modules/websession/lib/websession_templates.py:2069 msgid "Accept member" msgstr "Accepter un nouveau membre" #: modules/websession/lib/websession_templates.py:2069 msgid "Reject member" msgstr "Rejeter l'adhésion du membre" #: modules/websession/lib/websession_templates.py:2071 msgid "No members awaiting approval." msgstr "Aucun membre en attente d'approbation" #: modules/websession/lib/websession_templates.py:2073 #: modules/websession/lib/websession_templates.py:2107 msgid "Current members" msgstr "Membres actuels" #: modules/websession/lib/websession_templates.py:2074 #: modules/websession/lib/websession_templates.py:2108 msgid "Members awaiting approval" msgstr "Membres en attente d'approbation" #: modules/websession/lib/websession_templates.py:2075 #: modules/websession/lib/websession_templates.py:2109 msgid "Invite new members" msgstr "Inviter de nouveaux membres" #: modules/websession/lib/websession_templates.py:2080 #, python-format msgid "Invitation to join \"%s\" group" msgstr "Invitation à rejoindre le groupe \"%s\"" #: modules/websession/lib/websession_templates.py:2081 #, python-format msgid "" "Hello:\n" "\n" "I think you might be interested in joining the group \"%(x_name)s\".\n" "You can join by clicking here: %(x_url)s.\n" "\n" "Best regards.\n" msgstr "" "Bonjour,\n" "\n" "Je pense que vous pourriez être intéressé à rejoindre le groupe \"%(x_name)s" "\".\n" "Vous pouvez vous y inscrire ici: %(x_url)s.\n" "\n" "Meilleures salutations.\n" #: modules/websession/lib/websession_templates.py:2095 #, python-format msgid "" "If you want to invite new members to join your group, please use the " "%(x_url_open)sweb message%(x_url_close)s system." msgstr "" "Si vous souhaitez inviter de nouveaux membres à rejoindre votre groupe, " "veuillez utiliser le %(x_url_open)ssystème de messagerie interne" "%(x_url_close)s." #: modules/websession/lib/websession_templates.py:2099 #, python-format msgid "Group: %s" msgstr "Groupe: %s" #: modules/websession/lib/websession_templates.py:2182 msgid "Group list" msgstr "Liste des groupes" #: modules/websession/lib/websession_templates.py:2185 msgid "You are not member of any group." msgstr "Vous n'êtes pas membre de groupe." #: modules/websession/lib/websession_templates.py:2233 msgid "Are you sure you want to delete this group?" msgstr "Êtes-vous sûr de vouloir supprimer ce groupe?" #: modules/websession/lib/websession_templates.py:2273 msgid "Are you sure you want to leave this group?" msgstr "Êtes-vous sûr de vouloir quitter ce groupe?" #: modules/websession/lib/websession_templates.py:2289 msgid "Visible and open for new members" msgstr "Visible et ouvert aux nouveaux membres" #: modules/websession/lib/websession_templates.py:2291 msgid "Visible but new members need approval" msgstr "Visible mais nécessitant une approbation pour les nouveaux membres" #: modules/websession/lib/websession_templates.py:2376 #, python-format msgid "Group %s: New membership request" msgstr "Groupe %s: Nouvelle demande d'adhésion" #: modules/websession/lib/websession_templates.py:2380 #, python-format msgid "A user wants to join the group %s." msgstr "Un utilisateur désire adhérer au groupe %s." #: modules/websession/lib/websession_templates.py:2381 #, python-format msgid "" "Please %(x_url_open)saccept or reject%(x_url_close)s this user's request." msgstr "" "Veuillez %(x_url_open)saccepter ou rejeter%(x_url_close)s la demande de cet " "utilisateur." #: modules/websession/lib/websession_templates.py:2398 #, python-format msgid "Group %s: Join request has been accepted" msgstr "Groupe %s: la demande d'adhésion a été acceptée" #: modules/websession/lib/websession_templates.py:2399 #, python-format msgid "Your request for joining group %s has been accepted." msgstr "Votre demande d'adhésion au groupe %s a été acceptée." #: modules/websession/lib/websession_templates.py:2401 #, python-format msgid "Group %s: Join request has been rejected" msgstr "Groupe %s: la demande d'adhésion a été rejetée" #: modules/websession/lib/websession_templates.py:2402 #, python-format msgid "Your request for joining group %s has been rejected." msgstr "Votre demande d'adhésion au groupe %s a été rejetée." #: modules/websession/lib/websession_templates.py:2405 #: modules/websession/lib/websession_templates.py:2423 #, python-format msgid "You can consult the list of %(x_url_open)syour groups%(x_url_close)s." msgstr "" "Vous pouvez consulter la liste de %(x_url_open)svos groupes%(x_url_close)s." #: modules/websession/lib/websession_templates.py:2419 #, python-format msgid "Group %s has been deleted" msgstr "Le groupe %s a été supprimé" #: modules/websession/lib/websession_templates.py:2421 #, python-format msgid "Group %s has been deleted by its administrator." msgstr "Le groupe %s a été supprimé par son administrateur." #: modules/websession/lib/websession_templates.py:2438 #, python-format msgid "" "You can consult the list of %(x_url_open)s%(x_nb_total)i groups" "%(x_url_close)s you are subscribed to (%(x_nb_member)i) or administering " "(%(x_nb_admin)i)." msgstr "" "Vous pouvez consulter la liste des %(x_url_open)s%(x_nb_total)i groupes" "%(x_url_close)s dont vous êtes membre (%(x_nb_member)i) ou " "administrateur(%(x_nb_admin)i)." #: modules/websession/lib/websession_templates.py:2457 msgid "" "Warning: The password set for MySQL root user is the same as the default " "Invenio password. For security purposes, you may want to change the password." msgstr "" "Attention: le mot de passe pour l'utilisateur root de MySQL est le même mot " "de passe que celui de l'utilisateur d'Invenio sur MySQL. Pour des raisons de " "sécurité veuillez changer ce mot de passe." #: modules/websession/lib/websession_templates.py:2463 msgid "" "Warning: The password set for the Invenio MySQL user is the same as the " "shipped default. For security purposes, you may want to change the password." msgstr "" "Attention: le mot de passe pour l'utilisateur d'Invenio sur MySQL est resté " "celui par défaut d'Invenio. Pour des raisons de sécurité veuillez changer ce " "mot de passe." #: modules/websession/lib/websession_templates.py:2469 msgid "" "Warning: The password set for the Invenio admin user is currently empty. For " "security purposes, it is strongly recommended that you add a password." msgstr "" "Attention: le mot de passe de l'utilisateur admin est resté vide. Pour des " "raisons de sécurité veuillez changer ce mot de passe." #: modules/websession/lib/websession_templates.py:2475 msgid "" "Warning: The email address set for support email is currently set to " "info@invenio-software.org. It is recommended that you change this to your " "own address." msgstr "" "Attention: l'adresse email du support de cette installation est restée " "\"info@invenio-software.org\". Il est recommandé de saisir votre propre " "adresse de support." #: modules/websession/lib/websession_templates.py:2481 msgid "" "A newer version of Invenio is available for download. You may want to visit " msgstr "Une nouvelle version d'Invenio est disponible à " #: modules/websession/lib/websession_templates.py:2488 msgid "" "Cannot download or parse release notes from http://invenio-software.org/repo/" "invenio/tree/RELEASE-NOTES" msgstr "" "Impossible de charger ou lire les notes de version de http://invenio-" "software.org/repo/invenio/tree/RELEASE-NOTES" -#: modules/websession/lib/webuser.py:156 -msgid "Database problem" -msgstr "Problème de base de données" +#: modules/websession/lib/webuser.py:147 +msgid "Maintenance status" +msgstr "Statut de la maintenance" + +#: modules/websession/lib/webuser.py:148 +msgid "Infoscience is currently down for maintenance." +msgstr "Infoscience est actuellement en maintenance." -#: modules/websession/lib/webuser.py:304 +#: modules/websession/lib/webuser.py:149 +msgid "We expect to be back online shortly, thanks for your patience." +msgstr "" +"Nous espérons que ce service sera rapidement disponible, merci de votre " +"patience." + +#: modules/websession/lib/webuser.py:150 +msgid "In case of trouble, please contact" +msgstr "En cas de problème, n'hésitez pas à nous écrire sur" + +#: modules/websession/lib/webuser.py:327 #: modules/websession/lib/webgroup_dblayer.py:314 msgid "user" msgstr "utilisateur" -#: modules/websession/lib/webuser.py:479 +#: modules/websession/lib/webuser.py:502 #, python-format msgid "Account registration at %s" -msgstr "Enregistrement d'un compte sur %s" +msgstr "Enregistrement du compte le %s" -#: modules/websession/lib/webuser.py:712 +#: modules/websession/lib/webuser.py:735 msgid "New account on" -msgstr "Nouveau compte sur" +msgstr "Nouveau compte le" -#: modules/websession/lib/webuser.py:714 +#: modules/websession/lib/webuser.py:737 msgid "PLEASE ACTIVATE" -msgstr "VEUILLEZ ACTIVER" +msgstr "Veuillez activer" -#: modules/websession/lib/webuser.py:715 +#: modules/websession/lib/webuser.py:738 msgid "A new account has been created on" msgstr "Un nouveau compte a été créé sur" -#: modules/websession/lib/webuser.py:717 +#: modules/websession/lib/webuser.py:740 msgid " and is awaiting activation" msgstr "et est en attente d'activation" -#: modules/websession/lib/webuser.py:719 +#: modules/websession/lib/webuser.py:742 msgid " Username/Email" msgstr "Nom d'utilisateur/Email" -#: modules/websession/lib/webuser.py:720 +#: modules/websession/lib/webuser.py:743 msgid "You can approve or reject this account request at" msgstr "Vous pouvez approuver ou rejeter cette demande de compte sur" -#: modules/websession/lib/webuser.py:902 modules/websession/lib/webuser.py:903 +#: modules/websession/lib/webuser.py:925 modules/websession/lib/webuser.py:926 msgid "Run File Manager" msgstr "" -#: modules/websession/lib/websession_webinterface.py:83 +#: modules/websession/lib/websession_webinterface.py:86 msgid "Mail Cookie Service" msgstr "Service d'activation par email" -#: modules/websession/lib/websession_webinterface.py:93 +#: modules/websession/lib/websession_webinterface.py:96 msgid "Role authorization request" msgstr "Demande d'autorisation de rôles" -#: modules/websession/lib/websession_webinterface.py:93 +#: modules/websession/lib/websession_webinterface.py:96 msgid "This request for an authorization has already been authorized." msgstr "La demande d'autorisation a déjà été acceptée." -#: modules/websession/lib/websession_webinterface.py:96 +#: modules/websession/lib/websession_webinterface.py:99 #, python-format msgid "" "You have successfully obtained an authorization as %(x_role)s! This " "authorization will last until %(x_expiration)s and until you close your " "browser if you are a guest user." msgstr "" "L'autorisation pour le rôle %(x_role)s vous a été donnée avec succès! Cette " "autorisation durera jusqu'au %(x_expiration)s, ou jusqu'à la fermeture de " "votre navigateur si vous êtes connecté en tant qu'invité." -#: modules/websession/lib/websession_webinterface.py:114 +#: modules/websession/lib/websession_webinterface.py:117 msgid "You have confirmed the validity of your email address!" msgstr "Vous avez confirmé la validité de votre adresse email!" -#: modules/websession/lib/websession_webinterface.py:117 -#: modules/websession/lib/websession_webinterface.py:127 +#: modules/websession/lib/websession_webinterface.py:120 +#: modules/websession/lib/websession_webinterface.py:130 msgid "Please, wait for the administrator to enable your account." msgstr "Veuillez patienter le temps que l'administrateur active votre compte." -#: modules/websession/lib/websession_webinterface.py:121 -#: modules/websession/lib/websession_webinterface.py:130 +#: modules/websession/lib/websession_webinterface.py:124 +#: modules/websession/lib/websession_webinterface.py:133 #, python-format msgid "You can now go to %(x_url_open)syour account page%(x_url_close)s." msgstr "" "Vous pouvez désormais accéder à %(x_url_open)svotre compte%(x_url_close)s." -#: modules/websession/lib/websession_webinterface.py:122 -#: modules/websession/lib/websession_webinterface.py:131 +#: modules/websession/lib/websession_webinterface.py:125 +#: modules/websession/lib/websession_webinterface.py:134 msgid "Email address successfully activated" msgstr "Adresse email activée avec succès" -#: modules/websession/lib/websession_webinterface.py:125 +#: modules/websession/lib/websession_webinterface.py:128 msgid "You have already confirmed the validity of your email address!" msgstr "Vous avez déjà confirmé la validité de votre adresse email!" -#: modules/websession/lib/websession_webinterface.py:134 +#: modules/websession/lib/websession_webinterface.py:137 msgid "" "This request for confirmation of an email address is not valid or is expired." msgstr "" "Cette demande de confirmation d'adresse email est invalide ou a expiré." -#: modules/websession/lib/websession_webinterface.py:139 +#: modules/websession/lib/websession_webinterface.py:142 msgid "This request for an authorization is not valid or is expired." msgstr "Cette demande d'autorisation est invalide ou a expiré." -#: modules/websession/lib/websession_webinterface.py:152 +#: modules/websession/lib/websession_webinterface.py:155 msgid "Reset password" msgstr "Réinitaliser le mot de passe" -#: modules/websession/lib/websession_webinterface.py:158 +#: modules/websession/lib/websession_webinterface.py:161 msgid "This request for resetting a password has already been used." msgstr "Cette demande de réinitialisation de mot de passe a déjà été utilisée." -#: modules/websession/lib/websession_webinterface.py:161 +#: modules/websession/lib/websession_webinterface.py:164 msgid "This request for resetting a password is not valid or is expired." msgstr "" "Cette demande de réinitialisation de mot de passe est invalide ou a expiré." -#: modules/websession/lib/websession_webinterface.py:166 +#: modules/websession/lib/websession_webinterface.py:169 msgid "This request for resetting the password is not valid or is expired." msgstr "" "Cette demande de réinitialisation de mot de passe est invalide ou a expiré." -#: modules/websession/lib/websession_webinterface.py:179 +#: modules/websession/lib/websession_webinterface.py:182 msgid "The two provided passwords aren't equal." msgstr "Les mots de passe entrés ne correspondent pas." -#: modules/websession/lib/websession_webinterface.py:194 +#: modules/websession/lib/websession_webinterface.py:197 msgid "The password was successfully set! You can now proceed with the login." msgstr "" "Le mot de passe a été appliqué avec succès! Vous pouvez à présent vous " "identifier." -#: modules/websession/lib/websession_webinterface.py:283 +#: modules/websession/lib/websession_webinterface.py:288 #, python-format msgid "%s Personalize, Your Settings" msgstr "%s Personnaliser, Vos Paramètres" -#: modules/websession/lib/websession_webinterface.py:351 -#: modules/websession/lib/websession_webinterface.py:427 -#: modules/websession/lib/websession_webinterface.py:489 -#: modules/websession/lib/websession_webinterface.py:502 -#: modules/websession/lib/websession_webinterface.py:515 +#: modules/websession/lib/websession_webinterface.py:356 +#: modules/websession/lib/websession_webinterface.py:432 +#: modules/websession/lib/websession_webinterface.py:494 +#: modules/websession/lib/websession_webinterface.py:507 +#: modules/websession/lib/websession_webinterface.py:520 msgid "Settings edited" msgstr "Préférences modifiées" -#: modules/websession/lib/websession_webinterface.py:353 -#: modules/websession/lib/websession_webinterface.py:426 -#: modules/websession/lib/websession_webinterface.py:467 -#: modules/websession/lib/websession_webinterface.py:491 -#: modules/websession/lib/websession_webinterface.py:504 -#: modules/websession/lib/websession_webinterface.py:510 +#: modules/websession/lib/websession_webinterface.py:358 +#: modules/websession/lib/websession_webinterface.py:431 +#: modules/websession/lib/websession_webinterface.py:472 +#: modules/websession/lib/websession_webinterface.py:496 +#: modules/websession/lib/websession_webinterface.py:509 +#: modules/websession/lib/websession_webinterface.py:515 msgid "Show account" msgstr "Afficher le compte" -#: modules/websession/lib/websession_webinterface.py:357 +#: modules/websession/lib/websession_webinterface.py:362 msgid "Unable to change login method." msgstr "Impossible de changer la méthode d'authentification." -#: modules/websession/lib/websession_webinterface.py:365 +#: modules/websession/lib/websession_webinterface.py:370 msgid "Switched to internal login method." msgstr "Méthode d'identification interne activée." -#: modules/websession/lib/websession_webinterface.py:366 +#: modules/websession/lib/websession_webinterface.py:371 msgid "" "Please note that if this is the first time that you are using this account " "with the internal login method then the system has set for you a randomly " "generated password. Please click the following button to obtain a password " "reset request link sent to you via email:" msgstr "" "Si vous utilisez ce compte avec la méthode d'identification interne pour la " "première fois, veuillez noter que le système vous a attribué un mot de passe " "par défaut. Cliquez sur le bouton ci-dessous pour recevoir un email vous " "permettant de changer ce mot de passe:" -#: modules/websession/lib/websession_webinterface.py:374 +#: modules/websession/lib/websession_webinterface.py:379 msgid "Send Password" msgstr "Envoyer le mot de passe" -#: modules/websession/lib/websession_webinterface.py:384 +#: modules/websession/lib/websession_webinterface.py:389 #, python-format msgid "" "Unable to switch to external login method %s, because your email address is " "unknown." msgstr "" "Impossible d'activer la méthode d'identification externe %s, car l'adresse " "email n'est pas connue." -#: modules/websession/lib/websession_webinterface.py:388 +#: modules/websession/lib/websession_webinterface.py:393 #, python-format msgid "" "Unable to switch to external login method %s, because your email address is " "unknown to the external login system." msgstr "" "Impossible d'activer la méthode d'identification externe %s, car votre " "adresse email est inconnue du système d'identification externe." -#: modules/websession/lib/websession_webinterface.py:392 +#: modules/websession/lib/websession_webinterface.py:397 msgid "Login method successfully selected." msgstr "Méthode d'identification modifiée." -#: modules/websession/lib/websession_webinterface.py:394 +#: modules/websession/lib/websession_webinterface.py:399 #, python-format msgid "" "The external login method %s does not support email address based logins. " "Please contact the site administrators." msgstr "" "La méthode d'identification externe %s ne supporte pas l'identification " "basée sur les adresses emails.\n" "Veuillez contacter les administrateurs du site." -#: modules/websession/lib/websession_webinterface.py:406 +#: modules/websession/lib/websession_webinterface.py:411 #, fuzzy msgid "Your nickname has not been updated" msgstr "Cet exemplaire a été mise à jour." -#: modules/websession/lib/websession_webinterface.py:420 +#: modules/websession/lib/websession_webinterface.py:425 msgid "Settings successfully edited." msgstr "Préférences modifiées." -#: modules/websession/lib/websession_webinterface.py:421 +#: modules/websession/lib/websession_webinterface.py:426 #, python-format msgid "" "Note that if you have changed your email address, you will have to " "%(x_url_open)sreset your password%(x_url_close)s anew." msgstr "" "Notez que si vous avez changé votre adresse email, vous devrez " "%(x_url_open)sréinitialiser votre mot de passe%(x_url_close)s." -#: modules/websession/lib/websession_webinterface.py:429 -#: modules/websession/lib/websession_webinterface.py:923 +#: modules/websession/lib/websession_webinterface.py:434 +#: modules/websession/lib/websession_webinterface.py:941 #, python-format msgid "Desired nickname %s is invalid." msgstr "Le pseudonyme %s est invalide." -#: modules/websession/lib/websession_webinterface.py:430 -#: modules/websession/lib/websession_webinterface.py:436 -#: modules/websession/lib/websession_webinterface.py:449 -#: modules/websession/lib/websession_webinterface.py:471 -#: modules/websession/lib/websession_webinterface.py:477 -#: modules/websession/lib/websession_webinterface.py:914 -#: modules/websession/lib/websession_webinterface.py:919 -#: modules/websession/lib/websession_webinterface.py:924 -#: modules/websession/lib/websession_webinterface.py:935 +#: modules/websession/lib/websession_webinterface.py:435 +#: modules/websession/lib/websession_webinterface.py:441 +#: modules/websession/lib/websession_webinterface.py:454 +#: modules/websession/lib/websession_webinterface.py:476 +#: modules/websession/lib/websession_webinterface.py:482 +#: modules/websession/lib/websession_webinterface.py:932 +#: modules/websession/lib/websession_webinterface.py:937 +#: modules/websession/lib/websession_webinterface.py:942 +#: modules/websession/lib/websession_webinterface.py:953 msgid "Please try again." msgstr "Veuillez réessayer." -#: modules/websession/lib/websession_webinterface.py:432 -#: modules/websession/lib/websession_webinterface.py:438 -#: modules/websession/lib/websession_webinterface.py:445 -#: modules/websession/lib/websession_webinterface.py:451 -#: modules/websession/lib/websession_webinterface.py:473 -#: modules/websession/lib/websession_webinterface.py:479 -#: modules/websession/lib/websession_webinterface.py:526 +#: modules/websession/lib/websession_webinterface.py:437 +#: modules/websession/lib/websession_webinterface.py:443 +#: modules/websession/lib/websession_webinterface.py:450 +#: modules/websession/lib/websession_webinterface.py:456 +#: modules/websession/lib/websession_webinterface.py:478 +#: modules/websession/lib/websession_webinterface.py:484 +#: modules/websession/lib/websession_webinterface.py:531 msgid "Edit settings" msgstr "Modifier les préférences" -#: modules/websession/lib/websession_webinterface.py:433 -#: modules/websession/lib/websession_webinterface.py:439 -#: modules/websession/lib/websession_webinterface.py:446 -#: modules/websession/lib/websession_webinterface.py:452 -#: modules/websession/lib/websession_webinterface.py:528 +#: modules/websession/lib/websession_webinterface.py:438 +#: modules/websession/lib/websession_webinterface.py:444 +#: modules/websession/lib/websession_webinterface.py:451 +#: modules/websession/lib/websession_webinterface.py:457 +#: modules/websession/lib/websession_webinterface.py:533 msgid "Editing settings failed" msgstr "Échec lors de la modification des préférences" -#: modules/websession/lib/websession_webinterface.py:435 -#: modules/websession/lib/websession_webinterface.py:918 +#: modules/websession/lib/websession_webinterface.py:440 +#: modules/websession/lib/websession_webinterface.py:936 #, python-format msgid "Supplied email address %s is invalid." msgstr "L'adresse email %s n'est pas valide." -#: modules/websession/lib/websession_webinterface.py:441 -#: modules/websession/lib/websession_webinterface.py:928 +#: modules/websession/lib/websession_webinterface.py:446 +#: modules/websession/lib/websession_webinterface.py:946 #, python-format msgid "Supplied email address %s already exists in the database." msgstr "L'adresse email %s existe déjà dans la base de données." -#: modules/websession/lib/websession_webinterface.py:443 -#: modules/websession/lib/websession_webinterface.py:930 +#: modules/websession/lib/websession_webinterface.py:448 +#: modules/websession/lib/websession_webinterface.py:948 msgid "Or please try again." msgstr "Ou réessayez." -#: modules/websession/lib/websession_webinterface.py:448 +#: modules/websession/lib/websession_webinterface.py:453 #, python-format msgid "Desired nickname %s is already in use." msgstr "Le pseudonyme %s est déjà utilisé." -#: modules/websession/lib/websession_webinterface.py:457 +#: modules/websession/lib/websession_webinterface.py:462 msgid "Users cannot edit passwords on this site." msgstr "Les utilisateurs ne peuvent pas éditer leur mots de passe sur ce site." -#: modules/websession/lib/websession_webinterface.py:465 +#: modules/websession/lib/websession_webinterface.py:470 msgid "Password successfully edited." msgstr "Mot de passe modifié." -#: modules/websession/lib/websession_webinterface.py:468 +#: modules/websession/lib/websession_webinterface.py:473 msgid "Password edited" msgstr "Mot de passe modifié" -#: modules/websession/lib/websession_webinterface.py:470 -#: modules/websession/lib/websession_webinterface.py:913 +#: modules/websession/lib/websession_webinterface.py:475 +#: modules/websession/lib/websession_webinterface.py:931 msgid "Both passwords must match." msgstr "Les deux mots de passe doivent être identiques." -#: modules/websession/lib/websession_webinterface.py:474 -#: modules/websession/lib/websession_webinterface.py:480 +#: modules/websession/lib/websession_webinterface.py:479 +#: modules/websession/lib/websession_webinterface.py:485 msgid "Editing password failed" msgstr "Échec lors de la modification du mot de passe" -#: modules/websession/lib/websession_webinterface.py:476 +#: modules/websession/lib/websession_webinterface.py:481 msgid "Wrong old password inserted." msgstr "L'ancien mot de passe entré est faux." -#: modules/websession/lib/websession_webinterface.py:492 -#: modules/websession/lib/websession_webinterface.py:505 -#: modules/websession/lib/websession_webinterface.py:519 +#: modules/websession/lib/websession_webinterface.py:497 +#: modules/websession/lib/websession_webinterface.py:510 +#: modules/websession/lib/websession_webinterface.py:524 msgid "User settings saved correctly." msgstr "Préférences sauvegardées." -#: modules/websession/lib/websession_webinterface.py:512 +#: modules/websession/lib/websession_webinterface.py:517 msgid "Editing bibcatalog authorization failed" msgstr "Échec lors de la modification des préférences de BibCatalog" -#: modules/websession/lib/websession_webinterface.py:513 +#: modules/websession/lib/websession_webinterface.py:518 msgid "Empty username or password" msgstr "Nom d'utilisateur ou mot de passe vide" -#: modules/websession/lib/websession_webinterface.py:522 +#: modules/websession/lib/websession_webinterface.py:527 msgid "Unable to update settings." msgstr "Impossible de modifier les préférences." -#: modules/websession/lib/websession_webinterface.py:583 +#: modules/websession/lib/websession_webinterface.py:588 msgid "" "Cannot send password reset request since you are using external " "authentication system." msgstr "" "Impossible d'envoyer un lien de réinitialisation de mot de passe car vous " "utilisez un système d'authentification externe." -#: modules/websession/lib/websession_webinterface.py:599 +#: modules/websession/lib/websession_webinterface.py:604 msgid "The entered email address does not exist in the database." msgstr "L'adresse email fournie n'existe pas dans la base de données." -#: modules/websession/lib/websession_webinterface.py:613 +#: modules/websession/lib/websession_webinterface.py:618 msgid "Password reset request for" msgstr "Demande de réinitialisation du mot de passe sur %s" -#: modules/websession/lib/websession_webinterface.py:617 +#: modules/websession/lib/websession_webinterface.py:622 msgid "" "The entered email address is incorrect, please check that it is written " "correctly (e.g. johndoe@example.com)." msgstr "" "L'adresse email est incorrecte. Veuillez vérifier qu'elle soit correctement " "écrite (par ex. jean.dupont@exemple.fr)" -#: modules/websession/lib/websession_webinterface.py:618 +#: modules/websession/lib/websession_webinterface.py:623 msgid "Incorrect email address" msgstr "Adresse email incorrecte" -#: modules/websession/lib/websession_webinterface.py:628 +#: modules/websession/lib/websession_webinterface.py:633 msgid "Reset password link sent" msgstr "Lien de réinitialisation de mot de passe envoyé" -#: modules/websession/lib/websession_webinterface.py:673 +#: modules/websession/lib/websession_webinterface.py:678 msgid "Delete Account" msgstr "Effacer compte" -#: modules/websession/lib/websession_webinterface.py:699 +#: modules/websession/lib/websession_webinterface.py:704 msgid "Logout" msgstr "Déconnexion" -#: modules/websession/lib/websession_webinterface.py:765 -#: modules/websession/lib/websession_webinterface.py:814 -#: modules/websession/lib/websession_webinterface.py:849 +#: modules/websession/lib/websession_webinterface.py:770 +#: modules/websession/lib/websession_webinterface.py:832 +#: modules/websession/lib/websession_webinterface.py:867 +#: modules/webstyle/lib/webstyle_templates_epfl.py:165 msgid "Login" -msgstr "Identification" +msgstr "Connexion" -#: modules/websession/lib/websession_webinterface.py:880 +#: modules/websession/lib/websession_webinterface.py:898 msgid "Register" msgstr "Enregistrement" -#: modules/websession/lib/websession_webinterface.py:883 -#: modules/websession/lib/websession_webinterface.py:955 +#: modules/websession/lib/websession_webinterface.py:901 +#: modules/websession/lib/websession_webinterface.py:973 #, python-format msgid "%s Personalize, Main page" msgstr "%s Personnaliser, Page principale" -#: modules/websession/lib/websession_webinterface.py:900 +#: modules/websession/lib/websession_webinterface.py:918 msgid "Your account has been successfully created." msgstr "Votre compte a été créé." -#: modules/websession/lib/websession_webinterface.py:901 +#: modules/websession/lib/websession_webinterface.py:919 msgid "Account created" msgstr "Compte créé" -#: modules/websession/lib/websession_webinterface.py:903 +#: modules/websession/lib/websession_webinterface.py:921 msgid "" "In order to confirm its validity, an email message containing an account " "activation key has been sent to the given email address." msgstr "" "Afin de confirmer sa validité, un email contenant une clé d'activation a été " "envoyée à l'adresse donnée." -#: modules/websession/lib/websession_webinterface.py:904 +#: modules/websession/lib/websession_webinterface.py:922 msgid "" "Please follow instructions presented there in order to complete the account " "registration process." msgstr "" "Veuillez y suivre les instructions précisées afin de terminer le processus " "de création du compte." -#: modules/websession/lib/websession_webinterface.py:906 +#: modules/websession/lib/websession_webinterface.py:924 msgid "" "A second email will be sent when the account has been activated and can be " "used." msgstr "" "Un deuxième email sera envoyé dès que le compte sera activé et pourra être " "utilisé." -#: modules/websession/lib/websession_webinterface.py:909 +#: modules/websession/lib/websession_webinterface.py:927 #, python-format msgid "You can now access your %(x_url_open)saccount%(x_url_close)s." msgstr "" "Vous pouvez désormais accéder à %(x_url_open)svotre compte%(x_url_close)s." -#: modules/websession/lib/websession_webinterface.py:916 -#: modules/websession/lib/websession_webinterface.py:921 -#: modules/websession/lib/websession_webinterface.py:926 -#: modules/websession/lib/websession_webinterface.py:932 -#: modules/websession/lib/websession_webinterface.py:937 -#: modules/websession/lib/websession_webinterface.py:941 -#: modules/websession/lib/websession_webinterface.py:945 +#: modules/websession/lib/websession_webinterface.py:934 +#: modules/websession/lib/websession_webinterface.py:939 +#: modules/websession/lib/websession_webinterface.py:944 #: modules/websession/lib/websession_webinterface.py:950 +#: modules/websession/lib/websession_webinterface.py:955 +#: modules/websession/lib/websession_webinterface.py:959 +#: modules/websession/lib/websession_webinterface.py:963 +#: modules/websession/lib/websession_webinterface.py:968 msgid "Registration failure" msgstr "Échec lors de l'enregistrement" -#: modules/websession/lib/websession_webinterface.py:934 +#: modules/websession/lib/websession_webinterface.py:952 #, python-format msgid "Desired nickname %s already exists in the database." msgstr "Le pseudonyme %s existe déjà dans la base de données." -#: modules/websession/lib/websession_webinterface.py:939 +#: modules/websession/lib/websession_webinterface.py:957 msgid "Users cannot register themselves, only admin can register them." msgstr "" "Les utilisateurs ne peuvent pas s'enregistrer eux-mêmes; seul " "l'administrateur peut le faire." -#: modules/websession/lib/websession_webinterface.py:943 +#: modules/websession/lib/websession_webinterface.py:961 msgid "" "The site is having troubles in sending you an email for confirming your " "email address." msgstr "" "Le site n'arrive pas à vous envoyer l'email de vérification de votre adresse." -#: modules/websession/lib/websession_webinterface.py:943 +#: modules/websession/lib/websession_webinterface.py:961 #: modules/websubmit/lib/websubmit_webinterface.py:141 msgid "" "The error has been logged and will be taken in consideration as soon as " "possible." msgstr "" "L'erreur a été enregistrée et sera prise en considération dès que possible." -#: modules/websession/lib/websession_webinterface.py:990 +#: modules/websession/lib/websession_webinterface.py:1008 msgid "Your tickets" msgstr "Vos tickets" -#: modules/websession/lib/websession_webinterface.py:1026 -#: modules/websession/lib/websession_webinterface.py:1071 -#: modules/websession/lib/websession_webinterface.py:1132 -#: modules/websession/lib/websession_webinterface.py:1196 -#: modules/websession/lib/websession_webinterface.py:1255 -#: modules/websession/lib/websession_webinterface.py:1328 +#: modules/websession/lib/websession_webinterface.py:1044 +#: modules/websession/lib/websession_webinterface.py:1089 +#: modules/websession/lib/websession_webinterface.py:1150 +#: modules/websession/lib/websession_webinterface.py:1214 +#: modules/websession/lib/websession_webinterface.py:1273 +#: modules/websession/lib/websession_webinterface.py:1346 msgid "You are not authorized to use groups." msgstr "Vous n'êtes pas autorisé à utiliser les groupes." -#: modules/websession/lib/websession_webinterface.py:1157 +#: modules/websession/lib/websession_webinterface.py:1175 msgid "Join New Group" msgstr "Adhérer à un groupe" -#: modules/websession/lib/websession_webinterface.py:1211 +#: modules/websession/lib/websession_webinterface.py:1229 msgid "Leave Group" msgstr "Quitter le groupe" -#: modules/websession/lib/websession_webinterface.py:1283 +#: modules/websession/lib/websession_webinterface.py:1301 msgid "Edit Group" msgstr "Éditer un groupe" -#: modules/websession/lib/websession_webinterface.py:1357 +#: modules/websession/lib/websession_webinterface.py:1375 msgid "Edit group members" msgstr "Éditer les membres du groupe" #: modules/webstyle/lib/webstyle_templates.py:85 #: modules/webstyle/lib/webstyle_templates.py:94 msgid "Home" msgstr "Accueil" #: modules/webstyle/lib/webstyle_templates.py:432 #: modules/webstyle/lib/webstyle_templates.py:500 #: modules/websubmit/lib/websubmit_engine.py:690 #: modules/websubmit/lib/websubmit_engine.py:1144 #: modules/websubmit/lib/websubmit_engine.py:1190 #: modules/websubmit/lib/websubmit_engine.py:1423 msgid "Submit" msgstr "Soumettre" #: modules/webstyle/lib/webstyle_templates.py:434 #: modules/webstyle/lib/webstyle_templates.py:502 +#: modules/webstyle/lib/webstyle_templates_epfl.py:474 msgid "Help" msgstr "Aide" #: modules/webstyle/lib/webstyle_templates.py:466 msgid "Last updated" msgstr "Dernière mise à jour:" #: modules/webstyle/lib/webstyle_templates.py:504 msgid "Powered by" msgstr "Powered by" #: modules/webstyle/lib/webstyle_templates.py:505 msgid "Maintained by" msgstr "Maintenu par" #: modules/webstyle/lib/webstyle_templates.py:552 msgid "This site is also available in the following languages:" msgstr "Ce site est aussi disponible dans les langues suivantes:" #: modules/webstyle/lib/webstyle_templates.py:585 msgid "Browser" msgstr "Navigateur" #: modules/webstyle/lib/webstyle_templates.py:607 msgid "System Error" msgstr "Erreur système" #: modules/webstyle/lib/webstyle_templates.py:622 msgid "Traceback" msgstr "Traceback" #: modules/webstyle/lib/webstyle_templates.py:669 msgid "Client" msgstr "Client" #: modules/webstyle/lib/webstyle_templates.py:671 msgid "Please send an error report to the administrator." msgstr "Veuillez envoyer un rapport d'erreur à l'administrateur." #: modules/webstyle/lib/webstyle_templates.py:672 msgid "Send error report" msgstr "Envoyer un rapport d'erreur" #: modules/webstyle/lib/webstyle_templates.py:676 #, python-format msgid "Please contact %s quoting the following information:" msgstr "Veuillez contacter %s en mentionnant l'information suivante:" #: modules/webstyle/lib/webstyle_templates.py:832 #, python-format msgid "" "Record created %(x_date_creation)s, last modified %(x_date_modification)s" msgstr "" "Notice créée le %(x_date_creation)s, modifiée le %(x_date_modification)s" #: modules/webstyle/lib/webstyle_templates.py:903 msgid "The server encountered an error while dealing with your request." msgstr "Le système a rencontré une erreur lors du traitement de votre demande." #: modules/webstyle/lib/webstyle_templates.py:904 msgid "The system administrators have been alerted." msgstr "Les administrateurs du système ont été alertés." #: modules/webstyle/lib/webstyle_templates.py:905 #, python-format msgid "In case of doubt, please contact %(x_admin_email)s." msgstr "En cas de doute, contactez %(x_admin_email)s." #: modules/webstyle/lib/webdoc.py:547 #, python-format msgid "%(category)s Pages" msgstr "Pages \"%(category)s\"" +#: modules/webstyle/lib/webdoc_tests.py:105 +#: modules/webstyle/lib/webdoc_webinterface.py:155 +msgid "Help Central" +msgstr "Centre d'aide" + #: modules/webstyle/lib/webdoc_webinterface.py:144 #: modules/webstyle/lib/webdoc_webinterface.py:149 msgid "Admin Pages" msgstr "Pages d'administration" #: modules/webstyle/lib/webdoc_webinterface.py:146 #: modules/webstyle/lib/webdoc_webinterface.py:150 msgid "Help Pages" msgstr "Page d'aides" #: modules/webstyle/lib/webdoc_webinterface.py:148 #: modules/webstyle/lib/webdoc_webinterface.py:151 msgid "Hacking Pages" msgstr "Pages développeurs" #: modules/webstyle/lib/webdoc_webinterface.py:157 msgid "Hacking Invenio" msgstr "Bidouiller Invenio" #: modules/webstyle/lib/webdoc_webinterface.py:159 msgid "Latest modifications:" msgstr "Dernières modifications:" #: modules/webstyle/lib/webdoc_webinterface.py:162 #, python-format msgid "This is the table of contents of the %(x_category)s pages." msgstr "Table des matières des pages \"%(x_category)s\"." #: modules/webstyle/lib/webdoc_webinterface.py:164 msgid "See also" msgstr "Voir également" #: modules/webstyle/lib/webdoc_webinterface.py:179 #, python-format msgid "Page %s Not Found" msgstr "Page %s introuvable" #: modules/webstyle/lib/webdoc_webinterface.py:187 #, python-format msgid "Sorry, page %s does not seem to exist." msgstr "Désolé, la page %s n'existe pas." #: modules/webstyle/lib/webdoc_webinterface.py:190 #, python-format msgid "" "You may want to look at the %(x_url_open)s%(x_category)s pages" "%(x_url_close)s." msgstr "" "Vous pouvez consulter %(x_url_open)sles page %(x_category)s%(x_url_close)s." #: modules/websubmit/lib/websubmit_managedocfiles.py:368 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:443 msgid "Choose a file" msgstr "Choisir un fichier" #: modules/websubmit/lib/websubmit_managedocfiles.py:376 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:459 msgid "Access" msgstr "Accès" #: modules/websubmit/lib/websubmit_managedocfiles.py:536 #, python-format msgid "" "The uploaded file is too small (<%i o) and has therefore not been considered" msgstr "" "Le fichier chargé est trop petit (<%i o) et a par conséquence été ignoré" #: modules/websubmit/lib/websubmit_managedocfiles.py:541 #, python-format msgid "" "The uploaded file is too big (>%i o) and has therefore not been considered" msgstr "" "Le fichier chargé est trop grand (>%i o) et a par conséquence été ignoré" #: modules/websubmit/lib/websubmit_managedocfiles.py:548 msgid "" "The uploaded file name is too long and has therefore not been considered" msgstr "Le nom du fichier chargé est trop long et a par conséquence été ignoré" #: modules/websubmit/lib/websubmit_managedocfiles.py:560 msgid "" "You have already reached the maximum number of files for this type of " "document" msgstr "" "Vous avez déjà atteint le nombre de fichier maximum pour ce type de document" #: modules/websubmit/lib/websubmit_managedocfiles.py:583 #: modules/websubmit/lib/websubmit_managedocfiles.py:594 #: modules/websubmit/lib/websubmit_managedocfiles.py:704 #, python-format msgid "A file named %s already exists. Please choose another name." msgstr "Un fichier nommé %s existe déjà. Choisissez un autre nom." #: modules/websubmit/lib/websubmit_managedocfiles.py:605 #, python-format msgid "A file with format '%s' already exists. Please upload another format." msgstr "" "Un fichier au format '%s' existe déjà. Veuillez charger un autre format." #: modules/websubmit/lib/websubmit_managedocfiles.py:613 msgid "" "You are not allowed to use dot '.', slash '/', or backslash '\\\\' in file " "names. Choose a different name and upload your file again. In particular, " "note that you should not include the extension in the renaming field." msgstr "" "Vous n'êtes pas autorisé à utiliser des points '.', slash '/', ou backslash " "'\\\\\\\\' dans les noms de fichier. Choisissez un autre nom et chargez à " "nouveau votre fichier. En particulier, faites attention à ne pas inclure " "l'extension de fichier dans le nom." #: modules/websubmit/lib/websubmit_managedocfiles.py:784 msgid "Choose how you want to restrict access to this file." msgstr "Choisissez les restrictions d'accès à ce fichier." #: modules/websubmit/lib/websubmit_managedocfiles.py:817 msgid "Add new file" msgstr "Ajouter un fichier" #: modules/websubmit/lib/websubmit_managedocfiles.py:842 msgid "You can decide to hide or not previous version(s) of this file." msgstr "" "Vous pouvez choisir de cacher ou non les précédentes versions de ce fichier." #: modules/websubmit/lib/websubmit_managedocfiles.py:843 msgid "" "When you revise a file, the additional formats that you might have " "previously uploaded are removed, since they no longer up-to-date with the " "new file." msgstr "" "Lors de la révision d'un fichier, les formats additionnels que vous pourriez " "avoir chargés auparavant sont enlevés, puisqu'ils ne correspondent plus à la " "dernière version du fichier." #: modules/websubmit/lib/websubmit_managedocfiles.py:844 msgid "" "Alternative formats uploaded for current version of this file will be removed" msgstr "" "Les formats alternatifs chargés pour la version courante de ce fichier " "seront enlevés" #: modules/websubmit/lib/websubmit_managedocfiles.py:845 msgid "Keep previous versions" msgstr "Garder versions précédentes" #: modules/websubmit/lib/websubmit_managedocfiles.py:847 msgid "Upload" msgstr "Envoyer" #: modules/websubmit/lib/websubmit_managedocfiles.py:859 #: modules/websubmit/lib/websubmit_webinterface.py:449 #: modules/bibedit/lib/bibeditmulti_templates.py:305 msgid "Apply changes" -msgstr "Appliquer les modifications" +msgstr "Enregistrer les modifications" #: modules/websubmit/lib/websubmit_managedocfiles.py:864 #, python-format msgid "Need help revising or adding files to record %(recid)s" msgstr "" "Besoin d'aide pour réviser ou ajouter des fichiers à la notice %(recid)s" #: modules/websubmit/lib/websubmit_managedocfiles.py:866 #, python-format msgid "" "Dear Support,\n" "I would need help to revise or add a file to record %(recid)s.\n" "I have attached the new version to this email.\n" "Best regards" msgstr "" "Cher Support,\n" "J'ai besoin d'aide pour réviser ou ajouter des fichiers à la notice " "%(recid)s.\n" "J'ai attaché la nouvelle version à cet email.\n" "Meilleures salutations" #: modules/websubmit/lib/websubmit_managedocfiles.py:871 #, python-format msgid "" "Having a problem revising a file? Send the revised version to " "%(mailto_link)s." msgstr "" "Besoin d'aide pour réviser un fichier? Envoyez le fichier révisé à " "%(mailto_link)s." #: modules/websubmit/lib/websubmit_managedocfiles.py:874 #, python-format msgid "" "Having a problem adding or revising a file? Send the new/revised version to " "%(mailto_link)s." msgstr "" "Besoin d'aide pour réviser ou ajouter un fichier? Envoyez le fichier révisé " "à %(mailto_link)s." #: modules/websubmit/lib/websubmit_managedocfiles.py:989 msgid "revise" msgstr "réviser" #: modules/websubmit/lib/websubmit_managedocfiles.py:1033 msgid "add format" msgstr "ajouter format" #: modules/websubmit/lib/functions/Shared_Functions.py:178 #, fuzzy msgid "" "Note that your submission has been inserted into the bibliographic task " "queue and is waiting for execution.\n" msgstr "" "Notez que votre soumission a été insérée dans la file d'attente et est en " "attente d'exécution.\n" #: modules/websubmit/lib/functions/Shared_Functions.py:181 #, python-format msgid "" "The task queue is currently running in automatic mode, and there are " "currently %s tasks waiting to be executed. Your record should be available " "within a few minutes and searchable within an hour or thereabouts.\n" msgstr "" "La file d'attente des tâches tourne actuellement en mode automatique, et\n" "contient %s tâches en attente d'exécution. Votre notice devrait être \n" "disponible dans quelques minutes et recherchable dans un peu près une " "heure.\n" #: modules/websubmit/lib/functions/Shared_Functions.py:183 msgid "" "Because of a human intervention or a temporary problem, the task queue is " "currently set to the manual mode. Your submission is well registered but may " "take longer than usual before it is fully integrated and searchable.\n" msgstr "" "En raison d'une intervention humain ou d'un problème temporaire, la queue\n" "d'exécution des tâches tourne actuellement en mode manuel. Votre soumission\n" "a bien été enregistrée mais pourrait n'être intégrée et rendue disponible \n" "qu'après un temps plus long qu'à l'habitude.\n" #: modules/websubmit/lib/websubmit_engine.py:177 #: modules/websubmit/lib/websubmit_engine.py:790 #: modules/websubmit/web/yoursubmissions.py:61 msgid "Sorry, you must log in to perform this action." msgstr "" "Désolé, vous devez d'abord vous identifier pour effectuer cette action." #: modules/websubmit/lib/websubmit_engine.py:184 #: modules/websubmit/lib/websubmit_engine.py:820 msgid "Not enough information to go ahead with the submission." msgstr "Il manque des informations pour continuer la soumission." #: modules/websubmit/lib/websubmit_engine.py:190 #: modules/websubmit/lib/websubmit_engine.py:271 #: modules/websubmit/lib/websubmit_engine.py:281 #: modules/websubmit/lib/websubmit_engine.py:353 #: modules/websubmit/lib/websubmit_engine.py:394 #: modules/websubmit/lib/websubmit_engine.py:834 #: modules/websubmit/lib/websubmit_engine.py:872 #: modules/websubmit/lib/websubmit_engine.py:930 #: modules/websubmit/lib/websubmit_engine.py:971 msgid "Invalid parameters" msgstr "Paramètres non valides" #: modules/websubmit/lib/websubmit_engine.py:196 #: modules/websubmit/lib/websubmit_engine.py:826 msgid "Invalid doctype and act parameters" msgstr "Paramètres doctype et act non valides" #: modules/websubmit/lib/websubmit_engine.py:227 #: modules/websubmit/lib/websubmit_engine.py:799 #: modules/websubmit/lib/websubmit_engine.py:861 #, python-format msgid "Unable to find the submission directory for the action: %s" msgstr "Impossible de trouver le répertoire de soumission pour l'action: %s" #: modules/websubmit/lib/websubmit_engine.py:236 #: modules/websubmit/lib/websubmit_engine.py:1014 msgid "Unknown document type" msgstr "Type de document inconnu" #: modules/websubmit/lib/websubmit_engine.py:242 #: modules/websubmit/lib/websubmit_engine.py:1020 msgid "Unknown action" msgstr "Action inconnue" #: modules/websubmit/lib/websubmit_engine.py:250 #: modules/websubmit/lib/websubmit_engine.py:1027 msgid "Unable to determine the number of submission pages." msgstr "Impossible de déterminer le nombre de pages de la soumission." #: modules/websubmit/lib/websubmit_engine.py:291 #: modules/websubmit/lib/websubmit_engine.py:880 msgid "" "Unable to create a directory for this submission. The administrator has been " "alerted." msgstr "" "Impossible de créer un répertoire pour cette soumission. L'administrateur a " "été alerté." #: modules/websubmit/lib/websubmit_engine.py:400 #: modules/websubmit/lib/websubmit_engine.py:978 msgid "Cannot create submission directory. The administrator has been alerted." msgstr "" "Impossible de créer le répertoire des soumissions. L'administrateur a été " "alerté." #: modules/websubmit/lib/websubmit_engine.py:422 #: modules/websubmit/lib/websubmit_engine.py:1000 msgid "No file uploaded?" msgstr "Aucun fichier envoyé?" #: modules/websubmit/lib/websubmit_engine.py:463 #: modules/websubmit/lib/websubmit_engine.py:466 #: modules/websubmit/lib/websubmit_engine.py:599 #: modules/websubmit/lib/websubmit_engine.py:602 msgid "Unknown form field found on submission page." msgstr "Champ de formulaire inconnu trouvé sur la page de soumission." #: modules/websubmit/lib/websubmit_engine.py:1063 msgid "" "A serious function-error has been encountered. Adminstrators have been " "alerted.
    Please not that this might be due to wrong characters " "inserted into the form (e.g. by copy and pasting some text from a PDF " "file)." msgstr "" "Une erreur grave a été rencontrée. Les administrateurs ont été alertés.\n" "
    Notez que cela pourrait être dû à des caractères problématiques\n" "insérés dans le formulaire (par ex. en copiant du texte d'un fichier " "PDF)." #: modules/websubmit/lib/websubmit_engine.py:1386 #, python-format msgid "Unable to find document type: %s" msgstr "Impossible de trouver le document de type: %s" #: modules/websubmit/lib/websubmit_engine.py:1672 msgid "The chosen action is not supported by the document type." msgstr "L'action sélectionnée n'est pas supportée par le document." #: modules/websubmit/lib/websubmit_engine.py:1749 #: modules/websubmit/lib/websubmit_webinterface.py:1128 #: modules/websubmit/web/approve.py:81 msgid "Warning" msgstr "Attention" #: modules/websubmit/lib/websubmit_templates.py:84 msgid "Document types available for submission" msgstr "Types de documents disponibles pour la soumission" #: modules/websubmit/lib/websubmit_templates.py:85 msgid "Please select the type of document you want to submit" msgstr "Veuillez choisir le type de document que vous souhaitez soumettre" #: modules/websubmit/lib/websubmit_templates.py:102 msgid "No document types available." msgstr "Aucun type de document disponible." #: modules/websubmit/lib/websubmit_templates.py:268 msgid "Please log in first." msgstr "Veuillez d'abord vous identifier." #: modules/websubmit/lib/websubmit_templates.py:268 msgid "Use the top-right menu to log in." msgstr "Utilisez le menu en haut à droite pour vous identifier." #: modules/websubmit/lib/websubmit_templates.py:312 msgid "Please select a category" msgstr "Veuillez choisir une catégorie" #: modules/websubmit/lib/websubmit_templates.py:351 msgid "Notice" msgstr "Note" #: modules/websubmit/lib/websubmit_templates.py:352 msgid "Select a category and then click on an action button." msgstr "" "Sélectionnez une catégorie, puis cliquez sur le bouton pour effectuer " "l'action choisie." #: modules/websubmit/lib/websubmit_templates.py:375 msgid "" "To continue with a previously interrupted submission, enter an access number " "into the box below:" msgstr "" "Afin de poursuivre une soumission interrompue, entrez le numéro d'accès " "directement dans le champ ci-dessous:" #: modules/websubmit/lib/websubmit_templates.py:377 msgid "GO" msgstr "ALLER" #: modules/websubmit/lib/websubmit_templates.py:498 #: modules/websubmit/lib/websubmit_templates.py:967 msgid "SUMMARY" msgstr "RÉSUMÉ" #: modules/websubmit/lib/websubmit_templates.py:534 #: modules/bibharvest/lib/oai_harvest_admin.py:846 #: modules/bibharvest/lib/oai_harvest_admin.py:899 msgid "Previous page" msgstr "Page précédente" #: modules/websubmit/lib/websubmit_templates.py:540 msgid "Submission number" msgstr "N° de soumission" #: modules/websubmit/lib/websubmit_templates.py:554 #: modules/bibharvest/lib/oai_harvest_admin.py:831 #: modules/bibharvest/lib/oai_harvest_admin.py:887 msgid "Next page" msgstr "Page suivante" #: modules/websubmit/lib/websubmit_templates.py:569 #: modules/websubmit/lib/websubmit_templates.py:1008 msgid "Are you sure you want to quit this submission?" msgstr "Êtes-vous sûr de vouloir quitter cette soumission?" #: modules/websubmit/lib/websubmit_templates.py:571 #: modules/websubmit/lib/websubmit_templates.py:1009 #: modules/websubmit/lib/websubmit_templates.py:1018 msgid "Back to main menu" msgstr "Retourner au menu principal" #: modules/websubmit/lib/websubmit_templates.py:574 msgid "" "This is your submission access number. It can be used to continue with an " "interrupted submission in case of problems." msgstr "" "Ceci est votre numéro d'accès à la soumission. Il vous permettra de " "reprendre une soumission interrompue, en cas de problème." #: modules/websubmit/lib/websubmit_templates.py:575 msgid "Mandatory fields appear in red in the SUMMARY window." msgstr "" "Les champs obligatoires apparaissent en rouge dans le fenêtre de RÉSUMÉ." #: modules/websubmit/lib/websubmit_templates.py:721 #, python-format msgid "The field %s is mandatory." msgstr "Le champ %s est obligatoire." #: modules/websubmit/lib/websubmit_templates.py:721 msgid "Please make a choice in the select box" msgstr "Veuillez entrer un choix dans le menu sélection" #: modules/websubmit/lib/websubmit_templates.py:735 msgid "Please press a button." msgstr "Veuillez appuyer sur un bouton." #: modules/websubmit/lib/websubmit_templates.py:743 #, python-format msgid "The field %s is mandatory. Please fill it in." msgstr "Le champ %s est obligatoire. Veuillez le remplir." #: modules/websubmit/lib/websubmit_templates.py:820 #, python-format msgid "The field %(field)s is mandatory." msgstr "Le champ %(field)s est obligatoire." #: modules/websubmit/lib/websubmit_templates.py:821 msgid "Going back to page" msgstr "Retour à la page" #: modules/websubmit/lib/websubmit_templates.py:958 msgid "finished!" msgstr "terminé!" #: modules/websubmit/lib/websubmit_templates.py:966 msgid "end of action" msgstr "fin de l'action" #: modules/websubmit/lib/websubmit_templates.py:990 msgid "Submission no" msgstr "N° de soumission" #: modules/websubmit/lib/websubmit_templates.py:1061 #, python-format msgid "" "Here is the %(x_action)s function list for %(x_doctype)s documents at level " "%(x_step)s" msgstr "" "Liste des fonctions %(x_action)s pour les documents de type %(x_doctype)s au " "niveau %(x_step)s" #: modules/websubmit/lib/websubmit_templates.py:1066 msgid "Function" msgstr "Fonction" #: modules/websubmit/lib/websubmit_templates.py:1067 msgid "Score" msgstr "Score" #: modules/websubmit/lib/websubmit_templates.py:1068 msgid "Running function" msgstr "Fonction en cours" #: modules/websubmit/lib/websubmit_templates.py:1074 #, python-format msgid "Function %s does not exist." msgstr "la fonction %s n'existe pas." #: modules/websubmit/lib/websubmit_templates.py:1113 msgid "You must now" msgstr "Vous devez maintenant" +#: modules/websubmit/lib/websubmit_templates.py:1118 +#: modules/bibharvest/lib/oai_harvest_admin.py:409 +#: modules/bibharvest/lib/oai_harvest_admin.py:417 +#: modules/bibharvest/lib/oai_harvest_admin.py:431 +#: modules/bibharvest/lib/oai_harvest_admin.py:446 +msgid "or" +msgstr "ou" + #: modules/websubmit/lib/websubmit_templates.py:1145 msgid "record" msgstr "notice" #: modules/websubmit/lib/websubmit_templates.py:1147 msgid "document" msgstr "document" #: modules/websubmit/lib/websubmit_templates.py:1149 #: modules/websubmit/lib/websubmit_templates.py:1247 msgid "version" msgstr "version" #: modules/websubmit/lib/websubmit_templates.py:1184 msgid "file(s)" msgstr "fichier(s)" #: modules/websubmit/lib/websubmit_templates.py:1231 msgid "see" msgstr "afficher" #: modules/websubmit/lib/websubmit_templates.py:1429 msgid "For" msgstr "Pour" #: modules/websubmit/lib/websubmit_templates.py:1430 msgid "all types of document" msgstr "tous les types de documents" #: modules/websubmit/lib/websubmit_templates.py:1485 msgid "Subm.No." msgstr "Soum. No." #: modules/websubmit/lib/websubmit_templates.py:1486 msgid "Reference" msgstr "Référence" #: modules/websubmit/lib/websubmit_templates.py:1488 msgid "First access" msgstr "Premier accès" #: modules/websubmit/lib/websubmit_templates.py:1489 msgid "Last access" msgstr "Dernier accès" #: modules/websubmit/lib/websubmit_templates.py:1499 msgid "Are you sure you want to delete this submission?" msgstr "Êtes-vous sûr de vouloir supprimer cette soumission?" #: modules/websubmit/lib/websubmit_templates.py:1500 #, python-format msgid "Delete submission %(x_id)s in %(x_docname)s" msgstr "Supprimer la soumission %(x_id)s dans %(x_docname)s" #: modules/websubmit/lib/websubmit_templates.py:1524 msgid "Reference not yet given" msgstr "La référence n'a pas encore été fournie" #: modules/websubmit/lib/websubmit_templates.py:1595 msgid "Refereed Documents" msgstr "Documents relus" #: modules/websubmit/lib/websubmit_templates.py:1605 msgid "You are a general referee" msgstr "Vous êtes le relecteur en chef" #: modules/websubmit/lib/websubmit_templates.py:1611 msgid "You are a referee for category:" msgstr "Vous êtes relecteur pour la catégorie:" #: modules/websubmit/lib/websubmit_templates.py:1650 #: modules/websubmit/lib/websubmit_templates.py:1695 msgid "List of refereed types of documents" msgstr "Liste des types de documents relus" #: modules/websubmit/lib/websubmit_templates.py:1651 #: modules/websubmit/lib/websubmit_templates.py:1696 msgid "" "Select one of the following types of documents to check the documents status" msgstr "" "Choisissez l'un des types de documents suivants pour vérifier le statut des " "documents" #: modules/websubmit/lib/websubmit_templates.py:1664 msgid "Go to specific approval workflow" msgstr "Aller au processus d'approbation spécifique" #: modules/websubmit/lib/websubmit_templates.py:1752 msgid "List of refereed categories" msgstr "Liste des catégories de relecture" #: modules/websubmit/lib/websubmit_templates.py:1753 #: modules/websubmit/lib/websubmit_templates.py:1902 msgid "Please choose a category" msgstr "Veuillez choisir une catégorie" #: modules/websubmit/lib/websubmit_templates.py:1773 #: modules/websubmit/lib/websubmit_templates.py:1814 #: modules/websubmit/lib/websubmit_templates.py:1925 #: modules/websubmit/lib/websubmit_templates.py:1983 #: modules/websubmit/lib/websubmit_templates.py:2049 #: modules/websubmit/lib/websubmit_templates.py:2174 msgid "Pending" msgstr "En attente" #: modules/websubmit/lib/websubmit_templates.py:1779 #: modules/websubmit/lib/websubmit_templates.py:1817 #: modules/websubmit/lib/websubmit_templates.py:1932 #: modules/websubmit/lib/websubmit_templates.py:1986 #: modules/websubmit/lib/websubmit_templates.py:2050 #: modules/websubmit/lib/websubmit_templates.py:2175 msgid "Approved" msgstr "Approuvé" #: modules/websubmit/lib/websubmit_templates.py:1785 #: modules/websubmit/lib/websubmit_templates.py:1819 #: modules/websubmit/lib/websubmit_templates.py:1820 #: modules/websubmit/lib/websubmit_templates.py:1939 #: modules/websubmit/lib/websubmit_templates.py:1988 #: modules/websubmit/lib/websubmit_templates.py:1989 #: modules/websubmit/lib/websubmit_templates.py:2051 #: modules/websubmit/lib/websubmit_templates.py:2176 msgid "Rejected" msgstr "Rejeté" #: modules/websubmit/lib/websubmit_templates.py:1813 #: modules/websubmit/lib/websubmit_templates.py:1982 msgid "Key" msgstr "Notation" #: modules/websubmit/lib/websubmit_templates.py:1816 #: modules/websubmit/lib/websubmit_templates.py:1985 msgid "Waiting for approval" msgstr "En attente d'approbation" #: modules/websubmit/lib/websubmit_templates.py:1818 #: modules/websubmit/lib/websubmit_templates.py:1987 msgid "Already approved" msgstr "Déjà approuvé" #: modules/websubmit/lib/websubmit_templates.py:1821 #: modules/websubmit/lib/websubmit_templates.py:1992 msgid "Some documents are pending." msgstr "Quelques documents sont en attente." #: modules/websubmit/lib/websubmit_templates.py:1866 msgid "List of refereing categories" msgstr "Liste des catégories de relecture" #: modules/websubmit/lib/websubmit_templates.py:1946 #: modules/websubmit/lib/websubmit_templates.py:1990 #: modules/websubmit/lib/websubmit_templates.py:1991 #: modules/websubmit/lib/websubmit_templates.py:2177 msgid "Cancelled" msgstr "Annulé" #: modules/websubmit/lib/websubmit_templates.py:2046 #: modules/websubmit/lib/websubmit_templates.py:2134 msgid "List of refereed documents" msgstr "Liste des documents relus" #: modules/websubmit/lib/websubmit_templates.py:2047 #: modules/websubmit/lib/websubmit_templates.py:2171 msgid "Click on a report number for more information." msgstr "Cliquez sur le numéro de rapport pour obtenir plus d'informations." #: modules/websubmit/lib/websubmit_templates.py:2048 #: modules/websubmit/lib/websubmit_templates.py:2173 msgid "Report Number" msgstr "Numéro de rapport" #: modules/websubmit/lib/websubmit_templates.py:2136 msgid "List of publication documents" msgstr "Liste des documents de publication" #: modules/websubmit/lib/websubmit_templates.py:2138 msgid "List of direct approval documents" msgstr "Liste des documents approuvés directement" #: modules/websubmit/lib/websubmit_templates.py:2311 msgid "Your request has been sent to the referee." msgstr "Votre requête a été envoyée au relecteur." #: modules/websubmit/lib/websubmit_templates.py:2327 #: modules/websubmit/lib/websubmit_templates.py:2447 #: modules/websubmit/lib/websubmit_templates.py:2757 #: modules/websubmit/lib/websubmit_templates.py:2941 msgid "Title:" msgstr "Titre:" #: modules/websubmit/lib/websubmit_templates.py:2333 #: modules/websubmit/lib/websubmit_templates.py:2454 #: modules/websubmit/lib/websubmit_templates.py:2763 #: modules/websubmit/lib/websubmit_templates.py:2947 msgid "Author:" msgstr "Auteur:" #: modules/websubmit/lib/websubmit_templates.py:2341 #: modules/websubmit/lib/websubmit_templates.py:2463 #: modules/websubmit/lib/websubmit_templates.py:2771 #: modules/websubmit/lib/websubmit_templates.py:2955 msgid "More information:" msgstr "Plus d'information:" #: modules/websubmit/lib/websubmit_templates.py:2342 #: modules/websubmit/lib/websubmit_templates.py:2464 #: modules/websubmit/lib/websubmit_templates.py:2772 #: modules/websubmit/lib/websubmit_templates.py:2956 msgid "Click here" msgstr "Cliquer ici" #: modules/websubmit/lib/websubmit_templates.py:2350 msgid "Approval note:" msgstr "Note d'approbation:" #: modules/websubmit/lib/websubmit_templates.py:2355 #, python-format msgid "" "This document is still %(x_fmt_open)swaiting for approval%(x_fmt_close)s." msgstr "" "Ce document est toujours %(x_fmt_open)sen attente d'approbation" "%(x_fmt_close)s." #: modules/websubmit/lib/websubmit_templates.py:2358 #: modules/websubmit/lib/websubmit_templates.py:2378 #: modules/websubmit/lib/websubmit_templates.py:2387 msgid "It was first sent for approval on:" msgstr "Il a été envoyé pour approbation pour la première fois le:" #: modules/websubmit/lib/websubmit_templates.py:2360 #: modules/websubmit/lib/websubmit_templates.py:2362 #: modules/websubmit/lib/websubmit_templates.py:2380 #: modules/websubmit/lib/websubmit_templates.py:2382 #: modules/websubmit/lib/websubmit_templates.py:2389 #: modules/websubmit/lib/websubmit_templates.py:2391 msgid "Last approval email was sent on:" msgstr "Le dernier email d'approbation a été envoyé le:" #: modules/websubmit/lib/websubmit_templates.py:2363 msgid "" "You can send an approval request email again by clicking the following " "button:" msgstr "" "Vous pouvez envoyer un email de requête d'approbation en cliquant sur le " "bouton suivant:" #: modules/websubmit/lib/websubmit_templates.py:2365 #: modules/websubmit/web/publiline.py:364 msgid "Send Again" msgstr "Envoyer une nouvelle fois" #: modules/websubmit/lib/websubmit_templates.py:2366 msgid "WARNING! Upon confirmation, an email will be sent to the referee." msgstr "ATTENTION! Un email sera envoyé à votre relecteur si vous confirmez." #: modules/websubmit/lib/websubmit_templates.py:2369 msgid "" "As a referee for this document, you may click this button to approve or " "reject it" msgstr "" "En tant que relecteur de ce document, vous pouvez cliquer sur le bouton pour " "l'approuver ou le rejeter" #: modules/websubmit/lib/websubmit_templates.py:2371 msgid "Approve/Reject" msgstr "Approuver/Rejeter" #: modules/websubmit/lib/websubmit_templates.py:2376 #, python-format msgid "This document has been %(x_fmt_open)sapproved%(x_fmt_close)s." msgstr "Ce document a été %(x_fmt_open)sapprouvé%(x_fmt_close)s." #: modules/websubmit/lib/websubmit_templates.py:2377 msgid "Its approved reference is:" msgstr "Sa référence d'approbation est:" #: modules/websubmit/lib/websubmit_templates.py:2383 msgid "It was approved on:" msgstr "Ce document a été approuvé le:" #: modules/websubmit/lib/websubmit_templates.py:2385 #, python-format msgid "This document has been %(x_fmt_open)srejected%(x_fmt_close)s." msgstr "Ce document a été %(x_fmt_open)srejeté%(x_fmt_close)s." #: modules/websubmit/lib/websubmit_templates.py:2392 msgid "It was rejected on:" msgstr "Ce document a été rejeté le:" #: modules/websubmit/lib/websubmit_templates.py:2475 #: modules/websubmit/lib/websubmit_templates.py:2530 #: modules/websubmit/lib/websubmit_templates.py:2593 msgid "It has first been asked for refereing process on the " msgstr "Le processus de relecture a été demandé pour le première fois le " #: modules/websubmit/lib/websubmit_templates.py:2478 #: modules/websubmit/lib/websubmit_templates.py:2532 msgid "Last request e-mail was sent to the publication committee chair on the " msgstr "" "Le dernière requête a été envoyée par email au responsable du comité de " "publication le " #: modules/websubmit/lib/websubmit_templates.py:2482 msgid "A referee has been selected by the publication committee on the " msgstr "Un relecteur a été sélectionné par le comité de publication le " #: modules/websubmit/lib/websubmit_templates.py:2485 #: modules/websubmit/lib/websubmit_templates.py:2548 msgid "No referee has been selected yet." msgstr "Aucun relecteur n'a été sélectionné pour l'instant." #: modules/websubmit/lib/websubmit_templates.py:2487 #: modules/websubmit/lib/websubmit_templates.py:2550 msgid "Select a referee" msgstr "Sélectionner un relecteur" #: modules/websubmit/lib/websubmit_templates.py:2492 msgid "" "The referee has sent his final recommendations to the publication committee " "on the " msgstr "" "Le relecteur a envoyé ses recommandations finales au comité de publication " "le " #: modules/websubmit/lib/websubmit_templates.py:2495 #: modules/websubmit/lib/websubmit_templates.py:2556 msgid "No recommendation from the referee yet." msgstr "Aucune recommandation du relecteur pour l'instant" #: modules/websubmit/lib/websubmit_templates.py:2497 #: modules/websubmit/lib/websubmit_templates.py:2507 #: modules/websubmit/lib/websubmit_templates.py:2558 #: modules/websubmit/lib/websubmit_templates.py:2566 #: modules/websubmit/lib/websubmit_templates.py:2574 msgid "Send a recommendation" msgstr "Envoyer une recommandation" #: modules/websubmit/lib/websubmit_templates.py:2502 #: modules/websubmit/lib/websubmit_templates.py:2570 msgid "" "The publication committee has sent his final recommendations to the project " "leader on the " msgstr "" "Le comité de publication a envoyé ses recommandations finales au chef de " "projet le " #: modules/websubmit/lib/websubmit_templates.py:2505 #: modules/websubmit/lib/websubmit_templates.py:2572 msgid "No recommendation from the publication committee yet." msgstr "Aucune recommandation du comité de publication pour l'instant." #: modules/websubmit/lib/websubmit_templates.py:2512 #: modules/websubmit/lib/websubmit_templates.py:2578 #: modules/websubmit/lib/websubmit_templates.py:2598 msgid "It has been cancelled by the author on the " msgstr "Annulé par l'auteur le " #: modules/websubmit/lib/websubmit_templates.py:2516 #: modules/websubmit/lib/websubmit_templates.py:2581 #: modules/websubmit/lib/websubmit_templates.py:2601 msgid "It has been approved by the project leader on the " msgstr "Approuvé par le chef de section le " #: modules/websubmit/lib/websubmit_templates.py:2519 #: modules/websubmit/lib/websubmit_templates.py:2583 #: modules/websubmit/lib/websubmit_templates.py:2603 msgid "It has been rejected by the project leader on the " msgstr "Rejeté par le chef de section le " #: modules/websubmit/lib/websubmit_templates.py:2522 #: modules/websubmit/lib/websubmit_templates.py:2585 #: modules/websubmit/lib/websubmit_templates.py:2605 msgid "No final decision taken yet." msgstr "Aucun décision finale pour l'instant" #: modules/websubmit/lib/websubmit_templates.py:2524 #: modules/websubmit/lib/websubmit_templates.py:2587 #: modules/websubmit/lib/websubmit_templates.py:2607 #: modules/websubmit/web/publiline.py:1133 #: modules/websubmit/web/publiline.py:1143 msgid "Take a decision" msgstr "Prendre une décision" #: modules/websubmit/lib/websubmit_templates.py:2535 msgid "" "An editorial board has been selected by the publication committee on the " msgstr "" "Un comité rédactionnel a été sélectionné par le comité de publication le " #: modules/websubmit/lib/websubmit_templates.py:2537 msgid "Add an author list" msgstr "Ajouter une liste d'auteur" #: modules/websubmit/lib/websubmit_templates.py:2540 msgid "No editorial board has been selected yet." msgstr "Aucun comité rédactionnel n'a été sélectionné pour l'instant." #: modules/websubmit/lib/websubmit_templates.py:2542 msgid "Select an editorial board" msgstr "Sélectionner un comité rédactionnel" #: modules/websubmit/lib/websubmit_templates.py:2546 msgid "A referee has been selected by the editorial board on the " msgstr "Un relecteur a été sélectionné par le comité rédactionnel le " #: modules/websubmit/lib/websubmit_templates.py:2554 msgid "" "The referee has sent his final recommendations to the editorial board on the " msgstr "" "Le relecteur a envoyé ses recommandations finales au comité rédactionnel le " #: modules/websubmit/lib/websubmit_templates.py:2562 msgid "" "The editorial board has sent his final recommendations to the publication " "committee on the " msgstr "" "Le comité rédactionnel a envoyé ses recommandation finales au comité de " "publication le " #: modules/websubmit/lib/websubmit_templates.py:2564 msgid "No recommendation from the editorial board yet." msgstr "Aucune recommandation du comité rédactionnel pour l'instant." #: modules/websubmit/lib/websubmit_templates.py:2595 msgid "Last request e-mail was sent to the project leader on the " msgstr "La dernière demande a été envoyé par email au chef de projet le " #: modules/websubmit/lib/websubmit_templates.py:2689 msgid "Comments overview" msgstr "Aperçu des commentaires" #: modules/websubmit/lib/websubmit_templates.py:2811 msgid "search for user" msgstr "chercher un utilisateur" #: modules/websubmit/lib/websubmit_templates.py:2813 msgid "search for users" msgstr "chercher des utilisateurs" #: modules/websubmit/lib/websubmit_templates.py:2816 #: modules/websubmit/lib/websubmit_templates.py:2818 #: modules/websubmit/lib/websubmit_templates.py:2871 #: modules/websubmit/lib/websubmit_templates.py:2873 msgid "select user" msgstr "choisir un utilisateur" #: modules/websubmit/lib/websubmit_templates.py:2827 msgid "connected" msgstr "connecté" #: modules/websubmit/lib/websubmit_templates.py:2830 msgid "add this user" msgstr "ajouter cet utilisateur" #: modules/websubmit/lib/websubmit_templates.py:2880 msgid "remove this user" msgstr "Enlevez cet utilisateur" #: modules/websubmit/lib/websubmit_templates.py:2994 msgid "User" msgstr "Utilisateur" #: modules/websubmit/lib/websubmit_templates.py:3075 #: modules/websubmit/web/publiline.py:1130 msgid "Select:" msgstr "Choisir:" #: modules/websubmit/lib/websubmit_templates.py:3076 msgid "approve" msgstr "approuver" #: modules/websubmit/lib/websubmit_templates.py:3077 msgid "reject" msgstr "rejeter" #: modules/websubmit/lib/websubmit_webinterface.py:114 msgid "Requested record does not seem to have been integrated." -msgstr "La notice demandée ne semble pas avoir déjà intégrée." +msgstr "Désolé, cette publication n'existe pas." #: modules/websubmit/lib/websubmit_webinterface.py:140 msgid "" "The system has encountered an error in retrieving the list of files for this " "document." msgstr "" "Le système a rencontré une erreur lors de la recherche des fichiers de ce " "document." #: modules/websubmit/lib/websubmit_webinterface.py:196 #, python-format msgid "The format %s does not exist for the given version: %s" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:210 msgid "This file is restricted: " -msgstr "L'accès à ce fichier est restreint:" +msgstr "L'accès à ce fichier est restreint: " #: modules/websubmit/lib/websubmit_webinterface.py:222 msgid "An error has happened in trying to stream the request file." -msgstr "Une erreur est survenue en tentant de transmettre le fichier demandé." +msgstr "Une erreur est survenue en tentant de transmettre le fichier." #: modules/websubmit/lib/websubmit_webinterface.py:225 msgid "The requested file is hidden and can not be accessed." -msgstr "Le fichier demandé est caché et ne peut pas être accédé." +msgstr "Le fichier est caché et ne peut pas être affiché." #: modules/websubmit/lib/websubmit_webinterface.py:232 msgid "Requested file does not seem to exist." -msgstr "Le fichier demandé ne semble pas exister." +msgstr "Le fichier est introuvable." -#: modules/websubmit/lib/websubmit_webinterface.py:266 +#: modules/websubmit/lib/websubmit_webinterface.py:265 msgid "Access to Fulltext" -msgstr "Accès aux Fichiers" +msgstr "Accès au texte intégral" -#: modules/websubmit/lib/websubmit_webinterface.py:315 +#: modules/websubmit/lib/websubmit_webinterface.py:314 msgid "An error has happened in trying to retrieve the requested file." -msgstr "Une erreur est survenue en tentant de retrouver le fichier demandé." +msgstr "Une erreur est survenue en tentant de récupérer le fichier." -#: modules/websubmit/lib/websubmit_webinterface.py:317 +#: modules/websubmit/lib/websubmit_webinterface.py:316 msgid "Not enough information to retrieve the document" -msgstr "Il manque des informations pour retrouver le document" +msgstr "Pas assez d'informations pour récupérer le document" -#: modules/websubmit/lib/websubmit_webinterface.py:325 +#: modules/websubmit/lib/websubmit_webinterface.py:324 msgid "An error has happened in trying to retrieving the requested file." -msgstr "Une erreur est survenue en tentant de retrouver le fichier demandé." +msgstr "Une erreur est survenue en tentant de récupérer le fichier." -#: modules/websubmit/lib/websubmit_webinterface.py:376 +#: modules/websubmit/lib/websubmit_webinterface.py:375 msgid "Manage Document Files" msgstr "Gérer les fichiers" -#: modules/websubmit/lib/websubmit_webinterface.py:394 +#: modules/websubmit/lib/websubmit_webinterface.py:393 #, python-format msgid "Your modifications to record #%i have been submitted" -msgstr "Vos modifications de la notice #%i ont été soumises" +msgstr "Vos modifications à la notice #%i ont été soumises" -#: modules/websubmit/lib/websubmit_webinterface.py:402 +#: modules/websubmit/lib/websubmit_webinterface.py:401 #, python-format msgid "Your modifications to record #%i have been cancelled" -msgstr "Vos modifications de la notice #%i ont été annulées" +msgstr "Vos modifications à la notice #%i ont été annulées" -#: modules/websubmit/lib/websubmit_webinterface.py:411 +#: modules/websubmit/lib/websubmit_webinterface.py:410 msgid "Edit" msgstr "Éditer" -#: modules/websubmit/lib/websubmit_webinterface.py:412 +#: modules/websubmit/lib/websubmit_webinterface.py:411 msgid "Edit record" msgstr "Éditer la notice" #: modules/websubmit/lib/websubmit_webinterface.py:427 #: modules/websubmit/lib/websubmit_webinterface.py:458 msgid "Document File Manager" -msgstr "Gestionnaire de fichiers" +msgstr "Gestionnaire de documents" #: modules/websubmit/lib/websubmit_webinterface.py:428 #: modules/websubmit/lib/websubmit_webinterface.py:458 #, python-format msgid "Record #%i" msgstr "Notice #%i" #: modules/websubmit/lib/websubmit_webinterface.py:450 msgid "Cancel all changes" -msgstr "Annuler tous les changements" +msgstr "Annuler les modifications" #: modules/websubmit/lib/websubmit_webinterface.py:922 msgid "Sorry, 'sub' parameter missing..." msgstr "Désolé, le paramètre 'sub' est manquant..." #: modules/websubmit/lib/websubmit_webinterface.py:925 msgid "Sorry. Cannot analyse parameter" msgstr "Désolé. Impossible d'analyser le paramètre" #: modules/websubmit/lib/websubmit_webinterface.py:986 msgid "Sorry, invalid URL..." -msgstr "Désolé, URL non valide..." +msgstr "Désolé, URL invalide..." #: modules/websubmit/web/approve.py:55 msgid "approve.py: cannot determine document reference" msgstr "approve.py: impossible de déterminer la référence du document" #: modules/websubmit/web/approve.py:58 msgid "approve.py: cannot find document in database" msgstr "approve.py: impossible de trouver le document dans la base de données" #: modules/websubmit/web/approve.py:72 msgid "Sorry parameter missing..." msgstr "Désolé, paramètre manquant..." #: modules/websubmit/web/publiline.py:130 msgid "Document Approval Workflow" msgstr "Flux d'Approbation des Documents" #: modules/websubmit/web/publiline.py:151 msgid "Approval and Refereeing Workflow" msgstr "Processus d'Approbation et d'Examination" #: modules/websubmit/web/publiline.py:330 #: modules/websubmit/web/publiline.py:431 #: modules/websubmit/web/publiline.py:657 msgid "Approval has never been requested for this document." msgstr "Ce document n'a jamais été soumis pour approbation." #: modules/websubmit/web/publiline.py:356 #: modules/websubmit/web/publiline.py:457 #: modules/websubmit/web/publiline.py:682 msgid "Unable to display document." msgstr "Ce document ne peut pas être affiché." #: modules/websubmit/web/publiline.py:686 #: modules/websubmit/web/publiline.py:810 #: modules/websubmit/web/publiline.py:925 #: modules/websubmit/web/publiline.py:989 #: modules/websubmit/web/publiline.py:1030 #: modules/websubmit/web/publiline.py:1086 #: modules/websubmit/web/publiline.py:1149 #: modules/websubmit/web/publiline.py:1199 msgid "Action unauthorized for this document." msgstr "Cette action n'est pas autorisée sur ce document." #: modules/websubmit/web/publiline.py:689 #: modules/websubmit/web/publiline.py:813 #: modules/websubmit/web/publiline.py:928 #: modules/websubmit/web/publiline.py:992 #: modules/websubmit/web/publiline.py:1033 #: modules/websubmit/web/publiline.py:1089 #: modules/websubmit/web/publiline.py:1152 #: modules/websubmit/web/publiline.py:1202 msgid "Action unavailable for this document." msgstr "Cette action ne peut pas s'appliquer à ce document." #: modules/websubmit/web/publiline.py:699 msgid "Adding users to the editorial board" msgstr "Ajout d'utilisateurs au comité de rédaction" #: modules/websubmit/web/publiline.py:727 #: modules/websubmit/web/publiline.py:850 msgid "no qualified users, try new search." msgstr "aucun utilisateur qualifié, tentez une nouvelle recherche." #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "hits" msgstr "résultats" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "too many qualified users, specify more narrow search." msgstr "trop d'utilisateurs qualifiés, restreignez votre recherche." #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "limit" msgstr "limite" #: modules/websubmit/web/publiline.py:745 msgid "users in brackets are already attached to the role, try another one..." msgstr "" "les utilisateurs entre crochets sont déjà assignés à ce rôle, choisissez-en " "un autre..." #: modules/websubmit/web/publiline.py:751 msgid "Removing users from the editorial board" msgstr "Enlever des utilisateurs du comité rédactionnel" #: modules/websubmit/web/publiline.py:787 msgid "Validate the editorial board selection" msgstr "Valider la sélection du comité rédactionnel" #: modules/websubmit/web/publiline.py:832 msgid "Referee selection" msgstr "Sélection des relecteurs" #: modules/websubmit/web/publiline.py:918 msgid "Come back to the document" msgstr "Revenir au document" #: modules/websubmit/web/publiline.py:1103 msgid "Back to the document" msgstr "Retour au document" #: modules/websubmit/web/publiline.py:1131 #: modules/websubmit/web/publiline.py:1191 msgid "Approve" msgstr "Approuver" #: modules/websubmit/web/publiline.py:1132 #: modules/websubmit/web/publiline.py:1192 msgid "Reject" msgstr "Rejeter" #: modules/websubmit/web/publiline.py:1230 msgid "Wrong action for this document." msgstr "Mauvaise action sur ce document." #: modules/websubmit/web/yourapprovals.py:57 msgid "You are not authorized to use approval system." msgstr "Vous n'êtes pas autorisé à utiliser le système d'approbations." #: modules/webjournal/lib/webjournal_templates.py:49 msgid "Available Journals" msgstr "Journaux Disponibles" #: modules/webjournal/lib/webjournal_templates.py:58 #: modules/webjournal/lib/webjournal_templates.py:97 #, python-format msgid "Contact %(x_url_open)sthe administrator%(x_url_close)s" msgstr "Contacter %(x_url_open)sà l'administrateur%(x_url_close)s" #: modules/webjournal/lib/webjournal_templates.py:142 msgid "Regeneration Error" msgstr "Erreur à la régénération" #: modules/webjournal/lib/webjournal_templates.py:143 msgid "" "The issue could not be correctly regenerated. Please contact your " "administrator." msgstr "" "L'édition n'a pas pu être correctement régénérée. Veuillez contacter votre " "administrateur." #: modules/webjournal/lib/webjournal_templates.py:268 #, python-format msgid "If you cannot read this email please go to %(x_journal_link)s" msgstr "" "Si vous ne pouvez pas lire cet email, veuillez consulter %(x_journal_link)s" #: modules/webjournal/lib/webjournal_templates.py:415 #: modules/webjournal/lib/webjournal_templates.py:664 #: modules/webjournal/lib/webjournaladminlib.py:292 #: modules/webjournal/lib/webjournaladminlib.py:312 msgid "Add" msgstr "Ajouter" #: modules/webjournal/lib/webjournal_templates.py:416 #: modules/webjournal/lib/webjournaladminlib.py:331 msgid "Publish" msgstr "Publier" #: modules/webjournal/lib/webjournal_templates.py:417 #: modules/webjournal/lib/webjournaladminlib.py:292 #: modules/webjournal/lib/webjournaladminlib.py:309 msgid "Refresh" msgstr "Rafraichir" #: modules/webjournal/lib/webjournal_templates.py:480 #: modules/webjournal/lib/webjournaladminlib.py:357 #: modules/bibcirculation/lib/bibcirculation_templates.py:3522 #: modules/bibcirculation/lib/bibcirculation_templates.py:3766 #: modules/bibcirculation/lib/bibcirculation_templates.py:7062 #: modules/bibcirculation/lib/bibcirculation_templates.py:14199 msgid "Update" msgstr "Mettre à jour" #: modules/webjournal/lib/webjournal_templates.py:659 msgid "Apply" msgstr "Appliquer" #: modules/webjournal/lib/webjournal_config.py:63 msgid "Page not found" msgstr "Page introuvable" #: modules/webjournal/lib/webjournal_config.py:64 msgid "The requested page does not exist" msgstr "La page demandée n'existe pas." #: modules/webjournal/lib/webjournal_config.py:94 msgid "No journal articles" msgstr "Aucun article" #: modules/webjournal/lib/webjournal_config.py:95 #: modules/webjournal/lib/webjournal_config.py:135 msgid "Problem with the configuration of this journal" msgstr "Problème rencontré avec la configuration de ce journal" #: modules/webjournal/lib/webjournal_config.py:134 msgid "No journal issues" msgstr "Aucune édition" #: modules/webjournal/lib/webjournal_config.py:172 msgid "Journal article error" msgstr "Erreur interne" #: modules/webjournal/lib/webjournal_config.py:173 msgid "We could not know which article you were looking for" msgstr "Nous n'avons pas pu trouver l'article demandé" #: modules/webjournal/lib/webjournal_config.py:206 msgid "No journals available" msgstr "Aucun journal disponible" #: modules/webjournal/lib/webjournal_config.py:207 msgid "We could not provide you any journals" msgstr "Aucun journal trouvé" #: modules/webjournal/lib/webjournal_config.py:208 msgid "" "It seems that there are no journals defined on this server. Please contact " "support if this is not right." msgstr "" "Il semble qu'il n'y a pas de journal défini sur ce serveur. Veuillez " "contacter le support si c'est incorrect." #: modules/webjournal/lib/webjournal_config.py:233 msgid "Select a journal on this server" msgstr "Sélectionner un journal de ce serveur" #: modules/webjournal/lib/webjournal_config.py:234 msgid "We couldn't guess which journal you are looking for" msgstr "Le journal demandé n'a pas pu être trouvé" #: modules/webjournal/lib/webjournal_config.py:235 msgid "" "You did not provide an argument for a journal name. Please select the " "journal you want to read in the list below." msgstr "" "Vous n'avez pas fourni de nom de journal. Veuillez sélectionner un journal " "dans la liste ci-dessous." #: modules/webjournal/lib/webjournal_config.py:261 msgid "No current issue" msgstr "Aucune édition actuelle" #: modules/webjournal/lib/webjournal_config.py:262 msgid "We could not find any informtion on the current issue" msgstr "Nous n'avons trouvé aucune information concernant l'édition actuelle" #: modules/webjournal/lib/webjournal_config.py:263 msgid "" "The configuration for the current issue seems to be empty. Try providing an " "issue number or check with support." msgstr "" "La configuration pour l'édition actuelle semble vierge. Fournissez le numéro " "d'une édition ou contactez le support." #: modules/webjournal/lib/webjournal_config.py:290 msgid "Issue number badly formed" msgstr "Numéro d'édition incorrect" #: modules/webjournal/lib/webjournal_config.py:291 msgid "We could not read the issue number you provided" msgstr "Impossible de lire le numéro d'édition fourni" #: modules/webjournal/lib/webjournal_config.py:320 msgid "Archive date badly formed" msgstr "Format de date d'archive incorrect" #: modules/webjournal/lib/webjournal_config.py:321 msgid "We could not read the archive date you provided" msgstr "Impossible de lire la date d'archive fournie" #: modules/webjournal/lib/webjournal_config.py:355 msgid "No popup record" msgstr "Aucune notice pour ce \"popup\"" #: modules/webjournal/lib/webjournal_config.py:356 msgid "We could not deduce the popup article you requested" msgstr "Impossible de déterminer l'article \"popup\" demandé" #: modules/webjournal/lib/webjournal_config.py:388 msgid "Update error" msgstr "Erreur de mise à jour" #: modules/webjournal/lib/webjournal_config.py:389 #: modules/webjournal/lib/webjournal_config.py:419 msgid "There was an internal error" msgstr "Erreur interne" #: modules/webjournal/lib/webjournal_config.py:418 msgid "Journal publishing DB error" msgstr "Erreur de publication du journal dans la base de données" #: modules/webjournal/lib/webjournal_config.py:450 msgid "Journal issue error" msgstr "Erreur d'édition" #: modules/webjournal/lib/webjournal_config.py:451 msgid "Issue not found" msgstr "Numéro introuvable" #: modules/webjournal/lib/webjournal_config.py:480 msgid "Journal ID error" msgstr "ID du journal incorrect" #: modules/webjournal/lib/webjournal_config.py:481 msgid "We could not find the id for this journal in the Database" msgstr "Impossible de trouver l'identifiant du journal dans la base de données" #: modules/webjournal/lib/webjournal_config.py:512 #: modules/webjournal/lib/webjournal_config.py:514 #, python-format msgid "Category \"%(category_name)s\" not found" msgstr "La catégorie \"%(category_name)s\" n'a pas été trouvée" #: modules/webjournal/lib/webjournal_config.py:516 msgid "Sorry, this category does not exist for this journal and issue." msgstr "Désolé, la catégorie n'existe pas pour ce journal et numéro" #: modules/webjournal/lib/webjournaladminlib.py:343 msgid "Please select an issue" msgstr "Veuillez choisir un numéro" #: modules/webjournal/web/admin/webjournaladmin.py:77 msgid "WebJournal Admin" msgstr "Administration de WebJournal" #: modules/webjournal/web/admin/webjournaladmin.py:119 #, python-format msgid "Administrate %(journal_name)s" msgstr "Administrer %(journal_name)s" #: modules/webjournal/web/admin/webjournaladmin.py:158 msgid "Feature a record" msgstr "Mettre en avant une notice" #: modules/webjournal/web/admin/webjournaladmin.py:220 msgid "Email Alert System" msgstr "Système d'Alerte Email" #: modules/webjournal/web/admin/webjournaladmin.py:273 msgid "Issue regenerated" msgstr "Edition régénérée" #: modules/webjournal/web/admin/webjournaladmin.py:324 msgid "Publishing Interface" msgstr "Interface de publication" #: modules/webjournal/web/admin/webjournaladmin.py:350 msgid "Add Journal" msgstr "Ajouter un Journal" #: modules/webjournal/web/admin/webjournaladmin.py:352 msgid "Edit Settings" msgstr "Modifier les réglages" #: modules/bibcatalog/lib/bibcatalog_templates.py:43 msgid "You have " msgstr "Vous avez " #: modules/bibcatalog/lib/bibcatalog_templates.py:43 #, fuzzy msgid "tickets" msgstr "fois" #: modules/bibcatalog/lib/bibcatalog_templates.py:62 msgid "show" msgstr "afficher" #: modules/bibcatalog/lib/bibcatalog_templates.py:63 msgid "close" msgstr "fermer" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:91 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:107 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:126 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:141 msgid "No information available" -msgstr "Aucune information disponible" +msgstr "Aucun information disponible" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:111 msgid "No seminars today" msgstr "Aucun séminaire aujourd'hui" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:248 msgid "What's on today" msgstr "A l'affiche" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:249 msgid "Seminars of the week" msgstr "Séminaires de la semaine" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py:164 msgid "There are no new articles for the moment" msgstr "Aucun nouvel article pour le moment" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py:287 msgid "What's new" msgstr "Quoi de neuf" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:225 msgid "Under the CERN sky" msgstr "Sous le ciel du CERN" #: modules/webjournal/lib/elements/bfe_webjournal_article_author.py:48 #, python-format msgid "About your article at %(url)s" msgstr "À propos de votre article à %(url)s" #: modules/webjournal/lib/elements/bfe_webjournal_imprint.py:122 msgid "Issue No." msgstr "Numéro" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:221 msgid "Did you know?" msgstr "Saviez-vous?" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:253 #, python-format msgid "" "Hi,\n" "\n" "Have a look at the following article:\n" "<%(url)s>" msgstr "" "Salut,\n" "\n" "Jette un œil à cet article:\n" "<%(url)s>" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:260 msgid "Send this article" msgstr "Envoyer cet article" #: modules/webjournal/lib/elements/bfe_webjournal_rss.py:141 msgid "Subscribe by RSS" msgstr "S'abonner au flux RSS" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:87 msgid "News Articles" msgstr "Actualités" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:88 msgid "Official News" msgstr "Communications officielles" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:89 msgid "Training and Development" msgstr "Formation et développement" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:90 msgid "General Information" msgstr "Informations générales" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:106 msgid "Archive" msgstr "Archives" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:133 msgid "Select Year:" msgstr "Choisir l'année:" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:139 msgid "Select Issue:" msgstr "Choisir le numéro:" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:143 msgid "Select Date:" msgstr "Choisir la date:" #: modules/bibedit/lib/bibedit_webinterface.py:183 msgid "Comparing two record revisions" msgstr "Comparaison de révisions" #: modules/bibedit/lib/bibedit_webinterface.py:207 msgid "Failed to create a ticket" msgstr "Échec lors de la création d'un ticket" #: modules/bibedit/lib/bibeditmulti_templates.py:297 msgid "Next Step" msgstr "Étape Suivante" #: modules/bibedit/lib/bibeditmulti_templates.py:298 msgid "Search criteria" msgstr "Critère de recherche" #: modules/bibedit/lib/bibeditmulti_templates.py:299 msgid "Output tags" msgstr "Champs en sortie" #: modules/bibedit/lib/bibeditmulti_templates.py:300 msgid "Filter collection" msgstr "Filtrer par collection" #: modules/bibedit/lib/bibeditmulti_templates.py:301 msgid "1. Choose search criteria" msgstr "1. Choisissez un critère de recherche" #: modules/bibedit/lib/bibeditmulti_templates.py:302 msgid "" "Specify the criteria you'd like to use for filtering records that will be " "changed. Use \"Search\" to see which records would have been filtered using " "these criteria." msgstr "" "Spécifiez le critère à utiliser pour filtrer les notices à modifier.\n" "Utiliser \"Recherche\" pour afficher les notices qui seraient filtrées en " "utilisant ce critère." #: modules/bibedit/lib/bibeditmulti_templates.py:304 msgid "Preview results" msgstr "Aperçu des résultats" #: modules/bibedit/lib/bibeditmulti_templates.py:505 msgid "2. Define changes" msgstr "2. Définir les modifications" #: modules/bibedit/lib/bibeditmulti_templates.py:506 msgid "" "Specify fields and their subfields that should be changed in every record " "matching the search criteria." msgstr "" "Spécifiez les champs et sous-champs à modifier dans chaque notice " "correspondant au critère de recherche" #: modules/bibedit/lib/bibeditmulti_templates.py:507 msgid "Define new field action" msgstr "Ajouter une action sur un champ" #: modules/bibedit/lib/bibeditmulti_templates.py:508 msgid "Define new subfield action" msgstr "Ajouter une action sur un sous-champ" #: modules/bibedit/lib/bibeditmulti_templates.py:510 msgid "Select action" msgstr "Choisir une action" #: modules/bibedit/lib/bibeditmulti_templates.py:511 msgid "Add field" msgstr "Ajouter un champ" #: modules/bibedit/lib/bibeditmulti_templates.py:512 msgid "Delete field" msgstr "Effacer un champ" #: modules/bibedit/lib/bibeditmulti_templates.py:513 msgid "Update field" msgstr "Mettre à jour un champ" #: modules/bibedit/lib/bibeditmulti_templates.py:514 msgid "Add subfield" msgstr "Ajouter un sous-champ" #: modules/bibedit/lib/bibeditmulti_templates.py:515 msgid "Delete subfield" msgstr "Effacer un sous-champ" #: modules/bibedit/lib/bibeditmulti_templates.py:516 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:260 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:402 msgid "Save" msgstr "Enregistrer" #: modules/bibedit/lib/bibeditmulti_templates.py:518 msgid "Replace substring" msgstr "Remplacer partie de texte" #: modules/bibedit/lib/bibeditmulti_templates.py:519 msgid "Replace full content" msgstr "Remplacer tout le contenu" #: modules/bibedit/lib/bibeditmulti_templates.py:520 msgid "with" msgstr "avec" #: modules/bibedit/lib/bibeditmulti_templates.py:521 msgid "when field equals" msgstr "si le champ vaut" #: modules/bibedit/lib/bibeditmulti_templates.py:522 #, fuzzy msgid "on subfield" msgstr "Ajouter un sous-champ" #: modules/bibedit/lib/bibeditmulti_templates.py:523 msgid "new value" msgstr "nouvelle valeur" #: modules/bibedit/lib/bibeditmulti_templates.py:524 msgid "condition" msgstr "condition" #: modules/bibedit/lib/bibeditmulti_templates.py:525 msgid "Apply only to specific field instances" msgstr "Appliquer uniquement à certaines instances de champ" #: modules/bibedit/lib/bibeditmulti_templates.py:526 msgid "value" msgstr "valeur" #: modules/bibedit/lib/bibeditmulti_templates.py:555 msgid "Back to Results" msgstr "Retour aux Résultats" #: modules/bibedit/lib/bibeditmulti_templates.py:623 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:571 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:590 msgid "records found" msgstr "notices trouvées" #: modules/bibedit/lib/bibeditmulti_webinterface.py:114 msgid "Multi-Record Editor" msgstr "Éditeur de notices multiplies" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:132 msgid "Export Job Overview" msgstr "Liste Tâches d'Exportation" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:117 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:189 msgid "New Export Job" msgstr "Nouvelle Tâche d'Exportation" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:118 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:443 msgid "Export Job History" msgstr "Historique des exportations" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:174 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:195 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:323 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:534 msgid "Run" msgstr "Lancer" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:176 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:325 msgid "New" msgstr "Nouveau" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:196 msgid "Last run" msgstr "Dernière exécution" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:256 msgid "Frequency" msgstr "Fréquence" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:257 msgid "Output Format" msgstr "Format de sortie" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:258 msgid "Start" msgstr "Départ" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:259 msgid "Output Directory" msgstr "Dossier destination" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:262 msgid "Edit Queries" msgstr "Modifier Requêtes" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:348 msgid "Output Fields" msgstr "Champs en sortie" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:400 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:460 msgid "Output fields" msgstr "Champs en sortie" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:438 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:605 msgid "Download" msgstr "Télécharger" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:439 msgid "View as: " msgstr "Afficher en:" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:533 msgid "Job" msgstr "Tâche" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:588 msgid "Total" msgstr "Total" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:653 msgid "All" msgstr "Tout" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:654 msgid "None" msgstr "Aucun" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:672 #, fuzzy msgid "Manualy" msgstr "janvier" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:674 msgid "Daily" msgstr "Quotidien" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:676 msgid "Weekly" msgstr "Hebdomadaire" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:678 msgid "Monthly" msgstr "Mensuel" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:192 msgid "Edit Export Job" msgstr "Éditer tâche d'exportation" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:239 msgid "Query Results" msgstr "Résultats Requête" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:246 msgid "Export Job Queries" msgstr "Requêtes de tâche d'exportation" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:320 msgid "New Query" msgstr "Nouvelle Requête" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:325 msgid "Edit Query" msgstr "Éditer Requête" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:356 msgid "Export Job Results" msgstr "Résultats de l'exportation" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:389 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:423 msgid "Export Job Result" msgstr "Résultat de l'exportation" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:465 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:500 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:530 msgid "You are not authorised to access this resource." msgstr "Vous n'avez pas l'autorisation d'accéder à cette ressource." #: modules/bibcirculation/lib/bibcirculation_utils.py:298 #: modules/bibcirculation/lib/bibcirculation_templates.py:7922 #: modules/bibcirculation/lib/bibcirculation_templates.py:9432 msgid "Loan information" msgstr "Informations sur le prêt" #: modules/bibcirculation/lib/bibcirculation_utils.py:300 msgid "This book is sent to you ..." msgstr "Ce livre vous a été envoyé..." #: modules/bibcirculation/lib/bibcirculation_utils.py:320 #: modules/bibcirculation/lib/bibcirculation_templates.py:1624 #: modules/bibcirculation/lib/bibcirculation_templates.py:1925 #: modules/bibcirculation/lib/bibcirculation_templates.py:5228 #: modules/bibcirculation/lib/bibcirculation_templates.py:15577 #: modules/bibcirculation/lib/bibcirculation_templates.py:15739 +#: modules/websearch/lib/websearch_templates_epfl.py:982 msgid "Author" msgstr "Auteur" -#: modules/bibcirculation/lib/bibcirculation_utils.py:321 -msgid "Editor" -msgstr "Éditeur" - #: modules/bibcirculation/lib/bibcirculation_utils.py:322 #: modules/bibcirculation/lib/bibcirculation_templates.py:1627 #: modules/bibcirculation/lib/bibcirculation_templates.py:2485 #: modules/bibcirculation/lib/bibcirculation_templates.py:2828 #: modules/bibcirculation/lib/bibcirculation_templates.py:5230 #: modules/bibcirculation/lib/bibcirculation_templates.py:5289 #: modules/bibcirculation/lib/bibcirculation_templates.py:6322 #: modules/bibcirculation/lib/bibcirculation_templates.py:6552 #: modules/bibcirculation/lib/bibcirculation_templates.py:7010 #: modules/bibcirculation/lib/bibcirculation_templates.py:7161 #: modules/bibcirculation/lib/bibcirculation_templates.py:8635 #: modules/bibcirculation/lib/bibcirculation_templates.py:8868 #: modules/bibcirculation/lib/bibcirculation_templates.py:9102 #: modules/bibcirculation/lib/bibcirculation_templates.py:9327 #: modules/bibcirculation/lib/bibcirculation_templates.py:9534 #: modules/bibcirculation/lib/bibcirculation_templates.py:9744 #: modules/bibcirculation/lib/bibcirculation_templates.py:10143 #: modules/bibcirculation/lib/bibcirculation_templates.py:10344 #: modules/bibcirculation/lib/bibcirculation_templates.py:10597 #: modules/bibcirculation/lib/bibcirculation_templates.py:10743 #: modules/bibcirculation/lib/bibcirculation_templates.py:10938 #: modules/bibcirculation/lib/bibcirculation_templates.py:11278 #: modules/bibcirculation/lib/bibcirculation_templates.py:11357 #: modules/bibcirculation/lib/bibcirculation_templates.py:12250 #: modules/bibcirculation/lib/bibcirculation_templates.py:12326 #: modules/bibcirculation/lib/bibcirculation_templates.py:13106 #: modules/bibcirculation/lib/bibcirculation_templates.py:13379 #: modules/bibcirculation/lib/bibcirculation_templates.py:14386 #: modules/bibcirculation/lib/bibcirculation_templates.py:14602 #: modules/bibcirculation/lib/bibcirculation_templates.py:14851 #: modules/bibcirculation/lib/bibcirculation_templates.py:15870 #: modules/bibcirculation/lib/bibcirculation_templates.py:16094 msgid "ISBN" msgstr "ISBN" #: modules/bibcirculation/lib/bibcirculation_utils.py:339 msgid "Id" msgstr "Identifiant" #: modules/bibcirculation/lib/bibcirculation_utils.py:341 #: modules/bibcirculation/lib/bibcirculation_templates.py:2187 #: modules/bibcirculation/lib/bibcirculation_templates.py:2273 #: modules/bibcirculation/lib/bibcirculation_templates.py:2479 #: modules/bibcirculation/lib/bibcirculation_templates.py:3517 #: modules/bibcirculation/lib/bibcirculation_templates.py:3648 #: modules/bibcirculation/lib/bibcirculation_templates.py:4834 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5405 #: modules/bibcirculation/lib/bibcirculation_templates.py:5665 #: modules/bibcirculation/lib/bibcirculation_templates.py:5727 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5907 #: modules/bibcirculation/lib/bibcirculation_templates.py:6139 #: modules/bibcirculation/lib/bibcirculation_templates.py:6202 #: modules/bibcirculation/lib/bibcirculation_templates.py:8088 #: modules/bibcirculation/lib/bibcirculation_templates.py:8316 #: modules/bibcirculation/lib/bibcirculation_templates.py:8912 #: modules/bibcirculation/lib/bibcirculation_templates.py:9370 #: modules/bibcirculation/lib/bibcirculation_templates.py:10442 #: modules/bibcirculation/lib/bibcirculation_templates.py:10608 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13645 #: modules/bibcirculation/lib/bibcirculation_templates.py:13888 #: modules/bibcirculation/lib/bibcirculation_templates.py:13955 #: modules/bibcirculation/lib/bibcirculation_templates.py:14195 #: modules/bibcirculation/lib/bibcirculation_templates.py:14897 #: modules/bibcirculation/lib/bibcirculation_templates.py:16104 msgid "Address" msgstr "Adresse" #: modules/bibcirculation/lib/bibcirculation_utils.py:347 #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:528 #: modules/bibcirculation/lib/bibcirculation_templates.py:2279 #: modules/bibcirculation/lib/bibcirculation_templates.py:2862 #: modules/bibcirculation/lib/bibcirculation_templates.py:3200 #: modules/bibcirculation/lib/bibcirculation_templates.py:3394 #: modules/bibcirculation/lib/bibcirculation_templates.py:3947 #: modules/bibcirculation/lib/bibcirculation_templates.py:4126 #: modules/bibcirculation/lib/bibcirculation_templates.py:4306 #: modules/bibcirculation/lib/bibcirculation_templates.py:4557 #: modules/bibcirculation/lib/bibcirculation_templates.py:4684 #: modules/bibcirculation/lib/bibcirculation_templates.py:6574 #: modules/bibcirculation/lib/bibcirculation_templates.py:7926 #: modules/bibcirculation/lib/bibcirculation_templates.py:8375 #: modules/bibcirculation/lib/bibcirculation_templates.py:9434 #: modules/bibcirculation/lib/bibcirculation_templates.py:11834 #: modules/bibcirculation/lib/bibcirculation_templates.py:11966 #: modules/bibcirculation/lib/bibcirculation_templates.py:12708 #: modules/bibcirculation/lib/bibcirculation_templates.py:12811 #: modules/bibcirculation/lib/bibcirculation_templates.py:12917 #: modules/bibcirculation/lib/bibcirculation_templates.py:15102 msgid "Due date" msgstr "Échéance du prêt" #: modules/bibcirculation/lib/bibcirculation_utils.py:384 msgid "List of pending hold requests" msgstr "Liste des réservations en attente" #: modules/bibcirculation/lib/bibcirculation_utils.py:401 #: modules/bibcirculation/lib/bibcirculation_templates.py:1622 #: modules/bibcirculation/lib/bibcirculation_templates.py:2520 #: modules/bibcirculation/lib/bibcirculation_templates.py:2586 #: modules/bibcirculation/lib/bibcirculation_templates.py:2695 #: modules/bibcirculation/lib/bibcirculation_templates.py:3299 #: modules/bibcirculation/lib/bibcirculation_templates.py:3389 #: modules/bibcirculation/lib/bibcirculation_templates.py:4122 #: modules/bibcirculation/lib/bibcirculation_templates.py:4302 #: modules/bibcirculation/lib/bibcirculation_templates.py:4553 #: modules/bibcirculation/lib/bibcirculation_templates.py:4681 #: modules/bibcirculation/lib/bibcirculation_templates.py:11070 msgid "Borrower" msgstr "Emprunteur" #: modules/bibcirculation/lib/bibcirculation_utils.py:402 #: modules/bibcirculation/lib/bibcirculation_templates.py:526 #: modules/bibcirculation/lib/bibcirculation_templates.py:628 #: modules/bibcirculation/lib/bibcirculation_templates.py:714 #: modules/bibcirculation/lib/bibcirculation_templates.py:1073 #: modules/bibcirculation/lib/bibcirculation_templates.py:1259 #: modules/bibcirculation/lib/bibcirculation_templates.py:1424 #: modules/bibcirculation/lib/bibcirculation_templates.py:1623 #: modules/bibcirculation/lib/bibcirculation_templates.py:1669 #: modules/bibcirculation/lib/bibcirculation_templates.py:2277 #: modules/bibcirculation/lib/bibcirculation_templates.py:2534 #: modules/bibcirculation/lib/bibcirculation_templates.py:2587 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3195 #: modules/bibcirculation/lib/bibcirculation_templates.py:3832 #: modules/bibcirculation/lib/bibcirculation_templates.py:3944 #: modules/bibcirculation/lib/bibcirculation_templates.py:4123 #: modules/bibcirculation/lib/bibcirculation_templates.py:4303 #: modules/bibcirculation/lib/bibcirculation_templates.py:4554 #: modules/bibcirculation/lib/bibcirculation_templates.py:4858 #: modules/bibcirculation/lib/bibcirculation_templates.py:9900 #: modules/bibcirculation/lib/bibcirculation_templates.py:11071 #: modules/bibcirculation/lib/bibcirculation_templates.py:15097 #: modules/bibcirculation/lib/bibcirculation_templates.py:15356 msgid "Item" msgstr "Exemplaire" #: modules/bibcirculation/lib/bibcirculation_utils.py:403 #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:1074 #: modules/bibcirculation/lib/bibcirculation_templates.py:1260 #: modules/bibcirculation/lib/bibcirculation_templates.py:2278 #: modules/bibcirculation/lib/bibcirculation_templates.py:2697 #: modules/bibcirculation/lib/bibcirculation_templates.py:2863 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3197 #: modules/bibcirculation/lib/bibcirculation_templates.py:3301 #: modules/bibcirculation/lib/bibcirculation_templates.py:3391 #: modules/bibcirculation/lib/bibcirculation_templates.py:3834 #: modules/bibcirculation/lib/bibcirculation_templates.py:6575 #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6771 #: modules/bibcirculation/lib/bibcirculation_templates.py:7029 #: modules/bibcirculation/lib/bibcirculation_templates.py:7183 #: modules/bibcirculation/lib/bibcirculation_templates.py:7573 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 #: modules/bibcirculation/lib/bibcirculation_templates.py:9628 #: modules/bibcirculation/lib/bibcirculation_templates.py:9812 #: modules/bibcirculation/lib/bibcirculation_templates.py:11791 #: modules/bibcirculation/lib/bibcirculation_templates.py:11964 #: modules/bibcirculation/lib/bibcirculation_templates.py:12080 #: modules/bibcirculation/lib/bibcirculation_templates.py:15357 msgid "Library" msgstr "Bibliothèque" #: modules/bibcirculation/lib/bibcirculation_utils.py:404 #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:1075 #: modules/bibcirculation/lib/bibcirculation_templates.py:1261 #: modules/bibcirculation/lib/bibcirculation_templates.py:2278 #: modules/bibcirculation/lib/bibcirculation_templates.py:2698 #: modules/bibcirculation/lib/bibcirculation_templates.py:2864 #: modules/bibcirculation/lib/bibcirculation_templates.py:3106 #: modules/bibcirculation/lib/bibcirculation_templates.py:3198 #: modules/bibcirculation/lib/bibcirculation_templates.py:3302 #: modules/bibcirculation/lib/bibcirculation_templates.py:3392 #: modules/bibcirculation/lib/bibcirculation_templates.py:3835 #: modules/bibcirculation/lib/bibcirculation_templates.py:5238 #: modules/bibcirculation/lib/bibcirculation_templates.py:6576 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6772 #: modules/bibcirculation/lib/bibcirculation_templates.py:7030 #: modules/bibcirculation/lib/bibcirculation_templates.py:7205 #: modules/bibcirculation/lib/bibcirculation_templates.py:7574 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 #: modules/bibcirculation/lib/bibcirculation_templates.py:15358 msgid "Location" msgstr "Emplacement" #: modules/bibcirculation/lib/bibcirculation_utils.py:405 #: modules/bibcirculation/lib/bibcirculation_templates.py:780 #: modules/bibcirculation/lib/bibcirculation_templates.py:929 #: modules/bibcirculation/lib/bibcirculation_templates.py:1076 #: modules/bibcirculation/lib/bibcirculation_templates.py:1262 #: modules/bibcirculation/lib/bibcirculation_templates.py:1426 #: modules/bibcirculation/lib/bibcirculation_templates.py:1671 #: modules/bibcirculation/lib/bibcirculation_templates.py:2589 #: modules/bibcirculation/lib/bibcirculation_templates.py:2699 #: modules/bibcirculation/lib/bibcirculation_templates.py:3106 #: modules/bibcirculation/lib/bibcirculation_templates.py:3303 #: modules/bibcirculation/lib/bibcirculation_templates.py:3836 #: modules/bibcirculation/lib/bibcirculation_templates.py:4435 #: modules/bibcirculation/lib/bibcirculation_templates.py:15359 msgid "From" msgstr "De" #: modules/bibcirculation/lib/bibcirculation_utils.py:406 #: modules/bibcirculation/lib/bibcirculation_templates.py:802 #: modules/bibcirculation/lib/bibcirculation_templates.py:929 #: modules/bibcirculation/lib/bibcirculation_templates.py:1077 #: modules/bibcirculation/lib/bibcirculation_templates.py:1263 #: modules/bibcirculation/lib/bibcirculation_templates.py:1427 #: modules/bibcirculation/lib/bibcirculation_templates.py:1672 #: modules/bibcirculation/lib/bibcirculation_templates.py:2590 #: modules/bibcirculation/lib/bibcirculation_templates.py:2700 #: modules/bibcirculation/lib/bibcirculation_templates.py:3107 #: modules/bibcirculation/lib/bibcirculation_templates.py:3304 #: modules/bibcirculation/lib/bibcirculation_templates.py:3837 #: modules/bibcirculation/lib/bibcirculation_templates.py:4437 #: modules/bibcirculation/lib/bibcirculation_templates.py:15360 #: modules/bibknowledge/lib/bibknowledge_templates.py:334 msgid "To" msgstr "À" #: modules/bibcirculation/lib/bibcirculation_utils.py:407 #: modules/bibcirculation/lib/bibcirculation_templates.py:629 #: modules/bibcirculation/lib/bibcirculation_templates.py:1078 #: modules/bibcirculation/lib/bibcirculation_templates.py:1264 #: modules/bibcirculation/lib/bibcirculation_templates.py:1428 #: modules/bibcirculation/lib/bibcirculation_templates.py:1673 #: modules/bibcirculation/lib/bibcirculation_templates.py:2591 #: modules/bibcirculation/lib/bibcirculation_templates.py:2701 #: modules/bibcirculation/lib/bibcirculation_templates.py:3107 #: modules/bibcirculation/lib/bibcirculation_templates.py:3305 #: modules/bibcirculation/lib/bibcirculation_templates.py:3838 #: modules/bibcirculation/lib/bibcirculation_templates.py:11690 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11965 #: modules/bibcirculation/lib/bibcirculation_templates.py:12081 #: modules/bibcirculation/lib/bibcirculation_templates.py:12508 #: modules/bibcirculation/lib/bibcirculation_templates.py:12602 #: modules/bibcirculation/lib/bibcirculation_templates.py:12705 #: modules/bibcirculation/lib/bibcirculation_templates.py:12808 #: modules/bibcirculation/lib/bibcirculation_templates.py:12914 #: modules/bibcirculation/lib/bibcirculation_templates.py:15099 #: modules/bibcirculation/lib/bibcirculation_templates.py:15361 msgid "Request date" msgstr "Date de demande" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:108 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:152 msgid "You are not authorized to use loans." msgstr "Vous n'êtes pas autorisé à faire des emprunts." #: modules/bibcirculation/lib/bibcirculation_webinterface.py:157 #: modules/bibcirculation/lib/bibcirculation_templates.py:489 msgid "Loans - historical overview" msgstr "Prêts - Aperçu de l'historique" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:208 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:264 msgid "You are not authorized to use ill." msgstr "Vous n'êtes pas autorisé à faire des PEBs." #: modules/bibcirculation/lib/bibcirculation_webinterface.py:212 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:282 #: modules/bibcirculation/lib/bibcirculation_templates.py:10732 msgid "Interlibrary loan request for books" msgstr "Demande de prêt interbibliothèques de livre" #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:1511 #: modules/bibcirculation/lib/bibcirculation_templates.py:2277 #: modules/bibcirculation/lib/bibcirculation_templates.py:2860 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3196 #: modules/bibcirculation/lib/bibcirculation_templates.py:3300 #: modules/bibcirculation/lib/bibcirculation_templates.py:3390 #: modules/bibcirculation/lib/bibcirculation_templates.py:3945 #: modules/bibcirculation/lib/bibcirculation_templates.py:4124 #: modules/bibcirculation/lib/bibcirculation_templates.py:4304 #: modules/bibcirculation/lib/bibcirculation_templates.py:4555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4682 #: modules/bibcirculation/lib/bibcirculation_templates.py:4861 #: modules/bibcirculation/lib/bibcirculation_templates.py:5240 #: modules/bibcirculation/lib/bibcirculation_templates.py:6572 #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6770 #: modules/bibcirculation/lib/bibcirculation_templates.py:7027 #: modules/bibcirculation/lib/bibcirculation_templates.py:7182 #: modules/bibcirculation/lib/bibcirculation_templates.py:7572 #: modules/bibcirculation/lib/bibcirculation_templates.py:7924 #: modules/bibcirculation/lib/bibcirculation_templates.py:8102 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 #: modules/bibcirculation/lib/bibcirculation_templates.py:8636 #: modules/bibcirculation/lib/bibcirculation_templates.py:8869 #: modules/bibcirculation/lib/bibcirculation_templates.py:9103 #: modules/bibcirculation/lib/bibcirculation_templates.py:9328 #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9806 #: modules/bibcirculation/lib/bibcirculation_templates.py:11727 #: modules/bibcirculation/lib/bibcirculation_templates.py:12001 #: modules/bibcirculation/lib/bibcirculation_templates.py:12116 #: modules/bibcirculation/lib/bibcirculation_templates.py:12511 #: modules/bibcirculation/lib/bibcirculation_templates.py:12605 #: modules/bibcirculation/lib/bibcirculation_templates.py:12710 #: modules/bibcirculation/lib/bibcirculation_templates.py:12814 #: modules/bibcirculation/lib/bibcirculation_templates.py:12920 msgid "Barcode" msgstr "Code-barres" #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:2865 #: modules/bibcirculation/lib/bibcirculation_templates.py:5239 #: modules/bibcirculation/lib/bibcirculation_templates.py:6577 #: modules/bibcirculation/lib/bibcirculation_templates.py:6704 #: modules/bibcirculation/lib/bibcirculation_templates.py:6775 #: modules/bibcirculation/lib/bibcirculation_templates.py:7031 #: modules/bibcirculation/lib/bibcirculation_templates.py:7429 #: modules/bibcirculation/lib/bibcirculation_templates.py:7577 #: modules/bibcirculation/lib/bibcirculation_templates.py:7928 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 msgid "Loan period" msgstr "Période de prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:2592 #: modules/bibcirculation/lib/bibcirculation_templates.py:2702 #: modules/bibcirculation/lib/bibcirculation_templates.py:9907 #: modules/bibcirculation/lib/bibcirculation_templates.py:11077 msgid "Option(s)" msgstr "Option(s)" #: modules/bibcirculation/lib/bibcirculation_templates.py:303 #: modules/bibcirculation/lib/bibcirculation_templates.py:8396 msgid "Request" msgstr "Emprunter" #: modules/bibcirculation/lib/bibcirculation_templates.py:333 msgid "See this book on BibCirculation" msgstr "Voir ce livre dans BibCirculation" #: modules/bibcirculation/lib/bibcirculation_templates.py:408 msgid "0 borrower(s) found." msgstr "0 emprunteur trouvé" #: modules/bibcirculation/lib/bibcirculation_templates.py:426 msgid "Borrower(s)" msgstr "Emprunteur(s)" #: modules/bibcirculation/lib/bibcirculation_templates.py:462 #: modules/bibcirculation/lib/bibcirculation_templates.py:747 #: modules/bibcirculation/lib/bibcirculation_templates.py:930 #: modules/bibcirculation/lib/bibcirculation_templates.py:1051 #: modules/bibcirculation/lib/bibcirculation_templates.py:1178 #: modules/bibcirculation/lib/bibcirculation_templates.py:1237 #: modules/bibcirculation/lib/bibcirculation_templates.py:1361 #: modules/bibcirculation/lib/bibcirculation_templates.py:1476 #: modules/bibcirculation/lib/bibcirculation_templates.py:1819 #: modules/bibcirculation/lib/bibcirculation_templates.py:1877 #: modules/bibcirculation/lib/bibcirculation_templates.py:1965 #: modules/bibcirculation/lib/bibcirculation_templates.py:2189 #: modules/bibcirculation/lib/bibcirculation_templates.py:2335 #: modules/bibcirculation/lib/bibcirculation_templates.py:2554 #: modules/bibcirculation/lib/bibcirculation_templates.py:2642 #: modules/bibcirculation/lib/bibcirculation_templates.py:2747 #: modules/bibcirculation/lib/bibcirculation_templates.py:3056 #: modules/bibcirculation/lib/bibcirculation_templates.py:3144 #: modules/bibcirculation/lib/bibcirculation_templates.py:3344 #: modules/bibcirculation/lib/bibcirculation_templates.py:3437 #: modules/bibcirculation/lib/bibcirculation_templates.py:3538 #: modules/bibcirculation/lib/bibcirculation_templates.py:3779 #: modules/bibcirculation/lib/bibcirculation_templates.py:3886 #: modules/bibcirculation/lib/bibcirculation_templates.py:4042 #: modules/bibcirculation/lib/bibcirculation_templates.py:4100 #: modules/bibcirculation/lib/bibcirculation_templates.py:4222 #: modules/bibcirculation/lib/bibcirculation_templates.py:4280 #: modules/bibcirculation/lib/bibcirculation_templates.py:4400 #: modules/bibcirculation/lib/bibcirculation_templates.py:4508 #: modules/bibcirculation/lib/bibcirculation_templates.py:4766 #: modules/bibcirculation/lib/bibcirculation_templates.py:4892 #: modules/bibcirculation/lib/bibcirculation_templates.py:4989 #: modules/bibcirculation/lib/bibcirculation_templates.py:5086 #: modules/bibcirculation/lib/bibcirculation_templates.py:5360 #: modules/bibcirculation/lib/bibcirculation_templates.py:5424 #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5591 #: modules/bibcirculation/lib/bibcirculation_templates.py:5667 #: modules/bibcirculation/lib/bibcirculation_templates.py:5729 #: modules/bibcirculation/lib/bibcirculation_templates.py:5844 #: modules/bibcirculation/lib/bibcirculation_templates.py:5910 #: modules/bibcirculation/lib/bibcirculation_templates.py:6000 #: modules/bibcirculation/lib/bibcirculation_templates.py:6065 #: modules/bibcirculation/lib/bibcirculation_templates.py:6140 #: modules/bibcirculation/lib/bibcirculation_templates.py:6203 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6777 #: modules/bibcirculation/lib/bibcirculation_templates.py:7078 #: modules/bibcirculation/lib/bibcirculation_templates.py:7502 #: modules/bibcirculation/lib/bibcirculation_templates.py:7579 #: modules/bibcirculation/lib/bibcirculation_templates.py:7672 #: modules/bibcirculation/lib/bibcirculation_templates.py:7748 #: modules/bibcirculation/lib/bibcirculation_templates.py:7852 #: modules/bibcirculation/lib/bibcirculation_templates.py:7975 #: modules/bibcirculation/lib/bibcirculation_templates.py:8131 #: modules/bibcirculation/lib/bibcirculation_templates.py:8240 #: modules/bibcirculation/lib/bibcirculation_templates.py:8976 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9814 #: modules/bibcirculation/lib/bibcirculation_templates.py:10057 #: modules/bibcirculation/lib/bibcirculation_templates.py:10472 #: modules/bibcirculation/lib/bibcirculation_templates.py:10622 #: modules/bibcirculation/lib/bibcirculation_templates.py:10822 #: modules/bibcirculation/lib/bibcirculation_templates.py:11029 #: modules/bibcirculation/lib/bibcirculation_templates.py:12156 #: modules/bibcirculation/lib/bibcirculation_templates.py:12976 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13465 #: modules/bibcirculation/lib/bibcirculation_templates.py:13578 #: modules/bibcirculation/lib/bibcirculation_templates.py:13647 #: modules/bibcirculation/lib/bibcirculation_templates.py:13741 #: modules/bibcirculation/lib/bibcirculation_templates.py:13810 #: modules/bibcirculation/lib/bibcirculation_templates.py:13889 #: modules/bibcirculation/lib/bibcirculation_templates.py:13956 #: modules/bibcirculation/lib/bibcirculation_templates.py:14049 #: modules/bibcirculation/lib/bibcirculation_templates.py:14117 #: modules/bibcirculation/lib/bibcirculation_templates.py:14216 #: modules/bibcirculation/lib/bibcirculation_templates.py:14299 #: modules/bibcirculation/lib/bibcirculation_templates.py:14475 #: modules/bibcirculation/lib/bibcirculation_templates.py:15047 #: modules/bibcirculation/lib/bibcirculation_templates.py:15185 #: modules/bibcirculation/lib/bibcirculation_templates.py:15281 #: modules/bibcirculation/lib/bibcirculation_templates.py:15528 #: modules/bibcirculation/lib/bibcirculation_templates.py:15618 #: modules/bibcirculation/lib/bibcirculation_templates.py:15686 #: modules/bibcirculation/lib/bibcirculation_templates.py:15778 #: modules/bibcirculation/lib/bibcirculation_templates.py:15961 #: modules/bibcirculation/lib/bibcirculation_templates.py:16118 #: modules/bibcirculation/lib/bibcirculation_templates.py:16290 #: modules/bibcirculation/lib/bibcirculation_templates.py:16648 msgid "Back" msgstr "Retour" #: modules/bibcirculation/lib/bibcirculation_templates.py:484 #: modules/bibcirculation/lib/bibcirculation_templates.py:4026 msgid "Renew all loans" msgstr "Prolonger tous les prêts" #: modules/bibcirculation/lib/bibcirculation_templates.py:503 msgid "You don't have any book on loan." msgstr "Vous n'avez aucun livre en prêt." #: modules/bibcirculation/lib/bibcirculation_templates.py:527 #: modules/bibcirculation/lib/bibcirculation_templates.py:3199 #: modules/bibcirculation/lib/bibcirculation_templates.py:3393 #: modules/bibcirculation/lib/bibcirculation_templates.py:4125 #: modules/bibcirculation/lib/bibcirculation_templates.py:4305 #: modules/bibcirculation/lib/bibcirculation_templates.py:4556 #: modules/bibcirculation/lib/bibcirculation_templates.py:4683 msgid "Loaned on" msgstr "Emprunté le" #: modules/bibcirculation/lib/bibcirculation_templates.py:529 #: modules/bibcirculation/lib/bibcirculation_templates.py:631 #: modules/bibcirculation/lib/bibcirculation_templates.py:2869 msgid "Action(s)" msgstr "Action(s)" #: modules/bibcirculation/lib/bibcirculation_templates.py:541 msgid "Renew" msgstr "Prolonger" #: modules/bibcirculation/lib/bibcirculation_templates.py:597 #: modules/bibcirculation/lib/bibcirculation_templates.py:627 msgid "Your Requests" msgstr "Vos Réservations" #: modules/bibcirculation/lib/bibcirculation_templates.py:598 msgid "You don't have any request (waiting or pending)." msgstr "Vous n'avez aucune demande en attente." #: modules/bibcirculation/lib/bibcirculation_templates.py:601 #: modules/bibcirculation/lib/bibcirculation_templates.py:677 #: modules/bibcirculation/lib/bibcirculation_templates.py:964 #: modules/bibcirculation/lib/bibcirculation_templates.py:995 #: modules/bibcirculation/lib/bibcirculation_templates.py:5477 #: modules/bibcirculation/lib/bibcirculation_templates.py:5764 #: modules/bibcirculation/lib/bibcirculation_templates.py:5947 #: modules/bibcirculation/lib/bibcirculation_templates.py:6242 #: modules/bibcirculation/lib/bibcirculation_templates.py:6820 #: modules/bibcirculation/lib/bibcirculation_templates.py:7616 #: modules/bibcirculation/lib/bibcirculation_templates.py:8539 #: modules/bibcirculation/lib/bibcirculation_templates.py:9008 #: modules/bibcirculation/lib/bibcirculation_templates.py:9854 #: modules/bibcirculation/lib/bibcirculation_templates.py:10667 #: modules/bibcirculation/lib/bibcirculation_templates.py:10857 #: modules/bibcirculation/lib/bibcirculation_templates.py:13015 #: modules/bibcirculation/lib/bibcirculation_templates.py:13503 #: modules/bibcirculation/lib/bibcirculation_templates.py:13687 #: modules/bibcirculation/lib/bibcirculation_templates.py:13995 #: modules/bibcirculation/lib/bibcirculation_templates.py:15317 msgid "Back to home" msgstr "Revenir à l'accueil" #: modules/bibcirculation/lib/bibcirculation_templates.py:715 msgid "Loaned" msgstr "Emprunté" #: modules/bibcirculation/lib/bibcirculation_templates.py:716 msgid "Returned" msgstr "Rendu" #: modules/bibcirculation/lib/bibcirculation_templates.py:717 msgid "Renewalls" msgstr "Renouvellements" #: modules/bibcirculation/lib/bibcirculation_templates.py:779 #: modules/bibcirculation/lib/bibcirculation_templates.py:928 msgid "Enter your period of interest" msgstr "Entrez la période souhaitée" #: modules/bibcirculation/lib/bibcirculation_templates.py:930 #: modules/bibcirculation/lib/bibcirculation_templates.py:2555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4893 #: modules/bibcirculation/lib/bibcirculation_templates.py:4990 #: modules/bibcirculation/lib/bibcirculation_templates.py:5088 #: modules/bibcirculation/lib/bibcirculation_templates.py:5729 #: modules/bibcirculation/lib/bibcirculation_templates.py:5910 #: modules/bibcirculation/lib/bibcirculation_templates.py:7579 #: modules/bibcirculation/lib/bibcirculation_templates.py:7853 #: modules/bibcirculation/lib/bibcirculation_templates.py:8132 #: modules/bibcirculation/lib/bibcirculation_templates.py:8501 #: modules/bibcirculation/lib/bibcirculation_templates.py:10058 #: modules/bibcirculation/lib/bibcirculation_templates.py:13647 #: modules/bibcirculation/lib/bibcirculation_templates.py:14264 #: modules/bibcirculation/lib/bibcirculation_templates.py:15282 msgid "Confirm" msgstr "Confirmer" #: modules/bibcirculation/lib/bibcirculation_templates.py:959 #: modules/bibcirculation/lib/bibcirculation_templates.py:10852 msgid "You can see your loans " msgstr "Vous pouvez afficher vos emprunts " #: modules/bibcirculation/lib/bibcirculation_templates.py:961 #: modules/bibcirculation/lib/bibcirculation_templates.py:10854 msgid "here" msgstr "ici" #: modules/bibcirculation/lib/bibcirculation_templates.py:962 #: modules/bibcirculation/lib/bibcirculation_templates.py:10855 msgid "." msgstr "." #: modules/bibcirculation/lib/bibcirculation_templates.py:993 #: modules/bibcirculation/lib/bibcirculation_templates.py:2475 msgid "A new loan has been registered." msgstr "Un nouvel emprunt a été enregistré." #: modules/bibcirculation/lib/bibcirculation_templates.py:1050 #: modules/bibcirculation/lib/bibcirculation_templates.py:1236 msgid "No more requests are pending." msgstr "Aucune autre demande n'est en attente." #: modules/bibcirculation/lib/bibcirculation_templates.py:1079 #: modules/bibcirculation/lib/bibcirculation_templates.py:15362 msgid "Actions" msgstr "Actions" #: modules/bibcirculation/lib/bibcirculation_templates.py:1141 #: modules/bibcirculation/lib/bibcirculation_templates.py:1324 #: modules/bibcirculation/lib/bibcirculation_templates.py:15430 msgid "Associate barcode" msgstr "Associer code-barres" #: modules/bibcirculation/lib/bibcirculation_templates.py:1265 msgid "Options" msgstr "Options" #: modules/bibcirculation/lib/bibcirculation_templates.py:1398 msgid "No hold requests waiting." msgstr "Aucune demande de réservation en attente" #: modules/bibcirculation/lib/bibcirculation_templates.py:1425 #: modules/bibcirculation/lib/bibcirculation_templates.py:1670 #: modules/bibcirculation/lib/bibcirculation_templates.py:3833 msgid "Request status" msgstr "Statut demande" #: modules/bibcirculation/lib/bibcirculation_templates.py:1429 #: modules/bibcirculation/lib/bibcirculation_templates.py:1674 msgid "Request options" msgstr "Options demande" #: modules/bibcirculation/lib/bibcirculation_templates.py:1457 msgid "Select hold request" msgstr "Sélectionner la demande de réservation" #: modules/bibcirculation/lib/bibcirculation_templates.py:1528 #: modules/bibcirculation/lib/bibcirculation_templates.py:4509 msgid "Reset" msgstr "Réinitialiser" #: modules/bibcirculation/lib/bibcirculation_templates.py:1565 #, python-format msgid "" "The item %(x_title)s with barcode %(x_barcode)s has been returned with " "success." msgstr "" "L'exemplaire %(x_title)s avec code-barres %(x_barcode)s a été retourné avec " "succès." #: modules/bibcirculation/lib/bibcirculation_templates.py:1621 msgid "Loan informations" msgstr "Informations du prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:1626 #: modules/bibcirculation/lib/bibcirculation_templates.py:1925 #: modules/bibcirculation/lib/bibcirculation_templates.py:2484 #: modules/bibcirculation/lib/bibcirculation_templates.py:2827 #: modules/bibcirculation/lib/bibcirculation_templates.py:5231 #: modules/bibcirculation/lib/bibcirculation_templates.py:6319 #: modules/bibcirculation/lib/bibcirculation_templates.py:6550 #: modules/bibcirculation/lib/bibcirculation_templates.py:7008 #: modules/bibcirculation/lib/bibcirculation_templates.py:7159 #: modules/bibcirculation/lib/bibcirculation_templates.py:8634 #: modules/bibcirculation/lib/bibcirculation_templates.py:8867 #: modules/bibcirculation/lib/bibcirculation_templates.py:9101 #: modules/bibcirculation/lib/bibcirculation_templates.py:9326 #: modules/bibcirculation/lib/bibcirculation_templates.py:9532 #: modules/bibcirculation/lib/bibcirculation_templates.py:9743 #: modules/bibcirculation/lib/bibcirculation_templates.py:10142 #: modules/bibcirculation/lib/bibcirculation_templates.py:10342 #: modules/bibcirculation/lib/bibcirculation_templates.py:10596 #: modules/bibcirculation/lib/bibcirculation_templates.py:10741 #: modules/bibcirculation/lib/bibcirculation_templates.py:10935 #: modules/bibcirculation/lib/bibcirculation_templates.py:11276 #: modules/bibcirculation/lib/bibcirculation_templates.py:11351 #: modules/bibcirculation/lib/bibcirculation_templates.py:11433 #: modules/bibcirculation/lib/bibcirculation_templates.py:12248 #: modules/bibcirculation/lib/bibcirculation_templates.py:12320 #: modules/bibcirculation/lib/bibcirculation_templates.py:13104 #: modules/bibcirculation/lib/bibcirculation_templates.py:13378 #: modules/bibcirculation/lib/bibcirculation_templates.py:14383 #: modules/bibcirculation/lib/bibcirculation_templates.py:14600 #: modules/bibcirculation/lib/bibcirculation_templates.py:14849 #: modules/bibcirculation/lib/bibcirculation_templates.py:15577 #: modules/bibcirculation/lib/bibcirculation_templates.py:15739 #: modules/bibcirculation/lib/bibcirculation_templates.py:15867 #: modules/bibcirculation/lib/bibcirculation_templates.py:16092 msgid "Publisher" msgstr "Éditeur" #: modules/bibcirculation/lib/bibcirculation_templates.py:1628 #: modules/bibcirculation/lib/bibcirculation_templates.py:11967 #: modules/bibcirculation/lib/bibcirculation_templates.py:12812 #: modules/bibcirculation/lib/bibcirculation_templates.py:12918 msgid "Return date" msgstr "Date de retour" #: modules/bibcirculation/lib/bibcirculation_templates.py:1666 #, python-format msgid "There %s request(s) on the book who has been returned." msgstr "Il y a %s réservation(s) sur le livre retourné." #: modules/bibcirculation/lib/bibcirculation_templates.py:1667 msgid "Waiting requests" msgstr "Demandes en attente" #: modules/bibcirculation/lib/bibcirculation_templates.py:1711 msgid "Select request" msgstr "Sélectionner demande" #: modules/bibcirculation/lib/bibcirculation_templates.py:1720 #, python-format msgid "There are no requests waiting on the item %s." msgstr "Il n'y a aucune réservation pour l'exemplaire %s." #: modules/bibcirculation/lib/bibcirculation_templates.py:1754 msgid "Welcome to Invenio BibCirculation Admin" msgstr "Bienvenue sur l'administration de BibCirculation" #: modules/bibcirculation/lib/bibcirculation_templates.py:1818 #: modules/bibcirculation/lib/bibcirculation_templates.py:5527 msgid "Search borrower by" msgstr "Rechercher emprunteur par" #: modules/bibcirculation/lib/bibcirculation_templates.py:1899 msgid "0 item(s) found." msgstr "0 copie trouvée." #: modules/bibcirculation/lib/bibcirculation_templates.py:1926 #: modules/bibcirculation/lib/bibcirculation_templates.py:15578 #: modules/bibcirculation/lib/bibcirculation_templates.py:15740 msgid "No. Copies" msgstr "Nb Exemplaires" #: modules/bibcirculation/lib/bibcirculation_templates.py:2093 #: modules/bibcirculation/lib/bibcirculation_templates.py:8758 #: modules/bibcirculation/lib/bibcirculation_templates.py:9225 #: modules/bibcirculation/lib/bibcirculation_templates.py:10263 #: modules/bibcirculation/lib/bibcirculation_templates.py:14727 #: modules/bibcirculation/lib/bibcirculation_templates.py:16534 msgid "Select user" msgstr "Sélectionner l'utilisateur" #: modules/bibcirculation/lib/bibcirculation_templates.py:2182 #: modules/bibcirculation/lib/bibcirculation_templates.py:2268 msgid "User information" msgstr "Informations sur l'utilisateur" #: modules/bibcirculation/lib/bibcirculation_templates.py:2186 #: modules/bibcirculation/lib/bibcirculation_templates.py:2272 #: modules/bibcirculation/lib/bibcirculation_templates.py:2478 #: modules/bibcirculation/lib/bibcirculation_templates.py:3519 #: modules/bibcirculation/lib/bibcirculation_templates.py:3647 #: modules/bibcirculation/lib/bibcirculation_templates.py:4833 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5404 #: modules/bibcirculation/lib/bibcirculation_templates.py:5664 #: modules/bibcirculation/lib/bibcirculation_templates.py:5726 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5906 #: modules/bibcirculation/lib/bibcirculation_templates.py:6138 #: modules/bibcirculation/lib/bibcirculation_templates.py:6201 #: modules/bibcirculation/lib/bibcirculation_templates.py:8087 #: modules/bibcirculation/lib/bibcirculation_templates.py:8315 #: modules/bibcirculation/lib/bibcirculation_templates.py:8911 #: modules/bibcirculation/lib/bibcirculation_templates.py:9369 #: modules/bibcirculation/lib/bibcirculation_templates.py:10441 #: modules/bibcirculation/lib/bibcirculation_templates.py:10607 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13644 #: modules/bibcirculation/lib/bibcirculation_templates.py:13887 #: modules/bibcirculation/lib/bibcirculation_templates.py:13954 #: modules/bibcirculation/lib/bibcirculation_templates.py:14197 #: modules/bibcirculation/lib/bibcirculation_templates.py:14896 #: modules/bibcirculation/lib/bibcirculation_templates.py:16103 msgid "Phone" msgstr "Téléphone" #: modules/bibcirculation/lib/bibcirculation_templates.py:2188 #: modules/bibcirculation/lib/bibcirculation_templates.py:2274 #: modules/bibcirculation/lib/bibcirculation_templates.py:2480 #: modules/bibcirculation/lib/bibcirculation_templates.py:3649 #: modules/bibcirculation/lib/bibcirculation_templates.py:4835 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5406 #: modules/bibcirculation/lib/bibcirculation_templates.py:5666 #: modules/bibcirculation/lib/bibcirculation_templates.py:5728 #: modules/bibcirculation/lib/bibcirculation_templates.py:8089 #: modules/bibcirculation/lib/bibcirculation_templates.py:8317 #: modules/bibcirculation/lib/bibcirculation_templates.py:8913 #: modules/bibcirculation/lib/bibcirculation_templates.py:9371 #: modules/bibcirculation/lib/bibcirculation_templates.py:10443 #: modules/bibcirculation/lib/bibcirculation_templates.py:10609 #: modules/bibcirculation/lib/bibcirculation_templates.py:11490 #: modules/bibcirculation/lib/bibcirculation_templates.py:12382 #: modules/bibcirculation/lib/bibcirculation_templates.py:14898 #: modules/bibcirculation/lib/bibcirculation_templates.py:16105 msgid "Mailbox" msgstr "Boîte aux lettres" #: modules/bibcirculation/lib/bibcirculation_templates.py:2189 msgid "Barcode(s)" msgstr "Code(s)-barres" #: modules/bibcirculation/lib/bibcirculation_templates.py:2190 #: modules/bibcirculation/lib/bibcirculation_templates.py:2335 #: modules/bibcirculation/lib/bibcirculation_templates.py:5360 #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5667 #: modules/bibcirculation/lib/bibcirculation_templates.py:5844 #: modules/bibcirculation/lib/bibcirculation_templates.py:6140 #: modules/bibcirculation/lib/bibcirculation_templates.py:6203 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6777 #: modules/bibcirculation/lib/bibcirculation_templates.py:7502 #: modules/bibcirculation/lib/bibcirculation_templates.py:8976 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9814 #: modules/bibcirculation/lib/bibcirculation_templates.py:10472 #: modules/bibcirculation/lib/bibcirculation_templates.py:10622 #: modules/bibcirculation/lib/bibcirculation_templates.py:10822 #: modules/bibcirculation/lib/bibcirculation_templates.py:11029 #: modules/bibcirculation/lib/bibcirculation_templates.py:12156 #: modules/bibcirculation/lib/bibcirculation_templates.py:12976 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13465 #: modules/bibcirculation/lib/bibcirculation_templates.py:13578 #: modules/bibcirculation/lib/bibcirculation_templates.py:13889 #: modules/bibcirculation/lib/bibcirculation_templates.py:13956 #: modules/bibcirculation/lib/bibcirculation_templates.py:14475 #: modules/bibcirculation/lib/bibcirculation_templates.py:15047 #: modules/bibcirculation/lib/bibcirculation_templates.py:15961 #: modules/bibcirculation/lib/bibcirculation_templates.py:16118 #: modules/bibcirculation/lib/bibcirculation_templates.py:16290 msgid "Continue" msgstr "Continuer" #: modules/bibcirculation/lib/bibcirculation_templates.py:2275 msgid "List of borrowed books" msgstr "Liste des emprunts" #: modules/bibcirculation/lib/bibcirculation_templates.py:2279 msgid "Write note(s)" msgstr "Écrire note(s)" #: modules/bibcirculation/lib/bibcirculation_templates.py:2397 msgid "Notification has been sent!" msgstr "La notification a été envoyée!" #: modules/bibcirculation/lib/bibcirculation_templates.py:2482 #: modules/bibcirculation/lib/bibcirculation_templates.py:2825 #: modules/bibcirculation/lib/bibcirculation_templates.py:6317 #: modules/bibcirculation/lib/bibcirculation_templates.py:6546 #: modules/bibcirculation/lib/bibcirculation_templates.py:7004 #: modules/bibcirculation/lib/bibcirculation_templates.py:7155 #: modules/bibcirculation/lib/bibcirculation_templates.py:8632 #: modules/bibcirculation/lib/bibcirculation_templates.py:8865 #: modules/bibcirculation/lib/bibcirculation_templates.py:9099 #: modules/bibcirculation/lib/bibcirculation_templates.py:9324 #: modules/bibcirculation/lib/bibcirculation_templates.py:9528 #: modules/bibcirculation/lib/bibcirculation_templates.py:9741 #: modules/bibcirculation/lib/bibcirculation_templates.py:10140 #: modules/bibcirculation/lib/bibcirculation_templates.py:10338 #: modules/bibcirculation/lib/bibcirculation_templates.py:10594 #: modules/bibcirculation/lib/bibcirculation_templates.py:10737 #: modules/bibcirculation/lib/bibcirculation_templates.py:10933 #: modules/bibcirculation/lib/bibcirculation_templates.py:11272 #: modules/bibcirculation/lib/bibcirculation_templates.py:11347 #: modules/bibcirculation/lib/bibcirculation_templates.py:11425 #: modules/bibcirculation/lib/bibcirculation_templates.py:12244 #: modules/bibcirculation/lib/bibcirculation_templates.py:12316 #: modules/bibcirculation/lib/bibcirculation_templates.py:13100 #: modules/bibcirculation/lib/bibcirculation_templates.py:13376 #: modules/bibcirculation/lib/bibcirculation_templates.py:14381 #: modules/bibcirculation/lib/bibcirculation_templates.py:14597 #: modules/bibcirculation/lib/bibcirculation_templates.py:14846 #: modules/bibcirculation/lib/bibcirculation_templates.py:15865 #: modules/bibcirculation/lib/bibcirculation_templates.py:16089 #: modules/bibcirculation/lib/bibcirculation_templates.py:16219 #: modules/bibcirculation/lib/bibcirculation_templates.py:16406 msgid "Author(s)" msgstr "Auteur(s)" #: modules/bibcirculation/lib/bibcirculation_templates.py:2487 msgid "Print loan information" msgstr "Imprimer informations du prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:2627 #: modules/bibcirculation/lib/bibcirculation_templates.py:2730 msgid "Cancel hold request" msgstr "Annuler réservation" #: modules/bibcirculation/lib/bibcirculation_templates.py:2665 #: modules/bibcirculation/lib/bibcirculation_templates.py:3079 #: modules/bibcirculation/lib/bibcirculation_templates.py:3271 #: modules/bibcirculation/lib/bibcirculation_templates.py:3801 msgid "There are no requests." msgstr "Il n'y a pas de demandes." #: modules/bibcirculation/lib/bibcirculation_templates.py:2823 #: modules/bibcirculation/lib/bibcirculation_templates.py:6315 #: modules/bibcirculation/lib/bibcirculation_templates.py:6543 #: modules/bibcirculation/lib/bibcirculation_templates.py:7001 #: modules/bibcirculation/lib/bibcirculation_templates.py:7152 #: modules/bibcirculation/lib/bibcirculation_templates.py:8630 #: modules/bibcirculation/lib/bibcirculation_templates.py:8863 #: modules/bibcirculation/lib/bibcirculation_templates.py:9097 #: modules/bibcirculation/lib/bibcirculation_templates.py:9322 #: modules/bibcirculation/lib/bibcirculation_templates.py:9524 #: modules/bibcirculation/lib/bibcirculation_templates.py:9739 #: modules/bibcirculation/lib/bibcirculation_templates.py:10138 #: modules/bibcirculation/lib/bibcirculation_templates.py:10334 #: modules/bibcirculation/lib/bibcirculation_templates.py:10592 #: modules/bibcirculation/lib/bibcirculation_templates.py:10733 #: modules/bibcirculation/lib/bibcirculation_templates.py:10931 #: modules/bibcirculation/lib/bibcirculation_templates.py:11269 #: modules/bibcirculation/lib/bibcirculation_templates.py:11344 #: modules/bibcirculation/lib/bibcirculation_templates.py:11420 #: modules/bibcirculation/lib/bibcirculation_templates.py:12241 #: modules/bibcirculation/lib/bibcirculation_templates.py:12313 #: modules/bibcirculation/lib/bibcirculation_templates.py:13096 #: modules/bibcirculation/lib/bibcirculation_templates.py:13374 #: modules/bibcirculation/lib/bibcirculation_templates.py:14379 #: modules/bibcirculation/lib/bibcirculation_templates.py:14595 #: modules/bibcirculation/lib/bibcirculation_templates.py:14844 #: modules/bibcirculation/lib/bibcirculation_templates.py:15863 #: modules/bibcirculation/lib/bibcirculation_templates.py:16087 #: modules/bibcirculation/lib/bibcirculation_templates.py:16403 msgid "Item details" msgstr "Détails de l'exemplaire" -#: modules/bibcirculation/lib/bibcirculation_templates.py:2830 -msgid "Edit this record" -msgstr "Editer cette notice" - #: modules/bibcirculation/lib/bibcirculation_templates.py:2832 msgid "Additional details" msgstr "Détails additionnels" #: modules/bibcirculation/lib/bibcirculation_templates.py:2866 #: modules/bibcirculation/lib/bibcirculation_templates.py:6578 #: modules/bibcirculation/lib/bibcirculation_templates.py:7032 msgid "No of loans" msgstr "Nb prêts" #: modules/bibcirculation/lib/bibcirculation_templates.py:3028 msgid "Add new copy" msgstr "Ajouter un exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:3029 msgid "Order new copy" msgstr "Commander un exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:3030 msgid "ILL request" msgstr "Demande PEB" #: modules/bibcirculation/lib/bibcirculation_templates.py:3031 msgid "Hold requests and loans overview on" msgstr "Aperçu des réservations et prêt le" #: modules/bibcirculation/lib/bibcirculation_templates.py:3032 #: modules/bibcirculation/lib/bibcirculation_templates.py:3035 msgid "Hold requests" msgstr "Réservations" #: modules/bibcirculation/lib/bibcirculation_templates.py:3032 #: modules/bibcirculation/lib/bibcirculation_templates.py:3033 #: modules/bibcirculation/lib/bibcirculation_templates.py:3035 #: modules/bibcirculation/lib/bibcirculation_templates.py:3036 #: modules/bibcirculation/lib/bibcirculation_templates.py:3772 #: modules/bibcirculation/lib/bibcirculation_templates.py:3773 #: modules/bibcirculation/lib/bibcirculation_templates.py:3774 #: modules/bibcirculation/lib/bibcirculation_templates.py:3776 #: modules/bibcirculation/lib/bibcirculation_templates.py:3777 #: modules/bibcirculation/lib/bibcirculation_templates.py:3778 msgid "More details" msgstr "Détails" #: modules/bibcirculation/lib/bibcirculation_templates.py:3033 #: modules/bibcirculation/lib/bibcirculation_templates.py:3036 #: modules/bibcirculation/lib/bibcirculation_templates.py:3773 #: modules/bibcirculation/lib/bibcirculation_templates.py:3777 msgid "Loans" msgstr "Prêts" #: modules/bibcirculation/lib/bibcirculation_templates.py:3034 #: modules/bibcirculation/lib/bibcirculation_templates.py:3775 msgid "Historical overview" msgstr "Aperçu de l'historique" #: modules/bibcirculation/lib/bibcirculation_templates.py:3167 #: modules/bibcirculation/lib/bibcirculation_templates.py:3907 #: modules/bibcirculation/lib/bibcirculation_templates.py:4645 msgid "There are no loans." msgstr "Il n'y a pas de prêt." #: modules/bibcirculation/lib/bibcirculation_templates.py:3201 #: modules/bibcirculation/lib/bibcirculation_templates.py:3395 msgid "Returned on" msgstr "Rendu le" #: modules/bibcirculation/lib/bibcirculation_templates.py:3202 #: modules/bibcirculation/lib/bibcirculation_templates.py:3396 #: modules/bibcirculation/lib/bibcirculation_templates.py:3948 #: modules/bibcirculation/lib/bibcirculation_templates.py:4127 #: modules/bibcirculation/lib/bibcirculation_templates.py:4307 #: modules/bibcirculation/lib/bibcirculation_templates.py:4558 #: modules/bibcirculation/lib/bibcirculation_templates.py:4685 msgid "Renewals" msgstr "Prolongations" #: modules/bibcirculation/lib/bibcirculation_templates.py:3203 #: modules/bibcirculation/lib/bibcirculation_templates.py:3397 #: modules/bibcirculation/lib/bibcirculation_templates.py:3949 #: modules/bibcirculation/lib/bibcirculation_templates.py:4128 #: modules/bibcirculation/lib/bibcirculation_templates.py:4308 #: modules/bibcirculation/lib/bibcirculation_templates.py:4559 msgid "Overdue letters" msgstr "Lettres de rappel" #: modules/bibcirculation/lib/bibcirculation_templates.py:3462 #: modules/bibcirculation/lib/bibcirculation_templates.py:3566 #: modules/bibcirculation/lib/bibcirculation_templates.py:3966 #: modules/bibcirculation/lib/bibcirculation_templates.py:4704 #: modules/bibcirculation/lib/bibcirculation_templates.py:9922 #: modules/bibcirculation/lib/bibcirculation_templates.py:14145 #: modules/bibcirculation/lib/bibcirculation_templates.py:15138 msgid "No notes" msgstr "Aucune note" #: modules/bibcirculation/lib/bibcirculation_templates.py:3467 msgid "Notes about this library" msgstr "Notes sur cette bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:3515 msgid "Library details" msgstr "Détails de la bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:3521 msgid "No of items" msgstr "Nb copies" #: modules/bibcirculation/lib/bibcirculation_templates.py:3571 msgid "Notes about this borrower" msgstr "Notes sur cet emprunteur" #: modules/bibcirculation/lib/bibcirculation_templates.py:3644 #: modules/bibcirculation/lib/bibcirculation_templates.py:4830 #: modules/bibcirculation/lib/bibcirculation_templates.py:8084 msgid "Personal details" msgstr "Détails personnels" #: modules/bibcirculation/lib/bibcirculation_templates.py:3767 msgid "New loan" msgstr "Nouveau prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:3768 msgid "New request" msgstr "Nouvelle réservation" #: modules/bibcirculation/lib/bibcirculation_templates.py:3769 msgid "New ILL request" msgstr "Nouveau PEB" #: modules/bibcirculation/lib/bibcirculation_templates.py:3770 msgid "Notify this borrower" msgstr "Notifier l'emprunteur" #: modules/bibcirculation/lib/bibcirculation_templates.py:3771 msgid "Requests, Loans and ILL overview on" msgstr "Aperçu des Réservations, Prêts et PEB le" #: modules/bibcirculation/lib/bibcirculation_templates.py:3772 #: modules/bibcirculation/lib/bibcirculation_templates.py:3776 msgid "Requests" msgstr "Réservations" #: modules/bibcirculation/lib/bibcirculation_templates.py:3774 #: modules/bibcirculation/lib/bibcirculation_templates.py:3778 msgid "ILL" msgstr "PEB" #: modules/bibcirculation/lib/bibcirculation_templates.py:3839 msgid "Request option(s)" msgstr "Option(s) de réservation" #: modules/bibcirculation/lib/bibcirculation_templates.py:3946 #: modules/bibcirculation/lib/bibcirculation_templates.py:7925 #: modules/bibcirculation/lib/bibcirculation_templates.py:9433 msgid "Loan date" msgstr "Date de prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:3950 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5908 #: modules/bibcirculation/lib/bibcirculation_templates.py:11076 msgid "Type" msgstr "Type" #: modules/bibcirculation/lib/bibcirculation_templates.py:3951 #: modules/bibcirculation/lib/bibcirculation_templates.py:4688 msgid "Loan notes" msgstr "Notes du prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:3952 msgid "Loans status" msgstr "Statut du prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:3953 #: modules/bibcirculation/lib/bibcirculation_templates.py:4689 msgid "Loan options" msgstr "Options de prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:3971 #: modules/bibcirculation/lib/bibcirculation_templates.py:4709 #: modules/bibcirculation/lib/bibcirculation_templates.py:9927 msgid "See notes" msgstr "Voir notes" #: modules/bibcirculation/lib/bibcirculation_templates.py:4099 #: modules/bibcirculation/lib/bibcirculation_templates.py:4279 msgid "No result for your search." msgstr "Pas de résultat pour votre recherche" #: modules/bibcirculation/lib/bibcirculation_templates.py:4129 #: modules/bibcirculation/lib/bibcirculation_templates.py:4309 #: modules/bibcirculation/lib/bibcirculation_templates.py:4560 msgid "Loan Notes" msgstr "Note du Prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:4143 #: modules/bibcirculation/lib/bibcirculation_templates.py:4323 #: modules/bibcirculation/lib/bibcirculation_templates.py:4574 msgid "see notes" msgstr "voir notes" #: modules/bibcirculation/lib/bibcirculation_templates.py:4148 #: modules/bibcirculation/lib/bibcirculation_templates.py:4328 #: modules/bibcirculation/lib/bibcirculation_templates.py:4579 msgid "no notes" msgstr "aucune note" #: modules/bibcirculation/lib/bibcirculation_templates.py:4182 #: modules/bibcirculation/lib/bibcirculation_templates.py:4362 #: modules/bibcirculation/lib/bibcirculation_templates.py:4489 msgid "Send recall" msgstr "Envoyer rappel" #: modules/bibcirculation/lib/bibcirculation_templates.py:4436 msgid "CERN Library" msgstr "Bibliothèque du CERN" #: modules/bibcirculation/lib/bibcirculation_templates.py:4467 msgid "Message" msgstr "Message" #: modules/bibcirculation/lib/bibcirculation_templates.py:4468 msgid "Choose a template" msgstr "Choisir un modèle" #: modules/bibcirculation/lib/bibcirculation_templates.py:4485 msgid "Templates" msgstr "Modèles" #: modules/bibcirculation/lib/bibcirculation_templates.py:4486 #: modules/bibcirculation/lib/bibcirculation_templates.py:4686 msgid "Overdue letter" msgstr "Lettre de rappel" #: modules/bibcirculation/lib/bibcirculation_templates.py:4487 msgid "Reminder" msgstr "Rappel" #: modules/bibcirculation/lib/bibcirculation_templates.py:4488 msgid "Notification" msgstr "Notification" #: modules/bibcirculation/lib/bibcirculation_templates.py:4490 msgid "Load" msgstr "Charger" #: modules/bibcirculation/lib/bibcirculation_templates.py:4510 msgid "Send" msgstr "Envoyer" #: modules/bibcirculation/lib/bibcirculation_templates.py:4687 #: modules/bibcirculation/lib/bibcirculation_templates.py:7927 msgid "Loan status" msgstr "Statut du prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:4874 #: modules/bibcirculation/lib/bibcirculation_templates.py:8115 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 msgid "Write notes" msgstr "Écrire notes" #: modules/bibcirculation/lib/bibcirculation_templates.py:4934 msgid "Notes about borrower" msgstr "Notes sur l'emprunteur" #: modules/bibcirculation/lib/bibcirculation_templates.py:4943 #: modules/bibcirculation/lib/bibcirculation_templates.py:5041 #: modules/bibcirculation/lib/bibcirculation_templates.py:7806 #: modules/bibcirculation/lib/bibcirculation_templates.py:10012 #: modules/bibcirculation/lib/bibcirculation_templates.py:11204 #: modules/bibcirculation/lib/bibcirculation_templates.py:12427 #: modules/bibcirculation/lib/bibcirculation_templates.py:12522 #: modules/bibcirculation/lib/bibcirculation_templates.py:12616 #: modules/bibcirculation/lib/bibcirculation_templates.py:12721 #: modules/bibcirculation/lib/bibcirculation_templates.py:12825 #: modules/bibcirculation/lib/bibcirculation_templates.py:12931 #: modules/bibcirculation/lib/bibcirculation_templates.py:13244 #: modules/bibcirculation/lib/bibcirculation_templates.py:15236 msgid "[delete]" msgstr "[supprimer]" #: modules/bibcirculation/lib/bibcirculation_templates.py:4986 #: modules/bibcirculation/lib/bibcirculation_templates.py:5085 #: modules/bibcirculation/lib/bibcirculation_templates.py:7849 #: modules/bibcirculation/lib/bibcirculation_templates.py:10055 #: modules/bibcirculation/lib/bibcirculation_templates.py:15279 msgid "Write new note" msgstr "Écrire une note" #: modules/bibcirculation/lib/bibcirculation_templates.py:5032 msgid "Notes about loan" msgstr "Notes sur le prêt" #: modules/bibcirculation/lib/bibcirculation_templates.py:5225 msgid "Book Information" msgstr "Informations sur le Livre" #: modules/bibcirculation/lib/bibcirculation_templates.py:5229 msgid "EAN" msgstr "EAN" #: modules/bibcirculation/lib/bibcirculation_templates.py:5232 +#: modules/bibformat/lib/elements/bfe_imprint.py:25 msgid "Publication date" msgstr "Date de publication" #: modules/bibcirculation/lib/bibcirculation_templates.py:5233 msgid "Publication place" msgstr "Lieu de publication" #: modules/bibcirculation/lib/bibcirculation_templates.py:5234 #: modules/bibcirculation/lib/bibcirculation_templates.py:6321 #: modules/bibcirculation/lib/bibcirculation_templates.py:10937 #: modules/bibcirculation/lib/bibcirculation_templates.py:11355 #: modules/bibcirculation/lib/bibcirculation_templates.py:12324 #: modules/bibcirculation/lib/bibcirculation_templates.py:14385 #: modules/bibcirculation/lib/bibcirculation_templates.py:14601 #: modules/bibcirculation/lib/bibcirculation_templates.py:14850 #: modules/bibcirculation/lib/bibcirculation_templates.py:15869 #: modules/bibcirculation/lib/bibcirculation_templates.py:16093 msgid "Edition" msgstr "Édition" #: modules/bibcirculation/lib/bibcirculation_templates.py:5235 msgid "Number of pages" msgstr "Nombre de pages" #: modules/bibcirculation/lib/bibcirculation_templates.py:5236 msgid "Sub-library" msgstr "Sous-bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:5237 msgid "CERN Central Library" msgstr "Bibliothèque Centrale du CERN" #: modules/bibcirculation/lib/bibcirculation_templates.py:5476 msgid "A new borrower has been registered." msgstr "Un nouvel emprunteur a été enregistré." #: modules/bibcirculation/lib/bibcirculation_templates.py:5661 #: modules/bibcirculation/lib/bibcirculation_templates.py:5723 msgid "Borrower information" msgstr "Information sur l'emprunteur" #: modules/bibcirculation/lib/bibcirculation_templates.py:5763 #: modules/bibcirculation/lib/bibcirculation_templates.py:6241 #: modules/bibcirculation/lib/bibcirculation_templates.py:13994 msgid "The information has been updated." msgstr "L'information a été mise à jour." #: modules/bibcirculation/lib/bibcirculation_templates.py:5842 #: modules/bibcirculation/lib/bibcirculation_templates.py:5903 msgid "New library information" msgstr "Informations nouvelle bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:5946 msgid "A new library has been registered." msgstr "Une nouvelle bibliothèque a été enregistrée." #: modules/bibcirculation/lib/bibcirculation_templates.py:5999 #: modules/bibcirculation/lib/bibcirculation_templates.py:7671 msgid "Search library by" msgstr "Rechercher bibliothèque par" #: modules/bibcirculation/lib/bibcirculation_templates.py:6032 #: modules/bibcirculation/lib/bibcirculation_templates.py:7716 msgid "Library(ies)" msgstr "Bibliothèque(s)" #: modules/bibcirculation/lib/bibcirculation_templates.py:6135 #: modules/bibcirculation/lib/bibcirculation_templates.py:6198 msgid "Library information" msgstr "Information sur la bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:6316 #: modules/bibcirculation/lib/bibcirculation_templates.py:14380 #: modules/bibcirculation/lib/bibcirculation_templates.py:15864 msgid "Book title" msgstr "Titre du livre" #: modules/bibcirculation/lib/bibcirculation_templates.py:6318 #: modules/bibcirculation/lib/bibcirculation_templates.py:10934 #: modules/bibcirculation/lib/bibcirculation_templates.py:11349 #: modules/bibcirculation/lib/bibcirculation_templates.py:11431 #: modules/bibcirculation/lib/bibcirculation_templates.py:12318 #: modules/bibcirculation/lib/bibcirculation_templates.py:14382 #: modules/bibcirculation/lib/bibcirculation_templates.py:14598 #: modules/bibcirculation/lib/bibcirculation_templates.py:14847 #: modules/bibcirculation/lib/bibcirculation_templates.py:15866 #: modules/bibcirculation/lib/bibcirculation_templates.py:16090 msgid "Place" msgstr "Lieu" #: modules/bibcirculation/lib/bibcirculation_templates.py:6555 #, python-format msgid "Copies of %s" msgstr "Exemplaires de %s" #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 msgid "New copy details" msgstr "Détails nouvel exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:6792 msgid "new copy" msgstr "nouvel exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:6819 #, python-format msgid "A %s has been added." msgstr "Un %s a été ajouté." #: modules/bibcirculation/lib/bibcirculation_templates.py:7181 msgid "Update copy information" msgstr "Mettre à jour exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:7571 msgid "New copy information" msgstr "Informations du nouvel exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:7615 msgid "This item has been updated." msgstr "Cet exemplaire a été mise à jour." #: modules/bibcirculation/lib/bibcirculation_templates.py:7698 msgid "0 library(ies) found." msgstr "Aucune bibliothèque trouvée." #: modules/bibcirculation/lib/bibcirculation_templates.py:7797 msgid "Notes about library" msgstr "Notes sur la bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:7929 msgid "Requested ?" msgstr "Réservé?" #: modules/bibcirculation/lib/bibcirculation_templates.py:7950 msgid "New due date: " msgstr "Nouvelle échéance:" #: modules/bibcirculation/lib/bibcirculation_templates.py:7975 msgid "Submit new due date" msgstr "Soumettre nouvelle échéance" #: modules/bibcirculation/lib/bibcirculation_templates.py:8019 #, python-format msgid "The due date has been updated. New due date: %s" msgstr "L'échéance a été mise à jour. Nouvelle échéance pour le retour: %s" #: modules/bibcirculation/lib/bibcirculation_templates.py:8020 msgid "Back borrower's loans" msgstr "Retour aux emprunts de l'utilisateur" #: modules/bibcirculation/lib/bibcirculation_templates.py:8273 msgid "Select item" msgstr "Sélectionner l'exemplaire" #: modules/bibcirculation/lib/bibcirculation_templates.py:8312 #: modules/bibcirculation/lib/bibcirculation_templates.py:8907 #: modules/bibcirculation/lib/bibcirculation_templates.py:9365 #: modules/bibcirculation/lib/bibcirculation_templates.py:10437 #: modules/bibcirculation/lib/bibcirculation_templates.py:10603 #: modules/bibcirculation/lib/bibcirculation_templates.py:14893 #: modules/bibcirculation/lib/bibcirculation_templates.py:16100 msgid "Borrower details" msgstr "Détails de l'emprunteur" #: modules/bibcirculation/lib/bibcirculation_templates.py:8350 msgid "This item has no holdings." msgstr "Cette notice n'a pas d'exemplaires." #: modules/bibcirculation/lib/bibcirculation_templates.py:8478 #: modules/bibcirculation/lib/bibcirculation_templates.py:8973 msgid "Enter the period of interest" msgstr "Entrez la période souhaitée" #: modules/bibcirculation/lib/bibcirculation_templates.py:8479 #: modules/bibcirculation/lib/bibcirculation_templates.py:8974 msgid "From: " msgstr "De: " #: modules/bibcirculation/lib/bibcirculation_templates.py:8480 #: modules/bibcirculation/lib/bibcirculation_templates.py:8975 msgid "To: " msgstr "À: " #: modules/bibcirculation/lib/bibcirculation_templates.py:8538 #: modules/bibcirculation/lib/bibcirculation_templates.py:9007 msgid "A new request has been registered with success." msgstr "Un nouvelle réservation a été enregistrée avec succès." #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9805 #: modules/bibcirculation/lib/bibcirculation_templates.py:13126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13414 msgid "Order details" msgstr "Détails commande" #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9807 #: modules/bibcirculation/lib/bibcirculation_templates.py:9901 #: modules/bibcirculation/lib/bibcirculation_templates.py:13126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13415 msgid "Vendor" msgstr "Fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:9625 #: modules/bibcirculation/lib/bibcirculation_templates.py:9808 #: modules/bibcirculation/lib/bibcirculation_templates.py:9903 #: modules/bibcirculation/lib/bibcirculation_templates.py:13416 msgid "Price" msgstr "Prix" #: modules/bibcirculation/lib/bibcirculation_templates.py:9626 #: modules/bibcirculation/lib/bibcirculation_templates.py:9810 #: modules/bibcirculation/lib/bibcirculation_templates.py:13232 #: modules/bibcirculation/lib/bibcirculation_templates.py:13418 msgid "Order date" msgstr "Date de commande" #: modules/bibcirculation/lib/bibcirculation_templates.py:9627 #: modules/bibcirculation/lib/bibcirculation_templates.py:9811 #: modules/bibcirculation/lib/bibcirculation_templates.py:9905 #: modules/bibcirculation/lib/bibcirculation_templates.py:11692 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11965 #: modules/bibcirculation/lib/bibcirculation_templates.py:12081 #: modules/bibcirculation/lib/bibcirculation_templates.py:12509 #: modules/bibcirculation/lib/bibcirculation_templates.py:12603 #: modules/bibcirculation/lib/bibcirculation_templates.py:12706 #: modules/bibcirculation/lib/bibcirculation_templates.py:12809 #: modules/bibcirculation/lib/bibcirculation_templates.py:12915 #: modules/bibcirculation/lib/bibcirculation_templates.py:13233 #: modules/bibcirculation/lib/bibcirculation_templates.py:13419 #: modules/bibcirculation/lib/bibcirculation_templates.py:15100 msgid "Expected date" msgstr "Date prévue" #: modules/bibcirculation/lib/bibcirculation_templates.py:9853 msgid "A new purchase has been registered with success." msgstr "Un nouvel achat a été enregistré avec succès." #: modules/bibcirculation/lib/bibcirculation_templates.py:9902 msgid "Ordered date" msgstr "Date de commande" #: modules/bibcirculation/lib/bibcirculation_templates.py:9951 #: modules/bibcirculation/lib/bibcirculation_templates.py:11127 msgid "select" msgstr "sélectionner" #: modules/bibcirculation/lib/bibcirculation_templates.py:10003 #: modules/bibcirculation/lib/bibcirculation_templates.py:15227 msgid "Notes about acquisition" msgstr "Notes sur l'acquisition" #: modules/bibcirculation/lib/bibcirculation_templates.py:10444 #: modules/bibcirculation/lib/bibcirculation_templates.py:10598 #: modules/bibcirculation/lib/bibcirculation_templates.py:10816 #: modules/bibcirculation/lib/bibcirculation_templates.py:11023 #: modules/bibcirculation/lib/bibcirculation_templates.py:11495 #: modules/bibcirculation/lib/bibcirculation_templates.py:12387 #: modules/bibcirculation/lib/bibcirculation_templates.py:14416 #: modules/bibcirculation/lib/bibcirculation_templates.py:14603 #: modules/bibcirculation/lib/bibcirculation_templates.py:14852 #: modules/bibcirculation/lib/bibcirculation_templates.py:15953 #: modules/bibcirculation/lib/bibcirculation_templates.py:16095 #: modules/bibcirculation/lib/bibcirculation_templates.py:16286 #: modules/bibcirculation/lib/bibcirculation_templates.py:16413 msgid "ILL request details" msgstr "Détails PEB" #: modules/bibcirculation/lib/bibcirculation_templates.py:10445 #: modules/bibcirculation/lib/bibcirculation_templates.py:10599 #: modules/bibcirculation/lib/bibcirculation_templates.py:10817 #: modules/bibcirculation/lib/bibcirculation_templates.py:11023 #: modules/bibcirculation/lib/bibcirculation_templates.py:12383 #: modules/bibcirculation/lib/bibcirculation_templates.py:14604 #: modules/bibcirculation/lib/bibcirculation_templates.py:15953 #: modules/bibcirculation/lib/bibcirculation_templates.py:16096 #: modules/bibcirculation/lib/bibcirculation_templates.py:16287 #: modules/bibcirculation/lib/bibcirculation_templates.py:16414 msgid "Period of interest - From" msgstr "Période souhaitée - De" #: modules/bibcirculation/lib/bibcirculation_templates.py:10447 #: modules/bibcirculation/lib/bibcirculation_templates.py:10600 #: modules/bibcirculation/lib/bibcirculation_templates.py:10818 #: modules/bibcirculation/lib/bibcirculation_templates.py:11025 #: modules/bibcirculation/lib/bibcirculation_templates.py:12384 #: modules/bibcirculation/lib/bibcirculation_templates.py:14605 #: modules/bibcirculation/lib/bibcirculation_templates.py:15956 #: modules/bibcirculation/lib/bibcirculation_templates.py:16097 #: modules/bibcirculation/lib/bibcirculation_templates.py:16288 #: modules/bibcirculation/lib/bibcirculation_templates.py:16415 msgid "Period of interest - To" msgstr "Période souhaitée - À" #: modules/bibcirculation/lib/bibcirculation_templates.py:10449 #: modules/bibcirculation/lib/bibcirculation_templates.py:10601 #: modules/bibcirculation/lib/bibcirculation_templates.py:10819 #: modules/bibcirculation/lib/bibcirculation_templates.py:11026 #: modules/bibcirculation/lib/bibcirculation_templates.py:14472 #: modules/bibcirculation/lib/bibcirculation_templates.py:14606 #: modules/bibcirculation/lib/bibcirculation_templates.py:14855 #: modules/bibcirculation/lib/bibcirculation_templates.py:15958 #: modules/bibcirculation/lib/bibcirculation_templates.py:16098 #: modules/bibcirculation/lib/bibcirculation_templates.py:16289 #: modules/bibcirculation/lib/bibcirculation_templates.py:16416 msgid "Additional comments" msgstr "Commentaires additionnels" #: modules/bibcirculation/lib/bibcirculation_templates.py:10450 msgid "Borrower wants only this edition?" msgstr "L'emprunteur désire cet édition?" #: modules/bibcirculation/lib/bibcirculation_templates.py:10602 #: modules/bibcirculation/lib/bibcirculation_templates.py:14856 #: modules/bibcirculation/lib/bibcirculation_templates.py:16099 msgid "Only this edition" msgstr "Uniquement cette édition" #: modules/bibcirculation/lib/bibcirculation_templates.py:10666 msgid "A new ILL request has been registered with success." msgstr "Une nouvelle demande PEB a été enregistrée avec succès." #: modules/bibcirculation/lib/bibcirculation_templates.py:10820 #: modules/bibcirculation/lib/bibcirculation_templates.py:11027 #, python-format msgid "" "I accept the %s of the service in particular the return of books in due time." msgstr "" "J'accepte les %s de ce service, en particulier de retourner les livres avant " "leur échéance." #: modules/bibcirculation/lib/bibcirculation_templates.py:10821 #: modules/bibcirculation/lib/bibcirculation_templates.py:11028 msgid "I want this edition only." msgstr "Je veux uniquement cette édition spécifique." #: modules/bibcirculation/lib/bibcirculation_templates.py:11072 #: modules/bibcirculation/lib/bibcirculation_templates.py:15098 msgid "Supplier" msgstr "Fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:11075 msgid "Interest from" msgstr "Intérêt depuis" #: modules/bibcirculation/lib/bibcirculation_templates.py:11421 msgid "Periodical Title" msgstr "Titre du périodique" #: modules/bibcirculation/lib/bibcirculation_templates.py:11423 msgid "Article Title" msgstr "Titre de l'article" #: modules/bibcirculation/lib/bibcirculation_templates.py:11427 msgid "Volume, Issue, Page" msgstr "Volume, Numéro, Page" #: modules/bibcirculation/lib/bibcirculation_templates.py:11429 #: modules/bibcirculation/lib/bibcirculation_templates.py:16226 #: modules/bibcirculation/lib/bibcirculation_templates.py:16412 msgid "ISSN" msgstr "ISSN" #: modules/bibcirculation/lib/bibcirculation_templates.py:11488 #: modules/bibcirculation/lib/bibcirculation_templates.py:12380 msgid "Borrower request" msgstr "Demande de l'emprunteur" #: modules/bibcirculation/lib/bibcirculation_templates.py:11491 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14853 msgid "Period of interest (From)" msgstr "Période souhaitée (De)" #: modules/bibcirculation/lib/bibcirculation_templates.py:11492 #: modules/bibcirculation/lib/bibcirculation_templates.py:14471 #: modules/bibcirculation/lib/bibcirculation_templates.py:14854 msgid "Period of interest (To)" msgstr "Période souhaitée (À)" #: modules/bibcirculation/lib/bibcirculation_templates.py:11493 #: modules/bibcirculation/lib/bibcirculation_templates.py:12385 msgid "Borrower comments" msgstr "Commentaires de l'emprunter" #: modules/bibcirculation/lib/bibcirculation_templates.py:11494 #: modules/bibcirculation/lib/bibcirculation_templates.py:12386 msgid "Only this edition?" msgstr "Uniquement cette édition?" #: modules/bibcirculation/lib/bibcirculation_templates.py:11531 #: modules/bibcirculation/lib/bibcirculation_templates.py:11560 #: modules/bibcirculation/lib/bibcirculation_templates.py:11616 #: modules/bibcirculation/lib/bibcirculation_templates.py:11648 #: modules/bibcirculation/lib/bibcirculation_templates.py:11790 #: modules/bibcirculation/lib/bibcirculation_templates.py:11963 #: modules/bibcirculation/lib/bibcirculation_templates.py:12079 #: modules/bibcirculation/lib/bibcirculation_templates.py:12416 #: modules/bibcirculation/lib/bibcirculation_templates.py:12506 #: modules/bibcirculation/lib/bibcirculation_templates.py:12600 #: modules/bibcirculation/lib/bibcirculation_templates.py:12703 #: modules/bibcirculation/lib/bibcirculation_templates.py:12806 #: modules/bibcirculation/lib/bibcirculation_templates.py:12912 msgid "ILL request ID" msgstr "ID requête PEB" #: modules/bibcirculation/lib/bibcirculation_templates.py:11531 #: modules/bibcirculation/lib/bibcirculation_templates.py:11560 #: modules/bibcirculation/lib/bibcirculation_templates.py:11728 #: modules/bibcirculation/lib/bibcirculation_templates.py:11873 #: modules/bibcirculation/lib/bibcirculation_templates.py:12001 #: modules/bibcirculation/lib/bibcirculation_templates.py:12116 #: modules/bibcirculation/lib/bibcirculation_templates.py:12417 #: modules/bibcirculation/lib/bibcirculation_templates.py:12512 #: modules/bibcirculation/lib/bibcirculation_templates.py:12606 #: modules/bibcirculation/lib/bibcirculation_templates.py:12711 #: modules/bibcirculation/lib/bibcirculation_templates.py:12815 #: modules/bibcirculation/lib/bibcirculation_templates.py:12921 #: modules/bibcirculation/lib/bibcirculation_templates.py:13234 #: modules/bibcirculation/lib/bibcirculation_templates.py:13420 msgid "Previous notes" msgstr "Notes précédentes" #: modules/bibcirculation/lib/bibcirculation_templates.py:11578 #: modules/bibcirculation/lib/bibcirculation_templates.py:11745 #: modules/bibcirculation/lib/bibcirculation_templates.py:11891 #: modules/bibcirculation/lib/bibcirculation_templates.py:12018 #: modules/bibcirculation/lib/bibcirculation_templates.py:12133 #: modules/bibcirculation/lib/bibcirculation_templates.py:12451 #: modules/bibcirculation/lib/bibcirculation_templates.py:12545 #: modules/bibcirculation/lib/bibcirculation_templates.py:12639 #: modules/bibcirculation/lib/bibcirculation_templates.py:12744 #: modules/bibcirculation/lib/bibcirculation_templates.py:12848 #: modules/bibcirculation/lib/bibcirculation_templates.py:12954 #: modules/bibcirculation/lib/bibcirculation_templates.py:15104 msgid "Library notes" msgstr "Notes de la bibliothèque" #: modules/bibcirculation/lib/bibcirculation_templates.py:11617 #: modules/bibcirculation/lib/bibcirculation_templates.py:11649 #: modules/bibcirculation/lib/bibcirculation_templates.py:12507 #: modules/bibcirculation/lib/bibcirculation_templates.py:12601 #: modules/bibcirculation/lib/bibcirculation_templates.py:12704 #: modules/bibcirculation/lib/bibcirculation_templates.py:12807 #: modules/bibcirculation/lib/bibcirculation_templates.py:12913 msgid "Library/Supplier" msgstr "Bibliothèque/Fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:11694 #: modules/bibcirculation/lib/bibcirculation_templates.py:11842 #: modules/bibcirculation/lib/bibcirculation_templates.py:11969 #: modules/bibcirculation/lib/bibcirculation_templates.py:12084 #: modules/bibcirculation/lib/bibcirculation_templates.py:12510 #: modules/bibcirculation/lib/bibcirculation_templates.py:12604 #: modules/bibcirculation/lib/bibcirculation_templates.py:12709 #: modules/bibcirculation/lib/bibcirculation_templates.py:12813 #: modules/bibcirculation/lib/bibcirculation_templates.py:12919 #: modules/bibcirculation/lib/bibcirculation_templates.py:13144 msgid "Cost" msgstr "Coût" #: modules/bibcirculation/lib/bibcirculation_templates.py:11834 #: modules/bibcirculation/lib/bibcirculation_templates.py:11966 #: modules/bibcirculation/lib/bibcirculation_templates.py:12082 #: modules/bibcirculation/lib/bibcirculation_templates.py:12707 #: modules/bibcirculation/lib/bibcirculation_templates.py:12810 #: modules/bibcirculation/lib/bibcirculation_templates.py:12916 #: modules/bibcirculation/lib/bibcirculation_templates.py:15101 msgid "Arrival date" msgstr "Date d'arrivée" #: modules/bibcirculation/lib/bibcirculation_templates.py:11873 msgid "Barcoce" msgstr "Code-barres" #: modules/bibcirculation/lib/bibcirculation_templates.py:13014 msgid "An ILL request has been updated with success." msgstr "La demande PEB a été mise à jour avec succès." #: modules/bibcirculation/lib/bibcirculation_templates.py:13502 msgid "Purchase information updated with success." msgstr "Les détails d'achat ont été mis à jour avec succès." #: modules/bibcirculation/lib/bibcirculation_templates.py:13576 #: modules/bibcirculation/lib/bibcirculation_templates.py:13641 msgid "New vendor information" msgstr "Informations nouveau fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:13686 msgid "A new vendor has been registered." msgstr "Un nouveau fournisseur a été enregistré." #: modules/bibcirculation/lib/bibcirculation_templates.py:13740 #: modules/bibcirculation/lib/bibcirculation_templates.py:14048 msgid "Search vendor by" msgstr "Rechercher fournisseur par" #: modules/bibcirculation/lib/bibcirculation_templates.py:13777 #: modules/bibcirculation/lib/bibcirculation_templates.py:14085 msgid "Vendor(s)" msgstr "Fournisseur(s):" #: modules/bibcirculation/lib/bibcirculation_templates.py:13884 #: modules/bibcirculation/lib/bibcirculation_templates.py:13951 msgid "Vendor information" msgstr "Information sur le fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:14150 #: modules/bibcirculation/lib/bibcirculation_templates.py:14240 msgid "Notes about this vendor" msgstr "Notes sur ce fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:14193 msgid "Vendor details" msgstr "Détails du fournisseur" #: modules/bibcirculation/lib/bibcirculation_templates.py:14279 msgid "Add notes" msgstr "Ajouter notes" #: modules/bibcirculation/lib/bibcirculation_templates.py:14377 msgid "Book does not exists on Invenio." msgstr "Ce livre n'existe pas sur Invenio" #: modules/bibcirculation/lib/bibcirculation_templates.py:14377 msgid "Please fill the following form." msgstr "Veuillez remplir le formulaire." #: modules/bibcirculation/lib/bibcirculation_templates.py:14473 #: modules/bibcirculation/lib/bibcirculation_templates.py:15959 #, python-format msgid "" "Borrower accepts the %s of the service in particular the return of books in " "due time." msgstr "" "L'emprunteur accepte les %s du service, en particulier le retour des livres " "avant leur échéance." #: modules/bibcirculation/lib/bibcirculation_templates.py:14474 #: modules/bibcirculation/lib/bibcirculation_templates.py:15960 msgid "Borrower wants this edition only." msgstr "L'emprunteur désire uniquement cette édition." #: modules/bibcirculation/lib/bibcirculation_templates.py:14607 msgid "Only this edition." msgstr "Uniquement cette édition" #: modules/bibcirculation/lib/bibcirculation_templates.py:15143 msgid "Notes about this ILL" msgstr "Notes sur ce PEB" #: modules/bibcirculation/lib/bibcirculation_templates.py:15315 msgid "No more requests are pending or waiting." msgstr "Aucune autre demande de réservation n'est en attente." #: modules/bibcirculation/lib/bibcirculation_templates.py:15466 msgid "Printable format" msgstr "Version imprimable" #: modules/bibcirculation/lib/bibcirculation_templates.py:15526 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15684 -msgid "" -"Check if the book already exists on Invenio, before to send your ILL request." -msgstr "" -"Vérifiez si le livre existe déjà sur Invenio avant de transmettre votre " -"demande de PEB." +msgid "Check if the book already exists on Invenio," +msgstr "Vérifiez si le libre existe déjà sur Invenio," #: modules/bibcirculation/lib/bibcirculation_templates.py:15550 #: modules/bibcirculation/lib/bibcirculation_templates.py:15713 msgid "0 items found." msgstr "0 élément trouvé." #: modules/bibcirculation/lib/bibcirculation_templates.py:15618 msgid "Proceed anyway" msgstr "Continuer quand même" +#: modules/bibcirculation/lib/bibcirculation_templates.py:15684 +msgid "" +"Check if the book already exists on Invenio, before to send your ILL request." +msgstr "" +"Vérifiez si le livre existe déjà sur Invenio avant de transmettre votre " +"demande de PEB." + #: modules/bibcirculation/lib/bibcirculation_templates.py:15861 msgid "Book does not exists on Invenio. Please fill the following form." msgstr "" "Ce livre n'existe pas sur Invenio. Veuillez remplir le formulaire suivant." #: modules/bibcirculation/lib/bibcirculation_templates.py:16216 msgid "Article details" msgstr "Détails de l'article" #: modules/bibcirculation/lib/bibcirculation_templates.py:16217 #: modules/bibcirculation/lib/bibcirculation_templates.py:16404 msgid "Periodical title" msgstr "Titre du périodique" #: modules/bibcirculation/lib/bibcirculation_templates.py:16218 #: modules/bibcirculation/lib/bibcirculation_templates.py:16405 msgid "Article title" msgstr "Titre de l'article" #: modules/bibcirculation/lib/bibcirculation_templates.py:16220 #: modules/bibcirculation/lib/bibcirculation_templates.py:16407 +#: modules/websearch/lib/websearch_templates_epfl.py:986 +#: modules/websearch/lib/websearch_templates_epfl.py:1708 msgid "Report number" msgstr "Numéro de rapport" #: modules/bibcirculation/lib/bibcirculation_templates.py:16221 #: modules/bibcirculation/lib/bibcirculation_templates.py:16408 msgid "Volume" msgstr "Volume" #: modules/bibcirculation/lib/bibcirculation_templates.py:16222 #: modules/bibcirculation/lib/bibcirculation_templates.py:16409 msgid "Issue" msgstr "Numéro" #: modules/bibcirculation/lib/bibcirculation_templates.py:16223 #: modules/bibcirculation/lib/bibcirculation_templates.py:16410 msgid "Page" msgstr "Page" #: modules/bibcirculation/lib/bibcirculation_templates.py:16225 msgid "Budget code" msgstr "Code budgétaire" #: modules/bibcheck/web/admin/bibcheckadmin.py:60 msgid "BibCheck Admin" msgstr "Administration de BibCheck" #: modules/bibcheck/web/admin/bibcheckadmin.py:70 #: modules/bibcheck/web/admin/bibcheckadmin.py:250 #: modules/bibcheck/web/admin/bibcheckadmin.py:290 #: modules/bibcheck/web/admin/bibcheckadmin.py:328 msgid "Not authorized" msgstr "Non autorisé" #: modules/bibcheck/web/admin/bibcheckadmin.py:80 #: modules/bibcheck/web/admin/bibcheckadmin.py:82 #: modules/bibcheck/web/admin/bibcheckadmin.py:84 msgid "ERROR" msgstr "Erreur" #: modules/bibcheck/web/admin/bibcheckadmin.py:80 msgid "does not exist" msgstr "n'existe pas" #: modules/bibcheck/web/admin/bibcheckadmin.py:82 msgid "is not a directory" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:84 msgid "is not writable" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:117 msgid "Limit to knowledge bases containing string:" msgstr "Limiter aux bases de connaissance contenant le texte:" #: modules/bibcheck/web/admin/bibcheckadmin.py:135 msgid "Really delete" msgstr "Réellement supprimer" #: modules/bibcheck/web/admin/bibcheckadmin.py:141 msgid "Verify syntax" msgstr "Vérifiez la syntaxe" #: modules/bibcheck/web/admin/bibcheckadmin.py:146 msgid "Create new" msgstr "Nouveau" #: modules/bibcheck/web/admin/bibcheckadmin.py:166 #, python-format msgid "File %s does not exist." msgstr "Le fichier %s n'existe pas." #: modules/bibcheck/web/admin/bibcheckadmin.py:175 msgid "Calling bibcheck -verify failed." msgstr "L'appel à bibcheck -verify a échoué" #: modules/bibcheck/web/admin/bibcheckadmin.py:182 msgid "Verify BibCheck config file" msgstr "Vérifiez le fichier de config de BibCheck" #: modules/bibcheck/web/admin/bibcheckadmin.py:183 msgid "Verify problem" msgstr "Vérifiez le problème" #: modules/bibcheck/web/admin/bibcheckadmin.py:205 #: modules/bibcheck/web/admin/bibcheckadmin.py:265 #: modules/bibcheck/web/admin/bibcheckadmin.py:305 msgid "File" msgstr "Fichier" #: modules/bibcheck/web/admin/bibcheckadmin.py:241 msgid "Edit BibCheck config file" msgstr "Édition du fichier de config de BibCheck" #: modules/bibcheck/web/admin/bibcheckadmin.py:270 msgid "already exists." msgstr "existe déjà." #: modules/bibcheck/web/admin/bibcheckadmin.py:273 #, fuzzy msgid "written OK." msgstr "Écrit par" #: modules/bibcheck/web/admin/bibcheckadmin.py:279 msgid "write failed." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:281 msgid "Save BibCheck config file" msgstr "Enregistrement du fichier de config de BibCheck" #: modules/bibcheck/web/admin/bibcheckadmin.py:315 msgid "deleted" msgstr "effacé" #: modules/bibcheck/web/admin/bibcheckadmin.py:317 #, fuzzy msgid "delete failed" msgstr "Supprimer le panier" #: modules/bibcheck/web/admin/bibcheckadmin.py:319 msgid "Delete BibCheck config file" msgstr "Suppression du fichier de config de BibCheck" #: modules/bibharvest/lib/oai_repository_admin.py:153 #: modules/bibharvest/lib/oai_repository_admin.py:258 #: modules/bibharvest/lib/oai_repository_admin.py:337 msgid "Return to main selection" msgstr "Retour à la sélection principale" #: modules/bibharvest/lib/oai_harvest_admin.py:118 msgid "Overview of sources" msgstr "Aperçu des sources" #: modules/bibharvest/lib/oai_harvest_admin.py:119 msgid "Harvesting status" msgstr "Statut du moissonnage" #: modules/bibharvest/lib/oai_harvest_admin.py:137 msgid "Not Set" msgstr "Non Spécifié" #: modules/bibharvest/lib/oai_harvest_admin.py:138 msgid "never" msgstr "jamais" #: modules/bibharvest/lib/oai_harvest_admin.py:149 msgid "Never harvested" msgstr "Jamais moissonné" #: modules/bibharvest/lib/oai_harvest_admin.py:161 msgid "View Holding Pen" msgstr "Voir Liste d'Attente" #: modules/bibharvest/lib/oai_harvest_admin.py:186 #: modules/bibharvest/lib/oai_harvest_admin.py:547 msgid "No OAI source ID selected." msgstr "Aucune source OAI sélectionnée." #: modules/bibharvest/lib/oai_harvest_admin.py:285 #: modules/bibharvest/lib/oai_harvest_admin.py:422 #: modules/bibharvest/lib/oai_harvest_admin.py:436 #: modules/bibharvest/lib/oai_harvest_admin.py:451 #: modules/bibharvest/lib/oai_harvest_admin.py:488 #: modules/bibharvest/lib/oai_harvest_admin.py:535 msgid "Go back to the OAI sources overview" msgstr "Retour à l'aperçu des sources OAI" #: modules/bibharvest/lib/oai_harvest_admin.py:408 msgid "Try again with another url" msgstr "Réessayez avec une autre URL" #: modules/bibharvest/lib/oai_harvest_admin.py:415 msgid "Continue anyway" msgstr "Continuer quand même" #: modules/bibharvest/lib/oai_harvest_admin.py:818 msgid "Return to the month view" msgstr "Retour à la vue mensuelle" #: modules/bibharvest/lib/oai_harvest_admin.py:1092 msgid "Compare with original" msgstr "Comparer à l'original" #: modules/bibharvest/lib/oai_harvest_admin.py:1098 #: modules/bibharvest/lib/oai_harvest_admin.py:1143 msgid "Delete from holding pen" msgstr "Supprimer de la liste d'attente" #: modules/bibharvest/lib/oai_harvest_admin.py:1116 msgid "Error when retrieving the Holding Pen entry" msgstr "Erreur lors de l'accès à l'entrée de la liste d'attente" #: modules/bibharvest/lib/oai_harvest_admin.py:1124 msgid "Error when retrieving the record" msgstr "Erreur lors de l'accès à la notice" #: modules/bibharvest/lib/oai_harvest_admin.py:1132 msgid "" "Error when formatting the Holding Pen entry. Probably it's content is broken" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1137 msgid "Accept Holding Pen version" msgstr "Accepter la version de la Liste d'Attente" #: modules/bibknowledge/lib/bibknowledge_templates.py:75 msgid "Limit display to knowledge bases matching" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:76 msgid "in their rules and descriptions" msgstr "dans leurs règles et descriptions." #: modules/bibknowledge/lib/bibknowledge_templates.py:140 msgid "Add New Knowledge Base" msgstr "Ajouter Base de Connaissances" #: modules/bibknowledge/lib/bibknowledge_templates.py:141 msgid "Configure a dynamic KB" msgstr "Configurer Base dynamique" #: modules/bibknowledge/lib/bibknowledge_templates.py:142 msgid "Add New Taxonomy" msgstr "Ajouter Nouvelle Taxonomie" #: modules/bibknowledge/lib/bibknowledge_templates.py:183 msgid "This knowledge base already has a taxonomy file." msgstr "La base de connaissance a déjà un fichier de taxonomie." #: modules/bibknowledge/lib/bibknowledge_templates.py:184 msgid "If you upload another file, the current version will be replaced." msgstr "Si vous chargez un nouveau fichier, la version courant sera remplacée." #: modules/bibknowledge/lib/bibknowledge_templates.py:186 msgid "The current taxonomy can be accessed with this URL" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:189 msgid "Please upload the RDF file for taxonomy" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:224 msgid "Please configure" msgstr "Veuillez configurer" #: modules/bibknowledge/lib/bibknowledge_templates.py:225 msgid "" "A dynamic knowledge base is a list of values of a " "given field. The list is generated dynamically by " "searching the records using a search expression." msgstr "" "Une base de connaissance dynamique est une liste de valeur\n" "donnée par un champ. La liste est générée dynamiquement en\n" "recherchant les notices correspondant à une requête." #: modules/bibknowledge/lib/bibknowledge_templates.py:229 msgid "" "Example: Your records contain field 270__a for the " "name and address of the author's institute. If you " "set the field to '270__a' and the expression to " "'270__a:*Paris*', a list of institutes in Paris " "will be created." msgstr "" "Exemple: votre notice contient un champ 270__a pour le nom et l'adresse\n" "d'une institution. Si vous assignez au champ '270__a' l'expression \n" "\"270__a:*Paris*\", une listes des institutions à Paris sera créée." #: modules/bibknowledge/lib/bibknowledge_templates.py:234 msgid "" "If the expression is empty, a list of all values in " "270__a will be created." msgstr "Si l'expression est vide, la liste des valeurs dans 270__a sera créée." #: modules/bibknowledge/lib/bibknowledge_templates.py:236 msgid "" "If the expression contains '%', like '270__a:*%*', " "it will be replaced by a search string when the " "knowledge base is used." msgstr "" "Si l'expression contient '%' comme dans '270__a:*%*',\n" "le caractère sera remplacé par la recherche lorsque\n" "la base de connaissance sera utilisée." #: modules/bibknowledge/lib/bibknowledge_templates.py:239 msgid "" "You can enter a collection name if the expression " "should be evaluated in a specific collection." msgstr "" "Vous pouvez entre un nom de collection si l'expression\n" "doit être évaluée dans une collection spécifique." #: modules/bibknowledge/lib/bibknowledge_templates.py:255 msgid "Exporting: " msgstr "Exportation: " #: modules/bibknowledge/lib/bibknowledge_templates.py:296 #: modules/bibknowledge/lib/bibknowledge_templates.py:557 #: modules/bibknowledge/lib/bibknowledge_templates.py:625 msgid "Knowledge Base Mappings" msgstr "Relations de la base de connaissances" #: modules/bibknowledge/lib/bibknowledge_templates.py:297 #: modules/bibknowledge/lib/bibknowledge_templates.py:558 #: modules/bibknowledge/lib/bibknowledge_templates.py:626 msgid "Knowledge Base Attributes" msgstr "Attributs de la base de connaissances" #: modules/bibknowledge/lib/bibknowledge_templates.py:298 #: modules/bibknowledge/lib/bibknowledge_templates.py:559 #: modules/bibknowledge/lib/bibknowledge_templates.py:627 msgid "Knowledge Base Dependencies" msgstr "Dépendances de la base de connaissances" #: modules/bibknowledge/lib/bibknowledge_templates.py:318 msgid "" "Here you can add new mappings to this base and " "change the base attributes." msgstr "Ajoutez ici des nouvelles règles et changez les attributs de la base." #: modules/bibknowledge/lib/bibknowledge_templates.py:333 msgid "Map From" msgstr "De:" #: modules/bibknowledge/lib/bibknowledge_templates.py:396 msgid "Search for a mapping" msgstr "Rechercher une règle" #: modules/bibknowledge/lib/bibknowledge_templates.py:514 msgid "You can get a these mappings in textual format by: " msgstr "Vous pouvez recevoir les correspondances au format textuel à:" #: modules/bibknowledge/lib/bibknowledge_templates.py:516 msgid "And the KBA version by:" msgstr "Et la version KBA à:" #: modules/bibknowledge/lib/bibknowledge_templates.py:667 #, fuzzy msgid "Your rule" msgstr "Vos Alertes" #: modules/bibknowledge/lib/bibknowledge_templates.py:669 msgid "The left side of the rule " msgstr "La partie gauche de la règle " -#: modules/bibknowledge/lib/bibknowledge_templates.py:671 -msgid "The right side of the rule " -msgstr "La partie droite de la règle " +#: modules/bibknowledge/lib/bibknowledge_templates.py:671 +msgid "The right side of the rule " +msgstr "La partie droite de la règle " + +#: modules/bibknowledge/lib/bibknowledge_templates.py:672 +msgid "already appears in these knowledge bases" +msgstr "" + +#: modules/bibknowledge/lib/bibknowledge_templates.py:685 +msgid "Please select action" +msgstr "Veuillez choisir une action" + +#: modules/bibknowledge/lib/bibknowledge_templates.py:686 +msgid "Replace the selected rules with this rule" +msgstr "Remplacer la règle sélectionnée par cette règle" + +#: modules/bibknowledge/lib/bibknowledge_templates.py:687 +msgid "Add this rule in the current knowledge base" +msgstr "Ajouter cette règle dans la base courante" + +#: modules/bibknowledge/lib/bibknowledge_templates.py:688 +msgid "Cancel: do not add this rule" +msgstr "Annuler: ne pas ajouter cette règle" + +#: modules/bibknowledge/lib/bibknowledge_templates.py:719 +msgid "" +"It is not possible to have two rules with the same left side in the same " +"knowledge base." +msgstr "" +"Il n'est pas possible d'avoir deux règle avec les mêmes parties \n" +"gauches dans une base de connaissance" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:80 +msgid "BibKnowledge Admin" +msgstr "Administration de BibKnowledge" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:100 +msgid "Knowledge Bases" +msgstr "Bases de Connaissances" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:118 +msgid "upload is a file" +msgstr "Le chargement est un fichier" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:130 +#, fuzzy +msgid "Cannot create upload" +msgstr "Impossible de créer le format de sortie" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:144 +msgid "File uploaded" +msgstr "Fichier chargé" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:173 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:217 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:267 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:304 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:357 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:466 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:525 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:587 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:679 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:696 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:711 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:747 +msgid "Manage Knowledge Bases" +msgstr "Gérer les bases de connaissances" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:186 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:231 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:317 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:371 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:479 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:544 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:723 +msgid "Unknown Knowledge Base" +msgstr "Base de connaissances inconnue" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:193 +#, python-format +msgid "Knowledge Base %s" +msgstr "Base de connaissances %s" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:240 +#, python-format +msgid "Knowledge Base %s Attributes" +msgstr "Attributs de la base de connaissances %s" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:326 +#, python-format +msgid "Knowledge Base %s Dependencies" +msgstr "Dépendances de la base de connaissances %s" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:408 +msgid "Left side exists" +msgstr "Règle gauche existante" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:416 +msgid "Right side exists" +msgstr "Règle droite existante" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:589 +msgid "Knowledge base name missing" +msgstr "Base de connaissances manquante" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:609 +msgid "Unknown knowledge base" +msgstr "Base de connaissances inconnue" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:610 +msgid "There is no knowledge base with that name." +msgstr "Il n'y pas de base de connaissance avec ce nom." + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:629 +msgid "No such knowledge base" +msgstr "Base de connaissances inconnue" + +#: modules/bibknowledge/lib/bibknowledgeadmin.py:711 +msgid "Delete Knowledge Base" +msgstr "Supprimer la base de connaissances" + +#: modules/bibsword/lib/bibsword_webinterface.py:157 +msgid "BibSword Admin Interface" +msgstr "Interface Admin de BibSword" + +#: modules/bibsword/lib/bibsword_webinterface.py:171 +#: modules/bibsword/lib/bibsword_webinterface.py:277 +#: modules/bibsword/lib/bibsword_webinterface.py:301 +#: modules/bibsword/lib/bibsword_webinterface.py:330 +msgid "Export with BibSword: Step 2/4" +msgstr "Exportation BibSword: Étape 2/4" + +#: modules/bibsword/lib/bibsword_webinterface.py:222 +#: modules/bibsword/lib/bibsword_webinterface.py:233 +#: modules/bibsword/lib/bibsword_webinterface.py:291 +msgid "Export with BibSword: Step 1/4" +msgstr "Exportation BibSword: Étape 1/4" + +#: modules/bibsword/lib/bibsword_webinterface.py:315 +#: modules/bibsword/lib/bibsword_webinterface.py:343 +#: modules/bibsword/lib/bibsword_webinterface.py:374 +msgid "Export with BibSword: Step 3/4" +msgstr "Exportation BibSword: Étape 3/4" + +#: modules/bibsword/lib/bibsword_webinterface.py:358 +#: modules/bibsword/lib/bibsword_webinterface.py:389 +msgid "Export with BibSword: Step 4/4" +msgstr "Exportation BibSword: Étape 4/4" + +#: modules/bibsword/lib/bibsword_webinterface.py:434 +msgid "Export with BibSword: Acknowledgement" +msgstr "Exportation BibSword: Quittance" + +#: modules/bibupload/lib/batchuploader_engine.py:202 +msgid "More than one possible recID, ambiguous behaviour" +msgstr "Multiples recIDs possibles, comportement indéfini" + +#: modules/bibupload/lib/batchuploader_engine.py:202 +msgid "No records match that file name" +msgstr "Aucune notice ne correspondant au nom de fichier" + +#: modules/bibupload/lib/batchuploader_engine.py:203 +msgid "File already exists" +msgstr "Fichier déjà existant" + +#: modules/bibupload/lib/batchuploader_engine.py:203 +msgid "A file with the same name and format already exists" +msgstr "A fichier avec les mêmes nom et format existe déjà" + +#: modules/bibupload/lib/batchuploader_engine.py:204 +#, python-format +msgid "No rights to upload to collection '%s'" +msgstr "Aucun droit pour envoyer vers la collection '%s'" + +#: modules/bibupload/lib/batchuploader_engine.py:413 +#: modules/bibupload/lib/batchuploader_engine.py:426 +#, python-format +msgid "" +"The user '%(x_user)s' is not authorized to modify collection '%(x_coll)s'" +msgstr "" +"L'utilisateur '%(x_user)s' n'est pas autorisé à modifier la collection " +"'%(x_coll)s'" + +#: modules/webalert/lib/webalert_templates_epfl.py:284 +#, python-format +msgid "" +"You can set a new alert from %(x_url_open)syour searches%(x_url_close)s." +msgstr "" +"Vous pouvez définir une nouvelle alerte depuis %(x_url_open)svos recherches" +"%(x_url_close)s." + +#: modules/webalert/lib/webalert_templates_epfl.py:381 +#: modules/webalert/lib/webalert_templates_epfl.py:429 +#: modules/webalert/lib/webalert_templates_epfl.py:488 +#: modules/webbasket/lib/webbasket_templates_epfl.py:391 +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +#: modules/webbasket/lib/webbasket_templates_epfl.py:491 +#: modules/webbasket/lib/webbasket_templates_epfl.py:590 +#: modules/webbasket/lib/webbasket_templates_epfl.py:683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:762 +msgid "New personal collection" +msgstr "Nouvelle collection personnelle" + +#: modules/webalert/lib/webalert_templates_epfl.py:383 +#: modules/websession/lib/websession_templates_epfl.py:148 +msgid "My alerts" +msgstr "Mes alertes" + +#: modules/webalert/lib/webalert_templates_epfl.py:431 +#: modules/webalert/lib/webalert_templates_epfl.py:490 +msgid "Performed searches" +msgstr "Requêtes exécutées" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:60 +msgid "You have no personal or group collections" +msgstr "Vous ne possédez pas encore de collections" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:61 +#, python-format +msgid "" +"You may want to start by %(x_url_open)screating a new collection" +"%(x_url_close)s." +msgstr "" +"Vous pouvez %(x_url_open)scréer une nouvelle collection %(x_url_close)s." + +#: modules/webbasket/lib/webbasket_templates_epfl.py:68 +msgid "Create collection" +msgstr "Créer une collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:358 +#: modules/websearch/lib/websearch_templates_epfl.py:1524 +msgid "Export" +msgstr "Exporter" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:359 +msgid "Add to my website" +msgstr "Intégrer les publications sur mon site" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:388 +#: modules/websearch/lib/websearch_templates_epfl.py:1251 +msgid "Search results" +msgstr "Résultats de la recherche" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:390 +msgid "Search collections for" +msgstr "Chercher dans les collections" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +msgid "Create new collection" +msgstr "Nouvelle collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +#: modules/webbasket/lib/webbasket_templates_epfl.py:626 +msgid "Collection name" +msgstr "Nom de la collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:474 +#, python-format +msgid "%i items have been successfully added to your collection" +msgstr "%i publications ont été ajoutées à votre collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:475 +#, python-format +msgid "Proceed to the %(x_url_open)scollection%(x_url_close)s" +msgstr "Voir la %(x_url_open)scollection%(x_url_close)s" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:480 +#, python-format +msgid " or return to your %(x_url_open)sprevious collection%(x_url_close)s" +msgstr " ou retourner à la %(x_url_open)scollection précédente%(x_url_close)s" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:491 +msgid "Successfully added" +msgstr "Ajout effectué" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:519 +#, python-format +msgid "" +"Please choose a collection: %(x_basket_selection_box)s (or " +"%(x_url_open)screate a new one%(x_url_close)s first)" +msgstr "" +"Veuillez choisir une collection: %(x_basket_selection_box)s (ou " +"%(x_url_open)sen créer une nouvelle%(x_url_close)s first)" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:530 +#, python-format +msgid "Adding %i items to your collections" +msgstr "Ajout de %i publications à vos collections" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:550 +msgid "Are you sure you want to delete this collection?" +msgstr "Voulez-vous vraiment supprimer cette collection?" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:553 +#, python-format +msgid "%i users are subscribed to this collection." +msgstr "%i utilisateurs sont abonnés à cette collection." + +#: modules/webbasket/lib/webbasket_templates_epfl.py:555 +#, python-format +msgid "%i user groups are subscribed to this collection." +msgstr "%i groupes ont accès à cette collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:557 +#, python-format +msgid "You have set %i alerts on this collection." +msgstr "Vous avez lié %i alertes à cette collection." + +#: modules/webbasket/lib/webbasket_templates_epfl.py:654 +#: modules/webbasket/lib/webbasket_templates_epfl.py:869 +msgid "Delete collection" +msgstr "Supprimer la collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:684 +#, python-format +msgid "Editing collection %(x_basket_name)s" +msgstr "Édition de la collection %(x_basket_name)s" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:761 +msgid "Sharing collection to a new group" +msgstr "Partage de la collection avec un nouveau groupe" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:868 +msgid "Edit collection" +msgstr "Modifier la collection" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:883 +#, python-format +msgid "%(nb)i records, last modified on %(date)s" +msgstr "%(nb)i publications, dernière modification: %(date)s" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:929 +msgid "collection is empty" +msgstr "la collection est vide" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1188 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1193 +msgid "All my collections" +msgstr "Toutes mes collections" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1197 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1202 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1275 +msgid "My personal collections" +msgstr "Mes collections personnelles" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1207 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1212 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1285 +msgid "My groups' collections" +msgstr "Collections de mes groupes" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1270 +msgid "*** collection name ***" +msgstr "*** nom de la collection ***" + +#: modules/websearch/lib/websearch_templates_epfl.py:246 +#: modules/websearch/lib/websearch_templates_epfl.py:386 +msgid "Infoscience, EPFL's scientific publications" +msgstr "Infoscience, les publications scientifiques de l'EPFL" + +#: modules/websearch/lib/websearch_templates_epfl.py:250 +#: modules/websearch/lib/websearch_templates_epfl.py:390 +msgid "EPFL Directive for Research Integrity" +msgstr "Directive EPFL pour l'intégrité scientifique" + +#: modules/websearch/lib/websearch_templates_epfl.py:254 +#: modules/websearch/lib/websearch_templates_epfl.py:394 +msgid "" +"SNSF regulations on information, valorisation and rights to research results" +msgstr "" +"Règlement du FNS sur l’information, la valorisation et les droits relatifs " +"aux résultats issus de la recherche" + +#: modules/websearch/lib/websearch_templates_epfl.py:259 +#: modules/websearch/lib/websearch_templates_epfl.py:399 +msgid "Overview of SNSF Guidelines on Open Access" +msgstr "Le Règlement du FNS relatif au libre accès en bref" + +#: modules/websearch/lib/websearch_templates_epfl.py:263 +#: modules/websearch/lib/websearch_templates_epfl.py:403 +msgid "Open Access Guidelines for researchers funded by the ERC" +msgstr "Open Access Guidelines for researchers funded by the ERC" + +#: modules/websearch/lib/websearch_templates_epfl.py:295 +msgid "Latest additions" +msgstr "Derniers ajouts" + +#: modules/websearch/lib/websearch_templates_epfl.py:356 +msgid "Search publications" +msgstr "Chercher des publications" + +#: modules/websearch/lib/websearch_templates_epfl.py:359 +#, python-format +msgid "Access to the %s scientific publications" +msgstr "Accéder aux %s publications scientifiques" + +#: modules/websearch/lib/websearch_templates_epfl.py:360 +#, python-format +msgid "Access to the %s documentary resources" +msgstr "Accéder aux %s ressources documentaires" + +#: modules/websearch/lib/websearch_templates_epfl.py:362 +msgid "More news" +msgstr "Plus d'actualités" + +#: modules/websearch/lib/websearch_templates_epfl.py:509 +msgid "Filter by document type" +msgstr "Filtrer par type de document" + +#: modules/websearch/lib/websearch_templates_epfl.py:510 +msgid "Publications" +msgstr "Publications" + +#: modules/websearch/lib/websearch_templates_epfl.py:511 +#: modules/webstyle/lib/webstyle_templates_epfl.py:469 +msgid "Journal Articles" +msgstr "Articles de journaux" + +#: modules/websearch/lib/websearch_templates_epfl.py:513 +#: modules/webstyle/lib/webstyle_templates_epfl.py:470 +msgid "Conference Papers" +msgstr "Papiers de conférence" + +#: modules/websearch/lib/websearch_templates_epfl.py:515 +msgid "Monographs" +msgstr "Monographies" + +#: modules/websearch/lib/websearch_templates_epfl.py:516 +msgid "Books" +msgstr "Livres" + +#: modules/websearch/lib/websearch_templates_epfl.py:517 +#: modules/webstyle/lib/webstyle_templates_epfl.py:471 +msgid "Theses" +msgstr "Thèses" + +#: modules/websearch/lib/websearch_templates_epfl.py:518 +msgid "Book Chapters" +msgstr "Chapitres de livre" + +#: modules/websearch/lib/websearch_templates_epfl.py:519 +msgid "Conference Proceedings" +msgstr "Actes de congrès" + +#: modules/websearch/lib/websearch_templates_epfl.py:521 +#: modules/websearch/lib/websearch_templates_epfl.py:523 +msgid "Presentations & Talks" +msgstr "Présentations et talks" + +#: modules/websearch/lib/websearch_templates_epfl.py:522 +msgid "Posters" +msgstr "Posters" + +#: modules/websearch/lib/websearch_templates_epfl.py:525 +msgid "Standards & Patents" +msgstr "Normes et brevets" + +#: modules/websearch/lib/websearch_templates_epfl.py:526 +msgid "Standards" +msgstr "Normes" + +#: modules/websearch/lib/websearch_templates_epfl.py:527 +msgid "Patents" +msgstr "Brevets" + +#: modules/websearch/lib/websearch_templates_epfl.py:529 +#: modules/webstyle/lib/webstyle_templates_epfl.py:472 +msgid "Reports" +msgstr "Rapport" + +#: modules/websearch/lib/websearch_templates_epfl.py:530 +msgid "Technical Reports" +msgstr "Rapports techniques" + +#: modules/websearch/lib/websearch_templates_epfl.py:531 +msgid "Working Papers" +msgstr "Working papers" + +#: modules/websearch/lib/websearch_templates_epfl.py:533 +msgid "Lectures & teaching material" +msgstr "Cours et matériel pédagogique" + +#: modules/websearch/lib/websearch_templates_epfl.py:534 +msgid "Teaching Documents" +msgstr "Documents d'enseignement" + +#: modules/websearch/lib/websearch_templates_epfl.py:535 +msgid "Student Projects" +msgstr "Projets d'étudiants" + +#: modules/websearch/lib/websearch_templates_epfl.py:537 +msgid "Filter by publication status" +msgstr "Filtrer par statut de publication" + +#: modules/websearch/lib/websearch_templates_epfl.py:538 +msgid "Peer-reviewed publications" +msgstr "Publications validées par les pairs" + +#: modules/websearch/lib/websearch_templates_epfl.py:539 +msgid "Published" +msgstr "Publié" + +#: modules/websearch/lib/websearch_templates_epfl.py:540 +msgid "Accepted" +msgstr "Accepté" + +#: modules/websearch/lib/websearch_templates_epfl.py:541 +msgid "Submitted" +msgstr "Soumis" + +#: modules/websearch/lib/websearch_templates_epfl.py:543 +msgid "Filter by origin" +msgstr "Filtrer par origine" + +#: modules/websearch/lib/websearch_templates_epfl.py:544 +msgid "Work produced at EPFL" +msgstr "Travail produit à l'EPFL" + +#: modules/websearch/lib/websearch_templates_epfl.py:546 +msgid "Filter by fulltext availability" +msgstr "Filtrer par disponibilité du fulltext" + +#: modules/websearch/lib/websearch_templates_epfl.py:547 +msgid "Publicly available" +msgstr "Public" + +#: modules/websearch/lib/websearch_templates_epfl.py:548 +msgid "Restricted access" +msgstr "Accès restreint" + +#: modules/websearch/lib/websearch_templates_epfl.py:569 +msgid "Boolean operators" +msgstr "Opérateurs booléens" + +#: modules/websearch/lib/websearch_templates_epfl.py:570 +msgid "" +"AND: vetterli AND wavelet (you can also use + char " +"instead of AND)" +msgstr "" +"AND: vetterli AND wavelet (vous pouvez aussi utiliser le caractère " +"+ au lieu de AND)" + +#: modules/websearch/lib/websearch_templates_epfl.py:571 +msgid "" +"NOT: vetterli NOT wavelet (you can also use - char " +"instead of NOT)" +msgstr "" +"NOT: vetterli NOT wavelet (vous pouvez aussi utiliser le caractère " +"- au lieu de NOT)" + +#: modules/websearch/lib/websearch_templates_epfl.py:572 +msgid "" +"OR: vetterli OR wavelet (you can also use | char " +"instead of OR)" +msgstr "" +"OR: vetterli OR wavelet (vous pouvez aussi utiliser le caractère " +"| au lieu de OR)" + +#: modules/websearch/lib/websearch_templates_epfl.py:573 +msgid "Parentheses" +msgstr "Parenthèses" + +#: modules/websearch/lib/websearch_templates_epfl.py:574 +msgid "" +"You can also use parentheses in your queries to group boolean expressions " +"together. Nested parentheses are also supported." +msgstr "" +"Vous pouvez utiliser des parenthèses dans votre recherche de manière à " +"grouper les expressions. L'utilisation de parenthèses imbriquées est " +"également possible" + +#: modules/websearch/lib/websearch_templates_epfl.py:575 +msgid "Full documentation about searching" +msgstr "Documentation complète sur la recherche" + +#: modules/websearch/lib/websearch_templates_epfl.py:855 +msgid "Search specifically in" +msgstr "Affiner les résultats" + +#: modules/websearch/lib/websearch_templates_epfl.py:857 +msgid "Focus on" +msgstr "Focaliser sur" + +#: modules/websearch/lib/websearch_templates_epfl.py:980 +#: modules/websearch/lib/websearch_templates_epfl.py:989 +msgid "Any field" +msgstr "Tous les champs" + +#: modules/websearch/lib/websearch_templates_epfl.py:983 +msgid "Keyword" +msgstr "Mot clef" + +#: modules/websearch/lib/websearch_templates_epfl.py:985 +msgid "Source" +msgstr "Source" + +#: modules/websearch/lib/websearch_templates_epfl.py:987 +msgid "DOI" +msgstr "DOI" + +#: modules/websearch/lib/websearch_templates_epfl.py:1059 +#: modules/websearch/lib/websearch_templates_epfl.py:1061 +#, python-format +msgid "%s results" +msgstr "%s résultats" + +#: modules/websearch/lib/websearch_templates_epfl.py:1480 +msgid "Add record to collection" +msgstr "Ajouter à mes collections" + +#: modules/websearch/lib/websearch_templates_epfl.py:1481 +msgid "Please choose a collection" +msgstr "Veuillez choisir une collection" + +#: modules/websearch/lib/websearch_templates_epfl.py:1482 +#, python-format +msgid "or %(x_url_open)screate a new one%(x_url_close)s first" +msgstr "ou d'abord en %(x_url_open)scréer une nouvelle%(x_url_close)s" + +#: modules/websearch/lib/websearch_templates_epfl.py:1485 +msgid "Add record" +msgstr "Ajouter" + +#: modules/websearch/lib/websearch_templates_epfl.py:1525 +msgid "Integrate these publications into my website" +msgstr "Intégrer ces publications sur mon site web" + +#: modules/websearch/lib/websearch_templates_epfl.py:1707 +msgid "First author" +msgstr "Premier auteur" + +#: modules/websearch/lib/websearch_templates_epfl.py:1709 +msgid "Publication year" +msgstr "Année de publication" + +#: modules/websearch/lib/websearch_templates_epfl.py:1710 +msgid "Ascending" +msgstr "Croissant" + +#: modules/websearch/lib/websearch_templates_epfl.py:1711 +msgid "Descending" +msgstr "Décroissant" + +#: modules/websearch/lib/websearch_templates_epfl.py:1713 +msgid "HTML detailed" +msgstr "détaillé" + +#: modules/websearch/lib/websearch_templates_epfl.py:1714 +msgid "HTML MARC21" +msgstr "MARC21" + +#: modules/websearch/lib/websearch_templates_epfl.py:1762 +msgid "Sort by" +msgstr "Trier par" + +#: modules/websearch/lib/websearch_templates_epfl.py:2110 +msgid "Add to my collections" +msgstr "Ajouter à mes collections" + +#: modules/websession/lib/websession_templates_epfl.py:146 +msgid "My profile" +msgstr "Mon profil" + +#: modules/websession/lib/websession_templates_epfl.py:149 +msgid "to be validated" +msgstr "à valider" + +#: modules/websession/lib/websession_templates_epfl.py:150 +msgid "to be imported" +msgstr "à importer" + +#: modules/websession/lib/websession_templates_epfl.py:151 +#, fuzzy +msgid "to be matched" +msgstr "à importer" + +#: modules/websession/lib/websession_templates_epfl.py:153 +msgid "XX-Translate-test" +msgstr "XX-Translate-test" + +#: modules/websession/lib/websession_templates_epfl.py:204 +msgid "Dropbox" +msgstr "Dropbox" + +#: modules/websession/lib/websession_templates_epfl.py:205 +msgid "Delete by reference" +msgstr "Supprimer par référence" + +#: modules/websession/lib/websession_templates_epfl.py:206 +msgid "Laboratories management" +msgstr "Gestion des laboratoires" + +#: modules/websession/lib/websession_templates_epfl.py:207 +#, fuzzy +msgid "Laboratories stats" +msgstr "Gestion des laboratoires" + +#: modules/websession/lib/websession_templates_epfl.py:208 +msgid "Authors management" +msgstr "Gestion des auteurs" + +#: modules/websession/lib/websession_templates_epfl.py:209 +msgid "Create user" +msgstr "Crée un utilisateur" + +#: modules/websession/lib/websession_templates_epfl.py:210 +msgid "Publication statistics / bibliometrics" +msgstr "Statistiques de publication / bibliométrie" + +#: modules/websession/lib/websession_templates_epfl.py:215 +msgid "Deduplicate" +msgstr "Dédoublonnage" + +#: modules/websession/lib/websession_templates_epfl.py:216 +msgid "Manual match" +msgstr "Assignation manuelle" + +#: modules/websession/lib/websession_templates_epfl.py:217 +msgid "Rejected imports" +msgstr "Imports rejetés" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:135 +#: modules/webstyle/lib/webstyle_templates_epfl.py:475 +msgid "About Infoscience" +msgstr "À propos d'Infoscience" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:136 +msgid "Contact" +msgstr "Contact" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:137 +msgid "Accessibility" +msgstr "Accessibilité" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:169 +#, python-format +msgid "Logout (%(username)s)" +msgstr "Déconnexion (%(username)s)" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:225 +msgid "Infoscience: Scientific publications of EPFL" +msgstr "Infoscience: Les publications scientifiques de l'EPFL" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:333 +msgid "Choose your language" +msgstr "Choix de la langue" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:460 +msgid "Publications by school" +msgstr "Publications par faculté" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:461 +msgid "ENAC - Architecture, Civil and Environmental Engineering" +msgstr "ENAC - Environnement Naturel, Architectural et Construit" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:462 +msgid "I&C - Computer & Communication Sciences" +msgstr "I&C - Informatique & Communications" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:463 +msgid "SB - Basic Sciences" +msgstr "SB - Sciences de Base" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:464 +msgid "STI - Engineering" +msgstr "STI - Sciences et Techniques de l'Ingénieur" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:465 +msgid "SV - Life Sciences" +msgstr "SV - Sciences de la Vie" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:466 +msgid "CDM - Management of Technology" +msgstr "CDM - Collège du Management de la Technologie" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:467 +msgid "CDH - College of Humanities" +msgstr "CDH - Collège des Humanités" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:468 +msgid "Publications by document type" +msgstr "Publications par type de document" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:473 +msgid "Deposit / Publish" +msgstr "Déposer / Publier" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:476 +msgid "Open Access & Copyright" +msgstr "Open Access & Copyright" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:477 +msgid "Start using Infoscience" +msgstr "Démarrer avec Infoscience" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:478 +msgid "Add a document" +msgstr "Ajouter un document" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:479 +msgid "Document types" +msgstr "Types de documents" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:480 +msgid "Publication status" +msgstr "Statut de publication" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:481 +msgid "Manage publications" +msgstr "Gérer les publications" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:482 +msgid "Edit a publication" +msgstr "Éditer une publication" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:483 +msgid "Remove a publication" +msgstr "Supprimer une publication" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:484 +msgid "Export a publication list" +msgstr "Export une liste de publications" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:485 +msgid "Manage my account" +msgstr "Gérer mon compte" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:486 +msgid "Create a personal collection" +msgstr "Créer une collection personnelle" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:487 +msgid "Display my publications in people@EPFL" +msgstr "Afficher mes publications dans mon profil people@EPFL" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:527 +#: modules/webstyle/lib/webstyle_templates_epfl.py:542 +msgid "EPFL Homepage" +msgstr "Page d'accueil de l'EPFL" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:543 +msgid "Infoscience Homepage" +msgstr "Page d'accueil d'Infoscience" + +#: modules/bibformat/lib/elements/bfe_doctype.py:15 +msgid "Journal article" +msgstr "Article de journal" + +#: modules/bibformat/lib/elements/bfe_doctype.py:17 +msgid "Book" +msgstr "Livre" + +#: modules/bibformat/lib/elements/bfe_doctype.py:19 +msgid "Book Chapter" +msgstr "Chapitre de livre" -#: modules/bibknowledge/lib/bibknowledge_templates.py:672 -msgid "already appears in these knowledge bases" -msgstr "" +#: modules/bibformat/lib/elements/bfe_doctype.py:21 +msgid "Conference paper" +msgstr "Papier de conférence" -#: modules/bibknowledge/lib/bibknowledge_templates.py:685 -msgid "Please select action" -msgstr "Veuillez choisir une action" +#: modules/bibformat/lib/elements/bfe_doctype.py:23 +msgid "Lecture" +msgstr "Cours" -#: modules/bibknowledge/lib/bibknowledge_templates.py:686 -msgid "Replace the selected rules with this rule" -msgstr "Remplacer la règle sélectionnée par cette règle" +#: modules/bibformat/lib/elements/bfe_doctype.py:25 +msgid "Report" +msgstr "Rapport" -#: modules/bibknowledge/lib/bibknowledge_templates.py:687 -msgid "Add this rule in the current knowledge base" -msgstr "Ajouter cette règle dans la base courante" +#: modules/bibformat/lib/elements/bfe_doctype.py:29 +msgid "Patent" +msgstr "Brevet" -#: modules/bibknowledge/lib/bibknowledge_templates.py:688 -msgid "Cancel: do not add this rule" -msgstr "Annuler: ne pas ajouter cette règle" +#: modules/bibformat/lib/elements/bfe_doctype.py:31 +msgid "Researcher's profile" +msgstr "Profil de chercheur" -#: modules/bibknowledge/lib/bibknowledge_templates.py:719 -msgid "" -"It is not possible to have two rules with the same left side in the same " -"knowledge base." -msgstr "" -"Il n'est pas possible d'avoir deux règle avec les mêmes parties \n" -"gauches dans une base de connaissance" +#: modules/bibformat/lib/elements/bfe_doctype.py:33 +msgid "Teaching document" +msgstr "Document d'enseignement" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:80 -msgid "BibKnowledge Admin" -msgstr "Administration de BibKnowledge" +#: modules/bibformat/lib/elements/bfe_doctype.py:35 +msgid "Poster" +msgstr "Poster" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:100 -msgid "Knowledge Bases" -msgstr "Bases de Connaissances" +#: modules/bibformat/lib/elements/bfe_doctype.py:37 +msgid "Conference proceedings" +msgstr "Actes de congrès" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:118 -msgid "upload is a file" -msgstr "Le chargement est un fichier" +#: modules/bibformat/lib/elements/bfe_doctype.py:39 +msgid "Standard" +msgstr "Norme" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:130 -#, fuzzy -msgid "Cannot create upload" -msgstr "Impossible de créer le format de sortie" +#: modules/bibformat/lib/elements/bfe_doctype.py:41 +msgid "Student project" +msgstr "Projet d'étudiant" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:144 -msgid "File uploaded" -msgstr "Fichier chargé" +#: modules/bibformat/lib/elements/bfe_doctype.py:43 +msgid "Presentation / Talk" +msgstr "Présentation / Talk" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:173 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:217 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:267 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:304 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:357 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:466 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:525 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:587 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:679 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:696 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:711 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:747 -msgid "Manage Knowledge Bases" -msgstr "Gérer les bases de connaissances" +#: modules/bibformat/lib/elements/bfe_doctype.py:45 +msgid "Thesis" +msgstr "Thèse" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:186 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:231 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:317 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:371 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:479 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:544 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:723 -msgid "Unknown Knowledge Base" -msgstr "Base de connaissances inconnue" +#: modules/bibformat/lib/elements/bfe_doctype.py:47 +msgid "Working paper" +msgstr "Working paper" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:193 -#, python-format -msgid "Knowledge Base %s" -msgstr "Base de connaissances %s" +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:149 +msgid "Get the whole digitalized project" +msgstr "Voir le travail intégral sous format numérique" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:240 -#, python-format -msgid "Knowledge Base %s Attributes" -msgstr "Attributs de la base de connaissances %s" +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:194 +msgid "EPFL intranet: Fulltext" +msgstr "Accès réservé Intranet EPFL: Texte intégral" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:326 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:204 #, python-format -msgid "Knowledge Base %s Dependencies" -msgstr "Dépendances de la base de connaissances %s" +msgid "EPFL intranet: %s" +msgstr "Accès réservé Intranet EPFL: %s" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:408 -msgid "Left side exists" -msgstr "Règle gauche existante" +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:208 +msgid "Order free pdf" +msgstr "Commander le PDF (gratuit)" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:416 -msgid "Right side exists" -msgstr "Règle droite existante" +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:280 +msgid "Thesis submitted - Forthcoming publication" +msgstr "Thèse soumise - En cours de publication" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:589 -msgid "Knowledge base name missing" -msgstr "Base de connaissances manquante" +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:282 +msgid "Official version" +msgstr "Version officielle" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:609 -msgid "Unknown knowledge base" -msgstr "Base de connaissances inconnue" +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:291 +msgid "There is no available fulltext. Please contact the lab or the authors." +msgstr "" +"Aucun fulltext n'est disponible. Veuillez contacter le laboratoire ou les " +"auteurs." -#: modules/bibknowledge/lib/bibknowledgeadmin.py:610 -msgid "There is no knowledge base with that name." -msgstr "Il n'y pas de base de connaissance avec ce nom." +#: modules/bibformat/lib/elements/bfe_host.py:31 +#: modules/bibformat/lib/elements/bfe_host.py:38 +msgid "Submitted to" +msgstr "Soumis à" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:629 -msgid "No such knowledge base" -msgstr "Base de connaissances inconnue" +#: modules/bibformat/lib/elements/bfe_host.py:33 +#: modules/bibformat/lib/elements/bfe_host.py:40 +msgid "Accepted in" +msgstr "Accepté par" -#: modules/bibknowledge/lib/bibknowledgeadmin.py:711 -msgid "Delete Knowledge Base" -msgstr "Supprimer la base de connaissances" +#: modules/bibformat/lib/elements/bfe_host.py:35 +msgid "Published in" +msgstr "Publié dans" -#: modules/bibsword/lib/bibsword_webinterface.py:157 -msgid "BibSword Admin Interface" -msgstr "Interface Admin de BibSword" +#: modules/bibformat/lib/elements/bfe_references.py:31 +msgid "Search for this record at the European Patent Office" +msgstr "" -#: modules/bibsword/lib/bibsword_webinterface.py:171 -#: modules/bibsword/lib/bibsword_webinterface.py:277 -#: modules/bibsword/lib/bibsword_webinterface.py:301 -#: modules/bibsword/lib/bibsword_webinterface.py:330 -msgid "Export with BibSword: Step 2/4" -msgstr "Exportation BibSword: Étape 2/4" +#: modules/bibformat/lib/elements/bfe_references.py:42 +msgid "View record in Web of Science" +msgstr "Afficher la publication dans Web of Science" -#: modules/bibsword/lib/bibsword_webinterface.py:222 -#: modules/bibsword/lib/bibsword_webinterface.py:233 -#: modules/bibsword/lib/bibsword_webinterface.py:291 -msgid "Export with BibSword: Step 1/4" -msgstr "Exportation BibSword: Étape 1/4" +#: modules/bibformat/lib/elements/bfe_references.py:45 +msgid "View record in Scopus" +msgstr "Afficher la publication dans Scopus" -#: modules/bibsword/lib/bibsword_webinterface.py:315 -#: modules/bibsword/lib/bibsword_webinterface.py:343 -#: modules/bibsword/lib/bibsword_webinterface.py:374 -msgid "Export with BibSword: Step 3/4" -msgstr "Exportation BibSword: Étape 3/4" +#: modules/bibformat/lib/elements/bfe_references.py:48 +msgid "View record in PubMed" +msgstr "Afficher la publication dans PubMed" -#: modules/bibsword/lib/bibsword_webinterface.py:358 -#: modules/bibsword/lib/bibsword_webinterface.py:389 -msgid "Export with BibSword: Step 4/4" -msgstr "Exportation BibSword: Étape 4/4" +#: modules/bibformat/lib/elements/bfe_references.py:51 +msgid "View record in arXiv" +msgstr "Afficher la publication dans arXiv" -#: modules/bibsword/lib/bibsword_webinterface.py:434 -msgid "Export with BibSword: Acknowledgement" -msgstr "Exportation BibSword: Quittance" +#: modules/bibformat/lib/elements/bfe_references.py:60 +msgid "Print copy in library catalog" +msgstr "Version imprimée dans le catalogue de la bibliothèque" -#: modules/bibupload/lib/batchuploader_engine.py:202 -msgid "More than one possible recID, ambiguous behaviour" -msgstr "Multiples recIDs possibles, comportement indéfini" +#: modules/bibformat/lib/elements/bfe_updated_date.py:17 +#, python-format +msgid "Record created on %(creation_date)s, modified on %(modification_date)s" +msgstr "Notice créée le %(creation_date)s, modifiée le %(modification_date)s" -#: modules/bibupload/lib/batchuploader_engine.py:202 -msgid "No records match that file name" -msgstr "Aucune notice ne correspondant au nom de fichier" +#~ msgid "Search Guide" +#~ msgstr "Guide de recherche" -#: modules/bibupload/lib/batchuploader_engine.py:203 -msgid "File already exists" -msgstr "Fichier déjà existant" +#~ msgid "Citation Metrics" +#~ msgstr "Métriques des Citations" -#: modules/bibupload/lib/batchuploader_engine.py:203 -msgid "A file with the same name and format already exists" -msgstr "A fichier avec les mêmes nom et format existe déjà" +#~ msgid "WebSearch Admin Guide" +#~ msgstr "Guide d'administration de WebSearch" -#: modules/bibupload/lib/batchuploader_engine.py:204 -#, python-format -msgid "No rights to upload to collection '%s'" -msgstr "Aucun droit pour envoyer vers la collection '%s'" +#~ msgid "Submit Guide" +#~ msgstr "Aide à la soumission" -#: modules/bibupload/lib/batchuploader_engine.py:413 -#: modules/bibupload/lib/batchuploader_engine.py:426 -#, python-format -msgid "" -"The user '%(x_user)s' is not authorized to modify collection '%(x_coll)s'" -msgstr "" -"L'utilisateur '%(x_user)s' n'est pas autorisé à modifier la collection " -"'%(x_coll)s'" +#~ msgid "Add to personal basket" +#~ msgstr "Ajouter au panier personnel" + +#~ msgid "WebSubmit Admin Guide" +#~ msgstr "Guide d'administration de WebSubmit" + +#~ msgid "Hide" +#~ msgstr "Masquer" + +#~ msgid "Edit This Record" +#~ msgstr "Editer cette notice" -#~ msgid "Check if the book already exists on Invenio," -#~ msgstr "Vérifiez si le libre existe déjà sur Invenio," +#~ msgid "Others' baskets" +#~ msgstr "Paniers des autres" + +#~ msgid "Database problem" +#~ msgstr "Problème de base de données" #~ msgid "No fulltext" #~ msgstr "Aucun fichier" #~ msgid "Upload priority" #~ msgstr "Priorité de chargement" #~ msgid "" #~ "The MARCXML submitted is not valid. Please, review the file and " #~ "%(x_url2_open)sresubmit it%(x_url2_close)s" #~ msgstr "" #~ "Le MARCXML soumis n'est pas valide. Veuillez vérifier le fichier et " #~ "%(x_url2_open)sle renvoyer%(x_url2_close)s" #~ msgid "Invalid MARCXML" #~ msgstr "MARCXML non valide" #~ msgid "Upload successful" #~ msgstr "Envoi réussi" #~ msgid "Run Person/Author Manager" #~ msgstr "Lancer Gestionnaire de Personnes/Auteurs" #~ msgid "" #~ "The selected public basket does not exist or you do not have access to it." #~ msgstr "Le panier sélectionné n'existe pas ou vous n'y avez pas accès." #~ msgid "Please select a valid public basket from the list of public baskets." #~ msgstr "Veuillez sélectionner un panier de la liste des paniers publics" #~ msgid "The selected item does not exist or you do not have access to it." #~ msgstr "L'élément sélectionné n'existe pas ou vous n'y avez pas accès." #~ msgid "Returning to the public basket view." #~ msgstr "Retour à l'affichage des paniers publics." #~ msgid "You do not have permission to write notes to this item." #~ msgstr "Vous n'avez pas l'autorisation d'écrire des notes pour cet élément." #~ msgid "" #~ "The note you are quoting does not exist or you do not have access to it." #~ msgstr "La note que vous citez n'existe pas ou vous n'y avez pas accès." #~ msgid "You must fill in both the subject and the body of the note." #~ msgstr "Vous devez indiquer le sujet et la contenu de la note." #~ msgid "The selected topic does not exist or you do not have access to it." #~ msgstr "Le thème sélectionné n'existe pas ou vous n'y avez pas accès." #~ msgid "The selected basket does not exist or you do not have access to it." #~ msgstr "Le panier sélectionné n'existe pas ou vous n'y avez pas accès." #~ msgid "The selected basket is no longer public." #~ msgstr "Le panier sélectionné n'est plus public." #~ msgid "" #~ "The note you are deleting does not exist or you do not have access to it." #~ msgstr "La note à effacer n'existe pas ou vous n'y avez pas accès." #~ msgid "Sorry, you do not have sufficient rights to add record #%i." #~ msgstr "" #~ "Désolé, vous n'avez pas suffisamment de droits pour ajouter la notice #%i." #~ msgid "Some of the items were not added due to lack of sufficient rights." #~ msgstr "" #~ "Certains éléments n'ont pas été ajoutés par manque de privilèges " #~ "nécessaires." #~ msgid "Please provide a title for the external source." #~ msgstr "Veuillez fournir un titre pour la source externe." #~ msgid "Please provide a description for the external source." #~ msgstr "Veuillez fournir une description pour la source externe." #~ msgid "Please provide a url for the external source." #~ msgstr "Veuillez fournir une URL pour la source externe." #~ msgid "The url you have provided is not valid." #~ msgstr "L'URL fournie n'est pas valide." #~ msgid "" #~ "The url you have provided is not valid: The request contains bad syntax " #~ "or cannot be fulfilled." #~ msgstr "" #~ "L'URL fournie n'est pas valide: la syntaxe de la requête est mauvaise ou " #~ "elle ne peut pas aboutir." #~ msgid "" #~ "The url you have provided is not valid: The server failed to fulfil an " #~ "apparently valid request." #~ msgstr "" #~ "L'URL fournie n'est pas valide: le serveur n'a pas pu répondre à une " #~ "requête en apparence correcte." #~ msgid "Sorry, you do not have sufficient rights on this basket." #~ msgstr "Désolé, vous n'avez pas suffisamment de droits pour ce panier." #~ msgid "No records to add." #~ msgstr "Aucune notice à ajouter." #~ msgid "Cannot add items to the selected basket. Invalid parameters." #~ msgstr "" #~ "Impossible d'ajouter des éléments au panier sélectionné. Paramètres non " #~ "valides." #~ msgid "" #~ "A default topic and basket have been automatically created. Edit them to " #~ "rename them as you see fit." #~ msgstr "" #~ "Un thème et un panier par défaut ont été automatiquement créés. Vous " #~ "pouvez au besoin les renommer." #~ msgid "Please provide a name for the new basket." #~ msgstr "Veuillez fournir un nom pour le nouveau panier." #~ msgid "Please select an existing topic or create a new one." #~ msgstr "Veuillez sélectionner un thème existant ou en créer un nouveau." #~ msgid "" #~ "You cannot subscribe to this basket, you are the either owner or you have " #~ "already subscribed." #~ msgstr "" #~ "Vous ne pouvez pas vous abonner à ce panier, vous en êtes soit le " #~ "propriétaire, soit déjà abonné." #~ msgid "" #~ "You cannot unsubscribe from this basket, you are the either owner or you " #~ "have already unsubscribed." #~ msgstr "" #~ "Vous ne pouvez pas vous désabonner de ce panier, vous en êtes soit le " #~ "propriétaire, soit déjà désabonné. " #~ msgid "" #~ "The category you have selected does not exist. Please select a valid " #~ "category." #~ msgstr "" #~ "La catégorie sélectionnée n'existe pas. Veuillez en sélectionner une " #~ "valide." #~ msgid "The selected group does not exist or you do not have access to it." #~ msgstr "Le groupe sélectionné n'existe pas ou vous n'y avez pas accès." #~ msgid "The selected output format is not available or is invalid." #~ msgstr "" #~ "Le format de sortie sélectionné n'est pas disponible ou n'est pas valide." #~ msgid "This record does not seem to exist any more" #~ msgstr "Cette notice ne semble plus exister." #~ msgid "Invalid comment ID." #~ msgstr "Identifiant de commentaire non valide." #~ msgid "Comment ID %s does not exist." #~ msgstr "Le commentaire avec l'identifiant %s n'existe pas." #~ msgid "Record ID %s does not exist." #~ msgstr "La notice avec l'identifiant %s n'existe pas." #~ msgid "Bad page number --> showing first page." #~ msgstr "Mauvais numéro de page --> affichage de la première page." #~ msgid "Bad number of results per page --> showing 10 results per page." #~ msgstr "" #~ "Mauvais nombre de résultats par page --> affichage de 10 résultats par " #~ "page." #~ msgid "Bad display order --> showing most helpful first." #~ msgstr "" #~ "Mauvais ordre d'affichage --> affichage des plus recommandés en premier." #~ msgid "Bad display order --> showing oldest first." #~ msgstr "" #~ "Mauvais ordre d'affichage --> affichage des plus anciens en premier." #~ msgid "Comments on records have been disallowed by the administrator." #~ msgstr "" #~ "Les commentaires sur les notices ont été désactivés par l'administrateur." #~ msgid "Your feedback has been recorded, many thanks." #~ msgstr "Votre appréciation a été enregistrée, merci." #~ msgid "You have already reported an abuse for this comment." #~ msgstr "Vous avez déjà signalé un abus pour ce commentaire." #~ msgid "The comment you have reported no longer exists." #~ msgstr "Le commentaire que vous avez signalé n'existe plus." #~ msgid "Sorry, you have already voted. This vote has not been recorded." #~ msgstr "Désolé, vous avez déjà voté. Ce vote n'a pas été enregistré." #~ msgid "" #~ "You have been subscribed to this discussion. From now on, you will " #~ "receive an email whenever a new comment is posted." #~ msgstr "" #~ "Vous êtes maintenant abonné à cette discussion. Dorénavant vous recevrez " #~ "un email pour chaque nouveau commentaire." #~ msgid "You have been unsubscribed from this discussion." #~ msgstr "Vous êtes désabonné de la discussion." #~ msgid "%s is an invalid record ID" #~ msgstr "%s est un identifiant de notice non valable" #~ msgid "Your feedback could not be recorded, please try again." #~ msgstr "Votre appréciation n'a pu être enregistrée, veuillez réessayer." #~ msgid "%s is an invalid user ID." #~ msgstr "%s est un identifiant utilisateur non valable." #~ msgid "Cannot reply to a review." #~ msgstr "Impossible de répondre à une évaluation" #~ msgid "You must enter a title." #~ msgstr "Vous devez fournir un titre." #~ msgid "You must choose a score." #~ msgstr "Vous devez donner une note." #~ msgid "You must enter a text." #~ msgstr "Vous devez fournir un texte." #~ msgid "You already wrote a review for this record." #~ msgstr "Vous avez déjà soumis une évaluation pour cette notice." #~ msgid "You already posted a comment short ago. Please retry later." #~ msgstr "" #~ "Vous avez déjà posté un commentaire très récemment. Veuillez réessayer " #~ "plus tard." #~ msgid "Failed to insert your comment to the database. Please try again." #~ msgstr "" #~ "Échec lors de l'insertion du commentaire dans la base de donnée. Veuillez " #~ "réessayer." #~ msgid "Unknown action --> showing you the default add comment form." #~ msgstr "" #~ "Action inconnue --> affichage du formulaire de soumission de commentaire." #~ msgid "Record ID %s does not exist in the database." #~ msgstr "" #~ "La notice avec l'identifiant %s n'existe pas dans la base de données." #~ msgid "No record ID was given." #~ msgstr "Aucun identifiant de notice n'a été fourni." #~ msgid "Record ID %s is an invalid ID." #~ msgstr "%s n'est pas un identifiant valide." #~ msgid "Record ID %s is not a number." #~ msgstr "L'identifiant de notice %s n'est pas un nombre." #~ msgid "" #~ "
    %(x_nb)i Comments for " #~ "round \"%(x_name)s\"" #~ msgstr "" #~ "
    %(x_nb)i commentaires au " #~ "tour \"%(x_name)s\"" #~ msgid "
    %(x_nb)i Comments" #~ msgstr "" #~ "
    %(x_nb)i Commentaires" #~ msgid "" #~ "
    Be the first to " #~ "review this document.
    " #~ msgstr "" #~ "
    Soyez le premier à " #~ "évaluer ce document.
    " #~ msgid "%(x_name)s" #~ msgstr "%(x_name)s" #~ msgid "" #~ "%(x_nb_people)s out of %(x_nb_total)s people found this review useful" #~ msgstr "" #~ "%(x_nb_people)s sur %(x_nb_total)s utilisateurs ont trouvé cette " #~ "évaluation utile" #~ msgid "Your comment will be lost." #~ msgstr "Votre commentaire sera perdu." #~ msgid "" #~ "The size of file \\\"%s\\\" (%s) is larger than maximum allowed file size " #~ "(%s). Select files again." #~ msgstr "" #~ "La taille du fichier \\\"%s\\\" (%s) dépasse le maximum autorisé (%s). " #~ "Sélectionnez à nouveau un fichier." #~ msgid "Sorry, this message in not in your mailbox." #~ msgstr "Désolé, ce message n'est pas dans votre boîte." #~ msgid "This message does not exist." #~ msgstr "Ce message n'existe pas." #~ msgid "There is no index %s. Searching for %s in all fields." #~ msgstr "Il n'y a pas d'index %s. Recherche de %s dans tous les champs." #~ msgid "Instead searching %s." #~ msgstr "Recherche %s à la place." #~ msgid "Search term too generic, displaying only partial results..." #~ msgstr "" #~ "Recherche trop générique, affichage d'une partie des résultats " #~ "seulement..." #~ msgid "No match found, please enter different search terms." #~ msgstr "" #~ "Aucun résultat trouvé, veuillez utiliser d'autres termes de recherche" #~ msgid "Back to search" #~ msgstr "Retour à la recherche" #~ msgid "%s of" #~ msgstr "%s sur" #~ msgid "Name variants" #~ msgstr "Variantes du nom" #~ msgid "No Name Variants" #~ msgstr "Aucune Variante du Nom" #~ msgid "Papers" #~ msgstr "Articles" -#~ msgid "No Papers" -#~ msgstr "Aucun Article" - #~ msgid "unknown affiliation" #~ msgstr "affiliation inconnue" #~ msgid "No Affiliations" #~ msgstr "Aucune Affiliation" #~ msgid "Affiliations" #~ msgstr "Affiliations" #~ msgid "No Keywords" #~ msgstr "Aucun Mot Clé" #~ msgid "Frequent keywords" #~ msgstr "Mots clés fréquents" #~ msgid "Frequent co-authors" #~ msgstr "Co-auteurs fréquents" #~ msgid "No Frequent Co-authors" #~ msgstr "Aucun co-auteur fréquent" #~ msgid "This is me. Verify my publication list." #~ msgstr "Je suis cette personne. Vérifier ma liste de publications." #~ msgid "No Citation Information available" #~ msgstr "Aucun information de citation disponible" #~ msgid "Total number of citations excluding self-citations:" #~ msgstr "Nombre de citations total, auto-citations exclues:" #~ msgid "Average citations per paper excluding self-citations:" #~ msgstr "Moyenne des citations par rapport, auto-citations exclues:" #~ msgid "" #~ "We're sorry. The requested author \"%s\" seems not to be listed on the " #~ "specified paper." #~ msgstr "" #~ "Désolé. L'auteur demandé \"%s\" ne semble pas apparaître sur l'article " #~ "spécifié." #~ msgid "" #~ "Please try the following link to start a broader search on the author: " #~ msgstr "" #~ "Suivez le lien suivant pour lancer une recherche plus large sur l'auteur:" #~ msgid "Please enter a group name." #~ msgstr "Veuillez entrer un nom de groupe." #~ msgid "Please enter a valid group name." #~ msgstr "Veuillez entrer un nom de groupe valide." #~ msgid "Please choose a group join policy." #~ msgstr "Veuillez choisir une règle d'adhésion au groupe." #~ msgid "Group name already exists. Please choose another group name." #~ msgstr "Le nom du groupe existe déjà. Veuillez en choisir un autre." #~ msgid "You are already member of the group." #~ msgstr "Vous êtes déjà membre de ce groupe." #~ msgid "Please select only one group." #~ msgstr "Veuillez ne sélectionner qu'un seul groupe." #~ msgid "Please select one group." #~ msgstr "Veuillez sélectionner un groupe." #~ msgid "Sorry, there was an error with the database." #~ msgstr "Désolé, une erreur avec la base de donnée s'est produite." #~ msgid "Sorry, you do not have sufficient rights on this group." #~ msgstr "Désolé, vous n'êtes pas suffisamment de droits pour ce groupe." #~ msgid "The group has already been deleted." #~ msgstr "Le groupe a déjà été supprimé." #~ msgid "Please choose a member if you want to remove him from the group." #~ msgstr "" #~ "Veuillez sélectionner un membre si vous souhaitez l'en retirer du groupe." #~ msgid "" #~ "Please choose a user from the list if you want him to be added to the " #~ "group." #~ msgstr "" #~ "Veuillez sélectionner un utilisateur de la liste pour l'ajouter à ce " #~ "groupe." #~ msgid "The user is already member of the group." #~ msgstr "L'utilisateur est déjà membre du groupe." #~ msgid "" #~ "Please choose a user from the list if you want him to be removed from " #~ "waiting list." #~ msgstr "" #~ "Veuillez sélectionner un utilisateur de la liste si vous souhaitez l'en " #~ "retirer de la liste d'attente." #~ msgid "The user request for joining group has already been rejected." #~ msgstr "La demande d'adhésion au groupe a déjà été rejetée." -#~ msgid "Restricted" -#~ msgstr "Restreint" - #~ msgid "" #~ "The file you want to edit is protected against modifications. Your action " #~ "has not been applied" #~ msgstr "" #~ "Le fichier que vous voulez éditer est protégé contre les modifications. " #~ "Votre action n'a pas été prise en compte." #~ msgid "" #~ "Unable to move field at position %s to position %s on page %s of " #~ "submission '%s%s' - Invalid Field Position Numbers" #~ msgstr "" #~ "Impossible de déplacer le champ de la position %s à la position %s sur la " #~ "page %s de la soumission %s%s - Numéro de position non valide" #~ msgid "" #~ "Unable to swap field at position %s with field at position %s on page %s " #~ "of submission %s - could not move field at position %s to temporary field " #~ "location" #~ msgstr "" #~ "Impossible d'échanger le champ à la position %s avec le champ à la " #~ "position %s sur la page %s de la soumission %s - impossible de déplacer " #~ "le champ %s à une position temporaire" #~ msgid "" #~ "Unable to swap field at position %s with field at position %s on page %s " #~ "of submission %s - could not move field at position %s to position %s. " #~ "Please ask Admin to check that a field was not stranded in a temporary " #~ "position" #~ msgstr "" #~ "Impossible d'échanger le champ à la position %s avec le champ à la " #~ "position %s sur la page %s de la soumission %s - impossible de déplacer " #~ "le champ %s à la position %s. Demandez à un administrateur si le champ " #~ "n'est pas resté dans sa position temporaire" #~ msgid "" #~ "Unable to swap field at position %s with field at position %s on page %s " #~ "of submission %s - could not move field that was located at position %s " #~ "to position %s from temporary position. Field is now stranded in " #~ "temporary position and must be corrected manually by an Admin" #~ msgstr "" #~ "Impossible d'échanger le champ à la position %s avec le champ à la " #~ "position %s sur la page %s de la soumission %s - impossible de déplacer " #~ "le champ qui était à la position %s vers la position %s depuis sa " #~ "position temporaire. Le champ est maintenant bloqué dans sa position " #~ "temporaire et doit être corrigé manuellement par un administrateur" #~ msgid "" #~ "Unable to move field at position %s to position %s on page %s of " #~ "submission %s - could not decrement the position of the fields below " #~ "position %s. Tried to recover - please check that field ordering is not " #~ "broken" #~ msgstr "" #~ "Impossible d'échanger le champ à la position %s avec le champ à la " #~ "position %s sur la page %s de la soumission %s - impossible de décroître " #~ "la position des champs sous la position %s. Tentative de reprise - " #~ "vérifiez avec un administrateur que l'ordre des champs est correct" #~ msgid "" #~ "Unable to move field at position %s to position %s on page %s of " #~ "submission %s%s - could not increment the position of the fields at and " #~ "below position %s. The field that was at position %s is now stranded in a " #~ "temporary position." #~ msgstr "" #~ "Impossible de déplacer le champ à la position %s à la position %s sur la " #~ "page %s de la soumission %s%s - impossible d'augmenter la position des " #~ "champs à et sous la position %s. Le champ qui était à la position %s est " #~ "maintenant bloqué dans sa position temporaire." #~ msgid "" #~ "Moved field from position %s to position %s on page %s of submission '%s" #~ "%s'." #~ msgstr "" #~ "Champ déplacé de la position %s à la position %s sur la page %s de la " #~ "soumission '%s%s'." #~ msgid "" #~ "Unable to delete field at position %s from page %s of submission '%s'" #~ msgstr "" #~ "Impossible de supprimer le champ à la position %s sur la page %s de la " #~ "soumission '%s'" #~ msgid "" #~ "Unable to delete field at position %s from page %s of submission '%s%s'" #~ msgstr "" #~ "Impossible de supprimer le champ à la position %s sur la page %s de la " #~ "soumission '%s%s'" #~ msgid "You have %i tickets." #~ msgstr "Vous avez %i tickets." #~ msgid "Announcements" #~ msgstr "Annonces" #~ msgid "Training" #~ msgstr "Formation" -#~ msgid "Events" -#~ msgstr "Événements" - #~ msgid "Staff Association" #~ msgstr "Association du personnel" #~ msgid "when subfield $$" #~ msgstr "quand le sous-champ $$" #~ msgid "is equal to" #~ msgstr "est égal à" #~ msgid "contains" #~ msgstr "contient" #~ msgid "when other subfield" #~ msgstr "quand l'autre sous-champ" #~ msgid "when subfield" #~ msgstr "quand le sous-champ" #~ msgid "Manually" #~ msgstr "Manuellement" #~ msgid "ERROR: %s does not exist" #~ msgstr "ERREUR: %s n'existe pas" #~ msgid "ERROR: %s is not a directory" #~ msgstr "ERREUR: %s n'est pas un dossier" #~ msgid "ERROR: %s is not writable" #~ msgstr "ERREUR: %s est protégé en écriture" #~ msgid "File %s already exists." #~ msgstr "Le fichier %s existe déjà." #~ msgid "File %s: written OK." #~ msgstr "Fichier %s: enregistrement terminé." #~ msgid "File %s: write failed." #~ msgstr "Fichier %s: enregistrement échoué." #~ msgid "File %s deleted." #~ msgstr "Le fichier %s est effacé." #~ msgid "File %s: delete failed." #~ msgstr "Fichier %s: la suppression a échoué." #~ msgid "" #~ "Error when formatting the Holding Pen entry. Probably its content is " #~ "broken" #~ msgstr "" #~ "Erreur lors du formatage de l'entrée de la liste d'attente. L'entrée est " #~ "probablement corrompue" #~ msgid "" #~ "Limit display to knowledge bases matching %(keyword_field)s in their " #~ "rules and descriptions" #~ msgstr "" #~ "Limiter l'affichage aux bases de connaissance avec %(keyword_field)s dans " #~ "leurs règles et description" #~ msgid "No Knowledge Base" #~ msgstr "Aucune Bases de Connaissances" #~ msgid "The current taxonomy can be accessed with this URL: %s" #~ msgstr "La taxonomie courante peut être accédée à cette URL: %s" #~ msgid "Please upload the RDF file for taxonomy %s" #~ msgstr "Veuillez charger le fichier RDF pour la taxonomie %s" #~ msgid "" #~ "Example 1: Your records contain field 270__a for " #~ "the name and address of the author's institute. " #~ "If you set the field to '270__a' and the " #~ "expression to '270__a:*Paris*', a list of " #~ "institutes in Paris will be created." #~ msgstr "" #~ "Exemple: votre notice contient un champ 270__a pour le nom et l'adresse\n" #~ "de l'institution d'un auteur. Si vous assignez au champ '270__a' " #~ "l'expression \n" #~ "\"270__a:*Paris*\", une liste des institutions à Paris sera créée." #~ msgid "" #~ "Example 2: Return the institute's name (100__a) when " #~ "the user gives its postal code " #~ "(270__a): Set field to 100__a, expression to " #~ "270__a:*%*." #~ msgstr "" #~ "Exemple 2: Pour retourner le nom de l'institution (100__a) quand " #~ "l'utilisateur fournit le code postal (270__a): indiquez le champ 100__a, " #~ "et l'expression 270__a:*%s*." -#~ msgid "Any collection" -#~ msgstr "Toutes les collections" - #~ msgid "Knowledge base is empty" #~ msgstr "La base de connaissances est vide" #~ msgid "Update Base Attributes" #~ msgstr "Mettre à jour les attributs de la base" #~ msgid "This knowledge base is not used in any format elements." #~ msgstr "" #~ "Cette base de connaissance n'est utilisée dans aucun élément de formatage." #~ msgid "Your rule: %s" #~ msgstr "Votre règle: %s" #~ msgid "" #~ "The left side of the rule (%s) already appears in these knowledge bases:" #~ msgstr "" #~ "La partie gauche de la règle (%s) apparaît déjà dans ces bases de " #~ "connaissances:" #~ msgid "" #~ "The right side of the rule (%s) already appears in these knowledge bases:" #~ msgstr "" #~ "La partie droite de la règle (%s) apparaît déjà dans ces bases de " #~ "connaissances:" #~ msgid "Cannot upload file" #~ msgstr "Impossible de charger le fichier" #~ msgid "You have not selected a file to upload" #~ msgstr "Vous n'avez pas sélectionné de fichier à envoyer" #~ msgid "File %s uploaded." #~ msgstr "Fichier %s chargé." #~ msgid "Fatal: Author ID capabilities are disabled on this system." #~ msgstr "" #~ "Erreur fatale: les fonctionnalités liées aux identifiants des auteurs " #~ "sont désactivées sur ce système." #~ msgid "Fatal: You are not allowed to access this functionality." #~ msgstr "Vous n'êtes pas autorisé à accéder à cette fonctionnalité." #~ msgid "Papers removed from this profile" #~ msgstr "Articles supprimés de ce profil" #~ msgid "Papers in need of review" #~ msgstr "Articles en attente de vérification" #~ msgid "Open Tickets" #~ msgstr "Tickets Ouverts" #~ msgid "Data" #~ msgstr "Données" #~ msgid "Papers of this Person" #~ msgstr "Articles de cette Personne" #~ msgid "Papers _not_ of this Person" #~ msgstr "Articles _pas_ de cette Personne" #~ msgid "Tickets for this Person" #~ msgstr "Tickets pour cette Personne" #~ msgid "Additional Data for this Person" #~ msgstr "Données Additionnelles pour cette Personne" #~ msgid "" #~ "Sorry, there are currently no documents to be found in this category." #~ msgstr "" #~ "Désolé, il n'y a actuellement pas de documents dans cette catégorie." #~ msgid "Yes, those papers are by this person." #~ msgstr "Oui, ces articles sont de cette personne." #~ msgid "No, those papers are not by this person" #~ msgstr "Non, ces articles ne sont pas de cette personne" #~ msgid "Assign to other person" #~ msgstr "Attribuer à une autre personne" #~ msgid "Forget decision" #~ msgstr "Annuler la décision" #~ msgid "Confirm!" #~ msgstr "Confirmer!" #~ msgid "Yes, this paper is by this person." #~ msgstr "Oui, cet article est de cette personne." #~ msgid "Rejected!" #~ msgstr "Rejeté!" #~ msgid "No, this paper is not by this person" #~ msgstr "Non, cet article n'est pas de cette personne" #~ msgid "Assign to another person" #~ msgstr "Attribuer à une autre personne" #~ msgid "To other person!" #~ msgstr "À une autre personne!" #~ msgid "Confirmed." #~ msgstr "Confirmé." #~ msgid "Marked as this person's paper" #~ msgstr "Marqué comme article de cette personne" #~ msgid "Forget decision!" #~ msgstr "Annuler la décision!" #~ msgid "Forget decision." #~ msgstr "Annuler la décision." #~ msgid "Repeal!" #~ msgstr "Rejeter!" #~ msgid "But it's not this person's paper." #~ msgstr "Mais ce n'est pas un article de cette personne." #~ msgid "But it is this person's paper." #~ msgstr "Mais c'est un article de cette personne." #~ msgid "Repealed" #~ msgstr "Rejeté" #~ msgid "Marked as not this person's paper" #~ msgstr "Marqué comme n'étant pas un article de cette personne" -#~ msgid "Your papers" -#~ msgstr "Vos articles" - #~ msgid "Not your papers" #~ msgstr "Pas vos articles" #~ msgid "These are mine!" #~ msgstr "Ce sont les miens!" #~ msgid "These are not mine!" #~ msgstr "Ce ne sont pas les miens!" #~ msgid "It's not mine, but I know whose it is!" #~ msgstr "Ce n'est pas le mien, mais je sais de qui il est!" #~ msgid "Mine!" #~ msgstr "Le mien!" #~ msgid "This is my paper!" #~ msgstr "C'est mon article!" #~ msgid "Not mine!" #~ msgstr "Pas les miens!" #~ msgid "This is not my paper!" #~ msgstr "Ce n'est pas mon article!" #~ msgid "Not Mine." #~ msgstr "Pas les miens." #~ msgid "Marked as my paper!" #~ msgstr "Marqué comme mon article!" #~ msgid "Forget assignment decision" #~ msgstr "Annuler la décision d'attribution" #~ msgid "Not Mine!" #~ msgstr "Pas les miens!" #~ msgid "But this is mine!" #~ msgstr "Mais c'est le mien!" #~ msgid "But this is my paper!" #~ msgstr "Mais c'est mon article!" #~ msgid "Marked as not your paper." #~ msgstr "Marqué comme n'étant pas votre article." #~ msgid "Tickes you created about this person" #~ msgstr "Ticket créés sur cette personne" #~ msgid "Tickets" #~ msgstr "Tickets" #~ msgid "Request Tickets" #~ msgstr "Tickets/Requêtes" #~ msgid "Submit Attribution Information" #~ msgstr "Soumettre les informations d'attribution" -#~ msgid "Please review your actions" -#~ msgstr "Passez en revue vos actions" - #~ msgid "Claim this paper" #~ msgstr "Revendiquer cet article" #~ msgid "" #~ "

    We're sorry. An error occurred while handling your request. Please " #~ "find more information below:

    " #~ msgstr "" #~ "

    Désolé. Une erreur s'est produite lors du traitement de cette requête. " #~ "Plus d'informations ci-dessous:

    " #~ msgid "Person search for assignment in progress!" #~ msgstr "Recherche en cours d'une personne pour attribution!" #~ msgid "You are searching for a person to assign the following papers:" #~ msgstr "" #~ "Vous recherchez une personne à qui attribuer les documents suivants:" #~ msgid "You are going to claim papers for: %s" #~ msgstr "Vous allez revendiquer les articles de: %s" #~ msgid "This page in not accessible directly." #~ msgstr "Cette page n'est pas accessible directement." #~ msgid "Welcome!" #~ msgstr "Bienvenue!" #~ msgid "Click here to review the transactions." #~ msgstr "Cliquez ici pour vérifier les transactions." #~ msgid "Quit searching." #~ msgstr "Arrêter la recherche" #~ msgid "You are about to attribute the following paper" #~ msgstr "Vous êtes sur le point d'attribuer l'article suivant" #~ msgid "Info" #~ msgstr "Info" #~ msgid " Search for a person to attribute the paper to" #~ msgstr " Rechercher une personne à qui attribuer cet article" #~ msgid "Select All" #~ msgstr "Tout Sélectionner" #~ msgid "Select None" #~ msgstr "Tout Désélectionner" #~ msgid "Invert Selection" #~ msgstr "Inverser Sélection" #~ msgid "Hide successful claims" #~ msgstr "Masquer les revendications réussies" #~ msgid "No status information found." #~ msgstr "Aucun statut." #~ msgid "Operator review of user actions pending" #~ msgstr "Revue des actions d'utilisateurs par les opérateurs en cours" #~ msgid "Sorry, there are currently no records to be found in this category." #~ msgstr "Désolé, il n'y a actuellement pas de notice dans cette catégorie." #~ msgid "Review Transaction" #~ msgstr "Examiner la transaction" #~ msgid " On all pages: " #~ msgstr " Sur toutes les pages: " #~ msgid "Names variants:" #~ msgstr "Variantes de noms:" #~ msgid "These records have been marked as not being from this person." #~ msgstr "Ces notices ont été marquées comme n'étant pas de cette personne." #~ msgid "They will be regarded in the next run of the author " #~ msgstr "Elles seront considérées lors de la prochaine exécution " #~ msgid "disambiguation algorithm and might disappear from this listing." #~ msgstr "" #~ "la l'algorithme de désambiguation, et pourrait disparaître de cette liste." #~ msgid "Not provided" #~ msgstr "Non indiqué" -#~ msgid "Not available" -#~ msgstr "Non disponible" - #~ msgid "No comments" #~ msgstr "Aucun commentaire" #~ msgid "Not Available" #~ msgstr "Non Disponible" #~ msgid " Delete this ticket" #~ msgstr " Supprimer ce ticket" #~ msgid " Commit this entire ticket" #~ msgstr " Commettre intégralement ce ticket" #~ msgid "... This tab is currently under construction ... " #~ msgstr "... Cet onglet est actuellement en construction ... " #~ msgid "" #~ "We could not reliably determine the name of the author on the records " #~ "below to automatically perform an assignment." #~ msgstr "" #~ "Nous n'avons pas pu déterminer avec fiabilité le nom de l'auteur des " #~ "notices ci-dessous pour effectuer une attribution automatique." #~ msgid "Please select an author for the records in question." #~ msgstr "Veuillez sélectionner un auteur pour les notices en question." #~ msgid "Boxes not selected will be ignored in the process." #~ msgstr "Les options non sélectionnées seront ignorées dans le processus." #~ msgid "Select name for" #~ msgstr "Choisir un nom pour" #~ msgid "Error retrieving record title" #~ msgstr "Erreur lors de la récupération du titre de la notice" #~ msgid "Paper title: " #~ msgstr "Titre de l'article: " #~ msgid "The following names have been automatically chosen:" #~ msgstr "Les noms suivants ont été choisis automatiquement:" #~ msgid " -- With name: " #~ msgstr " -- Avec nom: " #~ msgid "Ignore" #~ msgstr "Ignorer" #~ msgid "Navigation:" #~ msgstr "Navigation:" #~ msgid "Run paper attribution for another author" #~ msgstr "Attribuer les articles d'un autre auteur" #~ msgid "Person Interface FAQ" #~ msgstr "FAQ Interface des Personnes" #~ msgid "Person Search" #~ msgstr "Recherche de Personnes" #~ msgid "Open tickets" #~ msgstr "Tickets ouverts" #~ msgid "Symbols legend: " #~ msgstr "Légende des symboles: " #~ msgid "Everything is shiny, captain!" #~ msgstr "Tout roule, capitaine!" #~ msgid "The result of this request will be visible immediately" #~ msgstr "La résultat de cette requête sera immédiatement visible" #~ msgid "Confirmation needed to continue" #~ msgstr "Confirmation demandée pour continuer" #~ msgid "" #~ "The result of this request will be visible immediately but we need your " #~ "confirmation to do so for this paper have been manually claimed before" #~ msgstr "" #~ "Le résultat de cette requête sera visible immédiatement, mais nous avons " #~ "besoin de votre confirmation puisque cet articles a été revendiqués " #~ "auparavant" #~ msgid "This will create a change request for the operators" #~ msgstr "Cela générera une requête de modification pour les opérateurs" #~ msgid "" #~ "The result of this request will be visible upon confirmation through an " #~ "operator" #~ msgstr "" #~ "Le résultat de cette requête sera visible après confirmation par un " #~ "opérateur" #~ msgid "Selected name on paper" #~ msgstr "Nom sélectionné sur l'article" #~ msgid "Verification needed to continue" #~ msgstr "Vérification demandée pour continuer" #~ msgid "This will create a request for the operators" #~ msgstr "Cela générera une requête pour les opérateurs" #~ msgid "Please Check your entries" #~ msgstr "Veuillez vérifier les valeurs fournies" #~ msgid "Sorry." #~ msgstr "Désolé." #~ msgid "Please provide at least one transaction." #~ msgstr "Veuillez indiquer au moins une transaction." #~ msgid "Error:" #~ msgstr "Erreur:" #~ msgid "Please provide your information" #~ msgstr "Veuillez indiquer vos informations personnelles" #~ msgid "Please provide your first name" #~ msgstr "Veuillez indiquer votre prénom" #~ msgid "Your first name:" #~ msgstr "Votre prénom:" #~ msgid "Please provide your last name" #~ msgstr "Veuillez indiquer votre nom de famille" #~ msgid "Your last name:" #~ msgstr "Votre nom de famille:" #~ msgid "Please provide your eMail address" #~ msgstr "Veuillez indiquer votre adresse email" #~ msgid "" #~ "This eMail address is reserved by a user. Please log in or provide an " #~ "alternative eMail address" #~ msgstr "" #~ "Cette adresse email est déjà allouée à quelqu'un. Connectez-vous ou " #~ "indiquer une autre adresse email" #~ msgid "Your eMail:" #~ msgstr "Votre email:" #~ msgid "You may leave a comment (optional)" #~ msgstr "Vous pouvez laisser un commentaire (optionnel)" #~ msgid "Continue claiming*" #~ msgstr "Continuer à revendiquer des articles*" #~ msgid "Confirm these changes**" #~ msgstr "Confirmer ces changements**" #~ msgid "!Delete the entire request!" #~ msgstr "!Effacer complètement la demande!" #~ msgid "Mark as your documents" #~ msgstr "Marquer comme étant vos documents" #~ msgid "Mark as _not_ your documents" #~ msgstr "Marquer comme n'étant _pas_ vos documents" #~ msgid "Nothing staged as not yours" #~ msgstr "Aucun marqué comme n'étant pas le votre" #~ msgid "Mark as their documents" #~ msgstr "Marquez comme étant leurs documents" #~ msgid "Nothing staged in this category" #~ msgstr "Aucun marqué dans cette categorie" #~ msgid "Mark as _not_ their documents" #~ msgstr "Marquer comme n'étant _pas_ leurs documents" #~ msgid "" #~ " * You can come back to this page later. Nothing will be lost.
    " #~ msgstr "" #~ " * Vous pouvez revenir sur cette page plus tard. Rien ne sera perdu
    " #~ msgid "" #~ " ** Performs all requested changes. Changes subject to permission " #~ "restrictions will be submitted to an operator for manual review." #~ msgstr "" #~ " ** Applique tous les changements demandés. Les changements sujets à des " #~ "autorisations seront transmis à un opérateur pour vérification." #~ msgid "We do not have a publication list for '%s'." #~ msgstr "Nous n'avons pas de liste de publications pour '%s'." #~ msgid "Create a new Person for your search" #~ msgstr "Créer une nouvelle Personne pour votre recherche" -#~ msgid "Recent Papers" -#~ msgstr "Articles Récents" - #~ msgid "YES!" #~ msgstr "OUI!" #~ msgid " Attribute Papers To " #~ msgstr " Attribuer les articles à " -#~ msgid "Publication List " -#~ msgstr "Liste de Publications " - #~ msgid "Showing the" #~ msgstr "Affichage des" #~ msgid "most recent documents:" #~ msgstr "plus récents documents:" #~ msgid "Sorry, there are no documents known for this person" #~ msgstr "Désolé, il n'y a pas de documents connus pour cette personne" #~ msgid "" #~ "Information not shown to increase performances. Please refine your search." #~ msgstr "" #~ "Information non affichées pour des raisons de performance. Veuillez " #~ "affiner votre recherche." -#~ msgid "Correct my publication lists!" -#~ msgstr "Corriger ma liste de publications!" - #~ msgid "Date:" #~ msgstr "Date:" #~ msgid "Time:" #~ msgstr "Heure:" #~ msgid "Example:" #~ msgstr "Exemple:" #~ msgid "are mandatory" #~ msgstr "sont obligatoires" #~ msgid "are mandatory." #~ msgstr "sont obligatoires." #~ msgid "Check the" #~ msgstr "Consultez le" #~ msgid "Configure Bibknowledge" #~ msgstr "Configurer BibKnowledge" #, fuzzy #~ msgid "creating a new basket" #~ msgstr "Créer un nouveau panier" #, fuzzy #~ msgid "You may want to start by" #~ msgstr "Vous pouvez recommencer à chercher depuis %s" #~ msgid "by" #~ msgstr "par" #~ msgid "on" #~ msgstr "sur" #, fuzzy #~ msgid "basket" #~ msgstr "paniers" #, fuzzy #~ msgid "previous basket" #~ msgstr "Paniers de groupes" #, fuzzy #~ msgid "search" #~ msgstr "Recherche" #, fuzzy #~ msgid "create a new one" #~ msgstr "ou en créer un nouveau" #, fuzzy #~ msgid "Adding" #~ msgstr "Ajouter" #, fuzzy #~ msgid "Please choose a basket" #~ msgstr "Veuillez choisir une catégorie" #, fuzzy #~ msgid "Editing topic" #~ msgstr "Édition du panier" #~ msgid "" #~ "Nested or mismatched parentheses detected. Ignoring all parentheses in " #~ "the query..." #~ msgstr "Parenthèses non valides détectées." #, fuzzy #~ msgid "niceName" #~ msgstr "Nom" #, fuzzy #~ msgid "Apply Changes" #~ msgstr "Enregistrer les modifications" #, fuzzy #~ msgid "Edit this item" #~ msgstr "Modifier l'institut" #, fuzzy #~ msgid "return_date" #~ msgstr "Date de création" #~ msgid "Record %s - Add a field" #~ msgstr "Notice %s - Ajout d'un champ" #~ msgid "Edit record %(x_recid)s, field %(x_field)s" #~ msgstr "Édition de la notice %(x_recid)s, champ %(x_field)s" #~ msgid "Edit record %(x_recid)s, field %(x_field)s - Add a subfield" #~ msgstr "" #~ "Édition de la notice %(x_recid)s, champ %(x_field)s - Ajout d'un sous-" #~ "champ" #~ msgid "Submit and save record %s" #~ msgstr "Soumettre et enregistrer la notice %s" #~ msgid "updated on" #~ msgstr "mis à jour le" #~ msgid "" #~ "This basket belongs to %(x_name)s. You can freely %(x_url_open)ssubscribe" #~ "%(x_url_close)s to it" #~ msgstr "" #~ "Ce panier appartient à %(x_name)s. Vous pouvez librement vous y " #~ "%(x_url_open)sabonner%(x_url_close)s" #~ msgid "records" #~ msgstr "notices" #~ msgid "Number of views" #~ msgstr "Nombre de consultations" #~ msgid "Non-shared basket" #~ msgstr "Panier non partagé" #~ msgid "Group-shared basket" #~ msgstr "Panier partagé à un groupe" #~ msgid "last" #~ msgstr "dernier" #~ msgid "View comments" #~ msgstr "Voir les commentaires" #~ msgid "There is a total of %i comments" #~ msgstr "Il y a un total de %i commentaires" #~ msgid "Select basket" #~ msgstr "Choisir un panier" #~ msgid "Add to a personal basket" #~ msgstr "Ajouter aux paniers personnels" #~ msgid "%i baskets" #~ msgstr "%i paniers" #~ msgid "Add to a group-shared basket" #~ msgstr "Ajouter aux paniers de groupe" #~ msgid "Adding %i records to these baskets" #~ msgstr "Ajout de %i notices aux paniers suivants" #~ msgid "No records were added to the selected baskets." #~ msgstr "Aucune notice n'a été ajoutée aux paniers sélectionnés." #~ msgid "Details and comments" #~ msgstr "Détails et commentaires" #~ msgid "Add records to baskets" #~ msgstr "Ajouter les notices aux paniers" #, fuzzy #~ msgid "Subscribe to this discussion" #~ msgstr "S'abonner à ce panier" #, fuzzy #~ msgid "Delete comment(s) or supress abuse report(s)" #~ msgstr "Supprimer des signalement d'abus" #, fuzzy #~ msgid "Delete Comments" #~ msgstr "Effacer un commentaire" #~ msgid "ADD TO BASKET" #~ msgstr "AJOUTER AU PANIER" #, fuzzy #~ msgid "Frequently publishes in:" #~ msgstr "Publie dans" #~ msgid "The collection to which this file belong is restricted: " #~ msgstr "La collection à laquelle ce fichier appartient est restreinte:" #~ msgid "Do you really want to delete this record?" #~ msgstr "Voulez-vous vraiment supprimer cette notice?" #~ msgid "" #~ "Do you really want to revert to revision %(revdate)s of record #%(recid)s?" #~ msgstr "" #~ "Voulez-vous vraiment charger la révision %(revdate)s de la notice #" #~ "%(recid)s?" #~ msgid "" #~ "The current version will be replaced with a copy of revision %(revdate)s" #~ msgstr "" #~ "La version courante sera remplacée par une copie de la révision " #~ "%(revdate)s" #~ msgid "You will also lose any unsubmitted changes for this record!" #~ msgstr "" #~ "Vous perdrez également tout changement non soumis pour cette notice!" #, fuzzy #~ msgid "This record does not exist. Please try another record ID." #~ msgstr "Veuillez essayer avec un autre identifiant de notice." #, fuzzy #~ msgid "Cannot edit deleted record.\"" #~ msgstr "Impossible d'éditer une notice supprimée." #, fuzzy #~ msgid "" #~ "This record is currently being edited by another user. Please try again " #~ "later." #~ msgstr "Un autre utilisateur modifie actuellement cette notice." #~ msgid "" #~ "Your modifications have now been submitted. They will be processed as " #~ "soon as the task queue is empty." #~ msgstr "" #~ "Vos modifications ont été soumises. Elles seront traitées dès que la " #~ "liste de tâches sera vide." #~ msgid "The record will be deleted as soon as the task queue is empty." #~ msgstr "La notice sera supprimée dès que la liste de tâches sera vide." -#~ msgid "Please enter the ID of the record you want to edit" -#~ msgstr "" -#~ "Veuillez indiquer l'identifiant de la notice que vous souhaitez éditer" - #~ msgid "Move up" #~ msgstr "Remonter" #~ msgid "Move down" #~ msgstr "Descendre" #~ msgid "Add Subfield" #~ msgstr "Ajouter un sous-champ" #~ msgid "Edit institute" #~ msgstr "Modifier l'institut" #~ msgid "Add Field" #~ msgstr "Ajouter un champ" #~ msgid "Verbose" #~ msgstr "Textuel" #~ msgid "Display" #~ msgstr "Affichage" #~ msgid "Done" #~ msgstr "Valider" #~ msgid "" #~ "Tags and values should be filled before pressing Done or Add another " #~ "subfield" #~ msgstr "" #~ "Les 'tags' et valeurs doivent être indiqués avant de valider ou d'ajouter " #~ "un autre sous-champ" #~ msgid "Your changes are TEMPORARY." #~ msgstr "Vos modifications sont TEMPORAIRES." #~ msgid "To save this record, please click on submit." #~ msgstr "Pour enregistrer cette notice, veuillez cliquer sur soumettre." #, fuzzy #~ msgid "Revision %(revdate)s" #~ msgstr "Édition de la notice #%(recid)s, révision %(revdate)s" #, fuzzy #~ msgid "current version" #~ msgstr "Membres actuels" #, fuzzy #~ msgid "Edit current version" #~ msgstr "Editer les paramètres" #, fuzzy #~ msgid "View revision" #~ msgstr "division" #, fuzzy #~ msgid "Back to BibEdit" #~ msgstr "Retourner aux paniers" #, fuzzy #~ msgid "select_from1" #~ msgstr "choisir un utilisateur" #, fuzzy #~ msgid "select_to1" #~ msgstr "Choisir un thème" #, fuzzy #~ msgid "No more requests are waiting." #~ msgstr "Quelques documents sont en attente." #, fuzzy #~ msgid "next page >>>" #~ msgstr "Page suivante" #, fuzzy #~ msgid "<<< previous page" #~ msgstr "Page précédente" #, fuzzy #~ msgid "last page >>|" #~ msgstr "dernière mise à jour" #, fuzzy #~ msgid "from" #~ msgstr "De:" #~ msgid "Please try again later." #~ msgstr "Veuillez réessayer ultérieurement." #~ msgid "There are record revisions not yet synchronized with the database." #~ msgstr "" #~ "Certaines notices révisées n'ont pas encore été synchronisées avec la " #~ "base de donnée." #~ msgid "Please try again in a few minutes." #~ msgstr "Veuillez réessayer ultérieurement." #~ msgid "" #~ "A new revision of this record is not yet synchronized with the database." #~ msgstr "" #~ "Une nouvelle révision de cette notice n'a pas encore été synchronisée " #~ "avec la base de donnée." #~ msgid "" #~ "The new revision is being synchronized with the database and will be " #~ "ready shortly." #~ msgstr "" #~ "La nouvelle révision est en cours de synchronisation et sera bientôt " #~ "prête." #~ msgid "View all reported reviews" #~ msgstr "Voir toutes les évaluations signalées" #~ msgid "Delete a specific comment/review (by ID)" #~ msgstr "Supprimer un/une commentaire/évaluation (par identifiant)" #~ msgid "" #~ "Before you add your comment, you need to %(x_url_open)slogin" #~ "%(x_url_close)s first." #~ msgstr "" #~ "Vous devez vous %(x_url_open)sidentifier%(x_url_close)s avant de " #~ "d'ajouter un commentaire" #~ msgid "session" #~ msgstr "session" -#~ msgid "alerts" -#~ msgstr "alertes" - -#~ msgid "account" -#~ msgstr "compte" - #~ msgid "messages" #~ msgstr "messages" #~ msgid "groups" #~ msgstr "groupes" #~ msgid "submissions" #~ msgstr "soumissions" #~ msgid "approvals" #~ msgstr "approbations" #~ msgid "Unknown form field found on one of the submission pages." #~ msgstr "" #~ "Champ de formulaire inconnu trouvé sur une des pages de la soumission." #~ msgid "List of specific approvals" #~ msgstr "Liste des approbations spécifiques" #~ msgid "List of publication categories" #~ msgstr "Liste des catégories de publication" #~ msgid "List of direct approval categories" #~ msgstr "Liste des catégories d'approbation directe" #~ msgid "Specific Approval and Refereeing Workflow" #~ msgstr "Processus Spécifique d'Approbation et d'Examination" #~ msgid "Internal configuration error" #~ msgstr "Erreur de configuration interne" #~ msgid "There is no format configured for this journals index page" #~ msgstr "Il n'y a pas de format configuré pour l'index de ces journaux" #~ msgid "There is no format configured for this journals search page" #~ msgstr "" #~ "Il n'y a pas de format configuré pour la page de recherche de ces journaux" #~ msgid "There is no format configured for this journals popup page" #~ msgstr "Il n'y a pas de format configuré pour le \"popup\" de ces journaux" #~ msgid "link" #~ msgstr "lien" #~ msgid "CERN %(link_or_links)s" #~ msgstr "%(link_or_links)s CERN" #~ msgid "External %(link_or_links)s" #~ msgstr "%(link_or_links)s externes" #~ msgid "The contents of this collection is restricted." #~ msgstr "Le contenu de cette collection est restreint." #~ msgid "Sort:" #~ msgstr "Trier par:" #~ msgid "Author collaborations" #~ msgstr "Collaborations auters" #~ msgid "" #~ "In order to publish webjournal issues you must be " #~ "logged in and be authorized for this kind of " #~ "task. If you have a login, use the " #~ "link below to login." #~ msgstr "" #~ "Afin de publier des éditions WebJournal, vous devez être identifié et " #~ "autorisé pour cette tâche. Si vous avez un identifiant, utilisez le lien " #~ "ce-dessous." #~ msgid "We need you to login" #~ msgstr "Vous devez vous identifier" #~ msgid "Alert sent successfully!" #~ msgstr "L'alerte a été envoyée avec succès." #~ msgid "Webjournal Administration Interface" #~ msgstr "Administration de WebJournal" #~ msgid "No popup type" #~ msgstr "Pas de type de \"popup\"" #~ msgid "We could not know what kind of popup you requested" #~ msgstr "Impossible de déterminer le type de \"popup\" demandé" #~ msgid "Available journals" #~ msgstr "Journaux disponibles" #~ msgid "Please note that this URL will remain valid for about %s days only." #~ msgstr "Notez que ce lien restera valide seulement %s jours." #, fuzzy #~ msgid " Username/Email: %s\n" #~ msgstr "Nom d'utilisateur" #, fuzzy #~ msgid " Password: %s\n" #~ msgstr "Mot de passe" #~ msgid "Migrate BibFormat Settings" #~ msgstr "Migrer la configuration de BibFormat" #~ msgid "Migrate Knowledge Bases" #~ msgstr "Migrer les bases de connaissances" #~ msgid "Migrate Behaviours" #~ msgstr "Migrer les comportements" #~ msgid "Migrate Formats" #~ msgstr "Migrer les formats" #, fuzzy #~ msgid "Your account created on" #~ msgstr "Compte créé" #, fuzzy #~ msgid "You have created a new account on" #~ msgstr "ou en créer un nouveau" #~ msgid "" #~ "You can now go back to %(x_url_open)sBibEdit Admin Interface" #~ "%(x_url_close)s." #~ msgstr "" #~ "Vous pouvez retoruner à %(x_url_open)sl'interface d'administration de " #~ "BibEdit%(x_url_close)s." #, fuzzy #~ msgid "Article Error" #~ msgstr "Article" #, fuzzy #~ msgid "%s Personalize, Main page" #~ msgstr "Personnaliser" #, fuzzy #~ msgid "%s , personalize" #~ msgstr "Personnaliser" #, fuzzy #~ msgid "Successfully featured record: %s" #~ msgstr "signalement d'abus supprimé" #~ msgid "Agenda" #~ msgstr "Agenda" #~ msgid "Webcast" #~ msgstr "Webcast" #~ msgid "Search Help" #~ msgstr "Aide de recherche" #~ msgid "Format:" #~ msgstr "Format:" #~ msgid "Send lost password" #~ msgstr "Envoyer le mot de passe oublié" #~ msgid "Here are your user credentials for" #~ msgstr "Voici les informations de votre compte" #~ msgid "username" #~ msgstr "nom d'utilisateur" #~ msgid "password" #~ msgstr "mot de passe" #~ msgid "You seem to be %(x_role)s." #~ msgstr "Vous semblez être %(x_role)s." #~ msgid "Credentials for" #~ msgstr "Informations de compte pour" #~ msgid "" #~ "An email has been sent to the given address with the account information." #~ msgstr "" #~ "Un courriel a été transmis à l'adresse fournie dans les informations de " #~ "comnpte." #~ msgid "Unable to find file." #~ msgstr "Impossible de trouver le fichier." #~ msgid "Cannot find submission directory." #~ msgstr "Impossible de trouver le répertoire des soumissions." #~ msgid "Unknown type of document" #~ msgstr "Type de document inconnu" #~ msgid "Login via:" #~ msgstr "Identification par:" #~ msgid "Try your search on..." #~ msgstr "Essayer votre requête sur..." #, fuzzy #~ msgid "Timeout" #~ msgstr "Delai d'attente expiré" #, fuzzy #~ msgid "%(num)s results found" #~ msgstr "%s notices trouvées" #, fuzzy #~ msgid "No result found" #~ msgstr "Pas de requête trouvée" #, fuzzy #~ msgid "user #%i" #~ msgstr "utilisateur" #, fuzzy #~ msgid "GROUP_DELETED" #~ msgstr "SUPPRIMER" #, fuzzy #~ msgid "MEMBER_DELETED" #~ msgstr "SUPPRIMER" #~ msgid "" #~ "If you wish you can %(x_url_open)login or register here%(x_url_close)s." #~ msgstr "" #~ "Si vous le souhaitez, vous pouvez vous %(x_url_open)sidentifier ou vous " #~ "enregistrer ici%(x_url_close)s." #~ msgid "The %sguest%s users need to %sregister%s first" #~ msgstr "Les %sinvités%s doivent d'abord %ss'enregistrer%s" #~ msgid "" #~ "You are logged in as a guest user, so your %s will disappear at the end " #~ "of the current session. If you wish you can %slogin or register here%s." #~ msgstr "" #~ "Vous êtes actuellement enregistré en tant qu'invité. Vos %s disparaîtront " #~ "à la fin de la session. Si vous le souhaitez, vous pouvez vous " #~ "%sidentifier ou vous enregister%s." #~ msgid "Your comment has been successfully posted" #~ msgstr "Votre commentaire a été ajouté" #~ msgid "There are %i baskets" #~ msgstr "Il y a %i paniers" #~ msgid "comments" #~ msgstr "commentaires" #, fuzzy #~ msgid "Unsubscribe from this discussion" #~ msgstr "Se désabonner de ce panier" #~ msgid "Add another subfield" #~ msgstr "Ajouter un autre sous-champ" #~ msgid "Please login to perform this action." #~ msgstr "Identifiez-vous pour effectuer cette action." + +#~ msgid "Export as" +#~ msgstr "Exporter vers" + +#~ msgid "" +#~ "Warning: full-text search is only available for a subset of papers mostly " +#~ "from 2006-2010." +#~ msgstr "" +#~ "Warning: full-text search is only available for a subset of papers mostly " +#~ "from 2006-2010." + +#~ msgid "" +#~ "Warning: figure caption search is only available for a subset of papers " +#~ "mostly from 2008-2010." +#~ msgstr "" +#~ "Warning: figure caption search is only available for a subset of papers " +#~ "mostly from 2008-2010." + +#, fuzzy +#~ msgid "period_of_interest_from" +#~ msgstr "Période souhaitée - De" + +#, fuzzy +#~ msgid "period_of_interest_to" +#~ msgstr "Période souhaitée - À" + +#, fuzzy +#~ msgid "now" +#~ msgstr "non" + +#~ msgid "" +#~ "You have %(x_nb_perso)s personal baskets and are subscribed to " +#~ "%(x_nb_group)s group baskets and %(x_nb_public)s other users public " +#~ "baskets." +#~ msgstr "" +#~ "Vous possédez %(x_nb_perso)s paniers personnels et êtes abonnés à " +#~ "%(x_nb_group)s paniers de groupes et à %(x_nb_public)s paniers publics." + +#~ msgid "SNSF's Directive for open access publications" +#~ msgstr "Directive du Fonds National Suisse pour pour l'Open Access" + +#~ msgid "I'm author of" +#~ msgstr "dont je suis l'auteur" + +#~ msgid "I've deposited / published" +#~ msgstr "que j'ai déposées / publiées" + +#~ msgid "Forthcoming" +#~ msgstr "A paraître" + +#~ msgid "... I've submitted deposited" +#~ msgstr "... que j'ai ajoutées" + +#~ msgid "Edit a record" +#~ msgstr "Éditer une notice" + +#~ msgid "Remove a document" +#~ msgstr "Supprimer une notice" + +#~ msgid "No Papers" +#~ msgstr "Aucun Article" + +#~ msgid "Restricted" +#~ msgstr "Restreint" + +#~ msgid "Events" +#~ msgstr "Événements" + +#~ msgid "Any collection" +#~ msgstr "Toutes les collections" + +#~ msgid "Your papers" +#~ msgstr "Vos articles" + +#~ msgid "Please review your actions" +#~ msgstr "Passez en revue vos actions" + +#~ msgid "Not available" +#~ msgstr "Non disponible" + +#~ msgid "Recent Papers" +#~ msgstr "Articles Récents" + +#~ msgid "Publication List " +#~ msgstr "Liste de Publications " + +#~ msgid "Correct my publication lists!" +#~ msgstr "Corriger ma liste de publications!" + +#~ msgid "Please enter the ID of the record you want to edit" +#~ msgstr "" +#~ "Veuillez indiquer l'identifiant de la notice que vous souhaitez éditer" + +#~ msgid "alerts" +#~ msgstr "alertes" + +#~ msgid "account" +#~ msgstr "compte" diff --git a/po/invenio.pot b/po/invenio.pot index ae67ccadd..d448dc2e8 100644 --- a/po/invenio.pot +++ b/po/invenio.pot @@ -1,10996 +1,10872 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR CERN +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: info@invenio-software.org\n" -"POT-Creation-Date: 2014-08-31 21:44+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-16 16:21+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: modules/websearch/doc/search-guide.webdoc:361 -#: modules/websearch/doc/search-guide.webdoc:396 -#: modules/websearch/doc/search-guide.webdoc:493 -#: modules/websearch/doc/search-guide.webdoc:528 -#: modules/websearch/doc/search-guide.webdoc:630 -#: modules/websearch/doc/search-guide.webdoc:665 -#: modules/websearch/doc/search-guide.webdoc:768 -#: modules/websearch/doc/search-guide.webdoc:803 -#: modules/websearch/lib/search_engine.py:1116 -#: modules/websearch/lib/websearch_templates.py:1163 -msgid "AND NOT" -msgstr "" - -#: modules/webhelp/web/admin/admin.webdoc:18 -#: modules/websearch/doc/admin/websearch-admin-guide.webdoc:21 -#: modules/websubmit/doc/admin/websubmit-admin-guide.webdoc:21 -#: modules/bibedit/doc/admin/bibedit-admin-guide.webdoc:21 -#: modules/bibupload/doc/admin/bibupload-admin-guide.webdoc:21 -#: modules/bibformat/doc/admin/bibformat-admin-guide.webdoc:21 -#: modules/bibharvest/doc/admin/bibharvest-admin-guide.webdoc:21 -#: modules/webmessage/doc/admin/webmessage-admin-guide.webdoc:21 -#: modules/webalert/doc/admin/webalert-admin-guide.webdoc:21 -#: modules/bibclassify/doc/admin/bibclassify-admin-guide.webdoc:22 -#: modules/bibmatch/doc/admin/bibmatch-admin-guide.webdoc:21 -#: modules/bibconvert/doc/admin/bibconvert-admin-guide.webdoc:21 -#: modules/bibsched/doc/admin/bibsched-admin-guide.webdoc:21 -#: modules/bibrank/doc/admin/bibrank-admin-guide.webdoc:21 -#: modules/webstat/doc/admin/webstat-admin-guide.webdoc:21 -#: modules/bibindex/doc/admin/bibindex-admin-guide.webdoc:21 -#: modules/webbasket/doc/admin/webbasket-admin-guide.webdoc:21 -#: modules/webcomment/doc/admin/webcomment-admin-guide.webdoc:21 -#: modules/websession/doc/admin/websession-admin-guide.webdoc:21 -#: modules/webstyle/doc/admin/webstyle-admin-guide.webdoc:21 -#: modules/elmsubmit/doc/admin/elmsubmit-admin-guide.webdoc:21 -#: modules/bibformat/lib/bibformatadminlib.py:55 -#: modules/bibformat/web/admin/bibformatadmin.py:68 -#: modules/webcomment/lib/webcommentadminlib.py:43 -#: modules/webstyle/lib/webdoc_webinterface.py:153 -#: modules/bibcheck/web/admin/bibcheckadmin.py:57 -#: modules/bibcheck/web/admin/bibcheckadmin.py:159 -#: modules/bibcheck/web/admin/bibcheckadmin.py:203 -#: modules/bibcheck/web/admin/bibcheckadmin.py:263 -#: modules/bibcheck/web/admin/bibcheckadmin.py:303 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:78 -msgid "Admin Area" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:427 -#: modules/websearch/doc/search-guide.webdoc:559 -#: modules/websearch/doc/search-guide.webdoc:696 -#: modules/websearch/doc/search-guide.webdoc:834 -#: modules/websearch/lib/search_engine.py:4510 -#: modules/websearch/lib/websearch_templates.py:804 -#: modules/websearch/lib/websearch_templates.py:882 -#: modules/websearch/lib/websearch_templates.py:1005 -#: modules/websearch/lib/websearch_templates.py:1963 -#: modules/websearch/lib/websearch_templates.py:2054 -#: modules/websearch/lib/websearch_templates.py:2111 -#: modules/websearch/lib/websearch_templates.py:2168 -#: modules/websearch/lib/websearch_templates.py:2207 -#: modules/websearch/lib/websearch_templates.py:2230 -#: modules/websearch/lib/websearch_templates.py:2261 -msgid "Browse" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:50 -#: modules/websearch/doc/search-tips.webdoc:20 -#: modules/websearch/lib/websearch_templates.py:805 -#: modules/websearch/lib/websearch_templates.py:883 -#: modules/websearch/lib/websearch_templates.py:1006 -#: modules/websearch/lib/websearch_templates.py:2058 -#: modules/websearch/lib/websearch_templates.py:2115 -#: modules/websearch/lib/websearch_templates.py:2172 -msgid "Search Tips" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:343 -#: modules/websearch/doc/search-guide.webdoc:378 -#: modules/websearch/doc/search-guide.webdoc:413 -#: modules/websearch/doc/search-guide.webdoc:475 -#: modules/websearch/doc/search-guide.webdoc:510 -#: modules/websearch/doc/search-guide.webdoc:545 -#: modules/websearch/doc/search-guide.webdoc:612 -#: modules/websearch/doc/search-guide.webdoc:647 -#: modules/websearch/doc/search-guide.webdoc:682 -#: modules/websearch/doc/search-guide.webdoc:750 -#: modules/websearch/doc/search-guide.webdoc:785 -#: modules/websearch/doc/search-guide.webdoc:820 -#: modules/miscutil/lib/inveniocfg.py:456 -msgid "abstract" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:348 -#: modules/websearch/doc/search-guide.webdoc:383 -#: modules/websearch/doc/search-guide.webdoc:418 -#: modules/websearch/doc/search-guide.webdoc:480 -#: modules/websearch/doc/search-guide.webdoc:515 -#: modules/websearch/doc/search-guide.webdoc:550 -#: modules/websearch/doc/search-guide.webdoc:617 -#: modules/websearch/doc/search-guide.webdoc:652 -#: modules/websearch/doc/search-guide.webdoc:687 -#: modules/websearch/doc/search-guide.webdoc:755 -#: modules/websearch/doc/search-guide.webdoc:790 -#: modules/websearch/doc/search-guide.webdoc:825 -#: modules/miscutil/lib/inveniocfg.py:461 -msgid "fulltext" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:337 -#: modules/websearch/doc/search-guide.webdoc:373 -#: modules/websearch/doc/search-guide.webdoc:408 -#: modules/websearch/doc/search-guide.webdoc:469 -#: modules/websearch/doc/search-guide.webdoc:505 -#: modules/websearch/doc/search-guide.webdoc:540 -#: modules/websearch/doc/search-guide.webdoc:606 -#: modules/websearch/doc/search-guide.webdoc:642 -#: modules/websearch/doc/search-guide.webdoc:677 -#: modules/websearch/doc/search-guide.webdoc:744 -#: modules/websearch/doc/search-guide.webdoc:780 -#: modules/websearch/doc/search-guide.webdoc:815 -#: modules/websearch/lib/search_engine.py:1138 -#: modules/websearch/lib/websearch_templates.py:1119 -msgid "Regular expression:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:333 -#: modules/websearch/doc/search-guide.webdoc:369 -#: modules/websearch/doc/search-guide.webdoc:404 -#: modules/websearch/doc/search-guide.webdoc:465 -#: modules/websearch/doc/search-guide.webdoc:501 -#: modules/websearch/doc/search-guide.webdoc:536 -#: modules/websearch/doc/search-guide.webdoc:602 -#: modules/websearch/doc/search-guide.webdoc:638 -#: modules/websearch/doc/search-guide.webdoc:673 -#: modules/websearch/doc/search-guide.webdoc:740 -#: modules/websearch/doc/search-guide.webdoc:776 -#: modules/websearch/doc/search-guide.webdoc:811 -#: modules/websearch/lib/search_engine.py:1134 -#: modules/websearch/lib/websearch_templates.py:1111 -msgid "All of the words:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:351 -#: modules/websearch/doc/search-guide.webdoc:386 -#: modules/websearch/doc/search-guide.webdoc:421 -#: modules/websearch/doc/search-guide.webdoc:483 -#: modules/websearch/doc/search-guide.webdoc:518 -#: modules/websearch/doc/search-guide.webdoc:553 -#: modules/websearch/doc/search-guide.webdoc:620 -#: modules/websearch/doc/search-guide.webdoc:655 -#: modules/websearch/doc/search-guide.webdoc:690 -#: modules/websearch/doc/search-guide.webdoc:758 -#: modules/websearch/doc/search-guide.webdoc:793 -#: modules/websearch/doc/search-guide.webdoc:828 -#: modules/miscutil/lib/inveniocfg.py:458 -msgid "report number" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:470 -#: modules/websearch/doc/search-tips.webdoc:477 -#: modules/websearch/doc/search-tips.webdoc:478 -#: modules/websearch/doc/search-tips.webdoc:479 -#: modules/websearch/doc/search-tips.webdoc:480 -#: modules/websearch/doc/search-tips.webdoc:481 -#: modules/websearch/doc/search-tips.webdoc:499 -#: modules/websearch/doc/search-tips.webdoc:500 -#: modules/websearch/doc/search-tips.webdoc:501 -#: modules/websearch/doc/search-tips.webdoc:502 -#: modules/websearch/doc/search-tips.webdoc:503 -#: modules/websearch/doc/search-guide.webdoc:354 -#: modules/websearch/doc/search-guide.webdoc:389 -#: modules/websearch/doc/search-guide.webdoc:424 -#: modules/websearch/doc/search-guide.webdoc:486 -#: modules/websearch/doc/search-guide.webdoc:521 -#: modules/websearch/doc/search-guide.webdoc:556 -#: modules/websearch/doc/search-guide.webdoc:623 -#: modules/websearch/doc/search-guide.webdoc:658 -#: modules/websearch/doc/search-guide.webdoc:693 -#: modules/websearch/doc/search-guide.webdoc:761 -#: modules/websearch/doc/search-guide.webdoc:796 -#: modules/websearch/doc/search-guide.webdoc:831 -#: modules/miscutil/lib/inveniocfg.py:464 -msgid "year" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:352 -#: modules/websearch/doc/search-guide.webdoc:387 -#: modules/websearch/doc/search-guide.webdoc:422 -#: modules/websearch/doc/search-guide.webdoc:484 -#: modules/websearch/doc/search-guide.webdoc:519 -#: modules/websearch/doc/search-guide.webdoc:554 -#: modules/websearch/doc/search-guide.webdoc:621 -#: modules/websearch/doc/search-guide.webdoc:656 -#: modules/websearch/doc/search-guide.webdoc:691 -#: modules/websearch/doc/search-guide.webdoc:759 -#: modules/websearch/doc/search-guide.webdoc:794 -#: modules/websearch/doc/search-guide.webdoc:829 -#: modules/miscutil/lib/inveniocfg.py:459 -msgid "subject" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:336 -#: modules/websearch/doc/search-guide.webdoc:372 -#: modules/websearch/doc/search-guide.webdoc:407 -#: modules/websearch/doc/search-guide.webdoc:468 -#: modules/websearch/doc/search-guide.webdoc:504 -#: modules/websearch/doc/search-guide.webdoc:539 -#: modules/websearch/doc/search-guide.webdoc:605 -#: modules/websearch/doc/search-guide.webdoc:641 -#: modules/websearch/doc/search-guide.webdoc:676 -#: modules/websearch/doc/search-guide.webdoc:743 -#: modules/websearch/doc/search-guide.webdoc:779 -#: modules/websearch/doc/search-guide.webdoc:814 -#: modules/websearch/lib/search_engine.py:1137 -#: modules/websearch/lib/websearch_templates.py:1117 -msgid "Partial phrase:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:350 -#: modules/websearch/doc/search-guide.webdoc:385 -#: modules/websearch/doc/search-guide.webdoc:420 -#: modules/websearch/doc/search-guide.webdoc:482 -#: modules/websearch/doc/search-guide.webdoc:517 -#: modules/websearch/doc/search-guide.webdoc:552 -#: modules/websearch/doc/search-guide.webdoc:619 -#: modules/websearch/doc/search-guide.webdoc:654 -#: modules/websearch/doc/search-guide.webdoc:689 -#: modules/websearch/doc/search-guide.webdoc:757 -#: modules/websearch/doc/search-guide.webdoc:792 -#: modules/websearch/doc/search-guide.webdoc:827 -#: modules/miscutil/lib/inveniocfg.py:460 -msgid "reference" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:39 -#: modules/websearch/doc/search-tips.webdoc:75 -#: modules/websearch/doc/search-tips.webdoc:121 -#: modules/websearch/doc/search-tips.webdoc:178 -#: modules/websearch/doc/search-tips.webdoc:205 -#: modules/websearch/doc/search-tips.webdoc:233 -#: modules/websearch/doc/search-tips.webdoc:288 -#: modules/websearch/doc/search-tips.webdoc:336 -#: modules/websearch/doc/search-tips.webdoc:347 -#: modules/websearch/doc/search-tips.webdoc:371 -#: modules/websearch/doc/search-tips.webdoc:395 -#: modules/websearch/doc/search-tips.webdoc:433 -#: modules/websearch/doc/search-tips.webdoc:469 -#: modules/websearch/doc/search-tips.webdoc:492 -#: modules/websearch/doc/search-tips.webdoc:514 -#: modules/websearch/doc/search-tips.webdoc:550 -#: modules/websearch/doc/search-tips.webdoc:568 -#: modules/websearch/doc/search-tips.webdoc:587 -#: modules/websearch/doc/search-tips.webdoc:622 -#: modules/websearch/doc/search-tips.webdoc:651 -#: modules/websearch/doc/search-tips.webdoc:659 -#: modules/websearch/doc/search-tips.webdoc:662 -#: modules/websearch/doc/search-tips.webdoc:664 -#: modules/websearch/doc/search-tips.webdoc:666 -#: modules/websearch/doc/search-tips.webdoc:668 -#: modules/websearch/doc/search-tips.webdoc:679 -#: modules/websearch/doc/search-tips.webdoc:702 -#: modules/websearch/doc/search-guide.webdoc:226 -#: modules/websearch/doc/search-guide.webdoc:250 -#: modules/websearch/doc/search-guide.webdoc:276 -#: modules/websearch/doc/search-guide.webdoc:301 -#: modules/websearch/doc/search-guide.webdoc:344 -#: modules/websearch/doc/search-guide.webdoc:379 -#: modules/websearch/doc/search-guide.webdoc:414 -#: modules/websearch/doc/search-guide.webdoc:476 -#: modules/websearch/doc/search-guide.webdoc:511 -#: modules/websearch/doc/search-guide.webdoc:546 -#: modules/websearch/doc/search-guide.webdoc:613 -#: modules/websearch/doc/search-guide.webdoc:648 -#: modules/websearch/doc/search-guide.webdoc:683 -#: modules/websearch/doc/search-guide.webdoc:751 -#: modules/websearch/doc/search-guide.webdoc:786 -#: modules/websearch/doc/search-guide.webdoc:821 -#: modules/websearch/doc/search-guide.webdoc:881 -#: modules/websearch/doc/search-guide.webdoc:912 -#: modules/websearch/doc/search-guide.webdoc:952 -#: modules/websearch/doc/search-guide.webdoc:986 -#: modules/websearch/doc/search-guide.webdoc:1026 -#: modules/websearch/doc/search-guide.webdoc:1048 -#: modules/websearch/doc/search-guide.webdoc:1068 -#: modules/websearch/doc/search-guide.webdoc:1084 -#: modules/websearch/doc/search-guide.webdoc:1124 -#: modules/websearch/doc/search-guide.webdoc:1147 -#: modules/websearch/doc/search-guide.webdoc:1168 -#: modules/websearch/doc/search-guide.webdoc:1183 -#: modules/websearch/doc/search-guide.webdoc:1227 -#: modules/websearch/doc/search-guide.webdoc:1252 -#: modules/websearch/doc/search-guide.webdoc:1273 -#: modules/websearch/doc/search-guide.webdoc:1289 -#: modules/websearch/doc/search-guide.webdoc:1334 -#: modules/websearch/doc/search-guide.webdoc:1357 -#: modules/websearch/doc/search-guide.webdoc:1379 -#: modules/websearch/doc/search-guide.webdoc:1395 -#: modules/websearch/doc/search-guide.webdoc:1765 -#: modules/websearch/doc/search-guide.webdoc:1779 -#: modules/websearch/doc/search-guide.webdoc:1797 -#: modules/websearch/doc/search-guide.webdoc:1816 -#: modules/websearch/doc/search-guide.webdoc:1829 -#: modules/websearch/doc/search-guide.webdoc:1847 -#: modules/websearch/doc/search-guide.webdoc:1867 -#: modules/websearch/doc/search-guide.webdoc:1882 -#: modules/websearch/doc/search-guide.webdoc:1901 -#: modules/websearch/doc/search-guide.webdoc:1924 -#: modules/websearch/doc/search-guide.webdoc:1939 -#: modules/websearch/doc/search-guide.webdoc:1958 -#: modules/websearch/doc/search-guide.webdoc:1986 -#: modules/websearch/doc/search-guide.webdoc:2024 -#: modules/websearch/doc/search-guide.webdoc:2035 -#: modules/websearch/doc/search-guide.webdoc:2049 -#: modules/websearch/doc/search-guide.webdoc:2063 -#: modules/websearch/doc/search-guide.webdoc:2076 -#: modules/websearch/doc/search-guide.webdoc:2092 -#: modules/websearch/doc/search-guide.webdoc:2103 -#: modules/websearch/doc/search-guide.webdoc:2117 -#: modules/websearch/doc/search-guide.webdoc:2131 -#: modules/websearch/doc/search-guide.webdoc:2144 -#: modules/websearch/doc/search-guide.webdoc:2160 -#: modules/websearch/doc/search-guide.webdoc:2171 -#: modules/websearch/doc/search-guide.webdoc:2185 -#: modules/websearch/doc/search-guide.webdoc:2199 -#: modules/websearch/doc/search-guide.webdoc:2212 -#: modules/websearch/doc/search-guide.webdoc:2230 -#: modules/websearch/doc/search-guide.webdoc:2241 -#: modules/websearch/doc/search-guide.webdoc:2255 -#: modules/websearch/doc/search-guide.webdoc:2269 -#: modules/websearch/doc/search-guide.webdoc:2282 -#: modules/websearch/doc/search-guide.webdoc:2311 -#: modules/websearch/doc/search-guide.webdoc:2325 -#: modules/websearch/doc/search-guide.webdoc:2342 -#: modules/websearch/doc/search-guide.webdoc:2355 -#: modules/websearch/doc/search-guide.webdoc:2372 -#: modules/websearch/doc/search-guide.webdoc:2386 -#: modules/websearch/doc/search-guide.webdoc:2404 -#: modules/websearch/doc/search-guide.webdoc:2418 -#: modules/websearch/doc/search-guide.webdoc:2449 -#: modules/websearch/doc/search-guide.webdoc:2464 -#: modules/websearch/doc/search-guide.webdoc:2478 -#: modules/websearch/doc/search-guide.webdoc:2493 -#: modules/websearch/doc/search-guide.webdoc:2521 -#: modules/websearch/doc/search-guide.webdoc:2536 -#: modules/websearch/doc/search-guide.webdoc:2550 -#: modules/websearch/doc/search-guide.webdoc:2566 -#: modules/websearch/doc/search-guide.webdoc:2598 -#: modules/websearch/doc/search-guide.webdoc:2614 -#: modules/websearch/doc/search-guide.webdoc:2628 -#: modules/websearch/doc/search-guide.webdoc:2643 -#: modules/websearch/doc/search-guide.webdoc:2674 -#: modules/websearch/doc/search-guide.webdoc:2690 -#: modules/websearch/doc/search-guide.webdoc:2704 -#: modules/websearch/doc/search-guide.webdoc:2719 -#: modules/websearch/doc/search-guide.webdoc:2761 -#: modules/websearch/doc/search-guide.webdoc:2776 -#: modules/websearch/doc/search-guide.webdoc:2790 -#: modules/websearch/doc/search-guide.webdoc:2815 -#: modules/websearch/doc/search-guide.webdoc:2830 -#: modules/websearch/doc/search-guide.webdoc:2844 -#: modules/websearch/doc/search-guide.webdoc:2873 -#: modules/websearch/doc/search-guide.webdoc:2888 -#: modules/websearch/doc/search-guide.webdoc:2902 -#: modules/websearch/doc/search-guide.webdoc:2930 -#: modules/websearch/doc/search-guide.webdoc:2945 -#: modules/websearch/doc/search-guide.webdoc:2958 -#: modules/websearch/doc/search-guide.webdoc:2993 -#: modules/websearch/doc/search-guide.webdoc:3015 -#: modules/websearch/doc/search-guide.webdoc:3039 -#: modules/websearch/doc/search-guide.webdoc:3063 -#: modules/websearch/doc/search-guide.webdoc:3087 -#: modules/websearch/doc/search-guide.webdoc:3102 -#: modules/websearch/doc/search-guide.webdoc:3118 -#: modules/websearch/doc/search-guide.webdoc:3135 -#: modules/websearch/doc/search-guide.webdoc:3155 -#: modules/websearch/doc/search-guide.webdoc:3173 -#: modules/websearch/doc/search-guide.webdoc:3191 -#: modules/websearch/doc/search-guide.webdoc:3210 -#: modules/websearch/doc/search-guide.webdoc:3231 -#: modules/websearch/doc/search-guide.webdoc:3245 -#: modules/websearch/doc/search-guide.webdoc:3265 -#: modules/websearch/doc/search-guide.webdoc:3280 -#: modules/websearch/doc/search-guide.webdoc:3299 -#: modules/websearch/doc/search-guide.webdoc:3314 -#: modules/websearch/doc/search-guide.webdoc:3334 -#: modules/websearch/doc/search-guide.webdoc:3349 -#: modules/websearch/doc/search-guide.webdoc:3411 -#: modules/websearch/doc/search-guide.webdoc:3425 -#: modules/websearch/doc/search-guide.webdoc:3442 -#: modules/websearch/doc/search-guide.webdoc:3455 -#: modules/websearch/doc/search-guide.webdoc:3473 -#: modules/websearch/doc/search-guide.webdoc:3488 -#: modules/websearch/doc/search-guide.webdoc:3506 -#: modules/websearch/doc/search-guide.webdoc:3521 -#: modules/websearch/doc/search-guide.webdoc:3546 -#: modules/websearch/doc/search-guide.webdoc:3559 -#: modules/websearch/doc/search-guide.webdoc:3572 -#: modules/websearch/doc/search-guide.webdoc:3588 -#: modules/websearch/doc/search-guide.webdoc:3604 -#: modules/websearch/doc/search-guide.webdoc:3621 -#: modules/websearch/doc/search-guide.webdoc:3654 -#: modules/websearch/doc/search-guide.webdoc:3670 -#: modules/websearch/doc/search-guide.webdoc:3687 -#: modules/websearch/doc/search-guide.webdoc:3707 -#: modules/websearch/doc/search-guide.webdoc:3721 -#: modules/websearch/doc/search-guide.webdoc:3739 -#: modules/websearch/doc/search-guide.webdoc:3760 -#: modules/websearch/doc/search-guide.webdoc:3779 -#: modules/websearch/doc/search-guide.webdoc:3797 -#: modules/websearch/doc/search-guide.webdoc:3819 -#: modules/websearch/doc/search-guide.webdoc:3838 -#: modules/websearch/doc/search-guide.webdoc:3855 -#: modules/websearch/doc/search-guide.webdoc:3976 -#: modules/websearch/doc/search-guide.webdoc:4001 -#: modules/websearch/doc/search-guide.webdoc:4024 -#: modules/websearch/doc/search-guide.webdoc:4050 -#: modules/websearch/doc/search-guide.webdoc:4074 -#: modules/websearch/doc/search-guide.webdoc:4101 -#: modules/websearch/doc/search-guide.webdoc:4126 -#: modules/websearch/doc/search-guide.webdoc:4152 -#: modules/websearch/doc/search-guide.webdoc:4181 -#: modules/websearch/doc/search-guide.webdoc:4201 -#: modules/websearch/doc/search-guide.webdoc:4225 -#: modules/websearch/doc/search-guide.webdoc:4252 -#: modules/websearch/doc/search-guide.webdoc:4292 -#: modules/websearch/doc/search-guide.webdoc:4313 -#: modules/websearch/doc/search-guide.webdoc:4337 -#: modules/websearch/doc/search-guide.webdoc:4367 -#: modules/websearch/doc/search-guide.webdoc:4411 -#: modules/websearch/doc/search-guide.webdoc:4433 -#: modules/websearch/doc/search-guide.webdoc:4458 -#: modules/websearch/doc/search-guide.webdoc:4488 -#: modules/websearch/doc/search-guide.webdoc:4533 -#: modules/websearch/doc/search-guide.webdoc:4554 -#: modules/websearch/doc/search-guide.webdoc:4579 -#: modules/websearch/doc/search-guide.webdoc:4609 -#: modules/websearch/doc/search-guide.webdoc:4901 -#: modules/websearch/doc/search-guide.webdoc:4917 -#: modules/websearch/doc/search-guide.webdoc:4937 -#: modules/websearch/doc/search-guide.webdoc:4956 -#: modules/websearch/doc/search-guide.webdoc:4977 -#: modules/websearch/doc/search-guide.webdoc:4995 -#: modules/websearch/doc/search-guide.webdoc:5016 -#: modules/websearch/doc/search-guide.webdoc:5034 -#: modules/websearch/doc/search-guide.webdoc:5067 -#: modules/websearch/doc/search-guide.webdoc:5081 -#: modules/websearch/doc/search-guide.webdoc:5096 -#: modules/websearch/doc/search-guide.webdoc:5112 -#: modules/websearch/doc/search-guide.webdoc:5131 -#: modules/websearch/doc/search-guide.webdoc:5145 -#: modules/websearch/doc/search-guide.webdoc:5161 -#: modules/websearch/doc/search-guide.webdoc:5179 -#: modules/websearch/doc/search-guide.webdoc:5198 -#: modules/websearch/doc/search-guide.webdoc:5213 -#: modules/websearch/doc/search-guide.webdoc:5228 -#: modules/websearch/doc/search-guide.webdoc:5246 -#: modules/websearch/doc/search-guide.webdoc:5266 -#: modules/websearch/doc/search-guide.webdoc:5281 -#: modules/websearch/doc/search-guide.webdoc:5296 -#: modules/websearch/doc/search-guide.webdoc:5316 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:131 -#: modules/miscutil/lib/inveniocfg.py:455 -msgid "author" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:98 -#: modules/websearch/doc/search-guide.webdoc:20 -msgid "Search Guide" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:347 -#: modules/websearch/doc/search-guide.webdoc:382 -#: modules/websearch/doc/search-guide.webdoc:417 -#: modules/websearch/doc/search-guide.webdoc:479 -#: modules/websearch/doc/search-guide.webdoc:514 -#: modules/websearch/doc/search-guide.webdoc:549 -#: modules/websearch/doc/search-guide.webdoc:616 -#: modules/websearch/doc/search-guide.webdoc:651 -#: modules/websearch/doc/search-guide.webdoc:686 -#: modules/websearch/doc/search-guide.webdoc:754 -#: modules/websearch/doc/search-guide.webdoc:789 -#: modules/websearch/doc/search-guide.webdoc:824 -#: modules/miscutil/lib/inveniocfg.py:466 -msgid "experiment" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:334 -#: modules/websearch/doc/search-guide.webdoc:370 -#: modules/websearch/doc/search-guide.webdoc:405 -#: modules/websearch/doc/search-guide.webdoc:466 -#: modules/websearch/doc/search-guide.webdoc:502 -#: modules/websearch/doc/search-guide.webdoc:537 -#: modules/websearch/doc/search-guide.webdoc:603 -#: modules/websearch/doc/search-guide.webdoc:639 -#: modules/websearch/doc/search-guide.webdoc:674 -#: modules/websearch/doc/search-guide.webdoc:741 -#: modules/websearch/doc/search-guide.webdoc:777 -#: modules/websearch/doc/search-guide.webdoc:812 -#: modules/websearch/lib/search_engine.py:1135 -#: modules/websearch/lib/websearch_templates.py:1113 -msgid "Any of the words:" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:346 -#: modules/websearch/doc/search-guide.webdoc:381 -#: modules/websearch/doc/search-guide.webdoc:416 -#: modules/websearch/doc/search-guide.webdoc:478 -#: modules/websearch/doc/search-guide.webdoc:513 -#: modules/websearch/doc/search-guide.webdoc:548 -#: modules/websearch/doc/search-guide.webdoc:615 -#: modules/websearch/doc/search-guide.webdoc:650 -#: modules/websearch/doc/search-guide.webdoc:685 -#: modules/websearch/doc/search-guide.webdoc:753 -#: modules/websearch/doc/search-guide.webdoc:788 -#: modules/websearch/doc/search-guide.webdoc:823 -#: modules/miscutil/lib/inveniocfg.py:463 -msgid "division" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:41 -#: modules/websearch/doc/search-tips.webdoc:77 -#: modules/websearch/doc/search-tips.webdoc:123 -#: modules/websearch/doc/search-tips.webdoc:180 -#: modules/websearch/doc/search-tips.webdoc:207 -#: modules/websearch/doc/search-tips.webdoc:235 -#: modules/websearch/doc/search-tips.webdoc:290 -#: modules/websearch/doc/search-tips.webdoc:338 -#: modules/websearch/doc/search-tips.webdoc:349 -#: modules/websearch/doc/search-tips.webdoc:373 -#: modules/websearch/doc/search-tips.webdoc:397 -#: modules/websearch/doc/search-tips.webdoc:435 -#: modules/websearch/doc/search-tips.webdoc:472 -#: modules/websearch/doc/search-tips.webdoc:494 -#: modules/websearch/doc/search-tips.webdoc:516 -#: modules/websearch/doc/search-tips.webdoc:552 -#: modules/websearch/doc/search-tips.webdoc:570 -#: modules/websearch/doc/search-tips.webdoc:589 -#: modules/websearch/doc/search-tips.webdoc:624 -#: modules/websearch/doc/search-tips.webdoc:653 -#: modules/websearch/doc/search-tips.webdoc:681 -#: modules/websearch/doc/search-tips.webdoc:704 -#: modules/websearch/doc/search-guide.webdoc:227 -#: modules/websearch/doc/search-guide.webdoc:251 -#: modules/websearch/doc/search-guide.webdoc:277 -#: modules/websearch/doc/search-guide.webdoc:302 -#: modules/websearch/doc/search-guide.webdoc:427 -#: modules/websearch/doc/search-guide.webdoc:559 -#: modules/websearch/doc/search-guide.webdoc:696 -#: modules/websearch/doc/search-guide.webdoc:834 -#: modules/websearch/doc/search-guide.webdoc:882 -#: modules/websearch/doc/search-guide.webdoc:913 -#: modules/websearch/doc/search-guide.webdoc:953 -#: modules/websearch/doc/search-guide.webdoc:987 -#: modules/websearch/doc/search-guide.webdoc:1027 -#: modules/websearch/doc/search-guide.webdoc:1049 -#: modules/websearch/doc/search-guide.webdoc:1069 -#: modules/websearch/doc/search-guide.webdoc:1085 -#: modules/websearch/doc/search-guide.webdoc:1125 -#: modules/websearch/doc/search-guide.webdoc:1148 -#: modules/websearch/doc/search-guide.webdoc:1169 -#: modules/websearch/doc/search-guide.webdoc:1184 -#: modules/websearch/doc/search-guide.webdoc:1228 -#: modules/websearch/doc/search-guide.webdoc:1253 -#: modules/websearch/doc/search-guide.webdoc:1274 -#: modules/websearch/doc/search-guide.webdoc:1290 -#: modules/websearch/doc/search-guide.webdoc:1335 -#: modules/websearch/doc/search-guide.webdoc:1358 -#: modules/websearch/doc/search-guide.webdoc:1380 -#: modules/websearch/doc/search-guide.webdoc:1396 -#: modules/websearch/doc/search-guide.webdoc:1766 -#: modules/websearch/doc/search-guide.webdoc:1780 -#: modules/websearch/doc/search-guide.webdoc:1798 -#: modules/websearch/doc/search-guide.webdoc:1817 -#: modules/websearch/doc/search-guide.webdoc:1830 -#: modules/websearch/doc/search-guide.webdoc:1848 -#: modules/websearch/doc/search-guide.webdoc:1868 -#: modules/websearch/doc/search-guide.webdoc:1883 -#: modules/websearch/doc/search-guide.webdoc:1902 -#: modules/websearch/doc/search-guide.webdoc:1925 -#: modules/websearch/doc/search-guide.webdoc:1940 -#: modules/websearch/doc/search-guide.webdoc:1959 -#: modules/websearch/doc/search-guide.webdoc:1988 -#: modules/websearch/doc/search-guide.webdoc:2025 -#: modules/websearch/doc/search-guide.webdoc:2036 -#: modules/websearch/doc/search-guide.webdoc:2050 -#: modules/websearch/doc/search-guide.webdoc:2064 -#: modules/websearch/doc/search-guide.webdoc:2077 -#: modules/websearch/doc/search-guide.webdoc:2093 -#: modules/websearch/doc/search-guide.webdoc:2104 -#: modules/websearch/doc/search-guide.webdoc:2118 -#: modules/websearch/doc/search-guide.webdoc:2132 -#: modules/websearch/doc/search-guide.webdoc:2145 -#: modules/websearch/doc/search-guide.webdoc:2161 -#: modules/websearch/doc/search-guide.webdoc:2172 -#: modules/websearch/doc/search-guide.webdoc:2186 -#: modules/websearch/doc/search-guide.webdoc:2200 -#: modules/websearch/doc/search-guide.webdoc:2213 -#: modules/websearch/doc/search-guide.webdoc:2231 -#: modules/websearch/doc/search-guide.webdoc:2242 -#: modules/websearch/doc/search-guide.webdoc:2256 -#: modules/websearch/doc/search-guide.webdoc:2270 -#: modules/websearch/doc/search-guide.webdoc:2283 -#: modules/websearch/doc/search-guide.webdoc:2312 -#: modules/websearch/doc/search-guide.webdoc:2326 -#: modules/websearch/doc/search-guide.webdoc:2343 -#: modules/websearch/doc/search-guide.webdoc:2356 -#: modules/websearch/doc/search-guide.webdoc:2373 -#: modules/websearch/doc/search-guide.webdoc:2387 -#: modules/websearch/doc/search-guide.webdoc:2405 -#: modules/websearch/doc/search-guide.webdoc:2419 -#: modules/websearch/doc/search-guide.webdoc:2450 -#: modules/websearch/doc/search-guide.webdoc:2465 -#: modules/websearch/doc/search-guide.webdoc:2479 -#: modules/websearch/doc/search-guide.webdoc:2494 -#: modules/websearch/doc/search-guide.webdoc:2522 -#: modules/websearch/doc/search-guide.webdoc:2537 -#: modules/websearch/doc/search-guide.webdoc:2551 -#: modules/websearch/doc/search-guide.webdoc:2567 -#: modules/websearch/doc/search-guide.webdoc:2599 -#: modules/websearch/doc/search-guide.webdoc:2615 -#: modules/websearch/doc/search-guide.webdoc:2629 -#: modules/websearch/doc/search-guide.webdoc:2644 -#: modules/websearch/doc/search-guide.webdoc:2675 -#: modules/websearch/doc/search-guide.webdoc:2691 -#: modules/websearch/doc/search-guide.webdoc:2705 -#: modules/websearch/doc/search-guide.webdoc:2720 -#: modules/websearch/doc/search-guide.webdoc:2762 -#: modules/websearch/doc/search-guide.webdoc:2777 -#: modules/websearch/doc/search-guide.webdoc:2791 -#: modules/websearch/doc/search-guide.webdoc:2816 -#: modules/websearch/doc/search-guide.webdoc:2831 -#: modules/websearch/doc/search-guide.webdoc:2845 -#: modules/websearch/doc/search-guide.webdoc:2874 -#: modules/websearch/doc/search-guide.webdoc:2889 -#: modules/websearch/doc/search-guide.webdoc:2903 -#: modules/websearch/doc/search-guide.webdoc:2931 -#: modules/websearch/doc/search-guide.webdoc:2946 -#: modules/websearch/doc/search-guide.webdoc:2959 -#: modules/websearch/doc/search-guide.webdoc:2994 -#: modules/websearch/doc/search-guide.webdoc:3016 -#: modules/websearch/doc/search-guide.webdoc:3040 -#: modules/websearch/doc/search-guide.webdoc:3064 -#: modules/websearch/doc/search-guide.webdoc:3088 -#: modules/websearch/doc/search-guide.webdoc:3103 -#: modules/websearch/doc/search-guide.webdoc:3119 -#: modules/websearch/doc/search-guide.webdoc:3136 -#: modules/websearch/doc/search-guide.webdoc:3156 -#: modules/websearch/doc/search-guide.webdoc:3174 -#: modules/websearch/doc/search-guide.webdoc:3192 -#: modules/websearch/doc/search-guide.webdoc:3211 -#: modules/websearch/doc/search-guide.webdoc:3232 -#: modules/websearch/doc/search-guide.webdoc:3246 -#: modules/websearch/doc/search-guide.webdoc:3266 -#: modules/websearch/doc/search-guide.webdoc:3281 -#: modules/websearch/doc/search-guide.webdoc:3300 -#: modules/websearch/doc/search-guide.webdoc:3315 -#: modules/websearch/doc/search-guide.webdoc:3335 -#: modules/websearch/doc/search-guide.webdoc:3350 -#: modules/websearch/doc/search-guide.webdoc:3412 -#: modules/websearch/doc/search-guide.webdoc:3426 -#: modules/websearch/doc/search-guide.webdoc:3443 -#: modules/websearch/doc/search-guide.webdoc:3456 -#: modules/websearch/doc/search-guide.webdoc:3474 -#: modules/websearch/doc/search-guide.webdoc:3489 -#: modules/websearch/doc/search-guide.webdoc:3507 -#: modules/websearch/doc/search-guide.webdoc:3522 -#: modules/websearch/doc/search-guide.webdoc:3547 -#: modules/websearch/doc/search-guide.webdoc:3560 -#: modules/websearch/doc/search-guide.webdoc:3573 -#: modules/websearch/doc/search-guide.webdoc:3589 -#: modules/websearch/doc/search-guide.webdoc:3605 -#: modules/websearch/doc/search-guide.webdoc:3622 -#: modules/websearch/doc/search-guide.webdoc:3655 -#: modules/websearch/doc/search-guide.webdoc:3671 -#: modules/websearch/doc/search-guide.webdoc:3688 -#: modules/websearch/doc/search-guide.webdoc:3708 -#: modules/websearch/doc/search-guide.webdoc:3722 -#: modules/websearch/doc/search-guide.webdoc:3740 -#: modules/websearch/doc/search-guide.webdoc:3761 -#: modules/websearch/doc/search-guide.webdoc:3780 -#: modules/websearch/doc/search-guide.webdoc:3798 -#: modules/websearch/doc/search-guide.webdoc:3820 -#: modules/websearch/doc/search-guide.webdoc:3839 -#: modules/websearch/doc/search-guide.webdoc:3856 -#: modules/websearch/doc/search-guide.webdoc:3977 -#: modules/websearch/doc/search-guide.webdoc:4002 -#: modules/websearch/doc/search-guide.webdoc:4025 -#: modules/websearch/doc/search-guide.webdoc:4051 -#: modules/websearch/doc/search-guide.webdoc:4075 -#: modules/websearch/doc/search-guide.webdoc:4102 -#: modules/websearch/doc/search-guide.webdoc:4127 -#: modules/websearch/doc/search-guide.webdoc:4153 -#: modules/websearch/doc/search-guide.webdoc:4182 -#: modules/websearch/doc/search-guide.webdoc:4202 -#: modules/websearch/doc/search-guide.webdoc:4226 -#: modules/websearch/doc/search-guide.webdoc:4253 -#: modules/websearch/doc/search-guide.webdoc:4293 -#: modules/websearch/doc/search-guide.webdoc:4314 -#: modules/websearch/doc/search-guide.webdoc:4338 -#: modules/websearch/doc/search-guide.webdoc:4368 -#: modules/websearch/doc/search-guide.webdoc:4412 -#: modules/websearch/doc/search-guide.webdoc:4434 -#: modules/websearch/doc/search-guide.webdoc:4459 -#: modules/websearch/doc/search-guide.webdoc:4489 -#: modules/websearch/doc/search-guide.webdoc:4534 -#: modules/websearch/doc/search-guide.webdoc:4555 -#: modules/websearch/doc/search-guide.webdoc:4580 -#: modules/websearch/doc/search-guide.webdoc:4610 -#: modules/websearch/doc/search-guide.webdoc:4902 -#: modules/websearch/doc/search-guide.webdoc:4918 -#: modules/websearch/doc/search-guide.webdoc:4938 -#: modules/websearch/doc/search-guide.webdoc:4957 -#: modules/websearch/doc/search-guide.webdoc:4978 -#: modules/websearch/doc/search-guide.webdoc:4996 -#: modules/websearch/doc/search-guide.webdoc:5017 -#: modules/websearch/doc/search-guide.webdoc:5035 -#: modules/websearch/doc/search-guide.webdoc:5068 -#: modules/websearch/doc/search-guide.webdoc:5082 -#: modules/websearch/doc/search-guide.webdoc:5097 -#: modules/websearch/doc/search-guide.webdoc:5113 -#: modules/websearch/doc/search-guide.webdoc:5132 -#: modules/websearch/doc/search-guide.webdoc:5146 -#: modules/websearch/doc/search-guide.webdoc:5162 -#: modules/websearch/doc/search-guide.webdoc:5180 -#: modules/websearch/doc/search-guide.webdoc:5199 -#: modules/websearch/doc/search-guide.webdoc:5214 -#: modules/websearch/doc/search-guide.webdoc:5229 -#: modules/websearch/doc/search-guide.webdoc:5247 -#: modules/websearch/doc/search-guide.webdoc:5267 -#: modules/websearch/doc/search-guide.webdoc:5282 -#: modules/websearch/doc/search-guide.webdoc:5297 -#: modules/websearch/doc/search-guide.webdoc:5317 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:133 -#: modules/websearch/lib/websearch_templates.py:803 -#: modules/websearch/lib/websearch_templates.py:881 -#: modules/websearch/lib/websearch_templates.py:1004 -#: modules/websearch/lib/websearch_templates.py:1960 -#: modules/websearch/lib/websearch_templates.py:2053 -#: modules/websearch/lib/websearch_templates.py:2110 -#: modules/websearch/lib/websearch_templates.py:2167 -#: modules/webstyle/lib/webstyle_templates.py:431 -#: modules/webstyle/lib/webstyle_templates.py:499 -#: modules/webstyle/lib/webdoc_tests.py:86 -#: modules/bibedit/lib/bibeditmulti_templates.py:296 -#: modules/bibcirculation/lib/bibcirculation_templates.py:1819 -#: modules/bibcirculation/lib/bibcirculation_templates.py:1877 -#: modules/bibcirculation/lib/bibcirculation_templates.py:7673 -#: modules/bibcirculation/lib/bibcirculation_templates.py:8240 -#: modules/bibcirculation/lib/bibcirculation_templates.py:14050 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15528 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15686 -#: modules/bibcirculation/lib/bibcirculation_templates.py:16648 -#: modules/bibknowledge/lib/bibknowledge_templates.py:394 -msgid "Search" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:133 -msgid "Citation Metrics" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:37 -#: modules/websearch/doc/search-tips.webdoc:73 -#: modules/websearch/doc/search-tips.webdoc:119 -#: modules/websearch/doc/search-tips.webdoc:176 -#: modules/websearch/doc/search-tips.webdoc:203 -#: modules/websearch/doc/search-tips.webdoc:231 -#: modules/websearch/doc/search-tips.webdoc:286 -#: modules/websearch/doc/search-tips.webdoc:334 -#: modules/websearch/doc/search-tips.webdoc:345 -#: modules/websearch/doc/search-tips.webdoc:369 -#: modules/websearch/doc/search-tips.webdoc:393 -#: modules/websearch/doc/search-tips.webdoc:431 -#: modules/websearch/doc/search-tips.webdoc:467 -#: modules/websearch/doc/search-tips.webdoc:490 -#: modules/websearch/doc/search-tips.webdoc:512 -#: modules/websearch/doc/search-tips.webdoc:548 -#: modules/websearch/doc/search-tips.webdoc:566 -#: modules/websearch/doc/search-tips.webdoc:585 -#: modules/websearch/doc/search-tips.webdoc:620 -#: modules/websearch/doc/search-tips.webdoc:631 -#: modules/websearch/doc/search-tips.webdoc:633 -#: modules/websearch/doc/search-tips.webdoc:636 -#: modules/websearch/doc/search-tips.webdoc:638 -#: modules/websearch/doc/search-tips.webdoc:640 -#: modules/websearch/doc/search-tips.webdoc:649 -#: modules/websearch/doc/search-tips.webdoc:677 -#: modules/websearch/doc/search-tips.webdoc:700 -#: modules/websearch/doc/search-guide.webdoc:224 -#: modules/websearch/doc/search-guide.webdoc:248 -#: modules/websearch/doc/search-guide.webdoc:274 -#: modules/websearch/doc/search-guide.webdoc:299 -#: modules/websearch/doc/search-guide.webdoc:342 -#: modules/websearch/doc/search-guide.webdoc:377 -#: modules/websearch/doc/search-guide.webdoc:412 -#: modules/websearch/doc/search-guide.webdoc:474 -#: modules/websearch/doc/search-guide.webdoc:509 -#: modules/websearch/doc/search-guide.webdoc:544 -#: modules/websearch/doc/search-guide.webdoc:611 -#: modules/websearch/doc/search-guide.webdoc:646 -#: modules/websearch/doc/search-guide.webdoc:681 -#: modules/websearch/doc/search-guide.webdoc:749 -#: modules/websearch/doc/search-guide.webdoc:784 -#: modules/websearch/doc/search-guide.webdoc:819 -#: modules/websearch/doc/search-guide.webdoc:879 -#: modules/websearch/doc/search-guide.webdoc:910 -#: modules/websearch/doc/search-guide.webdoc:950 -#: modules/websearch/doc/search-guide.webdoc:984 -#: modules/websearch/doc/search-guide.webdoc:1024 -#: modules/websearch/doc/search-guide.webdoc:1046 -#: modules/websearch/doc/search-guide.webdoc:1066 -#: modules/websearch/doc/search-guide.webdoc:1082 -#: modules/websearch/doc/search-guide.webdoc:1122 -#: modules/websearch/doc/search-guide.webdoc:1145 -#: modules/websearch/doc/search-guide.webdoc:1166 -#: modules/websearch/doc/search-guide.webdoc:1181 -#: modules/websearch/doc/search-guide.webdoc:1225 -#: modules/websearch/doc/search-guide.webdoc:1250 -#: modules/websearch/doc/search-guide.webdoc:1271 -#: modules/websearch/doc/search-guide.webdoc:1287 -#: modules/websearch/doc/search-guide.webdoc:1332 -#: modules/websearch/doc/search-guide.webdoc:1355 -#: modules/websearch/doc/search-guide.webdoc:1377 -#: modules/websearch/doc/search-guide.webdoc:1393 -#: modules/websearch/doc/search-guide.webdoc:1763 -#: modules/websearch/doc/search-guide.webdoc:1777 -#: modules/websearch/doc/search-guide.webdoc:1795 -#: modules/websearch/doc/search-guide.webdoc:1814 -#: modules/websearch/doc/search-guide.webdoc:1827 -#: modules/websearch/doc/search-guide.webdoc:1845 -#: modules/websearch/doc/search-guide.webdoc:1865 -#: modules/websearch/doc/search-guide.webdoc:1880 -#: modules/websearch/doc/search-guide.webdoc:1899 -#: modules/websearch/doc/search-guide.webdoc:1922 -#: modules/websearch/doc/search-guide.webdoc:1937 -#: modules/websearch/doc/search-guide.webdoc:1956 -#: modules/websearch/doc/search-guide.webdoc:1984 -#: modules/websearch/doc/search-guide.webdoc:2022 -#: modules/websearch/doc/search-guide.webdoc:2033 -#: modules/websearch/doc/search-guide.webdoc:2047 -#: modules/websearch/doc/search-guide.webdoc:2061 -#: modules/websearch/doc/search-guide.webdoc:2074 -#: modules/websearch/doc/search-guide.webdoc:2090 -#: modules/websearch/doc/search-guide.webdoc:2101 -#: modules/websearch/doc/search-guide.webdoc:2115 -#: modules/websearch/doc/search-guide.webdoc:2129 -#: modules/websearch/doc/search-guide.webdoc:2142 -#: modules/websearch/doc/search-guide.webdoc:2158 -#: modules/websearch/doc/search-guide.webdoc:2169 -#: modules/websearch/doc/search-guide.webdoc:2183 -#: modules/websearch/doc/search-guide.webdoc:2197 -#: modules/websearch/doc/search-guide.webdoc:2210 -#: modules/websearch/doc/search-guide.webdoc:2228 -#: modules/websearch/doc/search-guide.webdoc:2239 -#: modules/websearch/doc/search-guide.webdoc:2253 -#: modules/websearch/doc/search-guide.webdoc:2267 -#: modules/websearch/doc/search-guide.webdoc:2280 -#: modules/websearch/doc/search-guide.webdoc:2309 -#: modules/websearch/doc/search-guide.webdoc:2323 -#: modules/websearch/doc/search-guide.webdoc:2340 -#: modules/websearch/doc/search-guide.webdoc:2353 -#: modules/websearch/doc/search-guide.webdoc:2370 -#: modules/websearch/doc/search-guide.webdoc:2384 -#: modules/websearch/doc/search-guide.webdoc:2402 -#: modules/websearch/doc/search-guide.webdoc:2416 -#: modules/websearch/doc/search-guide.webdoc:2447 -#: modules/websearch/doc/search-guide.webdoc:2462 -#: modules/websearch/doc/search-guide.webdoc:2476 -#: modules/websearch/doc/search-guide.webdoc:2491 -#: modules/websearch/doc/search-guide.webdoc:2519 -#: modules/websearch/doc/search-guide.webdoc:2534 -#: modules/websearch/doc/search-guide.webdoc:2548 -#: modules/websearch/doc/search-guide.webdoc:2564 -#: modules/websearch/doc/search-guide.webdoc:2596 -#: modules/websearch/doc/search-guide.webdoc:2612 -#: modules/websearch/doc/search-guide.webdoc:2626 -#: modules/websearch/doc/search-guide.webdoc:2641 -#: modules/websearch/doc/search-guide.webdoc:2672 -#: modules/websearch/doc/search-guide.webdoc:2688 -#: modules/websearch/doc/search-guide.webdoc:2702 -#: modules/websearch/doc/search-guide.webdoc:2717 -#: modules/websearch/doc/search-guide.webdoc:2759 -#: modules/websearch/doc/search-guide.webdoc:2774 -#: modules/websearch/doc/search-guide.webdoc:2788 -#: modules/websearch/doc/search-guide.webdoc:2813 -#: modules/websearch/doc/search-guide.webdoc:2828 -#: modules/websearch/doc/search-guide.webdoc:2842 -#: modules/websearch/doc/search-guide.webdoc:2871 -#: modules/websearch/doc/search-guide.webdoc:2886 -#: modules/websearch/doc/search-guide.webdoc:2900 -#: modules/websearch/doc/search-guide.webdoc:2928 -#: modules/websearch/doc/search-guide.webdoc:2943 -#: modules/websearch/doc/search-guide.webdoc:2956 -#: modules/websearch/doc/search-guide.webdoc:2991 -#: modules/websearch/doc/search-guide.webdoc:3013 -#: modules/websearch/doc/search-guide.webdoc:3037 -#: modules/websearch/doc/search-guide.webdoc:3061 -#: modules/websearch/doc/search-guide.webdoc:3085 -#: modules/websearch/doc/search-guide.webdoc:3100 -#: modules/websearch/doc/search-guide.webdoc:3116 -#: modules/websearch/doc/search-guide.webdoc:3133 -#: modules/websearch/doc/search-guide.webdoc:3153 -#: modules/websearch/doc/search-guide.webdoc:3171 -#: modules/websearch/doc/search-guide.webdoc:3189 -#: modules/websearch/doc/search-guide.webdoc:3208 -#: modules/websearch/doc/search-guide.webdoc:3229 -#: modules/websearch/doc/search-guide.webdoc:3243 -#: modules/websearch/doc/search-guide.webdoc:3263 -#: modules/websearch/doc/search-guide.webdoc:3278 -#: modules/websearch/doc/search-guide.webdoc:3297 -#: modules/websearch/doc/search-guide.webdoc:3312 -#: modules/websearch/doc/search-guide.webdoc:3332 -#: modules/websearch/doc/search-guide.webdoc:3347 -#: modules/websearch/doc/search-guide.webdoc:3409 -#: modules/websearch/doc/search-guide.webdoc:3423 -#: modules/websearch/doc/search-guide.webdoc:3440 -#: modules/websearch/doc/search-guide.webdoc:3453 -#: modules/websearch/doc/search-guide.webdoc:3471 -#: modules/websearch/doc/search-guide.webdoc:3486 -#: modules/websearch/doc/search-guide.webdoc:3504 -#: modules/websearch/doc/search-guide.webdoc:3519 -#: modules/websearch/doc/search-guide.webdoc:3544 -#: modules/websearch/doc/search-guide.webdoc:3557 -#: modules/websearch/doc/search-guide.webdoc:3570 -#: modules/websearch/doc/search-guide.webdoc:3586 -#: modules/websearch/doc/search-guide.webdoc:3602 -#: modules/websearch/doc/search-guide.webdoc:3619 -#: modules/websearch/doc/search-guide.webdoc:3652 -#: modules/websearch/doc/search-guide.webdoc:3668 -#: modules/websearch/doc/search-guide.webdoc:3685 -#: modules/websearch/doc/search-guide.webdoc:3705 -#: modules/websearch/doc/search-guide.webdoc:3719 -#: modules/websearch/doc/search-guide.webdoc:3737 -#: modules/websearch/doc/search-guide.webdoc:3758 -#: modules/websearch/doc/search-guide.webdoc:3777 -#: modules/websearch/doc/search-guide.webdoc:3795 -#: modules/websearch/doc/search-guide.webdoc:3817 -#: modules/websearch/doc/search-guide.webdoc:3836 -#: modules/websearch/doc/search-guide.webdoc:3853 -#: modules/websearch/doc/search-guide.webdoc:3974 -#: modules/websearch/doc/search-guide.webdoc:3999 -#: modules/websearch/doc/search-guide.webdoc:4022 -#: modules/websearch/doc/search-guide.webdoc:4048 -#: modules/websearch/doc/search-guide.webdoc:4072 -#: modules/websearch/doc/search-guide.webdoc:4099 -#: modules/websearch/doc/search-guide.webdoc:4124 -#: modules/websearch/doc/search-guide.webdoc:4150 -#: modules/websearch/doc/search-guide.webdoc:4179 -#: modules/websearch/doc/search-guide.webdoc:4199 -#: modules/websearch/doc/search-guide.webdoc:4223 -#: modules/websearch/doc/search-guide.webdoc:4250 -#: modules/websearch/doc/search-guide.webdoc:4290 -#: modules/websearch/doc/search-guide.webdoc:4311 -#: modules/websearch/doc/search-guide.webdoc:4335 -#: modules/websearch/doc/search-guide.webdoc:4365 -#: modules/websearch/doc/search-guide.webdoc:4409 -#: modules/websearch/doc/search-guide.webdoc:4431 -#: modules/websearch/doc/search-guide.webdoc:4456 -#: modules/websearch/doc/search-guide.webdoc:4486 -#: modules/websearch/doc/search-guide.webdoc:4531 -#: modules/websearch/doc/search-guide.webdoc:4552 -#: modules/websearch/doc/search-guide.webdoc:4577 -#: modules/websearch/doc/search-guide.webdoc:4607 -#: modules/websearch/doc/search-guide.webdoc:4899 -#: modules/websearch/doc/search-guide.webdoc:4915 -#: modules/websearch/doc/search-guide.webdoc:4935 -#: modules/websearch/doc/search-guide.webdoc:4954 -#: modules/websearch/doc/search-guide.webdoc:4975 -#: modules/websearch/doc/search-guide.webdoc:4993 -#: modules/websearch/doc/search-guide.webdoc:5014 -#: modules/websearch/doc/search-guide.webdoc:5032 -#: modules/websearch/doc/search-guide.webdoc:5065 -#: modules/websearch/doc/search-guide.webdoc:5079 -#: modules/websearch/doc/search-guide.webdoc:5094 -#: modules/websearch/doc/search-guide.webdoc:5110 -#: modules/websearch/doc/search-guide.webdoc:5129 -#: modules/websearch/doc/search-guide.webdoc:5143 -#: modules/websearch/doc/search-guide.webdoc:5159 -#: modules/websearch/doc/search-guide.webdoc:5177 -#: modules/websearch/doc/search-guide.webdoc:5196 -#: modules/websearch/doc/search-guide.webdoc:5211 -#: modules/websearch/doc/search-guide.webdoc:5226 -#: modules/websearch/doc/search-guide.webdoc:5244 -#: modules/websearch/doc/search-guide.webdoc:5264 -#: modules/websearch/doc/search-guide.webdoc:5279 -#: modules/websearch/doc/search-guide.webdoc:5294 -#: modules/websearch/doc/search-guide.webdoc:5314 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:129 -#: modules/miscutil/lib/inveniocfg.py:453 -msgid "any field" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:20 -#: modules/webhelp/web/help-central.webdoc:25 -#: modules/webhelp/web/help-central.webdoc:26 -#: modules/webhelp/web/help-central.webdoc:27 -#: modules/webhelp/web/help-central.webdoc:28 -#: modules/webhelp/web/help-central.webdoc:29 -#: modules/webhelp/web/help-central.webdoc:30 -#: modules/webhelp/web/help-central.webdoc:31 -#: modules/webhelp/web/help-central.webdoc:32 -#: modules/webhelp/web/help-central.webdoc:33 -#: modules/webhelp/web/help-central.webdoc:34 -#: modules/webhelp/web/help-central.webdoc:35 -#: modules/webhelp/web/help-central.webdoc:36 -#: modules/webhelp/web/help-central.webdoc:37 -#: modules/webhelp/web/help-central.webdoc:38 -#: modules/webhelp/web/help-central.webdoc:39 -#: modules/webhelp/web/help-central.webdoc:40 -#: modules/webhelp/web/help-central.webdoc:41 -#: modules/webhelp/web/help-central.webdoc:42 -#: modules/webhelp/web/help-central.webdoc:43 -#: modules/webhelp/web/help-central.webdoc:44 -#: modules/webhelp/web/help-central.webdoc:45 -#: modules/websearch/doc/search-tips.webdoc:21 -#: modules/websearch/doc/search-guide.webdoc:21 -#: modules/websubmit/doc/submit-guide.webdoc:21 -#: modules/webstyle/lib/webdoc_tests.py:105 -#: modules/webstyle/lib/webdoc_webinterface.py:155 -msgid "Help Central" -msgstr "" - -#: modules/bibformat/etc/format_templates/Default_HTML_actions.bft:6 -msgid "Export as" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:345 -#: modules/websearch/doc/search-guide.webdoc:380 -#: modules/websearch/doc/search-guide.webdoc:415 -#: modules/websearch/doc/search-guide.webdoc:477 -#: modules/websearch/doc/search-guide.webdoc:512 -#: modules/websearch/doc/search-guide.webdoc:547 -#: modules/websearch/doc/search-guide.webdoc:614 -#: modules/websearch/doc/search-guide.webdoc:649 -#: modules/websearch/doc/search-guide.webdoc:684 -#: modules/websearch/doc/search-guide.webdoc:752 -#: modules/websearch/doc/search-guide.webdoc:787 -#: modules/websearch/doc/search-guide.webdoc:822 -#: modules/miscutil/lib/inveniocfg.py:462 -msgid "collection" -msgstr "" - -#: modules/websearch/doc/admin/websearch-admin-guide.webdoc:20 -msgid "WebSearch Admin Guide" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:335 -#: modules/websearch/doc/search-guide.webdoc:371 -#: modules/websearch/doc/search-guide.webdoc:406 -#: modules/websearch/doc/search-guide.webdoc:467 -#: modules/websearch/doc/search-guide.webdoc:503 -#: modules/websearch/doc/search-guide.webdoc:538 -#: modules/websearch/doc/search-guide.webdoc:604 -#: modules/websearch/doc/search-guide.webdoc:640 -#: modules/websearch/doc/search-guide.webdoc:675 -#: modules/websearch/doc/search-guide.webdoc:742 -#: modules/websearch/doc/search-guide.webdoc:778 -#: modules/websearch/doc/search-guide.webdoc:813 -#: modules/websearch/lib/search_engine.py:1136 -#: modules/websearch/lib/websearch_templates.py:1115 -msgid "Exact phrase:" -msgstr "" - -#: modules/webhelp/web/help-central.webdoc:108 -#: modules/websubmit/doc/submit-guide.webdoc:20 -msgid "Submit Guide" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:360 -#: modules/websearch/doc/search-guide.webdoc:395 -#: modules/websearch/doc/search-guide.webdoc:492 -#: modules/websearch/doc/search-guide.webdoc:527 -#: modules/websearch/doc/search-guide.webdoc:629 -#: modules/websearch/doc/search-guide.webdoc:664 -#: modules/websearch/doc/search-guide.webdoc:767 -#: modules/websearch/doc/search-guide.webdoc:802 -#: modules/websearch/lib/search_engine.py:960 -#: modules/websearch/lib/search_engine.py:1115 -#: modules/websearch/lib/websearch_templates.py:1162 -#: modules/websearch/lib/websearch_webcoll.py:591 -msgid "OR" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:359 -#: modules/websearch/doc/search-guide.webdoc:394 -#: modules/websearch/doc/search-guide.webdoc:491 -#: modules/websearch/doc/search-guide.webdoc:526 -#: modules/websearch/doc/search-guide.webdoc:628 -#: modules/websearch/doc/search-guide.webdoc:663 -#: modules/websearch/doc/search-guide.webdoc:766 -#: modules/websearch/doc/search-guide.webdoc:801 -#: modules/websearch/lib/search_engine.py:1114 -#: modules/websearch/lib/websearch_templates.py:1161 -msgid "AND" -msgstr "" - -#: modules/websearch/doc/search-guide.webdoc:349 -#: modules/websearch/doc/search-guide.webdoc:384 -#: modules/websearch/doc/search-guide.webdoc:419 -#: modules/websearch/doc/search-guide.webdoc:481 -#: modules/websearch/doc/search-guide.webdoc:516 -#: modules/websearch/doc/search-guide.webdoc:551 -#: modules/websearch/doc/search-guide.webdoc:618 -#: modules/websearch/doc/search-guide.webdoc:653 -#: modules/websearch/doc/search-guide.webdoc:688 -#: modules/websearch/doc/search-guide.webdoc:756 -#: modules/websearch/doc/search-guide.webdoc:791 -#: modules/websearch/doc/search-guide.webdoc:826 -#: modules/miscutil/lib/inveniocfg.py:457 -msgid "keyword" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:38 -#: modules/websearch/doc/search-tips.webdoc:74 -#: modules/websearch/doc/search-tips.webdoc:120 -#: modules/websearch/doc/search-tips.webdoc:177 -#: modules/websearch/doc/search-tips.webdoc:204 -#: modules/websearch/doc/search-tips.webdoc:232 -#: modules/websearch/doc/search-tips.webdoc:287 -#: modules/websearch/doc/search-tips.webdoc:335 -#: modules/websearch/doc/search-tips.webdoc:346 -#: modules/websearch/doc/search-tips.webdoc:370 -#: modules/websearch/doc/search-tips.webdoc:394 -#: modules/websearch/doc/search-tips.webdoc:432 -#: modules/websearch/doc/search-tips.webdoc:468 -#: modules/websearch/doc/search-tips.webdoc:491 -#: modules/websearch/doc/search-tips.webdoc:513 -#: modules/websearch/doc/search-tips.webdoc:549 -#: modules/websearch/doc/search-tips.webdoc:567 -#: modules/websearch/doc/search-tips.webdoc:586 -#: modules/websearch/doc/search-tips.webdoc:621 -#: modules/websearch/doc/search-tips.webdoc:650 -#: modules/websearch/doc/search-tips.webdoc:678 -#: modules/websearch/doc/search-tips.webdoc:701 -#: modules/websearch/doc/search-guide.webdoc:225 -#: modules/websearch/doc/search-guide.webdoc:249 -#: modules/websearch/doc/search-guide.webdoc:275 -#: modules/websearch/doc/search-guide.webdoc:300 -#: modules/websearch/doc/search-guide.webdoc:353 -#: modules/websearch/doc/search-guide.webdoc:388 -#: modules/websearch/doc/search-guide.webdoc:423 -#: modules/websearch/doc/search-guide.webdoc:485 -#: modules/websearch/doc/search-guide.webdoc:520 -#: modules/websearch/doc/search-guide.webdoc:555 -#: modules/websearch/doc/search-guide.webdoc:622 -#: modules/websearch/doc/search-guide.webdoc:657 -#: modules/websearch/doc/search-guide.webdoc:692 -#: modules/websearch/doc/search-guide.webdoc:760 -#: modules/websearch/doc/search-guide.webdoc:795 -#: modules/websearch/doc/search-guide.webdoc:830 -#: modules/websearch/doc/search-guide.webdoc:880 -#: modules/websearch/doc/search-guide.webdoc:911 -#: modules/websearch/doc/search-guide.webdoc:951 -#: modules/websearch/doc/search-guide.webdoc:985 -#: modules/websearch/doc/search-guide.webdoc:1025 -#: modules/websearch/doc/search-guide.webdoc:1047 -#: modules/websearch/doc/search-guide.webdoc:1067 -#: modules/websearch/doc/search-guide.webdoc:1083 -#: modules/websearch/doc/search-guide.webdoc:1123 -#: modules/websearch/doc/search-guide.webdoc:1146 -#: modules/websearch/doc/search-guide.webdoc:1167 -#: modules/websearch/doc/search-guide.webdoc:1182 -#: modules/websearch/doc/search-guide.webdoc:1226 -#: modules/websearch/doc/search-guide.webdoc:1251 -#: modules/websearch/doc/search-guide.webdoc:1272 -#: modules/websearch/doc/search-guide.webdoc:1288 -#: modules/websearch/doc/search-guide.webdoc:1333 -#: modules/websearch/doc/search-guide.webdoc:1356 -#: modules/websearch/doc/search-guide.webdoc:1378 -#: modules/websearch/doc/search-guide.webdoc:1394 -#: modules/websearch/doc/search-guide.webdoc:1764 -#: modules/websearch/doc/search-guide.webdoc:1778 -#: modules/websearch/doc/search-guide.webdoc:1796 -#: modules/websearch/doc/search-guide.webdoc:1815 -#: modules/websearch/doc/search-guide.webdoc:1828 -#: modules/websearch/doc/search-guide.webdoc:1846 -#: modules/websearch/doc/search-guide.webdoc:1866 -#: modules/websearch/doc/search-guide.webdoc:1881 -#: modules/websearch/doc/search-guide.webdoc:1900 -#: modules/websearch/doc/search-guide.webdoc:1923 -#: modules/websearch/doc/search-guide.webdoc:1938 -#: modules/websearch/doc/search-guide.webdoc:1957 -#: modules/websearch/doc/search-guide.webdoc:1985 -#: modules/websearch/doc/search-guide.webdoc:2023 -#: modules/websearch/doc/search-guide.webdoc:2034 -#: modules/websearch/doc/search-guide.webdoc:2048 -#: modules/websearch/doc/search-guide.webdoc:2062 -#: modules/websearch/doc/search-guide.webdoc:2075 -#: modules/websearch/doc/search-guide.webdoc:2091 -#: modules/websearch/doc/search-guide.webdoc:2102 -#: modules/websearch/doc/search-guide.webdoc:2116 -#: modules/websearch/doc/search-guide.webdoc:2130 -#: modules/websearch/doc/search-guide.webdoc:2143 -#: modules/websearch/doc/search-guide.webdoc:2159 -#: modules/websearch/doc/search-guide.webdoc:2170 -#: modules/websearch/doc/search-guide.webdoc:2184 -#: modules/websearch/doc/search-guide.webdoc:2198 -#: modules/websearch/doc/search-guide.webdoc:2211 -#: modules/websearch/doc/search-guide.webdoc:2229 -#: modules/websearch/doc/search-guide.webdoc:2240 -#: modules/websearch/doc/search-guide.webdoc:2254 -#: modules/websearch/doc/search-guide.webdoc:2268 -#: modules/websearch/doc/search-guide.webdoc:2281 -#: modules/websearch/doc/search-guide.webdoc:2310 -#: modules/websearch/doc/search-guide.webdoc:2324 -#: modules/websearch/doc/search-guide.webdoc:2341 -#: modules/websearch/doc/search-guide.webdoc:2354 -#: modules/websearch/doc/search-guide.webdoc:2371 -#: modules/websearch/doc/search-guide.webdoc:2385 -#: modules/websearch/doc/search-guide.webdoc:2403 -#: modules/websearch/doc/search-guide.webdoc:2417 -#: modules/websearch/doc/search-guide.webdoc:2448 -#: modules/websearch/doc/search-guide.webdoc:2463 -#: modules/websearch/doc/search-guide.webdoc:2477 -#: modules/websearch/doc/search-guide.webdoc:2492 -#: modules/websearch/doc/search-guide.webdoc:2520 -#: modules/websearch/doc/search-guide.webdoc:2535 -#: modules/websearch/doc/search-guide.webdoc:2549 -#: modules/websearch/doc/search-guide.webdoc:2565 -#: modules/websearch/doc/search-guide.webdoc:2597 -#: modules/websearch/doc/search-guide.webdoc:2613 -#: modules/websearch/doc/search-guide.webdoc:2627 -#: modules/websearch/doc/search-guide.webdoc:2642 -#: modules/websearch/doc/search-guide.webdoc:2673 -#: modules/websearch/doc/search-guide.webdoc:2689 -#: modules/websearch/doc/search-guide.webdoc:2703 -#: modules/websearch/doc/search-guide.webdoc:2718 -#: modules/websearch/doc/search-guide.webdoc:2760 -#: modules/websearch/doc/search-guide.webdoc:2775 -#: modules/websearch/doc/search-guide.webdoc:2789 -#: modules/websearch/doc/search-guide.webdoc:2814 -#: modules/websearch/doc/search-guide.webdoc:2829 -#: modules/websearch/doc/search-guide.webdoc:2843 -#: modules/websearch/doc/search-guide.webdoc:2872 -#: modules/websearch/doc/search-guide.webdoc:2887 -#: modules/websearch/doc/search-guide.webdoc:2901 -#: modules/websearch/doc/search-guide.webdoc:2929 -#: modules/websearch/doc/search-guide.webdoc:2944 -#: modules/websearch/doc/search-guide.webdoc:2957 -#: modules/websearch/doc/search-guide.webdoc:2992 -#: modules/websearch/doc/search-guide.webdoc:3014 -#: modules/websearch/doc/search-guide.webdoc:3038 -#: modules/websearch/doc/search-guide.webdoc:3062 -#: modules/websearch/doc/search-guide.webdoc:3086 -#: modules/websearch/doc/search-guide.webdoc:3101 -#: modules/websearch/doc/search-guide.webdoc:3117 -#: modules/websearch/doc/search-guide.webdoc:3134 -#: modules/websearch/doc/search-guide.webdoc:3154 -#: modules/websearch/doc/search-guide.webdoc:3172 -#: modules/websearch/doc/search-guide.webdoc:3190 -#: modules/websearch/doc/search-guide.webdoc:3209 -#: modules/websearch/doc/search-guide.webdoc:3230 -#: modules/websearch/doc/search-guide.webdoc:3244 -#: modules/websearch/doc/search-guide.webdoc:3264 -#: modules/websearch/doc/search-guide.webdoc:3279 -#: modules/websearch/doc/search-guide.webdoc:3298 -#: modules/websearch/doc/search-guide.webdoc:3313 -#: modules/websearch/doc/search-guide.webdoc:3333 -#: modules/websearch/doc/search-guide.webdoc:3348 -#: modules/websearch/doc/search-guide.webdoc:3410 -#: modules/websearch/doc/search-guide.webdoc:3424 -#: modules/websearch/doc/search-guide.webdoc:3441 -#: modules/websearch/doc/search-guide.webdoc:3454 -#: modules/websearch/doc/search-guide.webdoc:3472 -#: modules/websearch/doc/search-guide.webdoc:3487 -#: modules/websearch/doc/search-guide.webdoc:3505 -#: modules/websearch/doc/search-guide.webdoc:3520 -#: modules/websearch/doc/search-guide.webdoc:3545 -#: modules/websearch/doc/search-guide.webdoc:3558 -#: modules/websearch/doc/search-guide.webdoc:3571 -#: modules/websearch/doc/search-guide.webdoc:3587 -#: modules/websearch/doc/search-guide.webdoc:3603 -#: modules/websearch/doc/search-guide.webdoc:3620 -#: modules/websearch/doc/search-guide.webdoc:3653 -#: modules/websearch/doc/search-guide.webdoc:3669 -#: modules/websearch/doc/search-guide.webdoc:3686 -#: modules/websearch/doc/search-guide.webdoc:3706 -#: modules/websearch/doc/search-guide.webdoc:3720 -#: modules/websearch/doc/search-guide.webdoc:3738 -#: modules/websearch/doc/search-guide.webdoc:3759 -#: modules/websearch/doc/search-guide.webdoc:3778 -#: modules/websearch/doc/search-guide.webdoc:3796 -#: modules/websearch/doc/search-guide.webdoc:3818 -#: modules/websearch/doc/search-guide.webdoc:3837 -#: modules/websearch/doc/search-guide.webdoc:3854 -#: modules/websearch/doc/search-guide.webdoc:3975 -#: modules/websearch/doc/search-guide.webdoc:4000 -#: modules/websearch/doc/search-guide.webdoc:4023 -#: modules/websearch/doc/search-guide.webdoc:4049 -#: modules/websearch/doc/search-guide.webdoc:4073 -#: modules/websearch/doc/search-guide.webdoc:4100 -#: modules/websearch/doc/search-guide.webdoc:4125 -#: modules/websearch/doc/search-guide.webdoc:4151 -#: modules/websearch/doc/search-guide.webdoc:4180 -#: modules/websearch/doc/search-guide.webdoc:4200 -#: modules/websearch/doc/search-guide.webdoc:4224 -#: modules/websearch/doc/search-guide.webdoc:4251 -#: modules/websearch/doc/search-guide.webdoc:4291 -#: modules/websearch/doc/search-guide.webdoc:4312 -#: modules/websearch/doc/search-guide.webdoc:4336 -#: modules/websearch/doc/search-guide.webdoc:4366 -#: modules/websearch/doc/search-guide.webdoc:4410 -#: modules/websearch/doc/search-guide.webdoc:4432 -#: modules/websearch/doc/search-guide.webdoc:4457 -#: modules/websearch/doc/search-guide.webdoc:4487 -#: modules/websearch/doc/search-guide.webdoc:4532 -#: modules/websearch/doc/search-guide.webdoc:4553 -#: modules/websearch/doc/search-guide.webdoc:4578 -#: modules/websearch/doc/search-guide.webdoc:4608 -#: modules/websearch/doc/search-guide.webdoc:4900 -#: modules/websearch/doc/search-guide.webdoc:4916 -#: modules/websearch/doc/search-guide.webdoc:4936 -#: modules/websearch/doc/search-guide.webdoc:4955 -#: modules/websearch/doc/search-guide.webdoc:4976 -#: modules/websearch/doc/search-guide.webdoc:4994 -#: modules/websearch/doc/search-guide.webdoc:5015 -#: modules/websearch/doc/search-guide.webdoc:5033 -#: modules/websearch/doc/search-guide.webdoc:5066 -#: modules/websearch/doc/search-guide.webdoc:5080 -#: modules/websearch/doc/search-guide.webdoc:5095 -#: modules/websearch/doc/search-guide.webdoc:5111 -#: modules/websearch/doc/search-guide.webdoc:5130 -#: modules/websearch/doc/search-guide.webdoc:5144 -#: modules/websearch/doc/search-guide.webdoc:5160 -#: modules/websearch/doc/search-guide.webdoc:5178 -#: modules/websearch/doc/search-guide.webdoc:5197 -#: modules/websearch/doc/search-guide.webdoc:5212 -#: modules/websearch/doc/search-guide.webdoc:5227 -#: modules/websearch/doc/search-guide.webdoc:5245 -#: modules/websearch/doc/search-guide.webdoc:5265 -#: modules/websearch/doc/search-guide.webdoc:5280 -#: modules/websearch/doc/search-guide.webdoc:5295 -#: modules/websearch/doc/search-guide.webdoc:5315 -#: modules/webstyle/doc/hacking/webstyle-webdoc-syntax.webdoc:130 -#: modules/miscutil/lib/inveniocfg.py:454 -msgid "title" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:79 -#: modules/websearch/doc/search-tips.webdoc:125 -#: modules/websearch/lib/websearch_templates.py:1275 -msgid "Narrow by collection:" -msgstr "" - -#: modules/bibformat/etc/format_templates/Default_HTML_actions.bft:5 -msgid "Add to personal basket" -msgstr "" - -#: modules/websubmit/doc/admin/websubmit-admin-guide.webdoc:20 -msgid "WebSubmit Admin Guide" -msgstr "" - -#: modules/websearch/doc/search-tips.webdoc:340 -#: modules/websubmit/lib/websubmit_templates.py:1118 -#: modules/bibharvest/lib/oai_harvest_admin.py:409 -#: modules/bibharvest/lib/oai_harvest_admin.py:417 -#: modules/bibharvest/lib/oai_harvest_admin.py:431 -#: modules/bibharvest/lib/oai_harvest_admin.py:446 -msgid "or" -msgstr "" - #: modules/bibedit/lib/bibedit_templates.py:266 +#: modules/bibedit/lib/bibedit_templates_epfl.py:105 msgid "Comparison of:" msgstr "" #: modules/bibedit/lib/bibedit_templates.py:267 +#: modules/bibedit/lib/bibedit_templates_epfl.py:106 msgid "Revision" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:315 #: modules/bibformat/lib/bibformat_templates.py:427 #: modules/bibformat/lib/bibformat_templates.py:574 #: modules/bibformat/lib/bibformat_templates.py:590 #: modules/bibformat/lib/bibformat_templates.py:621 #: modules/bibformat/lib/bibformat_templates.py:931 #: modules/bibformat/lib/bibformat_templates.py:1063 #: modules/bibformat/lib/bibformat_templates.py:1379 #: modules/bibformat/lib/bibformat_templates.py:1483 #: modules/bibformat/lib/bibformat_templates.py:1542 #: modules/webcomment/lib/webcomment_templates.py:1415 #: modules/webjournal/lib/webjournal_templates.py:164 #: modules/webjournal/lib/webjournal_templates.py:535 #: modules/webjournal/lib/webjournal_templates.py:676 #: modules/bibknowledge/lib/bibknowledge_templates.py:299 #: modules/bibknowledge/lib/bibknowledge_templates.py:556 #: modules/bibknowledge/lib/bibknowledge_templates.py:624 msgid "Menu" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:317 #: modules/bibformat/lib/bibformat_templates.py:428 #: modules/bibformat/lib/bibformat_templates.py:577 #: modules/bibformat/lib/bibformat_templates.py:593 #: modules/bibformat/lib/bibformat_templates.py:624 #: modules/bibknowledge/lib/bibknowledge_templates.py:295 #: modules/bibknowledge/lib/bibknowledge_templates.py:555 #: modules/bibknowledge/lib/bibknowledge_templates.py:623 msgid "Close Editor" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:318 #: modules/bibformat/lib/bibformat_templates.py:429 #: modules/bibformat/lib/bibformat_templates.py:578 #: modules/bibformat/lib/bibformat_templates.py:594 #: modules/bibformat/lib/bibformat_templates.py:625 msgid "Modify Template Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:319 #: modules/bibformat/lib/bibformat_templates.py:430 #: modules/bibformat/lib/bibformat_templates.py:579 #: modules/bibformat/lib/bibformat_templates.py:595 #: modules/bibformat/lib/bibformat_templates.py:626 msgid "Template Editor" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:320 #: modules/bibformat/lib/bibformat_templates.py:431 #: modules/bibformat/lib/bibformat_templates.py:580 #: modules/bibformat/lib/bibformat_templates.py:596 #: modules/bibformat/lib/bibformat_templates.py:627 #: modules/bibformat/lib/bibformat_templates.py:1178 #: modules/bibformat/lib/bibformat_templates.py:1378 #: modules/bibformat/lib/bibformat_templates.py:1482 msgid "Check Dependencies" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:370 #: modules/bibformat/lib/bibformat_templates.py:929 #: modules/bibformat/lib/bibformat_templates.py:1054 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/webalert/lib/webalert_templates.py:318 #: modules/websubmit/lib/websubmit_managedocfiles.py:370 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:194 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:255 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:345 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:398 #: modules/bibcirculation/lib/bibcirculation_utils.py:340 #: modules/bibcirculation/lib/bibcirculation_templates.py:1072 #: modules/bibcirculation/lib/bibcirculation_templates.py:1258 #: modules/bibcirculation/lib/bibcirculation_templates.py:1423 #: modules/bibcirculation/lib/bibcirculation_templates.py:1668 #: modules/bibcirculation/lib/bibcirculation_templates.py:2184 #: modules/bibcirculation/lib/bibcirculation_templates.py:2270 #: modules/bibcirculation/lib/bibcirculation_templates.py:2476 #: modules/bibcirculation/lib/bibcirculation_templates.py:2481 #: modules/bibcirculation/lib/bibcirculation_templates.py:2824 #: modules/bibcirculation/lib/bibcirculation_templates.py:3516 #: modules/bibcirculation/lib/bibcirculation_templates.py:3645 #: modules/bibcirculation/lib/bibcirculation_templates.py:4831 #: modules/bibcirculation/lib/bibcirculation_templates.py:5358 #: modules/bibcirculation/lib/bibcirculation_templates.py:5402 #: modules/bibcirculation/lib/bibcirculation_templates.py:5662 #: modules/bibcirculation/lib/bibcirculation_templates.py:5724 #: modules/bibcirculation/lib/bibcirculation_templates.py:5842 #: modules/bibcirculation/lib/bibcirculation_templates.py:5904 #: modules/bibcirculation/lib/bibcirculation_templates.py:6136 #: modules/bibcirculation/lib/bibcirculation_templates.py:6199 #: modules/bibcirculation/lib/bibcirculation_templates.py:6544 #: modules/bibcirculation/lib/bibcirculation_templates.py:7002 #: modules/bibcirculation/lib/bibcirculation_templates.py:7153 #: modules/bibcirculation/lib/bibcirculation_templates.py:8085 #: modules/bibcirculation/lib/bibcirculation_templates.py:8313 #: modules/bibcirculation/lib/bibcirculation_templates.py:8631 #: modules/bibcirculation/lib/bibcirculation_templates.py:8864 #: modules/bibcirculation/lib/bibcirculation_templates.py:8909 #: modules/bibcirculation/lib/bibcirculation_templates.py:9098 #: modules/bibcirculation/lib/bibcirculation_templates.py:9323 #: modules/bibcirculation/lib/bibcirculation_templates.py:9367 #: modules/bibcirculation/lib/bibcirculation_templates.py:9526 #: modules/bibcirculation/lib/bibcirculation_templates.py:9740 #: modules/bibcirculation/lib/bibcirculation_templates.py:10139 #: modules/bibcirculation/lib/bibcirculation_templates.py:10336 #: modules/bibcirculation/lib/bibcirculation_templates.py:10439 #: modules/bibcirculation/lib/bibcirculation_templates.py:10593 #: modules/bibcirculation/lib/bibcirculation_templates.py:10605 #: modules/bibcirculation/lib/bibcirculation_templates.py:10735 #: modules/bibcirculation/lib/bibcirculation_templates.py:11270 #: modules/bibcirculation/lib/bibcirculation_templates.py:11488 #: modules/bibcirculation/lib/bibcirculation_templates.py:12242 #: modules/bibcirculation/lib/bibcirculation_templates.py:12314 #: modules/bibcirculation/lib/bibcirculation_templates.py:12380 #: modules/bibcirculation/lib/bibcirculation_templates.py:13098 #: modules/bibcirculation/lib/bibcirculation_templates.py:13375 #: modules/bibcirculation/lib/bibcirculation_templates.py:13576 #: modules/bibcirculation/lib/bibcirculation_templates.py:13642 #: modules/bibcirculation/lib/bibcirculation_templates.py:13885 #: modules/bibcirculation/lib/bibcirculation_templates.py:13952 #: modules/bibcirculation/lib/bibcirculation_templates.py:14194 #: modules/bibcirculation/lib/bibcirculation_templates.py:14596 #: modules/bibcirculation/lib/bibcirculation_templates.py:14845 #: modules/bibcirculation/lib/bibcirculation_templates.py:14894 #: modules/bibcirculation/lib/bibcirculation_templates.py:15355 #: modules/bibcirculation/lib/bibcirculation_templates.py:16088 #: modules/bibcirculation/lib/bibcirculation_templates.py:16101 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:447 +#: modules/webalert/lib/webalert_templates_epfl.py:302 msgid "Name" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:389 #: modules/bibformat/lib/bibformat_templates.py:930 #: modules/bibformat/lib/bibformat_templates.py:1055 #: modules/webbasket/lib/webbasket_templates.py:1247 #: modules/websession/lib/websession_templates.py:1525 #: modules/websession/lib/websession_templates.py:1599 #: modules/websession/lib/websession_templates.py:1662 #: modules/websubmit/lib/websubmit_managedocfiles.py:372 #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:2868 #: modules/bibcirculation/lib/bibcirculation_templates.py:5242 #: modules/bibcirculation/lib/bibcirculation_templates.py:6580 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6774 #: modules/bibcirculation/lib/bibcirculation_templates.py:7034 #: modules/bibcirculation/lib/bibcirculation_templates.py:7428 #: modules/bibcirculation/lib/bibcirculation_templates.py:7576 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:451 msgid "Description" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:390 msgid "Update Format Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:575 #: modules/bibformat/lib/bibformat_templates.py:591 #: modules/bibformat/lib/bibformat_templates.py:622 msgid "Show Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:576 #: modules/bibformat/lib/bibformat_templates.py:592 #: modules/bibformat/lib/bibformat_templates.py:623 #: modules/bibformat/lib/bibformat_templates.py:674 msgid "Hide Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:583 #: modules/websubmit/lib/websubmit_templates.py:867 msgid "Your modifications will not be saved." msgstr "" #: modules/bibformat/lib/bibformat_templates.py:932 #: modules/bibformat/lib/bibformat_templates.py:1056 #: modules/bibupload/lib/batchuploader_templates.py:221 #: modules/bibupload/lib/batchuploader_templates.py:263 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/websubmit/lib/websubmit_templates.py:1484 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:536 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:633 #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:630 #: modules/bibcirculation/lib/bibcirculation_templates.py:2588 #: modules/bibcirculation/lib/bibcirculation_templates.py:2696 #: modules/bibcirculation/lib/bibcirculation_templates.py:2861 #: modules/bibcirculation/lib/bibcirculation_templates.py:6573 #: modules/bibcirculation/lib/bibcirculation_templates.py:6704 #: modules/bibcirculation/lib/bibcirculation_templates.py:6776 #: modules/bibcirculation/lib/bibcirculation_templates.py:7028 #: modules/bibcirculation/lib/bibcirculation_templates.py:7458 #: modules/bibcirculation/lib/bibcirculation_templates.py:7578 #: modules/bibcirculation/lib/bibcirculation_templates.py:8375 #: modules/bibcirculation/lib/bibcirculation_templates.py:9625 #: modules/bibcirculation/lib/bibcirculation_templates.py:9809 #: modules/bibcirculation/lib/bibcirculation_templates.py:9904 #: modules/bibcirculation/lib/bibcirculation_templates.py:11073 #: modules/bibcirculation/lib/bibcirculation_templates.py:11530 #: modules/bibcirculation/lib/bibcirculation_templates.py:11559 #: modules/bibcirculation/lib/bibcirculation_templates.py:11615 #: modules/bibcirculation/lib/bibcirculation_templates.py:11647 #: modules/bibcirculation/lib/bibcirculation_templates.py:11789 #: modules/bibcirculation/lib/bibcirculation_templates.py:11963 #: modules/bibcirculation/lib/bibcirculation_templates.py:12079 #: modules/bibcirculation/lib/bibcirculation_templates.py:12415 #: modules/bibcirculation/lib/bibcirculation_templates.py:12505 #: modules/bibcirculation/lib/bibcirculation_templates.py:12599 #: modules/bibcirculation/lib/bibcirculation_templates.py:12702 #: modules/bibcirculation/lib/bibcirculation_templates.py:12805 #: modules/bibcirculation/lib/bibcirculation_templates.py:12911 #: modules/bibcirculation/lib/bibcirculation_templates.py:13174 #: modules/bibcirculation/lib/bibcirculation_templates.py:13417 #: modules/bibcirculation/lib/bibcirculation_templates.py:15103 msgid "Status" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:933 #: modules/bibformat/lib/bibformat_templates.py:1057 msgid "Last Modification Date" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:934 #: modules/bibformat/lib/bibformat_templates.py:1058 #: modules/webalert/lib/webalert_templates.py:325 #: modules/webalert/lib/webalert_templates.py:462 #: modules/webmessage/lib/webmessage_templates.py:89 #: modules/websubmit/lib/websubmit_templates.py:1483 +#: modules/webalert/lib/webalert_templates_epfl.py:309 +#: modules/webalert/lib/webalert_templates_epfl.py:453 msgid "Action" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:936 #: modules/bibformat/lib/bibformat_templates.py:1060 #: modules/bibformat/lib/bibformat_templates.py:1543 #: modules/bibformat/web/admin/bibformatadmin.py:99 #: modules/bibformat/web/admin/bibformatadmin.py:160 #: modules/bibformat/web/admin/bibformatadmin.py:231 #: modules/bibformat/web/admin/bibformatadmin.py:276 #: modules/bibformat/web/admin/bibformatadmin.py:367 #: modules/bibformat/web/admin/bibformatadmin.py:942 msgid "Manage Output Formats" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:937 #: modules/bibformat/lib/bibformat_templates.py:1061 #: modules/bibformat/lib/bibformat_templates.py:1544 #: modules/bibformat/web/admin/bibformatadmin.py:441 #: modules/bibformat/web/admin/bibformatadmin.py:474 #: modules/bibformat/web/admin/bibformatadmin.py:545 #: modules/bibformat/web/admin/bibformatadmin.py:590 #: modules/bibformat/web/admin/bibformatadmin.py:656 #: modules/bibformat/web/admin/bibformatadmin.py:963 msgid "Manage Format Templates" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:938 #: modules/bibformat/lib/bibformat_templates.py:1062 #: modules/bibformat/lib/bibformat_templates.py:1545 #: modules/bibformat/web/admin/bibformatadmin.py:837 #: modules/bibformat/web/admin/bibformatadmin.py:858 #: modules/bibformat/web/admin/bibformatadmin.py:891 #: modules/bibformat/web/admin/bibformatadmin.py:981 msgid "Format Elements Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:990 #: modules/bibformat/web/admin/bibformatadmin.py:388 #: modules/bibformat/web/admin/bibformatadmin.py:390 #: modules/bibformat/web/admin/bibformatadmin.py:676 #: modules/bibformat/web/admin/bibformatadmin.py:678 #: modules/webbasket/lib/webbasket_templates.py:2858 #: modules/webmessage/lib/webmessage_templates.py:115 #: modules/webjournal/lib/webjournaladminlib.py:113 #: modules/webjournal/lib/webjournaladminlib.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:175 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:324 #: modules/bibcirculation/lib/bibcirculation_templates.py:1136 #: modules/bibcirculation/lib/bibcirculation_templates.py:1709 #: modules/bibcirculation/lib/bibcirculation_templates.py:15424 #: modules/bibcheck/web/admin/bibcheckadmin.py:137 #: modules/bibknowledge/lib/bibknowledgeadmin.py:740 #: modules/bibknowledge/lib/bibknowledgeadmin.py:742 msgid "Delete" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1013 msgid "Add New Format Template" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1014 msgid "Check Format Templates Extensively" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1053 msgid "Code" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1136 msgid "Add New Output Format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1174 msgid "menu" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1175 #: modules/bibformat/lib/bibformat_templates.py:1375 #: modules/bibformat/lib/bibformat_templates.py:1479 msgid "Close Output Format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1176 #: modules/bibformat/lib/bibformat_templates.py:1376 #: modules/bibformat/lib/bibformat_templates.py:1480 msgid "Rules" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1177 #: modules/bibformat/lib/bibformat_templates.py:1377 #: modules/bibformat/lib/bibformat_templates.py:1481 msgid "Modify Output Format Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1276 #: modules/bibformat/lib/bibformatadminlib.py:553 msgid "Remove Rule" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1329 #: modules/bibformat/lib/bibformatadminlib.py:560 msgid "Add New Rule" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1330 #: modules/bibformat/lib/bibformatadminlib.py:557 #: modules/bibcheck/web/admin/bibcheckadmin.py:239 msgid "Save Changes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1894 msgid "No problem found with format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1896 msgid "An error has been found" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1898 msgid "The following errors have been found" msgstr "" +#: modules/bibformat/lib/bibformatadminlib.py:55 +#: modules/bibformat/web/admin/bibformatadmin.py:68 +#: modules/webcomment/lib/webcommentadminlib.py:43 +#: modules/webstyle/lib/webdoc_webinterface.py:153 +#: modules/bibcheck/web/admin/bibcheckadmin.py:57 +#: modules/bibcheck/web/admin/bibcheckadmin.py:159 +#: modules/bibcheck/web/admin/bibcheckadmin.py:203 +#: modules/bibcheck/web/admin/bibcheckadmin.py:263 +#: modules/bibcheck/web/admin/bibcheckadmin.py:303 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:78 +msgid "Admin Area" +msgstr "" + #: modules/bibformat/lib/bibformatadminlib.py:55 #: modules/bibformat/web/admin/bibformatadmin.py:70 msgid "BibFormat Admin" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:347 #: modules/bibformat/lib/bibformatadminlib.py:386 #: modules/bibformat/lib/bibformatadminlib.py:388 msgid "Test with record:" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:348 msgid "Enter a search query here." msgstr "" -#: modules/bibformat/lib/elements/bfe_authors.py:117 -msgid "Hide" +#: modules/bibformat/lib/elements/bfe_authors.py:73 +msgid "Editors" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:75 +#: modules/bibcirculation/lib/bibcirculation_utils.py:321 +msgid "Editor" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:89 +msgid "Translators: " +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:89 +msgid "Translator: " +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:97 +msgid "Advisor: " +msgstr "" + +#: modules/bibformat/lib/elements/bfe_authors.py:97 +msgid "Advisors: " msgstr "" -#: modules/bibformat/lib/elements/bfe_authors.py:118 +#: modules/bibformat/lib/elements/bfe_authors.py:145 #, python-format msgid "Show all %i authors" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:75 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:70 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:73 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:104 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:107 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:124 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:126 msgid "Download fulltext" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:84 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:59 msgid "additional files" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:121 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:111 #, python-format msgid "%(x_sitename)s link" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:121 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:111 #, python-format msgid "%(x_sitename)s links" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:130 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:129 msgid "external link" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:130 #: modules/bibformat/lib/elements/bfe_fulltext_mini.py:129 msgid "external links" msgstr "" #: modules/bibformat/lib/elements/bfe_fulltext.py:272 +#: modules/bibformat/lib/elements/bfe_brief_links.py:64 +#: modules/bibformat/lib/elements/bfe_brief_links.py:66 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:136 +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:173 msgid "Fulltext" msgstr "" #: modules/bibformat/lib/elements/bfe_edit_files.py:50 msgid "Manage Files of This Record" msgstr "" -#: modules/bibformat/lib/elements/bfe_edit_record.py:51 -msgid "Edit This Record" +#: modules/bibformat/lib/elements/bfe_edit_record.py:59 +#: modules/websearch/lib/websearch_templates_epfl.py:1484 +msgid "This field is required" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:175 -#: modules/bibformat/web/admin/bibformatadmin.py:243 -#: modules/bibformat/web/admin/bibformatadmin.py:288 -#: modules/bibformat/web/admin/bibformatadmin.py:945 -msgid "Restricted Output Format" +#: modules/bibformat/lib/elements/bfe_edit_record.py:60 +msgid "Please wait while your message is being sent" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:201 -#: modules/bibformat/web/admin/bibformatadmin.py:508 -#: modules/bibknowledge/lib/bibknowledgeadmin.py:564 -msgid "Ok" +#: modules/bibformat/lib/elements/bfe_edit_record.py:61 +msgid "Your request has been successfully sent." msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:203 -#, python-format -msgid "Output Format %s Rules" +#: modules/bibformat/lib/elements/bfe_edit_record.py:103 +msgid "Ask for removal" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:256 -#, python-format -msgid "Output Format %s Attributes" +#: modules/bibformat/lib/elements/bfe_edit_record.py:105 +msgid "Removal request" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:301 -#, python-format -msgid "Output Format %s Dependencies" +#: modules/bibformat/lib/elements/bfe_edit_record.py:106 +msgid "Please tell us the reason you want to remove it" msgstr "" -#: modules/bibformat/web/admin/bibformatadmin.py:367 -msgid "Delete Output Format" +#: modules/bibformat/lib/elements/bfe_edit_record.py:108 +msgid "Send request" msgstr "" +#: modules/bibformat/lib/elements/bfe_edit_record.py:109 #: modules/bibformat/web/admin/bibformatadmin.py:388 #: modules/bibformat/web/admin/bibformatadmin.py:676 #: modules/webbasket/lib/webbasket_templates.py:1413 #: modules/webbasket/lib/webbasket_templates.py:1481 #: modules/webbasket/lib/webbasket_templates.py:1588 #: modules/webbasket/lib/webbasket_templates.py:1643 #: modules/webbasket/lib/webbasket_templates.py:1733 #: modules/webbasket/lib/webbasket_templates.py:2803 #: modules/webbasket/lib/webbasket_templates.py:3607 #: modules/websession/lib/websession_templates.py:1802 #: modules/websession/lib/websession_templates.py:1910 #: modules/websession/lib/websession_templates.py:2112 #: modules/websession/lib/websession_templates.py:2195 #: modules/websubmit/lib/websubmit_managedocfiles.py:846 #: modules/websubmit/lib/websubmit_templates.py:2526 #: modules/websubmit/lib/websubmit_templates.py:2589 #: modules/websubmit/lib/websubmit_templates.py:2609 #: modules/websubmit/web/publiline.py:1225 #: modules/webjournal/lib/webjournaladminlib.py:114 #: modules/webjournal/lib/webjournaladminlib.py:224 #: modules/bibedit/lib/bibeditmulti_templates.py:517 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:261 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:403 #: modules/bibcirculation/lib/bibcirculation_templates.py:641 #: modules/bibcirculation/lib/bibcirculation_templates.py:1319 #: modules/bibcirculation/lib/bibcirculation_templates.py:1455 #: modules/bibcirculation/lib/bibcirculation_templates.py:3866 #: modules/bibknowledge/lib/bibknowledgeadmin.py:740 +#: modules/webbasket/lib/webbasket_templates_epfl.py:528 +#: modules/webbasket/lib/webbasket_templates_epfl.py:600 +#: modules/webbasket/lib/webbasket_templates_epfl.py:689 +#: modules/webbasket/lib/webbasket_templates_epfl.py:766 +#: modules/websearch/lib/websearch_templates_epfl.py:1486 msgid "Cancel" msgstr "" +#: modules/bibformat/lib/elements/bfe_edit_record.py:146 +#: modules/bibcirculation/lib/bibcirculation_templates.py:2830 +msgid "Edit this record" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_edit_record.py:157 +msgid "Edit this record (BibEdit)" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:175 +#: modules/bibformat/web/admin/bibformatadmin.py:243 +#: modules/bibformat/web/admin/bibformatadmin.py:288 +#: modules/bibformat/web/admin/bibformatadmin.py:945 +msgid "Restricted Output Format" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:201 +#: modules/bibformat/web/admin/bibformatadmin.py:508 +#: modules/bibknowledge/lib/bibknowledgeadmin.py:564 +msgid "Ok" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:203 +#, python-format +msgid "Output Format %s Rules" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:256 +#, python-format +msgid "Output Format %s Attributes" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:301 +#, python-format +msgid "Output Format %s Dependencies" +msgstr "" + +#: modules/bibformat/web/admin/bibformatadmin.py:367 +msgid "Delete Output Format" +msgstr "" + #: modules/bibformat/web/admin/bibformatadmin.py:413 msgid "Cannot create output format" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:487 #: modules/bibformat/web/admin/bibformatadmin.py:559 #: modules/bibformat/web/admin/bibformatadmin.py:966 msgid "Restricted Format Template" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:513 #, python-format msgid "Format Template %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:570 #, python-format msgid "Format Template %s Attributes" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:602 #, python-format msgid "Format Template %s Dependencies" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:656 msgid "Delete Format Template" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:867 #, python-format msgid "Format Element %s Dependencies" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:898 #, python-format msgid "Test Format Element %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:959 #, python-format msgid "Validation of Output Format %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:977 #, python-format msgid "Validation of Format Template %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:985 msgid "Restricted Format Element" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:993 #, python-format msgid "Validation of Format Element %s" msgstr "" #: modules/bibformat/web/admin/bibformatadmin.py:996 msgid "Format Validation" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:53 #: modules/bibharvest/lib/bibharvest_templates.py:70 msgid "See Guide" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:81 msgid "OAI sources currently present in the database" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:82 msgid "No OAI sources currently present in the database" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:92 msgid "Next oaiharvest task" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:93 msgid "scheduled time:" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:94 msgid "current status:" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:95 msgid "No oaiharvest task currently scheduled." msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:201 msgid "successfully validated" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:202 msgid "does not seem to be a OAI-compliant baseURL" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:283 msgid "View next entries..." msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:340 msgid "previous month" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:347 msgid "next month" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:442 msgid "main Page" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:449 #: modules/bibharvest/lib/oai_harvest_admin.py:93 msgid "edit" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:453 #: modules/websubmit/lib/websubmit_managedocfiles.py:997 #: modules/bibharvest/lib/oai_harvest_admin.py:97 msgid "delete" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:457 #: modules/bibharvest/lib/oai_harvest_admin.py:101 msgid "test" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:461 #: modules/bibharvest/lib/oai_harvest_admin.py:105 msgid "history" msgstr "" #: modules/bibharvest/lib/bibharvest_templates.py:465 #: modules/bibharvest/lib/oai_harvest_admin.py:109 msgid "harvest" msgstr "" #: modules/bibrank/lib/bibrank_citation_grapher.py:127 msgid "Citation history:" msgstr "" #: modules/bibrank/lib/bibrank_downloads_grapher.py:81 msgid "Download history:" msgstr "" #: modules/bibrank/lib/bibrank_downloads_grapher.py:103 msgid "Download user distribution:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:129 msgid "Warning: Please, select a valid time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:133 msgid "Warning: Please, select a valid file" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:137 msgid "Warning: The date format is not correct" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:141 msgid "Warning: Please, select a valid date" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:167 msgid "Select file to upload" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:168 msgid "File type" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:169 #: modules/bibupload/lib/batchuploader_templates.py:357 msgid "Upload mode" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:170 #: modules/bibupload/lib/batchuploader_templates.py:358 msgid "Upload later? then select:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:171 #: modules/bibupload/lib/batchuploader_templates.py:359 #: modules/webmessage/lib/webmessage_templates.py:88 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:535 msgid "Date" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:172 #: modules/bibupload/lib/batchuploader_templates.py:360 #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/webstyle/lib/webstyle_templates.py:668 msgid "Time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:173 #: modules/bibupload/lib/batchuploader_templates.py:355 #: modules/bibupload/lib/batchuploader_templates.py:361 #: modules/websession/lib/websession_templates.py:163 #: modules/websession/lib/websession_templates.py:166 #: modules/websession/lib/websession_templates.py:1050 msgid "Example" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:174 #: modules/bibupload/lib/batchuploader_templates.py:362 #, python-format msgid "All fields with %(x_fmt_open)s*%(x_fmt_close)s are mandatory" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:191 #, python-format msgid "" "Your file has been successfully queued. You can check your " "%(x_url1_open)supload history%(x_url1_close)s or %(x_url2_open)ssubmit " "another file%(x_url2_close)s" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:205 msgid "No metadata files have been uploaded yet." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:218 #: modules/bibupload/lib/batchuploader_templates.py:260 msgid "Submit time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:219 #: modules/bibupload/lib/batchuploader_templates.py:261 msgid "File name" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:220 #: modules/bibupload/lib/batchuploader_templates.py:262 msgid "Execution time" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:247 msgid "No document files have been uploaded yet." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:302 #: modules/bibupload/lib/batchuploader_webinterface.py:137 #: modules/bibupload/lib/batchuploader_webinterface.py:301 msgid "Metadata batch upload" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:305 #: modules/bibupload/lib/batchuploader_webinterface.py:160 #: modules/bibupload/lib/batchuploader_webinterface.py:213 msgid "Document batch upload" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:308 #: modules/bibupload/lib/batchuploader_webinterface.py:325 msgid "Upload history" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:311 msgid "Daemon monitor" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:354 msgid "Input directory" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:356 msgid "Filename matching" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:371 #, python-format msgid "%s documents have been found." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:373 msgid "The following files have been successfully queued:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:378 msgid "The following errors have occurred:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:385 msgid "" "Some files could not be moved to DONE folder. Please remove them manually." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:387 msgid "All uploaded files were moved to DONE folder." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:397 #, python-format msgid "" "Using %(x_fmt_open)sweb interface upload%(x_fmt_close)s, actions are " "executed a single time." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:399 #, python-format msgid "" "Check the %(x_url_open)sBatch Uploader daemon help page%(x_url_close)s for " "executing these actions periodically." msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:404 msgid "Metadata folders" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:426 #: modules/bibcirculation/lib/bibcirculation_templates.py:2183 #: modules/bibcirculation/lib/bibcirculation_templates.py:2269 #: modules/bibcirculation/lib/bibcirculation_templates.py:8908 #: modules/bibcirculation/lib/bibcirculation_templates.py:9366 #: modules/bibcirculation/lib/bibcirculation_templates.py:10438 #: modules/bibcirculation/lib/bibcirculation_templates.py:10604 #: modules/bibcirculation/lib/bibcirculation_templates.py:11074 msgid "ID" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:426 msgid "Progress" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:428 msgid "Last BibSched tasks:" msgstr "" #: modules/bibupload/lib/batchuploader_templates.py:437 msgid "Next scheduled BibSched run:" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:98 msgid "Guests are not authorized to run batchuploader" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:105 #, python-format msgid "The user '%s' is not authorized to run batchuploader" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:216 msgid "Document batch upload result" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:299 msgid "Upload succesful" msgstr "" #: modules/bibupload/lib/batchuploader_webinterface.py:349 msgid "Batch Uploader: Daemon monitor" msgstr "" #: modules/miscutil/lib/dateutils.py:82 modules/miscutil/lib/dateutils.py:109 -#: modules/webbasket/lib/webbasket.py:181 -#: modules/webbasket/lib/webbasket.py:784 -#: modules/webbasket/lib/webbasket.py:879 -#: modules/websession/lib/webuser.py:306 +#: modules/webbasket/lib/webbasket.py:182 +#: modules/webbasket/lib/webbasket.py:787 +#: modules/webbasket/lib/webbasket.py:882 +#: modules/websession/lib/webuser.py:329 #: modules/webstyle/lib/webstyle_templates.py:577 msgid "N/A" msgstr "" #: modules/miscutil/lib/dateutils.py:172 msgid "Sun" msgstr "" #: modules/miscutil/lib/dateutils.py:173 msgid "Mon" msgstr "" #: modules/miscutil/lib/dateutils.py:174 msgid "Tue" msgstr "" #: modules/miscutil/lib/dateutils.py:175 msgid "Wed" msgstr "" #: modules/miscutil/lib/dateutils.py:176 msgid "Thu" msgstr "" #: modules/miscutil/lib/dateutils.py:177 msgid "Fri" msgstr "" #: modules/miscutil/lib/dateutils.py:178 msgid "Sat" msgstr "" #: modules/miscutil/lib/dateutils.py:180 msgid "Sunday" msgstr "" #: modules/miscutil/lib/dateutils.py:181 msgid "Monday" msgstr "" #: modules/miscutil/lib/dateutils.py:182 msgid "Tuesday" msgstr "" #: modules/miscutil/lib/dateutils.py:183 msgid "Wednesday" msgstr "" #: modules/miscutil/lib/dateutils.py:184 msgid "Thursday" msgstr "" #: modules/miscutil/lib/dateutils.py:185 msgid "Friday" msgstr "" #: modules/miscutil/lib/dateutils.py:186 msgid "Saturday" msgstr "" #: modules/miscutil/lib/dateutils.py:200 modules/miscutil/lib/dateutils.py:214 #: modules/bibcirculation/lib/bibcirculation_templates.py:782 #: modules/bibcirculation/lib/bibcirculation_templates.py:804 msgid "Month" msgstr "" #: modules/miscutil/lib/dateutils.py:201 msgid "Jan" msgstr "" #: modules/miscutil/lib/dateutils.py:202 msgid "Feb" msgstr "" #: modules/miscutil/lib/dateutils.py:203 msgid "Mar" msgstr "" #: modules/miscutil/lib/dateutils.py:204 msgid "Apr" msgstr "" #: modules/miscutil/lib/dateutils.py:205 modules/miscutil/lib/dateutils.py:219 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "May" msgstr "" #: modules/miscutil/lib/dateutils.py:206 msgid "Jun" msgstr "" #: modules/miscutil/lib/dateutils.py:207 msgid "Jul" msgstr "" #: modules/miscutil/lib/dateutils.py:208 msgid "Aug" msgstr "" #: modules/miscutil/lib/dateutils.py:209 msgid "Sep" msgstr "" #: modules/miscutil/lib/dateutils.py:210 msgid "Oct" msgstr "" #: modules/miscutil/lib/dateutils.py:211 msgid "Nov" msgstr "" #: modules/miscutil/lib/dateutils.py:212 msgid "Dec" msgstr "" #: modules/miscutil/lib/dateutils.py:215 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "January" msgstr "" #: modules/miscutil/lib/dateutils.py:216 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "February" msgstr "" #: modules/miscutil/lib/dateutils.py:217 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "March" msgstr "" #: modules/miscutil/lib/dateutils.py:218 -#: modules/websearch/lib/search_engine.py:887 +#: modules/websearch/lib/search_engine.py:927 #: modules/websearch/lib/websearch_templates.py:1200 msgid "April" msgstr "" #: modules/miscutil/lib/dateutils.py:220 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "June" msgstr "" #: modules/miscutil/lib/dateutils.py:221 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "July" msgstr "" #: modules/miscutil/lib/dateutils.py:222 -#: modules/websearch/lib/search_engine.py:888 +#: modules/websearch/lib/search_engine.py:928 #: modules/websearch/lib/websearch_templates.py:1201 msgid "August" msgstr "" #: modules/miscutil/lib/dateutils.py:223 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "September" msgstr "" #: modules/miscutil/lib/dateutils.py:224 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "October" msgstr "" #: modules/miscutil/lib/dateutils.py:225 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "November" msgstr "" #: modules/miscutil/lib/dateutils.py:226 -#: modules/websearch/lib/search_engine.py:889 +#: modules/websearch/lib/search_engine.py:929 #: modules/websearch/lib/websearch_templates.py:1202 msgid "December" msgstr "" #: modules/miscutil/lib/dateutils.py:244 #: modules/bibcirculation/lib/bibcirculation_templates.py:783 #: modules/bibcirculation/lib/bibcirculation_templates.py:805 msgid "Day" msgstr "" #: modules/miscutil/lib/dateutils.py:295 #: modules/bibcirculation/lib/bibcirculation_utils.py:323 #: modules/bibcirculation/lib/bibcirculation_templates.py:781 #: modules/bibcirculation/lib/bibcirculation_templates.py:803 #: modules/bibcirculation/lib/bibcirculation_templates.py:1625 #: modules/bibcirculation/lib/bibcirculation_templates.py:2483 #: modules/bibcirculation/lib/bibcirculation_templates.py:2826 #: modules/bibcirculation/lib/bibcirculation_templates.py:6320 #: modules/bibcirculation/lib/bibcirculation_templates.py:6548 #: modules/bibcirculation/lib/bibcirculation_templates.py:7006 #: modules/bibcirculation/lib/bibcirculation_templates.py:7157 #: modules/bibcirculation/lib/bibcirculation_templates.py:8633 #: modules/bibcirculation/lib/bibcirculation_templates.py:8866 #: modules/bibcirculation/lib/bibcirculation_templates.py:9100 #: modules/bibcirculation/lib/bibcirculation_templates.py:9325 #: modules/bibcirculation/lib/bibcirculation_templates.py:9530 #: modules/bibcirculation/lib/bibcirculation_templates.py:9742 #: modules/bibcirculation/lib/bibcirculation_templates.py:10141 #: modules/bibcirculation/lib/bibcirculation_templates.py:10340 #: modules/bibcirculation/lib/bibcirculation_templates.py:10595 #: modules/bibcirculation/lib/bibcirculation_templates.py:10739 #: modules/bibcirculation/lib/bibcirculation_templates.py:10936 #: modules/bibcirculation/lib/bibcirculation_templates.py:11274 #: modules/bibcirculation/lib/bibcirculation_templates.py:11353 #: modules/bibcirculation/lib/bibcirculation_templates.py:11435 #: modules/bibcirculation/lib/bibcirculation_templates.py:12246 #: modules/bibcirculation/lib/bibcirculation_templates.py:12322 #: modules/bibcirculation/lib/bibcirculation_templates.py:13102 #: modules/bibcirculation/lib/bibcirculation_templates.py:13377 #: modules/bibcirculation/lib/bibcirculation_templates.py:14384 #: modules/bibcirculation/lib/bibcirculation_templates.py:14599 #: modules/bibcirculation/lib/bibcirculation_templates.py:14848 #: modules/bibcirculation/lib/bibcirculation_templates.py:15868 #: modules/bibcirculation/lib/bibcirculation_templates.py:16091 #: modules/bibcirculation/lib/bibcirculation_templates.py:16224 #: modules/bibcirculation/lib/bibcirculation_templates.py:16411 +#: modules/websearch/lib/websearch_templates_epfl.py:984 msgid "Year" msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:64 #: modules/miscutil/lib/errorlib_webinterface.py:69 #: modules/miscutil/lib/errorlib_webinterface.py:74 #: modules/miscutil/lib/errorlib_webinterface.py:79 msgid "Sorry" msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:65 #: modules/miscutil/lib/errorlib_webinterface.py:70 #: modules/miscutil/lib/errorlib_webinterface.py:75 #: modules/miscutil/lib/errorlib_webinterface.py:80 #, python-format msgid "Cannot send error request, %s parameter missing." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:98 msgid "The error report has been sent." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:99 msgid "Many thanks for helping us to improve the service." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:101 msgid "Use the back button of your browser to return to the previous page." msgstr "" #: modules/miscutil/lib/errorlib_webinterface.py:103 msgid "Thank you!" msgstr "" -#: modules/miscutil/lib/inveniocfg.py:465 +#: modules/miscutil/lib/inveniocfg.py:453 +msgid "any field" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:454 +msgid "title" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:455 +msgid "author" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:456 +msgid "abstract" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:457 +msgid "keyword" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:458 +msgid "report number" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:459 +msgid "subject" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:460 +msgid "reference" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:461 +msgid "fulltext" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:462 +msgid "collection" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:463 +msgid "division" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:464 +msgid "year" +msgstr "" + +#: modules/miscutil/lib/inveniocfg.py:465 msgid "journal" msgstr "" +#: modules/miscutil/lib/inveniocfg.py:466 +msgid "experiment" +msgstr "" + #: modules/miscutil/lib/inveniocfg.py:467 msgid "record ID" msgstr "" #: modules/miscutil/lib/inveniocfg.py:480 msgid "word similarity" msgstr "" #: modules/miscutil/lib/inveniocfg.py:481 msgid "journal impact factor" msgstr "" #: modules/miscutil/lib/inveniocfg.py:482 msgid "times cited" msgstr "" #: modules/miscutil/lib/inveniocfg.py:483 msgid "time-decay cite count" msgstr "" #: modules/miscutil/lib/inveniocfg.py:484 msgid "all-time-best cite rank" msgstr "" #: modules/miscutil/lib/inveniocfg.py:485 msgid "time-decay cite rank" msgstr "" #: modules/miscutil/lib/mailutils.py:161 modules/miscutil/lib/mailutils.py:174 #: modules/webcomment/lib/webcomment_templates.py:2046 msgid "Hello:" msgstr "" #: modules/miscutil/lib/mailutils.py:192 modules/miscutil/lib/mailutils.py:212 msgid "Best regards" msgstr "" #: modules/miscutil/lib/mailutils.py:194 modules/miscutil/lib/mailutils.py:214 msgid "Need human intervention? Contact" msgstr "" -#: modules/webaccess/lib/access_control_config.py:262 +#: modules/webaccess/lib/access_control_config.py:270 #: modules/websession/lib/websession_templates.py:1102 -#: modules/websession/lib/webuser.py:891 modules/websession/lib/webuser.py:900 -#: modules/websession/lib/webuser.py:901 +#: modules/websession/lib/webuser.py:914 modules/websession/lib/webuser.py:923 +#: modules/websession/lib/webuser.py:924 +#: modules/websession/lib/websession_templates_epfl.py:49 msgid "Run Record Editor" msgstr "" -#: modules/webaccess/lib/access_control_config.py:263 +#: modules/webaccess/lib/access_control_config.py:271 #: modules/websession/lib/websession_templates.py:1104 +#: modules/websession/lib/websession_templates_epfl.py:51 msgid "Run Multi-Record Editor" msgstr "" -#: modules/webaccess/lib/access_control_config.py:264 -#: modules/websession/lib/webuser.py:892 +#: modules/webaccess/lib/access_control_config.py:272 +#: modules/websession/lib/webuser.py:915 msgid "Run Document File Manager" msgstr "" -#: modules/webaccess/lib/access_control_config.py:265 +#: modules/webaccess/lib/access_control_config.py:273 #: modules/websession/lib/websession_templates.py:1108 +#: modules/websession/lib/websession_templates_epfl.py:55 msgid "Run Record Merger" msgstr "" -#: modules/webaccess/lib/access_control_config.py:266 +#: modules/webaccess/lib/access_control_config.py:274 msgid "Run BibSword client" msgstr "" -#: modules/webaccess/lib/access_control_config.py:267 +#: modules/webaccess/lib/access_control_config.py:275 #: modules/websession/lib/websession_templates.py:1116 +#: modules/websession/lib/websession_templates_epfl.py:62 msgid "Configure BibKnowledge" msgstr "" -#: modules/webaccess/lib/access_control_config.py:268 +#: modules/webaccess/lib/access_control_config.py:276 #: modules/websession/lib/websession_templates.py:1114 +#: modules/websession/lib/websession_templates_epfl.py:61 msgid "Configure BibFormat" msgstr "" -#: modules/webaccess/lib/access_control_config.py:269 +#: modules/webaccess/lib/access_control_config.py:277 #: modules/websession/lib/websession_templates.py:1118 +#: modules/websession/lib/websession_templates_epfl.py:64 msgid "Configure OAI Harvest" msgstr "" -#: modules/webaccess/lib/access_control_config.py:270 +#: modules/webaccess/lib/access_control_config.py:278 #: modules/websession/lib/websession_templates.py:1120 +#: modules/websession/lib/websession_templates_epfl.py:66 msgid "Configure OAI Repository" msgstr "" -#: modules/webaccess/lib/access_control_config.py:271 +#: modules/webaccess/lib/access_control_config.py:279 #: modules/websession/lib/websession_templates.py:1122 +#: modules/websession/lib/websession_templates_epfl.py:68 msgid "Configure BibIndex" msgstr "" -#: modules/webaccess/lib/access_control_config.py:272 +#: modules/webaccess/lib/access_control_config.py:280 #: modules/websession/lib/websession_templates.py:1124 +#: modules/websession/lib/websession_templates_epfl.py:70 msgid "Configure BibRank" msgstr "" -#: modules/webaccess/lib/access_control_config.py:273 +#: modules/webaccess/lib/access_control_config.py:281 #: modules/websession/lib/websession_templates.py:1126 +#: modules/websession/lib/websession_templates_epfl.py:72 msgid "Configure WebAccess" msgstr "" -#: modules/webaccess/lib/access_control_config.py:274 +#: modules/webaccess/lib/access_control_config.py:282 #: modules/websession/lib/websession_templates.py:1128 +#: modules/websession/lib/websession_templates_epfl.py:74 msgid "Configure WebComment" msgstr "" -#: modules/webaccess/lib/access_control_config.py:275 +#: modules/webaccess/lib/access_control_config.py:283 #: modules/websession/lib/websession_templates.py:1132 +#: modules/websession/lib/websession_templates_epfl.py:78 msgid "Configure WebSearch" msgstr "" -#: modules/webaccess/lib/access_control_config.py:276 +#: modules/webaccess/lib/access_control_config.py:284 #: modules/websession/lib/websession_templates.py:1134 +#: modules/websession/lib/websession_templates_epfl.py:80 msgid "Configure WebSubmit" msgstr "" -#: modules/webaccess/lib/access_control_config.py:277 +#: modules/webaccess/lib/access_control_config.py:285 #: modules/websession/lib/websession_templates.py:1130 +#: modules/websession/lib/websession_templates_epfl.py:76 msgid "Configure WebJournal" msgstr "" -#: modules/webaccess/lib/access_control_config.py:278 +#: modules/webaccess/lib/access_control_config.py:286 #: modules/websession/lib/websession_templates.py:1106 +#: modules/websession/lib/websession_templates_epfl.py:53 msgid "Run BibCirculation" msgstr "" -#: modules/webaccess/lib/access_control_config.py:279 +#: modules/webaccess/lib/access_control_config.py:287 #: modules/websession/lib/websession_templates.py:1112 +#: modules/websession/lib/websession_templates_epfl.py:59 msgid "Run Batch Uploader" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3704 #, python-format msgid "Your account on '%s' has been activated" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3705 #, python-format msgid "Your account earlier created on '%s' has been activated:" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3707 #: modules/webaccess/lib/webaccessadmin_lib.py:3720 #: modules/webaccess/lib/webaccessadmin_lib.py:3746 msgid "Username/Email:" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3708 #: modules/webaccess/lib/webaccessadmin_lib.py:3721 msgid "Password:" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3718 #, python-format msgid "Account created on '%s'" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3719 #, python-format msgid "An account has been created for you on '%s':" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3731 #, python-format msgid "Account rejected on '%s'" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3732 #, python-format msgid "Your request for an account has been rejected on '%s':" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3734 #, python-format msgid "Username/Email: %s" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3744 #, python-format msgid "Account deleted on '%s'" msgstr "" #: modules/webaccess/lib/webaccessadmin_lib.py:3745 #, python-format msgid "Your account on '%s' has been deleted:" msgstr "" #: modules/webalert/lib/htmlparser.py:186 #: modules/webbasket/lib/webbasket_templates.py:2337 #: modules/webbasket/lib/webbasket_templates.py:3214 #: modules/websearch/lib/websearch_templates.py:1608 #: modules/websearch/lib/websearch_templates.py:3328 #: modules/websearch/lib/websearch_templates.py:3334 #: modules/websearch/lib/websearch_templates.py:3339 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1069 +#: modules/bibformat/lib/elements/bfe_brief_links.py:55 msgid "Detailed record" msgstr "" #: modules/webalert/lib/htmlparser.py:187 #: modules/websearch/lib/websearch_templates.py:1611 #: modules/websearch/lib/websearch_templates.py:3346 #: modules/webstyle/lib/webstyle_templates.py:829 msgid "Similar records" msgstr "" #: modules/webalert/lib/htmlparser.py:188 msgid "Cited by" msgstr "" #: modules/webalert/lib/webalert.py:54 #, python-format msgid "You already have an alert named %s." msgstr "" #: modules/webalert/lib/webalert.py:111 #: modules/websearch/lib/websearch_templates.py:3913 +#: modules/websearch/lib/websearch_templates_epfl.py:2303 msgid "unknown" msgstr "" #: modules/webalert/lib/webalert.py:163 modules/webalert/lib/webalert.py:217 #: modules/webalert/lib/webalert.py:303 modules/webalert/lib/webalert.py:341 msgid "You do not have rights for this operation." msgstr "" #: modules/webalert/lib/webalert.py:198 msgid "You already have an alert defined for the specified query and basket." msgstr "" #: modules/webalert/lib/webalert.py:221 modules/webalert/lib/webalert.py:345 msgid "The alert name cannot be empty." msgstr "" #: modules/webalert/lib/webalert.py:226 msgid "You are not the owner of this basket." msgstr "" #: modules/webalert/lib/webalert.py:237 #, python-format msgid "The alert %s has been added to your profile." msgstr "" #: modules/webalert/lib/webalert.py:376 #, python-format msgid "The alert %s has been successfully updated." msgstr "" #: modules/webalert/lib/webalert.py:428 #, python-format msgid "" "You have made %(x_nb)s queries. A %(x_url_open)sdetailed list%(x_url_close)s " "is available with a possibility to (a) view search results and (b) subscribe " "to an automatic email alerting service for these queries." msgstr "" #: modules/webalert/lib/webalert_templates.py:74 +#: modules/webalert/lib/webalert_templates_epfl.py:58 msgid "Pattern" msgstr "" #: modules/webalert/lib/webalert_templates.py:76 #: modules/bibedit/lib/bibeditmulti_templates.py:509 +#: modules/webalert/lib/webalert_templates_epfl.py:60 msgid "Field" msgstr "" #: modules/webalert/lib/webalert_templates.py:78 +#: modules/webalert/lib/webalert_templates_epfl.py:62 msgid "Pattern 1" msgstr "" #: modules/webalert/lib/webalert_templates.py:80 +#: modules/webalert/lib/webalert_templates_epfl.py:64 msgid "Field 1" msgstr "" #: modules/webalert/lib/webalert_templates.py:82 +#: modules/webalert/lib/webalert_templates_epfl.py:66 msgid "Pattern 2" msgstr "" #: modules/webalert/lib/webalert_templates.py:84 +#: modules/webalert/lib/webalert_templates_epfl.py:68 msgid "Field 2" msgstr "" #: modules/webalert/lib/webalert_templates.py:86 +#: modules/webalert/lib/webalert_templates_epfl.py:70 msgid "Pattern 3" msgstr "" #: modules/webalert/lib/webalert_templates.py:88 +#: modules/webalert/lib/webalert_templates_epfl.py:72 msgid "Field 3" msgstr "" #: modules/webalert/lib/webalert_templates.py:90 +#: modules/webalert/lib/webalert_templates_epfl.py:74 msgid "Collections" msgstr "" #: modules/webalert/lib/webalert_templates.py:92 #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:2867 #: modules/bibcirculation/lib/bibcirculation_templates.py:5241 #: modules/bibcirculation/lib/bibcirculation_templates.py:6579 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6773 #: modules/bibcirculation/lib/bibcirculation_templates.py:7033 #: modules/bibcirculation/lib/bibcirculation_templates.py:7206 #: modules/bibcirculation/lib/bibcirculation_templates.py:7575 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 +#: modules/webalert/lib/webalert_templates_epfl.py:76 msgid "Collection" msgstr "" #: modules/webalert/lib/webalert_templates.py:113 +#: modules/webalert/lib/webalert_templates_epfl.py:97 msgid "You own the following alerts:" msgstr "" #: modules/webalert/lib/webalert_templates.py:114 +#: modules/webalert/lib/webalert_templates_epfl.py:98 msgid "alert name" msgstr "" #: modules/webalert/lib/webalert_templates.py:122 +#: modules/webalert/lib/webalert_templates_epfl.py:107 msgid "SHOW" msgstr "" #: modules/webalert/lib/webalert_templates.py:171 +#: modules/webalert/lib/webalert_templates_epfl.py:156 msgid "" "This alert will notify you each time/only if a new item satisfies the " "following query:" msgstr "" #: modules/webalert/lib/webalert_templates.py:172 +#: modules/webalert/lib/webalert_templates_epfl.py:157 msgid "QUERY" msgstr "" #: modules/webalert/lib/webalert_templates.py:210 +#: modules/webalert/lib/webalert_templates_epfl.py:195 msgid "Alert identification name:" msgstr "" #: modules/webalert/lib/webalert_templates.py:212 +#: modules/webalert/lib/webalert_templates_epfl.py:197 msgid "Search-checking frequency:" msgstr "" #: modules/webalert/lib/webalert_templates.py:216 #: modules/webalert/lib/webalert_templates.py:336 #: modules/bibharvest/lib/oai_harvest_admin.py:141 +#: modules/webalert/lib/webalert_templates_epfl.py:201 +#: modules/webalert/lib/webalert_templates_epfl.py:320 msgid "monthly" msgstr "" #: modules/webalert/lib/webalert_templates.py:217 #: modules/webalert/lib/webalert_templates.py:334 #: modules/bibharvest/lib/oai_harvest_admin.py:140 +#: modules/webalert/lib/webalert_templates_epfl.py:202 +#: modules/webalert/lib/webalert_templates_epfl.py:318 msgid "weekly" msgstr "" #: modules/webalert/lib/webalert_templates.py:218 #: modules/webalert/lib/webalert_templates.py:331 #: modules/bibharvest/lib/oai_harvest_admin.py:139 +#: modules/webalert/lib/webalert_templates_epfl.py:203 +#: modules/webalert/lib/webalert_templates_epfl.py:315 msgid "daily" msgstr "" #: modules/webalert/lib/webalert_templates.py:219 +#: modules/webalert/lib/webalert_templates_epfl.py:204 msgid "Send notification email?" msgstr "" #: modules/webalert/lib/webalert_templates.py:222 #: modules/webalert/lib/webalert_templates.py:339 +#: modules/webalert/lib/webalert_templates_epfl.py:207 +#: modules/webalert/lib/webalert_templates_epfl.py:323 msgid "yes" msgstr "" #: modules/webalert/lib/webalert_templates.py:223 #: modules/webalert/lib/webalert_templates.py:341 +#: modules/webalert/lib/webalert_templates_epfl.py:208 +#: modules/webalert/lib/webalert_templates_epfl.py:325 msgid "no" msgstr "" #: modules/webalert/lib/webalert_templates.py:224 +#: modules/webalert/lib/webalert_templates_epfl.py:209 #, python-format msgid "if %(x_fmt_open)sno%(x_fmt_close)s you must specify a basket" msgstr "" #: modules/webalert/lib/webalert_templates.py:226 +#: modules/webalert/lib/webalert_templates_epfl.py:211 msgid "Store results in basket?" msgstr "" #: modules/webalert/lib/webalert_templates.py:247 +#: modules/webalert/lib/webalert_templates_epfl.py:232 msgid "SET ALERT" msgstr "" #: modules/webalert/lib/webalert_templates.py:248 +#: modules/webalert/lib/webalert_templates_epfl.py:233 msgid "CLEAR DATA" msgstr "" #: modules/webalert/lib/webalert_templates.py:299 #, python-format msgid "" "Set a new alert from %(x_url1_open)syour searches%(x_url1_close)s, the " "%(x_url2_open)spopular searches%(x_url2_close)s, or the input form." msgstr "" #: modules/webalert/lib/webalert_templates.py:317 #: modules/webcomment/lib/webcomment_templates.py:230 #: modules/webcomment/lib/webcomment_templates.py:632 #: modules/webcomment/lib/webcomment_templates.py:1904 #: modules/webcomment/lib/webcomment_templates.py:1928 #: modules/webcomment/lib/webcomment_templates.py:1954 #: modules/webmessage/lib/webmessage_templates.py:509 #: modules/websession/lib/websession_templates.py:2236 #: modules/websession/lib/websession_templates.py:2276 msgid "No" msgstr "" #: modules/webalert/lib/webalert_templates.py:319 +#: modules/webalert/lib/webalert_templates_epfl.py:303 msgid "Search checking frequency" msgstr "" #: modules/webalert/lib/webalert_templates.py:320 +#: modules/webalert/lib/webalert_templates_epfl.py:304 msgid "Notification by email" msgstr "" #: modules/webalert/lib/webalert_templates.py:321 +#: modules/webalert/lib/webalert_templates_epfl.py:305 msgid "Result in basket" msgstr "" #: modules/webalert/lib/webalert_templates.py:322 +#: modules/webalert/lib/webalert_templates_epfl.py:306 msgid "Date last run" msgstr "" #: modules/webalert/lib/webalert_templates.py:323 +#: modules/webalert/lib/webalert_templates_epfl.py:307 +#: modules/websearch/lib/websearch_templates_epfl.py:1705 msgid "Creation date" msgstr "" #: modules/webalert/lib/webalert_templates.py:324 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:346 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:399 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:459 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:632 +#: modules/webalert/lib/webalert_templates_epfl.py:308 msgid "Query" msgstr "" #: modules/webalert/lib/webalert_templates.py:367 #: modules/webbasket/lib/webbasket_templates.py:1748 +#: modules/webalert/lib/webalert_templates_epfl.py:350 msgid "no basket" msgstr "" #: modules/webalert/lib/webalert_templates.py:384 +#: modules/webalert/lib/webalert_templates_epfl.py:367 msgid "Modify" msgstr "" #: modules/webalert/lib/webalert_templates.py:390 #: modules/webjournal/lib/webjournaladminlib.py:225 #: modules/webjournal/lib/webjournaladminlib.py:231 +#: modules/webalert/lib/webalert_templates_epfl.py:373 msgid "Remove" msgstr "" #: modules/webalert/lib/webalert_templates.py:392 #: modules/webalert/lib/webalert_templates.py:482 +#: modules/webalert/lib/webalert_templates_epfl.py:375 +#: modules/webalert/lib/webalert_templates_epfl.py:477 msgid "Execute search" msgstr "" #: modules/webalert/lib/webalert_templates.py:398 #, python-format msgid "You have defined %s alerts." msgstr "" #: modules/webalert/lib/webalert_templates.py:436 +#: modules/webalert/lib/webalert_templates_epfl.py:426 #, python-format msgid "" "You have not executed any search yet. Please go to the %(x_url_open)ssearch " "interface%(x_url_close)s first." msgstr "" #: modules/webalert/lib/webalert_templates.py:445 +#: modules/webalert/lib/webalert_templates_epfl.py:438 #, python-format msgid "" "You have performed %(x_nb1)s searches (%(x_nb2)s different questions) during " "the last 30 days or so." msgstr "" #: modules/webalert/lib/webalert_templates.py:450 +#: modules/webalert/lib/webalert_templates_epfl.py:442 #, python-format msgid "Here are the %s most popular searches." msgstr "" #: modules/webalert/lib/webalert_templates.py:461 +#: modules/webalert/lib/webalert_templates_epfl.py:452 msgid "Question" msgstr "" #: modules/webalert/lib/webalert_templates.py:465 +#: modules/webalert/lib/webalert_templates_epfl.py:457 msgid "Last Run" msgstr "" #: modules/webalert/lib/webalert_templates.py:483 +#: modules/webalert/lib/webalert_templates_epfl.py:478 msgid "Set new alert" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:76 #: modules/webalert/lib/webalert_webinterface.py:139 #: modules/webalert/lib/webalert_webinterface.py:224 #: modules/webalert/lib/webalert_webinterface.py:302 #: modules/webalert/lib/webalert_webinterface.py:358 #: modules/webalert/lib/webalert_webinterface.py:435 #: modules/webalert/lib/webalert_webinterface.py:509 msgid "You are not authorized to use alerts." msgstr "" #: modules/webalert/lib/webalert_webinterface.py:79 msgid "Popular Searches" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:81 #: modules/websession/lib/websession_templates.py:471 #: modules/websession/lib/websession_templates.py:631 msgid "Your Searches" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:98 #: modules/webalert/lib/webalert_webinterface.py:150 #: modules/webalert/lib/webalert_webinterface.py:183 #: modules/webalert/lib/webalert_webinterface.py:235 #: modules/webalert/lib/webalert_webinterface.py:268 #: modules/webalert/lib/webalert_webinterface.py:319 #: modules/webalert/lib/webalert_webinterface.py:369 #: modules/webalert/lib/webalert_webinterface.py:395 #: modules/webalert/lib/webalert_webinterface.py:446 #: modules/webalert/lib/webalert_webinterface.py:472 #: modules/webalert/lib/webalert_webinterface.py:520 #: modules/webalert/lib/webalert_webinterface.py:548 -#: modules/webbasket/lib/webbasket.py:2097 #: modules/webbasket/lib/webbasket_webinterface.py:804 #: modules/webbasket/lib/webbasket_webinterface.py:899 #: modules/webbasket/lib/webbasket_webinterface.py:1021 #: modules/webbasket/lib/webbasket_webinterface.py:1123 #: modules/webbasket/lib/webbasket_webinterface.py:1220 #: modules/webmessage/lib/webmessage_templates.py:466 #: modules/websession/lib/websession_templates.py:617 #: modules/websession/lib/websession_templates.py:2349 -#: modules/websession/lib/websession_webinterface.py:214 -#: modules/websession/lib/websession_webinterface.py:236 -#: modules/websession/lib/websession_webinterface.py:282 -#: modules/websession/lib/websession_webinterface.py:533 -#: modules/websession/lib/websession_webinterface.py:556 -#: modules/websession/lib/websession_webinterface.py:584 -#: modules/websession/lib/websession_webinterface.py:600 -#: modules/websession/lib/websession_webinterface.py:652 -#: modules/websession/lib/websession_webinterface.py:675 -#: modules/websession/lib/websession_webinterface.py:701 -#: modules/websession/lib/websession_webinterface.py:767 -#: modules/websession/lib/websession_webinterface.py:816 -#: modules/websession/lib/websession_webinterface.py:851 -#: modules/websession/lib/websession_webinterface.py:882 -#: modules/websession/lib/websession_webinterface.py:954 -#: modules/websession/lib/websession_webinterface.py:992 +#: modules/websession/lib/websession_webinterface.py:218 +#: modules/websession/lib/websession_webinterface.py:240 +#: modules/websession/lib/websession_webinterface.py:287 +#: modules/websession/lib/websession_webinterface.py:538 +#: modules/websession/lib/websession_webinterface.py:561 +#: modules/websession/lib/websession_webinterface.py:589 +#: modules/websession/lib/websession_webinterface.py:605 +#: modules/websession/lib/websession_webinterface.py:657 +#: modules/websession/lib/websession_webinterface.py:680 +#: modules/websession/lib/websession_webinterface.py:706 +#: modules/websession/lib/websession_webinterface.py:772 +#: modules/websession/lib/websession_webinterface.py:834 +#: modules/websession/lib/websession_webinterface.py:869 +#: modules/websession/lib/websession_webinterface.py:900 +#: modules/websession/lib/websession_webinterface.py:972 +#: modules/websession/lib/websession_webinterface.py:1010 #: modules/websubmit/web/publiline.py:133 #: modules/websubmit/web/publiline.py:154 #: modules/websubmit/web/yourapprovals.py:91 #: modules/websubmit/web/yoursubmissions.py:163 +#: modules/websession/lib/websession_templates_epfl.py:264 msgid "Your Account" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:100 #, python-format msgid "%s Personalize, Display searches" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:101 #: modules/webalert/lib/webalert_webinterface.py:153 #: modules/webalert/lib/webalert_webinterface.py:186 #: modules/webalert/lib/webalert_webinterface.py:238 #: modules/webalert/lib/webalert_webinterface.py:271 #: modules/webalert/lib/webalert_webinterface.py:322 #: modules/webalert/lib/webalert_webinterface.py:372 #: modules/webalert/lib/webalert_webinterface.py:398 #: modules/webalert/lib/webalert_webinterface.py:449 #: modules/webalert/lib/webalert_webinterface.py:475 #: modules/webalert/lib/webalert_webinterface.py:523 #: modules/webalert/lib/webalert_webinterface.py:551 -#: modules/websession/lib/websession_webinterface.py:217 -#: modules/websession/lib/websession_webinterface.py:239 -#: modules/websession/lib/websession_webinterface.py:284 -#: modules/websession/lib/websession_webinterface.py:535 -#: modules/websession/lib/websession_webinterface.py:558 -#: modules/websession/lib/websession_webinterface.py:587 -#: modules/websession/lib/websession_webinterface.py:603 -#: modules/websession/lib/websession_webinterface.py:621 -#: modules/websession/lib/websession_webinterface.py:631 -#: modules/websession/lib/websession_webinterface.py:654 -#: modules/websession/lib/websession_webinterface.py:677 -#: modules/websession/lib/websession_webinterface.py:703 +#: modules/websession/lib/websession_webinterface.py:221 +#: modules/websession/lib/websession_webinterface.py:243 +#: modules/websession/lib/websession_webinterface.py:289 +#: modules/websession/lib/websession_webinterface.py:540 +#: modules/websession/lib/websession_webinterface.py:563 +#: modules/websession/lib/websession_webinterface.py:592 +#: modules/websession/lib/websession_webinterface.py:608 +#: modules/websession/lib/websession_webinterface.py:626 +#: modules/websession/lib/websession_webinterface.py:636 +#: modules/websession/lib/websession_webinterface.py:659 +#: modules/websession/lib/websession_webinterface.py:682 +#: modules/websession/lib/websession_webinterface.py:708 #, python-format msgid "%s, personalize" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:145 #: modules/webalert/lib/webalert_webinterface.py:230 #: modules/webalert/lib/webalert_webinterface.py:364 #: modules/webalert/lib/webalert_webinterface.py:441 #: modules/webalert/lib/webalert_webinterface.py:515 #: modules/webstyle/lib/webstyle_templates.py:581 #: modules/webstyle/lib/webstyle_templates.py:618 #: modules/webstyle/lib/webstyle_templates.py:620 #: modules/websubmit/lib/websubmit_engine.py:1736 #: modules/websubmit/lib/websubmit_webinterface.py:1112 #: modules/bibcatalog/lib/bibcatalog_templates.py:37 #: modules/bibedit/lib/bibedit_webinterface.py:208 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:496 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:559 #: modules/bibknowledge/lib/bibknowledgeadmin.py:280 msgid "Error" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:152 #: modules/webalert/lib/webalert_webinterface.py:185 #: modules/webalert/lib/webalert_webinterface.py:237 #: modules/webalert/lib/webalert_webinterface.py:371 #: modules/webalert/lib/webalert_webinterface.py:448 #: modules/webalert/lib/webalert_webinterface.py:522 #, python-format msgid "%s Personalize, Set a new alert" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:178 msgid "Set a new alert" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:263 msgid "Modify alert settings" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:270 #, python-format msgid "%s Personalize, Modify alert settings" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:314 #: modules/websession/lib/websession_templates.py:488 msgid "Your Alerts" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:321 #: modules/webalert/lib/webalert_webinterface.py:397 #: modules/webalert/lib/webalert_webinterface.py:474 #: modules/webalert/lib/webalert_webinterface.py:550 #, python-format msgid "%s Personalize, Display alerts" msgstr "" #: modules/webalert/lib/webalert_webinterface.py:390 #: modules/webalert/lib/webalert_webinterface.py:467 #: modules/webalert/lib/webalert_webinterface.py:543 msgid "Display alerts" msgstr "" -#: modules/webbasket/lib/webbasket.py:2014 -#: modules/webbasket/lib/webbasket.py:2127 -#: modules/webbasket/lib/webbasket_templates.py:100 -#: modules/webbasket/lib/webbasket_templates.py:150 -#: modules/webbasket/lib/webbasket_templates.py:156 -#: modules/webbasket/lib/webbasket_templates.py:604 -#: modules/webbasket/lib/webbasket_templates.py:656 -msgid "Personal baskets" -msgstr "" - -#: modules/webbasket/lib/webbasket.py:2038 -#: modules/webbasket/lib/webbasket.py:2144 -#: modules/webbasket/lib/webbasket_templates.py:166 -#: modules/webbasket/lib/webbasket_templates.py:198 -#: modules/webbasket/lib/webbasket_templates.py:204 -#: modules/webbasket/lib/webbasket_templates.py:613 -#: modules/webbasket/lib/webbasket_templates.py:690 -msgid "Group baskets" +#: modules/webbasket/lib/webbasket.py:2030 +#: modules/webbasket/lib/webbasket.py:2098 +#: modules/webbasket/lib/webbasket_templates_epfl.py:73 +#: modules/webbasket/lib/webbasket_templates_epfl.py:259 +msgid "Personal collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2064 -msgid "Others' baskets" +#: modules/webbasket/lib/webbasket.py:2044 +#: modules/webbasket/lib/webbasket_templates_epfl.py:290 +msgid "Group collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2100 -#: modules/websession/lib/websession_templates.py:479 -#: modules/websession/lib/websession_templates.py:625 -msgid "Your Baskets" +#: modules/webbasket/lib/webbasket.py:2084 +#: modules/webstyle/lib/webstyle_templates_epfl.py:371 +msgid "My account" msgstr "" -#: modules/webbasket/lib/webbasket.py:2105 -#: modules/webbasket/lib/webbasket_webinterface.py:1254 -#: modules/webbasket/lib/webbasket_webinterface.py:1329 -#: modules/webbasket/lib/webbasket_webinterface.py:1373 -#: modules/webbasket/lib/webbasket_webinterface.py:1434 -msgid "List of public baskets" +#: modules/webbasket/lib/webbasket.py:2085 +#: modules/websession/lib/websession_templates_epfl.py:147 +msgid "My collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2116 -#: modules/webbasket/lib/webbasket_webinterface.py:429 -msgid "Search baskets" +#: modules/webbasket/lib/webbasket.py:2088 +msgid "Search collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2121 -#: modules/webbasket/lib/webbasket_webinterface.py:741 -#: modules/websearch/lib/websearch_templates.py:2850 -#: modules/websearch/lib/websearch_templates.py:3036 -msgid "Add to basket" +#: modules/webbasket/lib/webbasket.py:2090 +msgid "Add to collection" msgstr "" -#: modules/webbasket/lib/webbasket.py:2161 -#: modules/webbasket/lib/webbasket_templates.py:217 -#: modules/webbasket/lib/webbasket_templates.py:223 -#: modules/webbasket/lib/webbasket_templates.py:622 -#: modules/webbasket/lib/webbasket_templates.py:724 -msgid "Public baskets" +#: modules/webbasket/lib/webbasket.py:2111 +#: modules/webbasket/lib/webbasket_templates_epfl.py:119 +msgid "Groups' collections" msgstr "" -#: modules/webbasket/lib/webbasket.py:2191 +#: modules/webbasket/lib/webbasket.py:2143 #, python-format msgid "" -"You have %(x_nb_perso)s personal baskets and are subscribed to " -"%(x_nb_group)s group baskets and %(x_nb_public)s other users public baskets." +"You have %(x_nb_perso)s personal collections and are subscribed to " +"%(x_nb_group)s group collections." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:86 msgid "" "You have no personal or group baskets or are subscribed to any public " "baskets." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:87 #, python-format msgid "" "You may want to start by %(x_url_open)screating a new basket%(x_url_close)s." msgstr "" +#: modules/webbasket/lib/webbasket_templates.py:100 +#: modules/webbasket/lib/webbasket_templates.py:150 +#: modules/webbasket/lib/webbasket_templates.py:156 +#: modules/webbasket/lib/webbasket_templates.py:604 +#: modules/webbasket/lib/webbasket_templates.py:656 +msgid "Personal baskets" +msgstr "" + #: modules/webbasket/lib/webbasket_templates.py:111 #: modules/webbasket/lib/webbasket_templates.py:177 msgid "Back to Your Baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:117 #: modules/webbasket/lib/webbasket_webinterface.py:1223 msgid "Create basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:123 #: modules/webbasket/lib/webbasket_webinterface.py:1145 msgid "Edit topic" msgstr "" +#: modules/webbasket/lib/webbasket_templates.py:166 +#: modules/webbasket/lib/webbasket_templates.py:198 +#: modules/webbasket/lib/webbasket_templates.py:204 +#: modules/webbasket/lib/webbasket_templates.py:613 +#: modules/webbasket/lib/webbasket_templates.py:690 +msgid "Group baskets" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates.py:217 +#: modules/webbasket/lib/webbasket_templates.py:223 +#: modules/webbasket/lib/webbasket_templates.py:622 +#: modules/webbasket/lib/webbasket_templates.py:724 +msgid "Public baskets" +msgstr "" + #: modules/webbasket/lib/webbasket_templates.py:558 msgid "Search baskets for" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:559 msgid "Search also in notes (where allowed)" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:596 msgid "Results overview" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:597 #: modules/webbasket/lib/webbasket_templates.py:606 #: modules/webbasket/lib/webbasket_templates.py:615 #: modules/webbasket/lib/webbasket_templates.py:624 #: modules/webbasket/lib/webbasket_templates.py:633 #: modules/webbasket/lib/webbasket_templates.py:658 #: modules/webbasket/lib/webbasket_templates.py:676 #: modules/webbasket/lib/webbasket_templates.py:692 #: modules/webbasket/lib/webbasket_templates.py:710 #: modules/webbasket/lib/webbasket_templates.py:726 #: modules/webbasket/lib/webbasket_templates.py:743 #: modules/webbasket/lib/webbasket_templates.py:759 #: modules/webbasket/lib/webbasket_templates.py:775 +#: modules/webbasket/lib/webbasket_templates_epfl.py:261 +#: modules/webbasket/lib/webbasket_templates_epfl.py:278 +#: modules/webbasket/lib/webbasket_templates_epfl.py:292 +#: modules/webbasket/lib/webbasket_templates_epfl.py:309 #, python-format msgid "%i items found" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:631 #: modules/webbasket/lib/webbasket_templates.py:757 msgid "All public baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:647 +#: modules/webbasket/lib/webbasket_templates_epfl.py:249 msgid "No items found." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:674 #: modules/webbasket/lib/webbasket_templates.py:708 #: modules/webbasket/lib/webbasket_templates.py:741 #: modules/webbasket/lib/webbasket_templates.py:773 +#: modules/webbasket/lib/webbasket_templates_epfl.py:276 +#: modules/webbasket/lib/webbasket_templates_epfl.py:307 #, python-format msgid "In %(x_linked_basket_name)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:868 #: modules/webbasket/lib/webbasket_webinterface.py:1272 #: modules/webbasket/lib/webbasket_webinterface.py:1388 #: modules/webbasket/lib/webbasket_webinterface.py:1449 msgid "Public basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:869 msgid "Owner" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:870 msgid "Last update" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:871 msgid "Items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:872 msgid "Views" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:954 msgid "There is currently no publicly accessible basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:976 #, python-format msgid "" "Displaying public baskets %(x_from)i - %(x_to)i out of " "%(x_total_public_basket)i public baskets in total." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1043 #: modules/webbasket/lib/webbasket_templates.py:1067 #, python-format msgid "%(x_title)s, by %(x_name)s on %(x_date)s:" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1046 #: modules/webbasket/lib/webbasket_templates.py:1070 #: modules/webcomment/lib/webcomment.py:1477 #: modules/webcomment/lib/webcomment_templates.py:365 #, python-format msgid "%(x_name)s wrote on %(x_date)s:" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1126 msgid "Select topic" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1142 #: modules/webbasket/lib/webbasket_templates.py:1503 #: modules/webbasket/lib/webbasket_templates.py:1512 msgid "Choose topic" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1143 #: modules/webbasket/lib/webbasket_templates.py:1514 msgid "or create a new one" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1143 msgid "Create new topic" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1144 #: modules/webbasket/lib/webbasket_templates.py:1500 msgid "Basket name" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1146 msgid "Create a new basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1173 msgid "Create new basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1243 #: modules/webbasket/lib/webbasket_templates.py:2260 #: modules/webbasket/lib/webbasket_templates.py:2637 #: modules/webbasket/lib/webbasket_templates.py:3146 #: modules/webbasket/lib/webbasket_templates.py:3463 msgid "External item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1244 msgid "" "Provide a url for the external item you wish to add and fill in a title and " "description" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1245 #: modules/websubmit/lib/websubmit_templates.py:2717 #: modules/bibcirculation/lib/bibcirculation_utils.py:319 #: modules/bibcirculation/lib/bibcirculation_templates.py:1924 #: modules/bibcirculation/lib/bibcirculation_templates.py:5226 #: modules/bibcirculation/lib/bibcirculation_templates.py:7923 #: modules/bibcirculation/lib/bibcirculation_templates.py:10932 #: modules/bibcirculation/lib/bibcirculation_templates.py:11345 #: modules/bibcirculation/lib/bibcirculation_templates.py:15576 #: modules/bibcirculation/lib/bibcirculation_templates.py:15738 +#: modules/websearch/lib/websearch_templates_epfl.py:981 +#: modules/websearch/lib/websearch_templates_epfl.py:1706 msgid "Title" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1249 msgid "URL" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1279 #, python-format msgid "%i items have been successfully added to your basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1280 #, python-format msgid "Proceed to the %(x_url_open)sbasket%(x_url_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1285 #, python-format msgid " or return to your %(x_url_open)sprevious basket%(x_url_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1289 +#: modules/webbasket/lib/webbasket_templates_epfl.py:484 #, python-format msgid " or return to your %(x_url_open)ssearch%(x_url_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1398 #, python-format msgid "Adding %i items to your baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1399 #, python-format msgid "" "Please choose a basket: %(x_basket_selection_box)s %(x_fmt_open)s(or " "%(x_url_open)screate a new one%(x_url_close)s first)%(x_fmt_close)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1405 msgid "Optionally, add a note to each one of these items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1406 msgid "Optionally, add a note to this item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1412 +#: modules/webbasket/lib/webbasket_templates_epfl.py:527 msgid "Add items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1436 msgid "Are you sure you want to delete this basket?" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1438 #, python-format msgid "%i users are subscribed to this basket." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1440 #, python-format msgid "%i user groups are subscribed to this basket." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1442 #, python-format msgid "You have set %i alerts on this basket." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1480 #: modules/webcomment/lib/webcomment_templates.py:229 #: modules/webcomment/lib/webcomment_templates.py:630 #: modules/webcomment/lib/webcomment_templates.py:1904 #: modules/webcomment/lib/webcomment_templates.py:1928 #: modules/webcomment/lib/webcomment_templates.py:1954 #: modules/webmessage/lib/webmessage_templates.py:508 #: modules/websession/lib/websession_templates.py:2235 #: modules/websession/lib/websession_templates.py:2275 +#: modules/webbasket/lib/webbasket_templates_epfl.py:599 msgid "Yes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1517 #: modules/webbasket/lib/webbasket_templates.py:1613 +#: modules/webbasket/lib/webbasket_templates_epfl.py:625 msgid "General settings" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1532 #: modules/webbasket/lib/webbasket_templates.py:1707 #: modules/webbasket/lib/webbasket_templates.py:1734 +#: modules/webbasket/lib/webbasket_templates_epfl.py:650 +#: modules/webbasket/lib/webbasket_templates_epfl.py:764 +#: modules/webbasket/lib/webbasket_templates_epfl.py:767 msgid "Add group" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1537 +#: modules/webbasket/lib/webbasket_templates_epfl.py:648 msgid "Manage group rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1549 msgid "Manage global sharing rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1554 #: modules/webbasket/lib/webbasket_templates.py:1620 #: modules/webbasket/lib/webbasket_templates.py:1969 #: modules/webbasket/lib/webbasket_templates.py:2048 msgid "Delete basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1578 #, python-format msgid "Editing basket %(x_basket_name)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1587 #: modules/webbasket/lib/webbasket_templates.py:1642 +#: modules/webbasket/lib/webbasket_templates_epfl.py:689 msgid "Save changes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1608 msgid "Topic name" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1637 #, python-format msgid "Editing topic: %(x_topic_name)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1654 #: modules/webbasket/lib/webbasket_templates.py:1669 +#: modules/webbasket/lib/webbasket_templates_epfl.py:701 msgid "No rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1656 #: modules/webbasket/lib/webbasket_templates.py:1671 +#: modules/webbasket/lib/webbasket_templates_epfl.py:703 msgid "View records" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1658 #: modules/webbasket/lib/webbasket_templates.py:1660 #: modules/webbasket/lib/webbasket_templates.py:1673 #: modules/webbasket/lib/webbasket_templates.py:1675 #: modules/webbasket/lib/webbasket_templates.py:1677 #: modules/webbasket/lib/webbasket_templates.py:1679 #: modules/webbasket/lib/webbasket_templates.py:1681 #: modules/webbasket/lib/webbasket_templates.py:1683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:705 +#: modules/webbasket/lib/webbasket_templates_epfl.py:707 +#: modules/webbasket/lib/webbasket_templates_epfl.py:709 msgid "and" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1658 msgid "view comments" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1660 msgid "add comments" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1673 msgid "view notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1675 msgid "add notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1677 +#: modules/webbasket/lib/webbasket_templates_epfl.py:705 msgid "add records" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1679 msgid "delete notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1681 +#: modules/webbasket/lib/webbasket_templates_epfl.py:707 msgid "remove records" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:709 msgid "manage sharing rights" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1705 +#: modules/webbasket/lib/webbasket_templates_epfl.py:734 msgid "You are not a member of a group." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1727 msgid "Sharing basket to a new group" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1756 #: modules/websession/lib/websession_templates.py:522 msgid "" "You are logged in as a guest user, so your baskets will disappear at the end " "of the current session." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1757 #: modules/webbasket/lib/webbasket_templates.py:1772 #: modules/websession/lib/websession_templates.py:525 #, python-format msgid "" "If you wish you can %(x_url_open)slogin or register here%(x_url_close)s." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1771 -#: modules/websession/lib/websession_webinterface.py:261 +#: modules/websession/lib/websession_webinterface.py:266 msgid "This functionality is forbidden to guest users." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1825 #: modules/webcomment/lib/webcomment_templates.py:823 msgid "Back to search results" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1953 #: modules/webbasket/lib/webbasket_templates.py:2986 #, python-format msgid "%i items" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1954 #: modules/webbasket/lib/webbasket_templates.py:2988 #, python-format msgid "%i notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1954 msgid "no notes yet" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1957 #, python-format msgid "%i subscribers" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1959 #: modules/webbasket/lib/webbasket_templates.py:2990 msgid "last update" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1963 #: modules/webbasket/lib/webbasket_templates.py:2042 msgid "Add item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1966 #: modules/webbasket/lib/webbasket_templates.py:2045 #: modules/webbasket/lib/webbasket_webinterface.py:1043 msgid "Edit basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:1979 #: modules/webbasket/lib/webbasket_templates.py:2056 #: modules/webbasket/lib/webbasket_templates.py:2998 #: modules/webbasket/lib/webbasket_templates.py:3051 msgid "Unsubscribe from basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2061 msgid "This basket is publicly accessible at the following address:" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2125 #: modules/webbasket/lib/webbasket_templates.py:3101 msgid "Basket is empty" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2159 +#: modules/webbasket/lib/webbasket_templates_epfl.py:961 msgid "You do not have sufficient rights to view this basket's content." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2202 msgid "Move item up" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2206 msgid "You cannot move this item up" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2220 msgid "Move item down" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2224 msgid "You cannot move this item down" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2238 #: modules/webbasket/lib/webbasket_templates.py:3142 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1035 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1036 msgid "Copy item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2254 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1049 msgid "Remove item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2329 #: modules/webbasket/lib/webbasket_templates.py:2832 #: modules/webbasket/lib/webbasket_templates.py:3206 #: modules/webbasket/lib/webbasket_templates.py:3636 #: modules/bibcirculation/lib/bibcirculation_templates.py:3520 #: modules/bibcirculation/lib/bibcirculation_templates.py:3650 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5407 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5909 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9813 #: modules/bibcirculation/lib/bibcirculation_templates.py:9906 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13464 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13646 #: modules/bibcirculation/lib/bibcirculation_templates.py:14198 msgid "Notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2329 #: modules/webbasket/lib/webbasket_templates.py:3206 msgid "Add a note..." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2335 #: modules/webbasket/lib/webbasket_templates.py:3212 msgid "notes" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2336 #: modules/webbasket/lib/webbasket_templates.py:3213 msgid "last note on" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2442 #: modules/webbasket/lib/webbasket_templates.py:3295 #, python-format msgid "Item %(x_item_index)i of %(x_item_total)i" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2455 #: modules/webbasket/lib/webbasket_templates.py:2458 #: modules/webbasket/lib/webbasket_templates.py:2542 #: modules/webbasket/lib/webbasket_templates.py:2545 #: modules/webbasket/lib/webbasket_templates.py:3305 #: modules/webbasket/lib/webbasket_templates.py:3308 #: modules/webbasket/lib/webbasket_templates.py:3380 #: modules/webbasket/lib/webbasket_templates.py:3383 msgid "Previous item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2470 #: modules/webbasket/lib/webbasket_templates.py:2473 #: modules/webbasket/lib/webbasket_templates.py:2557 #: modules/webbasket/lib/webbasket_templates.py:2560 #: modules/webbasket/lib/webbasket_templates.py:3317 #: modules/webbasket/lib/webbasket_templates.py:3320 #: modules/webbasket/lib/webbasket_templates.py:3392 #: modules/webbasket/lib/webbasket_templates.py:3395 msgid "Next item" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2483 #: modules/webbasket/lib/webbasket_templates.py:2570 #: modules/webbasket/lib/webbasket_templates.py:3327 #: modules/webbasket/lib/webbasket_templates.py:3402 msgid "Return to basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2630 #: modules/webbasket/lib/webbasket_templates.py:3456 msgid "The item you have selected does not exist." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2658 #: modules/webbasket/lib/webbasket_templates.py:3480 msgid "You do not have sufficient rights to view this item's notes." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2699 msgid "You do not have sufficient rights to view this item." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2806 #: modules/webbasket/lib/webbasket_templates.py:2816 #: modules/webbasket/lib/webbasket_templates.py:3610 #: modules/webbasket/lib/webbasket_templates.py:3620 #: modules/webbasket/lib/webbasket_webinterface.py:495 #: modules/webbasket/lib/webbasket_webinterface.py:1512 msgid "Add a note" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2807 #: modules/webbasket/lib/webbasket_templates.py:3611 msgid "Add note" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2853 #: modules/webbasket/lib/webbasket_templates.py:3657 #: modules/webcomment/lib/webcomment_templates.py:371 #: modules/webmessage/lib/webmessage_templates.py:111 msgid "Reply" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2883 #: modules/webbasket/lib/webbasket_templates.py:3682 #, python-format msgid "%(x_title)s, by %(x_name)s on %(x_date)s" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2885 #: modules/webbasket/lib/webbasket_templates.py:3684 #: modules/websession/lib/websession_templates.py:167 #: modules/websession/lib/websession_templates.py:218 #: modules/websession/lib/websession_templates.py:927 #: modules/websession/lib/websession_templates.py:1051 msgid "Note" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2988 msgid ", no notes yet" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:2995 #: modules/webbasket/lib/webbasket_templates.py:3048 msgid "Subscribe to basket" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3054 msgid "This public basket belongs to the user " msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3078 msgid "This public basket belongs to you." msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3849 msgid "All your baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3851 #: modules/webbasket/lib/webbasket_templates.py:3926 msgid "Your personal baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3857 #: modules/webbasket/lib/webbasket_templates.py:3937 msgid "Your group baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3863 msgid "Your public baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3864 msgid "All the public baskets" msgstr "" #: modules/webbasket/lib/webbasket_templates.py:3921 msgid "*** basket name ***" msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:159 #: modules/webbasket/lib/webbasket_webinterface.py:331 #: modules/webbasket/lib/webbasket_webinterface.py:407 #: modules/webbasket/lib/webbasket_webinterface.py:473 #: modules/webbasket/lib/webbasket_webinterface.py:541 #: modules/webbasket/lib/webbasket_webinterface.py:619 #: modules/webbasket/lib/webbasket_webinterface.py:706 #: modules/webbasket/lib/webbasket_webinterface.py:784 #: modules/webbasket/lib/webbasket_webinterface.py:869 #: modules/webbasket/lib/webbasket_webinterface.py:967 #: modules/webbasket/lib/webbasket_webinterface.py:1084 #: modules/webbasket/lib/webbasket_webinterface.py:1186 #: modules/webbasket/lib/webbasket_webinterface.py:1369 #: modules/webbasket/lib/webbasket_webinterface.py:1430 #: modules/webbasket/lib/webbasket_webinterface.py:1493 #: modules/webbasket/lib/webbasket_webinterface.py:1556 msgid "You are not authorized to use baskets." msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:170 msgid "You are not authorized to view this attachment" msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:362 msgid "Display baskets" msgstr "" +#: modules/webbasket/lib/webbasket_webinterface.py:429 +msgid "Search baskets" +msgstr "" + #: modules/webbasket/lib/webbasket_webinterface.py:567 #: modules/webbasket/lib/webbasket_webinterface.py:643 #: modules/webbasket/lib/webbasket_webinterface.py:1579 msgid "Display item and notes" msgstr "" +#: modules/webbasket/lib/webbasket_webinterface.py:741 +#: modules/websearch/lib/websearch_templates.py:2850 +#: modules/websearch/lib/websearch_templates.py:3036 +msgid "Add to basket" +msgstr "" + #: modules/webbasket/lib/webbasket_webinterface.py:825 msgid "Delete a basket" msgstr "" #: modules/webbasket/lib/webbasket_webinterface.py:884 msgid "Copy record to basket" msgstr "" +#: modules/webbasket/lib/webbasket_webinterface.py:1254 +#: modules/webbasket/lib/webbasket_webinterface.py:1329 +#: modules/webbasket/lib/webbasket_webinterface.py:1373 +#: modules/webbasket/lib/webbasket_webinterface.py:1434 +msgid "List of public baskets" +msgstr "" + #: modules/webcomment/lib/webcomment.py:1072 #, python-format msgid "Record %i" msgstr "" #: modules/webcomment/lib/webcomment.py:1083 #, python-format msgid "%(report_number)s\"%(title)s\" has been reviewed" msgstr "" #: modules/webcomment/lib/webcomment.py:1087 #, python-format msgid "%(report_number)s\"%(title)s\" has been commented" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:86 #: modules/webcomment/lib/webcomment_templates.py:241 #: modules/webcomment/lib/webcomment_templates.py:671 #: modules/webcomment/lib/webcomment_templates.py:681 #, python-format msgid "%(x_nb)i comments for round \"%(x_name)s\"" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:112 #: modules/webcomment/lib/webcomment_templates.py:798 #: modules/websubmit/lib/websubmit_templates.py:2665 msgid "Write a comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:120 #, python-format msgid "Showing the latest %i comments:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:136 #: modules/webcomment/lib/webcomment_templates.py:161 msgid "Discuss this document" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:162 #: modules/webcomment/lib/webcomment_templates.py:808 msgid "Start a discussion about any aspect of this document." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:178 #, python-format msgid "Sorry, the record %s does not seem to exist." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:180 #, python-format msgid "Sorry, %s is not a valid ID value." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:182 msgid "Sorry, no record ID was provided." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:186 #, python-format msgid "You may want to start browsing from %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:264 #: modules/webcomment/lib/webcomment_templates.py:722 msgid "Was this review helpful?" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:275 #: modules/webcomment/lib/webcomment_templates.py:312 #: modules/webcomment/lib/webcomment_templates.py:798 msgid "Write a review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:282 #: modules/webcomment/lib/webcomment_templates.py:786 #: modules/webcomment/lib/webcomment_templates.py:1975 #, python-format msgid "Average review score: %(x_nb_score)s based on %(x_nb_reviews)s reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:285 #, python-format msgid "Readers found the following %s reviews to be most helpful." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:288 #: modules/webcomment/lib/webcomment_templates.py:311 #, python-format msgid "View all %s reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:307 #: modules/webcomment/lib/webcomment_templates.py:329 #: modules/webcomment/lib/webcomment_templates.py:2016 msgid "Rate this document" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:330 #: modules/webcomment/lib/webcomment_templates.py:810 msgid "Be the first to review this document." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:375 #: modules/webcomment/lib/webcomment_templates.py:723 msgid "Report abuse" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:390 msgid "Undelete comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:399 #: modules/webcomment/lib/webcomment_templates.py:401 msgid "Delete comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:408 msgid "Unreport comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:419 msgid "Attached file" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:419 msgid "Attached files" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:473 #, python-format msgid "Reviewed by %(x_nickname)s on %(x_date)s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:474 #, python-format msgid "%(x_nb_people)i out of %(x_nb_total)i people found this review useful" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:496 msgid "Undelete review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:505 msgid "Delete review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:511 msgid "Unreport review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:600 #: modules/webcomment/lib/webcomment_templates.py:615 -#: modules/webcomment/lib/webcomment_webinterface.py:231 -#: modules/webcomment/lib/webcomment_webinterface.py:444 +#: modules/webcomment/lib/webcomment_webinterface.py:230 +#: modules/webcomment/lib/webcomment_webinterface.py:436 #: modules/websubmit/lib/websubmit_templates.py:2663 msgid "Comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:601 #: modules/webcomment/lib/webcomment_templates.py:616 -#: modules/webcomment/lib/webcomment_webinterface.py:231 -#: modules/webcomment/lib/webcomment_webinterface.py:444 +#: modules/webcomment/lib/webcomment_webinterface.py:230 +#: modules/webcomment/lib/webcomment_webinterface.py:436 +#: modules/websearch/lib/websearch_templates_epfl.py:512 msgid "Reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:761 #: modules/websearch/lib/websearch_templates.py:1862 #: modules/bibcatalog/lib/bibcatalog_templates.py:50 #: modules/bibknowledge/lib/bibknowledge_templates.py:159 +#: modules/websearch/lib/websearch_templates_epfl.py:1186 +#: modules/websearch/lib/websearch_templates_epfl.py:1603 +#: modules/websearch/lib/websearch_templates_epfl.py:1606 msgid "Previous" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:777 #: modules/bibcatalog/lib/bibcatalog_templates.py:72 #: modules/bibknowledge/lib/bibknowledge_templates.py:157 +#: modules/websearch/lib/websearch_templates_epfl.py:1623 +#: modules/websearch/lib/websearch_templates_epfl.py:1626 msgid "Next" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:801 #, python-format msgid "There is a total of %s reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:803 #, python-format msgid "There is a total of %s comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:822 #: modules/webcomment/lib/webcomment_templates.py:1583 #: modules/websearch/lib/websearch_templates.py:569 +#: modules/websearch/lib/websearch_templates_epfl.py:175 +#: modules/bibformat/lib/elements/bfe_doctype.py:49 msgid "Record" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:829 #: modules/webcomment/lib/webcomment_templates.py:888 msgid "review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:829 #: modules/webcomment/lib/webcomment_templates.py:888 msgid "comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:830 #: modules/webcomment/lib/webcomment_templates.py:1818 +#: modules/bibformat/lib/elements/bfe_doctype.py:27 msgid "Review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:830 #: modules/webcomment/lib/webcomment_templates.py:1147 #: modules/webcomment/lib/webcomment_templates.py:1586 #: modules/webcomment/lib/webcomment_templates.py:1818 #: modules/websubmit/lib/websubmit_managedocfiles.py:374 #: modules/websubmit/lib/websubmit_templates.py:2719 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:347 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:401 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:455 msgid "Comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:886 msgid "Viewing" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:887 msgid "Page:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:905 msgid "Subscribe" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:914 msgid "Unsubscribe" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:921 msgid "You are not authorized to comment or review." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1078 #, python-format msgid "Note: Your nickname, %s, will be displayed as author of this comment." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1082 #: modules/webcomment/lib/webcomment_templates.py:1195 #, python-format msgid "" "Note: you have not %(x_url_open)sdefined your nickname%(x_url_close)s. " "%(x_nickname)s will be displayed as the author of this comment." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1099 msgid "Once logged in, authorized users can also attach files." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1114 msgid "Optionally, attach a file to this comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1115 msgid "Optionally, attach files to this comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1116 msgid "Max one file" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1117 #, python-format msgid "Max %i files" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1118 #, python-format msgid "Max %(x_nb_bytes)s per file" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1132 msgid "Send me an email when a new comment is posted" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1146 #: modules/webcomment/lib/webcomment_templates.py:1265 msgid "Article" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1148 msgid "Add comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1190 #, python-format msgid "" "Note: Your nickname, %s, will be displayed as the author of this review." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1266 msgid "Rate this article" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1267 msgid "Select a score" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1268 msgid "Give a title to your review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1269 msgid "Write your review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1274 msgid "Add review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1284 -#: modules/webcomment/lib/webcomment_webinterface.py:489 +#: modules/webcomment/lib/webcomment_webinterface.py:481 msgid "Add Review" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1305 msgid "Your review was successfully added." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1307 msgid "Your comment was successfully added." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1310 msgid "Back to record" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1388 #: modules/webcomment/web/admin/webcommentadmin.py:173 msgid "View most commented records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1390 #: modules/webcomment/web/admin/webcommentadmin.py:209 msgid "View latest commented records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1392 #: modules/webcomment/web/admin/webcommentadmin.py:142 msgid "View all comments reported as abuse" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1396 #: modules/webcomment/web/admin/webcommentadmin.py:172 msgid "View most reviewed records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1398 #: modules/webcomment/web/admin/webcommentadmin.py:208 msgid "View latest reviewed records" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1400 #: modules/webcomment/web/admin/webcommentadmin.py:142 msgid "View all reviews reported as abuse" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1408 msgid "View all users who have been reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1410 msgid "Guide" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1412 msgid "Comments and reviews are disabled" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1432 msgid "" "Please enter the ID of the comment/review so that you can view it before " "deciding whether to delete it or not" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1456 msgid "Comment ID:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1457 msgid "Or enter a record ID to list all the associated comments/reviews:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1458 msgid "Record ID:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1460 msgid "View Comment" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1481 msgid "There have been no reports so far." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1485 #, python-format msgid "View all %s reported comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1488 #, python-format msgid "View all %s reported reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1525 msgid "" "Here is a list, sorted by total number of reports, of all users who have had " "a comment reported at least once." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1533 #: modules/webcomment/lib/webcomment_templates.py:1562 #: modules/websession/lib/websession_templates.py:159 #: modules/websession/lib/websession_templates.py:1046 msgid "Nickname" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1534 #: modules/webcomment/lib/webcomment_templates.py:1566 #: modules/bibcirculation/lib/bibcirculation_utils.py:342 #: modules/bibcirculation/lib/bibcirculation_templates.py:2185 #: modules/bibcirculation/lib/bibcirculation_templates.py:2271 #: modules/bibcirculation/lib/bibcirculation_templates.py:2477 #: modules/bibcirculation/lib/bibcirculation_templates.py:3518 #: modules/bibcirculation/lib/bibcirculation_templates.py:3646 #: modules/bibcirculation/lib/bibcirculation_templates.py:4832 #: modules/bibcirculation/lib/bibcirculation_templates.py:5358 #: modules/bibcirculation/lib/bibcirculation_templates.py:5403 #: modules/bibcirculation/lib/bibcirculation_templates.py:5663 #: modules/bibcirculation/lib/bibcirculation_templates.py:5725 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5905 #: modules/bibcirculation/lib/bibcirculation_templates.py:6137 #: modules/bibcirculation/lib/bibcirculation_templates.py:6200 #: modules/bibcirculation/lib/bibcirculation_templates.py:8086 #: modules/bibcirculation/lib/bibcirculation_templates.py:8314 #: modules/bibcirculation/lib/bibcirculation_templates.py:8910 #: modules/bibcirculation/lib/bibcirculation_templates.py:9368 #: modules/bibcirculation/lib/bibcirculation_templates.py:10440 #: modules/bibcirculation/lib/bibcirculation_templates.py:10606 #: modules/bibcirculation/lib/bibcirculation_templates.py:11489 #: modules/bibcirculation/lib/bibcirculation_templates.py:12381 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13643 #: modules/bibcirculation/lib/bibcirculation_templates.py:13886 #: modules/bibcirculation/lib/bibcirculation_templates.py:13953 #: modules/bibcirculation/lib/bibcirculation_templates.py:14196 #: modules/bibcirculation/lib/bibcirculation_templates.py:14895 #: modules/bibcirculation/lib/bibcirculation_templates.py:16102 msgid "Email" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1535 #: modules/webcomment/lib/webcomment_templates.py:1564 msgid "User ID" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1537 msgid "Number positive votes" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1538 msgid "Number negative votes" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1539 msgid "Total number votes" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1540 msgid "Total number of reports" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1541 msgid "View all user's reported comments/reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1574 #, python-format msgid "This review has been reported %i times" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1576 #, python-format msgid "This comment has been reported %i times" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1819 msgid "Written by" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1820 msgid "General informations" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1821 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:652 msgid "Select" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1835 msgid "Delete selected reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1836 #: modules/webcomment/lib/webcomment_templates.py:1843 msgid "Suppress selected abuse report" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1837 msgid "Undelete selected reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1841 msgid "Undelete selected comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1842 msgid "Delete selected comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1851 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:494 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:557 #: modules/bibcirculation/lib/bibcirculation_templates.py:1529 msgid "OK" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1857 #, python-format msgid "Here are the reported reviews of user %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1859 #, python-format msgid "Here are the reported comments of user %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1863 #, python-format msgid "Here is review %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1865 #, python-format msgid "Here is comment %s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1868 #, python-format msgid "Here is review %(x_cmtID)s written by user %(x_user)s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1870 #, python-format msgid "Here is comment %(x_cmtID)s written by user %(x_user)s" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1876 msgid "Here are all reported reviews sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1878 msgid "Here are all reported comments sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1883 #, python-format msgid "Here are all reviews for record %i, sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1884 msgid "Show comments" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1886 #, python-format msgid "Here are all comments for record %i, sorted by the most reported" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1887 msgid "Show reviews" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1912 #: modules/webcomment/lib/webcomment_templates.py:1936 #: modules/webcomment/lib/webcomment_templates.py:1962 msgid "comment ID" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1912 msgid "successfully deleted" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1936 msgid "successfully undeleted" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1962 msgid "successfully suppressed abuse report" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:1979 msgid "Not yet reviewed" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2047 #, python-format msgid "" "The following review was sent to %(CFG_SITE_NAME)s by %(user_nickname)s:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2048 #, python-format msgid "" "The following comment was sent to %(CFG_SITE_NAME)s by %(user_nickname)s:" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2075 msgid "This is an automatic message, please don't reply to it." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2077 #, python-format msgid "To post another comment, go to <%(x_url)s> instead." msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2082 #, python-format msgid "To specifically reply to this comment, go to <%(x_url)s>" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2087 #, python-format msgid "To unsubscribe from this discussion, go to <%(x_url)s>" msgstr "" #: modules/webcomment/lib/webcomment_templates.py:2091 #, python-format msgid "For any question, please use <%(CFG_SITE_SUPPORT_EMAIL)s>" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:256 -#: modules/webcomment/lib/webcomment_webinterface.py:511 +#: modules/webcomment/lib/webcomment_webinterface.py:255 +#: modules/webcomment/lib/webcomment_webinterface.py:503 msgid "Record Not Found" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:335 -#: modules/webcomment/lib/webcomment_webinterface.py:573 -#: modules/webcomment/lib/webcomment_webinterface.py:650 +#: modules/webcomment/lib/webcomment_webinterface.py:334 +#: modules/webcomment/lib/webcomment_webinterface.py:565 +#: modules/webcomment/lib/webcomment_webinterface.py:642 msgid "Specified comment does not belong to this record" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:344 -#: modules/webcomment/lib/webcomment_webinterface.py:579 -#: modules/webcomment/lib/webcomment_webinterface.py:656 +#: modules/webcomment/lib/webcomment_webinterface.py:343 +#: modules/webcomment/lib/webcomment_webinterface.py:571 +#: modules/webcomment/lib/webcomment_webinterface.py:648 msgid "You do not have access to the specified comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:491 +#: modules/webcomment/lib/webcomment_webinterface.py:483 #: modules/websubmit/lib/websubmit_templates.py:2659 #: modules/websubmit/lib/websubmit_templates.py:2660 msgid "Add Comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:584 +#: modules/webcomment/lib/webcomment_webinterface.py:576 msgid "You cannot vote for a deleted comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:661 +#: modules/webcomment/lib/webcomment_webinterface.py:653 msgid "You cannot report a deleted comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:788 -#: modules/webcomment/lib/webcomment_webinterface.py:828 +#: modules/webcomment/lib/webcomment_webinterface.py:780 +#: modules/webcomment/lib/webcomment_webinterface.py:820 msgid "Page Not Found" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:789 +#: modules/webcomment/lib/webcomment_webinterface.py:781 msgid "The requested comment could not be found" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:809 +#: modules/webcomment/lib/webcomment_webinterface.py:801 msgid "You cannot access files of a deleted comment" msgstr "" -#: modules/webcomment/lib/webcomment_webinterface.py:829 +#: modules/webcomment/lib/webcomment_webinterface.py:821 msgid "The requested file could not be found" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:45 #: modules/webcomment/web/admin/webcommentadmin.py:59 #: modules/webcomment/web/admin/webcommentadmin.py:83 #: modules/webcomment/web/admin/webcommentadmin.py:128 #: modules/webcomment/web/admin/webcommentadmin.py:166 #: modules/webcomment/web/admin/webcommentadmin.py:194 #: modules/webcomment/web/admin/webcommentadmin.py:230 #: modules/webcomment/web/admin/webcommentadmin.py:268 msgid "WebComment Admin" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:50 #: modules/webcomment/web/admin/webcommentadmin.py:88 #: modules/webcomment/web/admin/webcommentadmin.py:133 #: modules/webcomment/web/admin/webcommentadmin.py:199 #: modules/webcomment/web/admin/webcommentadmin.py:235 #: modules/webcomment/web/admin/webcommentadmin.py:273 #: modules/websearch/lib/websearch_webinterface.py:969 #: modules/websearch/web/admin/websearchadmin.py:1040 -#: modules/websession/lib/websession_webinterface.py:948 +#: modules/websession/lib/websession_webinterface.py:966 #: modules/webstyle/lib/webstyle_templates.py:583 #: modules/webjournal/web/admin/webjournaladmin.py:390 #: modules/bibcheck/web/admin/bibcheckadmin.py:333 msgid "Internal Error" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid "Delete/Undelete Reviews" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid "Delete/Undelete Comments" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:102 msgid " or Suppress abuse reports" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:244 msgid "View all reported users" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:291 msgid "Delete comments" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:294 msgid "Suppress abuse reports" msgstr "" #: modules/webcomment/web/admin/webcommentadmin.py:297 msgid "Undelete comments" msgstr "" #: modules/webmessage/lib/webmessage.py:127 msgid "The message could not be deleted." msgstr "" #: modules/webmessage/lib/webmessage.py:129 msgid "The message was successfully deleted." msgstr "" #: modules/webmessage/lib/webmessage.py:146 msgid "Your mailbox has been emptied." msgstr "" #: modules/webmessage/lib/webmessage.py:347 #, python-format msgid "The chosen date (%(x_year)i/%(x_month)i/%(x_day)i) is invalid." msgstr "" #: modules/webmessage/lib/webmessage.py:356 msgid "Please enter a user name or a group name." msgstr "" #: modules/webmessage/lib/webmessage.py:360 #, python-format msgid "" "Your message is too long, please edit it. Maximum size allowed is %i " "characters." msgstr "" #: modules/webmessage/lib/webmessage.py:375 #, python-format msgid "Group %s does not exist." msgstr "" #: modules/webmessage/lib/webmessage.py:400 #, python-format msgid "User %s does not exist." msgstr "" #: modules/webmessage/lib/webmessage.py:413 #: modules/webmessage/lib/webmessage_webinterface.py:147 #: modules/webmessage/lib/webmessage_webinterface.py:247 msgid "Write a message" msgstr "" #: modules/webmessage/lib/webmessage.py:428 msgid "" "Your message could not be sent to the following recipients due to their " "quota:" msgstr "" #: modules/webmessage/lib/webmessage.py:432 msgid "Your message has been sent." msgstr "" #: modules/webmessage/lib/webmessage.py:439 #: modules/webmessage/lib/webmessage_templates.py:472 #: modules/webmessage/lib/webmessage_webinterface.py:87 #: modules/webmessage/lib/webmessage_webinterface.py:318 #: modules/webmessage/lib/webmessage_webinterface.py:366 #: modules/websession/lib/websession_templates.py:619 msgid "Your Messages" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:86 #: modules/bibcirculation/lib/bibcirculation_templates.py:4465 msgid "Subject" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:87 msgid "Sender" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:96 msgid "No messages" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:100 msgid "No subject" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:146 msgid "Write new message" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:147 msgid "Delete All" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:189 msgid "Re:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:281 msgid "Send later?" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:282 #: modules/websubmit/lib/websubmit_templates.py:3071 msgid "To:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:283 msgid "Users" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:284 msgid "Groups" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:285 #: modules/webmessage/lib/webmessage_templates.py:447 #: modules/websubmit/lib/websubmit_templates.py:3072 msgid "Subject:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:286 #: modules/websubmit/lib/websubmit_templates.py:3073 msgid "Message:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:287 #: modules/websubmit/lib/websubmit_templates.py:3074 msgid "SEND" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:446 msgid "From:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:448 msgid "Sent on:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:449 msgid "Received on:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:450 msgid "Sent to:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:451 msgid "Sent to groups:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:452 msgid "REPLY" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:453 msgid "DELETE" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:506 msgid "Are you sure you want to empty your whole mailbox?" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:568 #, python-format msgid "Quota used: %(x_nb_used)i messages out of max. %(x_nb_total)i" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:586 msgid "Please select one or more:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:617 msgid "Add to users" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:619 msgid "Add to groups" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:622 msgid "No matching user" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:624 #: modules/websession/lib/websession_templates.py:1840 msgid "No matching group" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:661 msgid "Find users or groups:" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:662 msgid "Find a user" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:663 msgid "Find a group" msgstr "" #: modules/webmessage/lib/webmessage_templates.py:678 #, python-format msgid "You have %(x_nb_new)s new messages out of %(x_nb_total)s messages" msgstr "" #: modules/webmessage/lib/webmessage_webinterface.py:82 #: modules/webmessage/lib/webmessage_webinterface.py:136 #: modules/webmessage/lib/webmessage_webinterface.py:233 #: modules/webmessage/lib/webmessage_webinterface.py:312 #: modules/webmessage/lib/webmessage_webinterface.py:360 #: modules/webmessage/lib/webmessage_webinterface.py:408 msgid "You are not authorized to use messages." msgstr "" #: modules/webmessage/lib/webmessage_webinterface.py:414 msgid "Read a message" msgstr "" -#: modules/websearch/lib/search_engine.py:750 -#: modules/websearch/lib/search_engine.py:777 -#: modules/websearch/lib/search_engine.py:4533 -#: modules/websearch/lib/search_engine.py:4586 +#: modules/websearch/lib/search_engine.py:768 +#: modules/websearch/lib/search_engine.py:798 +#: modules/websearch/lib/search_engine.py:4603 +#: modules/websearch/lib/search_engine.py:4656 msgid "Search Results" msgstr "" -#: modules/websearch/lib/search_engine.py:880 +#: modules/websearch/lib/search_engine.py:920 #: modules/websearch/lib/websearch_templates.py:1185 msgid "any day" msgstr "" -#: modules/websearch/lib/search_engine.py:886 +#: modules/websearch/lib/search_engine.py:926 #: modules/websearch/lib/websearch_templates.py:1197 msgid "any month" msgstr "" -#: modules/websearch/lib/search_engine.py:894 +#: modules/websearch/lib/search_engine.py:934 #: modules/websearch/lib/websearch_templates.py:1211 msgid "any year" msgstr "" -#: modules/websearch/lib/search_engine.py:935 -#: modules/websearch/lib/search_engine.py:954 +#: modules/websearch/lib/search_engine.py:975 +#: modules/websearch/lib/search_engine.py:994 msgid "any public collection" msgstr "" -#: modules/websearch/lib/search_engine.py:939 +#: modules/websearch/lib/search_engine.py:979 msgid "remove this collection" msgstr "" -#: modules/websearch/lib/search_engine.py:950 +#: modules/websearch/lib/search_engine.py:990 msgid "add another collection" msgstr "" -#: modules/websearch/lib/search_engine.py:960 -#: modules/websearch/lib/websearch_webcoll.py:591 +#: modules/websearch/lib/search_engine.py:1000 +#: modules/websearch/lib/search_engine.py:1156 +#: modules/websearch/lib/websearch_templates.py:1162 +#: modules/websearch/lib/websearch_webcoll.py:596 +msgid "OR" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1000 +#: modules/websearch/lib/websearch_webcoll.py:596 msgid "rank by" msgstr "" -#: modules/websearch/lib/search_engine.py:980 +#: modules/websearch/lib/search_engine.py:1020 +#: modules/websearch/lib/websearch_templates_epfl.py:1712 msgid "HTML brief" msgstr "" -#: modules/websearch/lib/search_engine.py:1093 -#: modules/websearch/lib/websearch_webcoll.py:561 +#: modules/websearch/lib/search_engine.py:1134 +#: modules/websearch/lib/websearch_webcoll.py:566 msgid "latest first" msgstr "" -#: modules/websearch/lib/search_engine.py:1702 +#: modules/websearch/lib/search_engine.py:1155 +#: modules/websearch/lib/websearch_templates.py:1161 +msgid "AND" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1157 +#: modules/websearch/lib/websearch_templates.py:1163 +msgid "AND NOT" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1175 +#: modules/websearch/lib/websearch_templates.py:1111 +msgid "All of the words:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1176 +#: modules/websearch/lib/websearch_templates.py:1113 +msgid "Any of the words:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1177 +#: modules/websearch/lib/websearch_templates.py:1115 +msgid "Exact phrase:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1178 +#: modules/websearch/lib/websearch_templates.py:1117 +msgid "Partial phrase:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1179 +#: modules/websearch/lib/websearch_templates.py:1119 +msgid "Regular expression:" +msgstr "" + +#: modules/websearch/lib/search_engine.py:1744 msgid "No values found." msgstr "" -#: modules/websearch/lib/search_engine.py:1825 +#: modules/websearch/lib/search_engine.py:1867 #, python-format msgid "" "Warning: full-text search is only available for a subset of papers mostly " "from %(x_range_from_year)s-%(x_range_to_year)s." msgstr "" -#: modules/websearch/lib/search_engine.py:1829 +#: modules/websearch/lib/search_engine.py:1871 #, python-format msgid "" "Warning: figure caption search is only available for a subset of papers " "mostly from %(x_range_from_year)s-%(x_range_to_year)s." msgstr "" -#: modules/websearch/lib/search_engine.py:1838 +#: modules/websearch/lib/search_engine.py:1880 msgid "" "No phrase index available for fulltext yet, looking for word combination..." msgstr "" -#: modules/websearch/lib/search_engine.py:1878 +#: modules/websearch/lib/search_engine.py:1920 #, python-format msgid "No exact match found for %(x_query1)s, using %(x_query2)s instead..." msgstr "" -#: modules/websearch/lib/search_engine.py:1888 -#: modules/websearch/lib/search_engine.py:1897 -#: modules/websearch/lib/search_engine.py:4505 -#: modules/websearch/lib/search_engine.py:4543 -#: modules/websearch/lib/search_engine.py:4594 +#: modules/websearch/lib/search_engine.py:1930 +#: modules/websearch/lib/search_engine.py:1939 +#: modules/websearch/lib/search_engine.py:4575 +#: modules/websearch/lib/search_engine.py:4613 +#: modules/websearch/lib/search_engine.py:4664 #: modules/websubmit/lib/websubmit_webinterface.py:110 #: modules/websubmit/lib/websubmit_webinterface.py:145 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:327 msgid "Requested record does not seem to exist." msgstr "" -#: modules/websearch/lib/search_engine.py:2019 +#: modules/websearch/lib/search_engine.py:2061 msgid "" "Search syntax misunderstood. Ignoring all parentheses in the query. If this " "doesn't help, please check your search and try again." msgstr "" -#: modules/websearch/lib/search_engine.py:2341 +#: modules/websearch/lib/search_engine.py:2383 #, python-format msgid "" "No match found in collection %(x_collection)s. Other public collections gave " "%(x_url_open)s%(x_nb_hits)d hits%(x_url_close)s." msgstr "" -#: modules/websearch/lib/search_engine.py:2350 +#: modules/websearch/lib/search_engine.py:2392 msgid "" "No public collection matched your query. If you were looking for a non-" "public document, please choose the desired restricted collection first." msgstr "" -#: modules/websearch/lib/search_engine.py:2467 +#: modules/websearch/lib/search_engine.py:2509 #, python-format msgid "There are no records referring to %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2469 +#: modules/websearch/lib/search_engine.py:2511 #, python-format msgid "There are no records cited by %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2474 +#: modules/websearch/lib/search_engine.py:2516 #, python-format msgid "No word index is available for %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2485 +#: modules/websearch/lib/search_engine.py:2527 #, python-format msgid "No phrase index is available for %s." msgstr "" -#: modules/websearch/lib/search_engine.py:2530 +#: modules/websearch/lib/search_engine.py:2572 #, python-format msgid "" "Search term %(x_term)s inside index %(x_index)s did not match any record. " "Nearest terms in any collection are:" msgstr "" -#: modules/websearch/lib/search_engine.py:2534 +#: modules/websearch/lib/search_engine.py:2576 #, python-format msgid "" "Search term %s did not match any record. Nearest terms in any collection are:" msgstr "" -#: modules/websearch/lib/search_engine.py:3290 +#: modules/websearch/lib/search_engine.py:3333 #, python-format msgid "" "Sorry, sorting is allowed on sets of up to %d records only. Using default " "sort order." msgstr "" -#: modules/websearch/lib/search_engine.py:3314 +#: modules/websearch/lib/search_engine.py:3357 #, python-format msgid "" "Sorry, %s does not seem to be a valid sort option. Choosing title sort " "instead." msgstr "" -#: modules/websearch/lib/search_engine.py:3507 -#: modules/websearch/lib/search_engine.py:3836 -#: modules/websearch/lib/search_engine.py:4014 -#: modules/websearch/lib/search_engine.py:4037 -#: modules/websearch/lib/search_engine.py:4045 -#: modules/websearch/lib/search_engine.py:4053 -#: modules/websearch/lib/search_engine.py:4099 +#: modules/websearch/lib/search_engine.py:3552 +#: modules/websearch/lib/search_engine.py:3881 +#: modules/websearch/lib/search_engine.py:4059 +#: modules/websearch/lib/search_engine.py:4082 +#: modules/websearch/lib/search_engine.py:4090 +#: modules/websearch/lib/search_engine.py:4098 +#: modules/websearch/lib/search_engine.py:4144 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:325 msgid "The record has been deleted." msgstr "" -#: modules/websearch/lib/search_engine.py:3735 +#: modules/websearch/lib/search_engine.py:3780 msgid "Use different search terms." msgstr "" -#: modules/websearch/lib/search_engine.py:4815 +#: modules/websearch/lib/search_engine.py:4580 +#: modules/websearch/lib/websearch_templates.py:804 +#: modules/websearch/lib/websearch_templates.py:882 +#: modules/websearch/lib/websearch_templates.py:1005 +#: modules/websearch/lib/websearch_templates.py:1963 +#: modules/websearch/lib/websearch_templates.py:2054 +#: modules/websearch/lib/websearch_templates.py:2111 +#: modules/websearch/lib/websearch_templates.py:2168 +#: modules/websearch/lib/websearch_templates.py:2207 +#: modules/websearch/lib/websearch_templates.py:2230 +#: modules/websearch/lib/websearch_templates.py:2261 +#: modules/websearch/lib/websearch_templates_epfl.py:744 +#: modules/websearch/lib/websearch_templates_epfl.py:1318 +#: modules/websearch/lib/websearch_templates_epfl.py:1341 +#: modules/websearch/lib/websearch_templates_epfl.py:1372 +#: modules/webstyle/lib/webstyle_templates_epfl.py:459 +msgid "Browse" +msgstr "" + +#: modules/websearch/lib/search_engine.py:4885 msgid "No match within your time limits, discarding this condition..." msgstr "" -#: modules/websearch/lib/search_engine.py:4842 +#: modules/websearch/lib/search_engine.py:4912 msgid "No match within your search limits, discarding this condition..." msgstr "" #: modules/websearch/lib/websearchadminlib.py:3374 msgid "Information" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3375 msgid "References" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3376 msgid "Citations" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3377 msgid "Keywords" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3378 msgid "Discussion" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3379 msgid "Usage statistics" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3380 msgid "Files" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3381 msgid "Plots" msgstr "" #: modules/websearch/lib/websearchadminlib.py:3382 msgid "Holdings" msgstr "" #: modules/websearch/lib/websearch_templates.py:469 #, python-format msgid "Search on %(x_CFG_SITE_NAME_INTL)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:693 #: modules/websearch/lib/websearch_templates.py:842 #, python-format msgid "Search %s records for:" msgstr "" #: modules/websearch/lib/websearch_templates.py:745 msgid "less" msgstr "" #: modules/websearch/lib/websearch_templates.py:746 #: modules/websearch/lib/websearch_templates.py:1506 #: modules/websearch/lib/websearch_templates.py:3708 #: modules/websearch/lib/websearch_templates.py:3785 #: modules/websearch/lib/websearch_templates.py:3845 +#: modules/websearch/lib/websearch_templates_epfl.py:952 +#: modules/websearch/lib/websearch_templates_epfl.py:2256 msgid "more" msgstr "" #: modules/websearch/lib/websearch_templates.py:751 #, python-format msgid "Example: %(x_sample_search_query)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:763 #: modules/websearch/lib/websearch_templates.py:2127 #, python-format msgid "Search in %(x_collection_name)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:767 #: modules/websearch/lib/websearch_templates.py:2131 msgid "Search everywhere" msgstr "" #: modules/websearch/lib/websearch_templates.py:801 #: modules/websearch/lib/websearch_templates.py:878 #: modules/websearch/lib/websearch_templates.py:2099 #: modules/websearch/lib/websearch_templates.py:2157 +#: modules/websearch/lib/websearch_templates_epfl.py:633 +#: modules/websearch/lib/websearch_templates_epfl.py:1283 msgid "Advanced Search" msgstr "" +#: modules/websearch/lib/websearch_templates.py:803 +#: modules/websearch/lib/websearch_templates.py:881 +#: modules/websearch/lib/websearch_templates.py:1004 +#: modules/websearch/lib/websearch_templates.py:1960 +#: modules/websearch/lib/websearch_templates.py:2053 +#: modules/websearch/lib/websearch_templates.py:2110 +#: modules/websearch/lib/websearch_templates.py:2167 +#: modules/webstyle/lib/webstyle_templates.py:431 +#: modules/webstyle/lib/webstyle_templates.py:499 +#: modules/webstyle/lib/webdoc_tests.py:86 +#: modules/bibedit/lib/bibeditmulti_templates.py:296 +#: modules/bibcirculation/lib/bibcirculation_templates.py:1819 +#: modules/bibcirculation/lib/bibcirculation_templates.py:1877 +#: modules/bibcirculation/lib/bibcirculation_templates.py:7673 +#: modules/bibcirculation/lib/bibcirculation_templates.py:8240 +#: modules/bibcirculation/lib/bibcirculation_templates.py:14050 +#: modules/bibcirculation/lib/bibcirculation_templates.py:15528 +#: modules/bibcirculation/lib/bibcirculation_templates.py:15686 +#: modules/bibcirculation/lib/bibcirculation_templates.py:16648 +#: modules/bibknowledge/lib/bibknowledge_templates.py:394 +#: modules/webbasket/lib/webbasket_templates_epfl.py:217 +#: modules/websearch/lib/websearch_templates_epfl.py:631 +#: modules/websearch/lib/websearch_templates_epfl.py:743 +#: modules/websearch/lib/websearch_templates_epfl.py:1281 +#: modules/webstyle/lib/webstyle_templates_epfl.py:458 +msgid "Search" +msgstr "" + +#: modules/websearch/lib/websearch_templates.py:805 +#: modules/websearch/lib/websearch_templates.py:883 +#: modules/websearch/lib/websearch_templates.py:1006 +#: modules/websearch/lib/websearch_templates.py:2058 +#: modules/websearch/lib/websearch_templates.py:2115 +#: modules/websearch/lib/websearch_templates.py:2172 +#: modules/websearch/lib/websearch_templates_epfl.py:632 +#: modules/websearch/lib/websearch_templates_epfl.py:745 +#: modules/websearch/lib/websearch_templates_epfl.py:1282 +msgid "Search Tips" +msgstr "" + #: modules/websearch/lib/websearch_templates.py:939 +#: modules/websearch/lib/websearch_templates_epfl.py:678 #, python-format msgid "Search %s records for" msgstr "" #: modules/websearch/lib/websearch_templates.py:990 #: modules/websearch/lib/websearch_templates.py:2015 +#: modules/websearch/lib/websearch_templates_epfl.py:729 msgid "Simple Search" msgstr "" #: modules/websearch/lib/websearch_templates.py:1023 +#: modules/websearch/lib/websearch_templates_epfl.py:762 msgid "Search options:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1070 #: modules/websearch/lib/websearch_templates.py:2253 +#: modules/websearch/lib/websearch_templates_epfl.py:809 +#: modules/websearch/lib/websearch_templates_epfl.py:1364 msgid "Added/modified since:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1071 #: modules/websearch/lib/websearch_templates.py:2254 +#: modules/websearch/lib/websearch_templates_epfl.py:810 +#: modules/websearch/lib/websearch_templates_epfl.py:1365 msgid "until:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1076 #: modules/websearch/lib/websearch_templates.py:2296 +#: modules/websearch/lib/websearch_templates_epfl.py:815 +#: modules/websearch/lib/websearch_templates_epfl.py:1407 msgid "Sort by:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1077 #: modules/websearch/lib/websearch_templates.py:2297 +#: modules/websearch/lib/websearch_templates_epfl.py:816 +#: modules/websearch/lib/websearch_templates_epfl.py:1408 msgid "Display results:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1078 #: modules/websearch/lib/websearch_templates.py:2298 +#: modules/websearch/lib/websearch_templates_epfl.py:817 +#: modules/websearch/lib/websearch_templates_epfl.py:1409 msgid "Output format:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1238 msgid "Added since:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1239 msgid "Modified since:" msgstr "" +#: modules/websearch/lib/websearch_templates.py:1275 +msgid "Narrow by collection:" +msgstr "" + #: modules/websearch/lib/websearch_templates.py:1276 msgid "Focus on:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1339 msgid "restricted" msgstr "" #: modules/websearch/lib/websearch_templates.py:1366 msgid "Search also:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1437 msgid "" "This collection is restricted. If you are authorized to access it, please " "click on the Search button." msgstr "" #: modules/websearch/lib/websearch_templates.py:1452 msgid "" "This is a hosted external collection. Please click on the Search button to " "see its content." msgstr "" #: modules/websearch/lib/websearch_templates.py:1467 msgid "This collection does not contain any document yet." msgstr "" #: modules/websearch/lib/websearch_templates.py:1521 msgid "Latest additions:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1624 #: modules/websearch/lib/websearch_templates.py:3359 #, python-format msgid "Cited by %i records" msgstr "" #: modules/websearch/lib/websearch_templates.py:1690 +#: modules/websearch/lib/websearch_templates_epfl.py:1028 #, python-format msgid "Words nearest to %(x_word)s inside %(x_field)s in any collection are:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1693 +#: modules/websearch/lib/websearch_templates_epfl.py:1031 #, python-format msgid "Words nearest to %(x_word)s in any collection are:" msgstr "" #: modules/websearch/lib/websearch_templates.py:1785 +#: modules/websearch/lib/websearch_templates_epfl.py:1109 msgid "Hits" msgstr "" #: modules/websearch/lib/websearch_templates.py:1864 #: modules/websearch/lib/websearch_templates.py:2516 #: modules/websearch/lib/websearch_templates.py:2706 #: modules/bibedit/lib/bibeditmulti_templates.py:577 +#: modules/websearch/lib/websearch_templates_epfl.py:1188 msgid "next" msgstr "" #: modules/websearch/lib/websearch_templates.py:2202 +#: modules/websearch/lib/websearch_templates_epfl.py:1313 msgid "collections" msgstr "" #: modules/websearch/lib/websearch_templates.py:2224 +#: modules/websearch/lib/websearch_templates_epfl.py:1335 msgid "Limit to:" msgstr "" #: modules/websearch/lib/websearch_templates.py:2266 -#: modules/websearch/lib/websearch_webcoll.py:609 +#: modules/websearch/lib/websearch_webcoll.py:614 +#: modules/websearch/lib/websearch_templates_epfl.py:1377 +#: modules/websearch/lib/websearch_templates_epfl.py:1779 msgid "results" msgstr "" #: modules/websearch/lib/websearch_templates.py:2302 -#: modules/websearch/lib/websearch_webcoll.py:579 +#: modules/websearch/lib/websearch_webcoll.py:584 +#: modules/websearch/lib/websearch_templates_epfl.py:1413 msgid "asc." msgstr "" #: modules/websearch/lib/websearch_templates.py:2305 -#: modules/websearch/lib/websearch_webcoll.py:580 +#: modules/websearch/lib/websearch_webcoll.py:585 +#: modules/websearch/lib/websearch_templates_epfl.py:1416 msgid "desc." msgstr "" #: modules/websearch/lib/websearch_templates.py:2311 -#: modules/websearch/lib/websearch_webcoll.py:624 +#: modules/websearch/lib/websearch_webcoll.py:629 +#: modules/websearch/lib/websearch_templates_epfl.py:1422 msgid "single list" msgstr "" #: modules/websearch/lib/websearch_templates.py:2314 -#: modules/websearch/lib/websearch_webcoll.py:623 +#: modules/websearch/lib/websearch_webcoll.py:628 +#: modules/websearch/lib/websearch_templates_epfl.py:1425 msgid "split by collection" msgstr "" #: modules/websearch/lib/websearch_templates.py:2352 msgid "MARC tag" msgstr "" #: modules/websearch/lib/websearch_templates.py:2467 #: modules/websearch/lib/websearch_templates.py:2472 #: modules/websearch/lib/websearch_templates.py:2650 #: modules/websearch/lib/websearch_templates.py:2662 #: modules/websearch/lib/websearch_templates.py:2983 #: modules/websearch/lib/websearch_templates.py:2992 +#: modules/websearch/lib/websearch_templates_epfl.py:1761 +#: modules/websearch/lib/websearch_templates_epfl.py:1958 +#: modules/websearch/lib/websearch_templates_epfl.py:1967 #, python-format msgid "%s records found" msgstr "" #: modules/websearch/lib/websearch_templates.py:2499 #: modules/websearch/lib/websearch_templates.py:2689 #: modules/bibedit/lib/bibeditmulti_templates.py:575 msgid "begin" msgstr "" #: modules/websearch/lib/websearch_templates.py:2504 #: modules/websearch/lib/websearch_templates.py:2694 #: modules/websubmit/lib/websubmit_templates.py:1235 #: modules/bibedit/lib/bibeditmulti_templates.py:576 msgid "previous" msgstr "" #: modules/websearch/lib/websearch_templates.py:2523 #: modules/websearch/lib/websearch_templates.py:2713 msgid "end" msgstr "" #: modules/websearch/lib/websearch_templates.py:2543 #: modules/websearch/lib/websearch_templates.py:2733 msgid "jump to record:" msgstr "" #: modules/websearch/lib/websearch_templates.py:2556 #: modules/websearch/lib/websearch_templates.py:2746 #, python-format msgid "Search took %s seconds." msgstr "" #: modules/websearch/lib/websearch_templates.py:2950 +#: modules/websearch/lib/websearch_templates_epfl.py:1925 #, python-format msgid "" "%(x_fmt_open)sResults overview:%(x_fmt_close)s Found %(x_nb_records)s " "records in %(x_nb_seconds)s seconds." msgstr "" #: modules/websearch/lib/websearch_templates.py:2962 +#: modules/websearch/lib/websearch_templates_epfl.py:1937 #, python-format msgid "%(x_fmt_open)sResults overview%(x_fmt_close)s" msgstr "" #: modules/websearch/lib/websearch_templates.py:2970 +#: modules/websearch/lib/websearch_templates_epfl.py:1945 #, python-format msgid "" "%(x_fmt_open)sResults overview:%(x_fmt_close)s Found at least " "%(x_nb_records)s records in %(x_nb_seconds)s seconds." msgstr "" #: modules/websearch/lib/websearch_templates.py:3047 msgid "No results found..." msgstr "" #: modules/websearch/lib/websearch_templates.py:3080 +#: modules/websearch/lib/websearch_templates_epfl.py:2002 msgid "" "Boolean query returned no hits. Please combine your search terms differently." msgstr "" #: modules/websearch/lib/websearch_templates.py:3112 +#: modules/websearch/lib/websearch_templates_epfl.py:2034 msgid "See also: similar author names" msgstr "" #: modules/websearch/lib/websearch_templates.py:3360 msgid "Cited by 1 record" msgstr "" #: modules/websearch/lib/websearch_templates.py:3370 #, python-format msgid "%i comments" msgstr "" #: modules/websearch/lib/websearch_templates.py:3371 msgid "1 comment" msgstr "" #: modules/websearch/lib/websearch_templates.py:3381 #, python-format msgid "%i reviews" msgstr "" #: modules/websearch/lib/websearch_templates.py:3382 msgid "1 review" msgstr "" #: modules/websearch/lib/websearch_templates.py:3525 #: modules/websearch/lib/websearch_webinterface.py:986 #, python-format msgid "Collection %s Not Found" msgstr "" #: modules/websearch/lib/websearch_templates.py:3537 #: modules/websearch/lib/websearch_webinterface.py:982 +#: modules/websearch/lib/websearch_templates_epfl.py:2123 #, python-format msgid "Sorry, collection %s does not seem to exist." msgstr "" #: modules/websearch/lib/websearch_templates.py:3539 #: modules/websearch/lib/websearch_webinterface.py:983 +#: modules/websearch/lib/websearch_templates_epfl.py:2125 #, python-format msgid "You may want to start browsing from %s." msgstr "" #: modules/websearch/lib/websearch_templates.py:3566 #, python-format msgid "" "Set up a personal %(x_url1_open)semail alert%(x_url1_close)s\n" " or subscribe to the %(x_url2_open)sRSS feed" "%(x_url2_close)s." msgstr "" #: modules/websearch/lib/websearch_templates.py:3573 #, python-format msgid "Subscribe to the %(x_url2_open)sRSS feed%(x_url2_close)s." msgstr "" #: modules/websearch/lib/websearch_templates.py:3582 msgid "Interested in being notified about new results for this query?" msgstr "" #: modules/websearch/lib/websearch_templates.py:3701 +#: modules/websearch/lib/websearch_templates_epfl.py:2249 msgid "People who downloaded this document also downloaded:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3717 +#: modules/websearch/lib/websearch_templates_epfl.py:2265 msgid "People who viewed this page also viewed:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3771 #, python-format msgid "Cited by: %s records" msgstr "" #: modules/websearch/lib/websearch_templates.py:3838 #, python-format msgid "Co-cited with: %s records" msgstr "" #: modules/websearch/lib/websearch_templates.py:3880 #, python-format msgid ".. of which self-citations: %s records" msgstr "" #: modules/websearch/lib/websearch_templates.py:3925 +#: modules/websearch/lib/websearch_templates_epfl.py:2315 msgid "Papers:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3928 +#: modules/websearch/lib/websearch_templates_epfl.py:2318 msgid "downloaded" msgstr "" #: modules/websearch/lib/websearch_templates.py:3929 +#: modules/websearch/lib/websearch_templates_epfl.py:2319 msgid "times" msgstr "" #: modules/websearch/lib/websearch_templates.py:3962 +#: modules/websearch/lib/websearch_templates_epfl.py:2353 msgid "Affiliations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:3981 +#: modules/websearch/lib/websearch_templates_epfl.py:2372 msgid "Frequent keywords:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4002 +#: modules/websearch/lib/websearch_templates_epfl.py:2393 msgid "Frequent co-authors:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4022 +#: modules/websearch/lib/websearch_templates_epfl.py:2413 msgid "Citations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4052 msgid "Citation summary results" msgstr "" #: modules/websearch/lib/websearch_templates.py:4057 msgid "Total number of citable papers analyzed:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4080 msgid "Total number of citations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4085 msgid "Average citations per paper:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4090 msgid "Breakdown of papers by citations:" msgstr "" #: modules/websearch/lib/websearch_templates.py:4123 msgid "Additional Citation Metrics" msgstr "" #: modules/websearch/lib/websearch_webinterface.py:584 msgid "You are not authorized to view this area." msgstr "" #: modules/websearch/lib/websearch_webinterface.py:988 msgid "Not found" msgstr "" #: modules/websearch/lib/websearch_external_collections.py:143 msgid "in" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:51 msgid "" "Haven't found what you were looking for? Try your search on other servers:" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:79 msgid "External collections results overview:" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:119 msgid "Search timed out." msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:120 msgid "" "The external search engine has not responded in time. You can check its " "results here:" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:145 #: modules/websearch/lib/websearch_external_collections_templates.py:153 #: modules/websearch/lib/websearch_external_collections_templates.py:166 msgid "No results found." msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:149 #, python-format msgid "%s results found" msgstr "" #: modules/websearch/lib/websearch_external_collections_templates.py:151 #, python-format msgid "%s seconds" msgstr "" -#: modules/websearch/lib/websearch_webcoll.py:645 +#: modules/websearch/lib/websearch_webcoll.py:650 msgid "brief" msgstr "" #: modules/websession/lib/webaccount.py:115 #, python-format msgid "" "You are logged in as guest. You may want to %(x_url_open)slogin" "%(x_url_close)s as a regular user." msgstr "" #: modules/websession/lib/webaccount.py:119 #, python-format msgid "" "The %(x_fmt_open)sguest%(x_fmt_close)s users need to %(x_url_open)sregister" "%(x_url_close)s first" msgstr "" #: modules/websession/lib/webaccount.py:124 msgid "No queries found" msgstr "" #: modules/websession/lib/webaccount.py:371 msgid "" "This collection is restricted. If you think you have right to access it, " "please authenticate yourself." msgstr "" #: modules/websession/lib/webaccount.py:372 msgid "" "This file is restricted. If you think you have right to access it, please " "authenticate yourself." msgstr "" #: modules/websession/lib/websession_templates.py:92 msgid "External account settings" msgstr "" #: modules/websession/lib/websession_templates.py:94 #, python-format msgid "" "You can consult the list of your external groups directly in the " "%(x_url_open)sgroups page%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:98 msgid "External user groups" msgstr "" #: modules/websession/lib/websession_templates.py:157 msgid "" "If you want to change your email or set for the first time your nickname, " "please set new values in the form below." msgstr "" #: modules/websession/lib/websession_templates.py:158 msgid "Edit login credentials" msgstr "" #: modules/websession/lib/websession_templates.py:164 msgid "New email address" msgstr "" #: modules/websession/lib/websession_templates.py:165 #: modules/websession/lib/websession_templates.py:213 #: modules/websession/lib/websession_templates.py:1048 msgid "mandatory" msgstr "" #: modules/websession/lib/websession_templates.py:168 msgid "Set new values" msgstr "" #: modules/websession/lib/websession_templates.py:172 msgid "" "Since this is considered as a signature for comments and reviews, once set " "it can not be changed." msgstr "" #: modules/websession/lib/websession_templates.py:212 msgid "" "If you want to change your password, please enter the old one and set the " "new value in the form below." msgstr "" #: modules/websession/lib/websession_templates.py:214 msgid "Old password" msgstr "" #: modules/websession/lib/websession_templates.py:215 msgid "New password" msgstr "" #: modules/websession/lib/websession_templates.py:217 #: modules/websession/lib/websession_templates.py:1049 msgid "optional" msgstr "" #: modules/websession/lib/websession_templates.py:219 #: modules/websession/lib/websession_templates.py:1052 msgid "The password phrase may contain punctuation, spaces, etc." msgstr "" #: modules/websession/lib/websession_templates.py:220 msgid "You must fill the old password in order to set a new one." msgstr "" #: modules/websession/lib/websession_templates.py:221 msgid "Retype password" msgstr "" #: modules/websession/lib/websession_templates.py:222 msgid "Set new password" msgstr "" #: modules/websession/lib/websession_templates.py:227 #, python-format msgid "" "If you are using a lightweight CERN account you can\n" " %(x_url_open)sreset the password%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:233 #, python-format msgid "" "You can change or reset your CERN account password by means of the " "%(x_url_open)sCERN account system%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:259 msgid "Edit cataloging interface settings" msgstr "" #: modules/websession/lib/websession_templates.py:260 #: modules/websession/lib/websession_templates.py:912 msgid "Username" msgstr "" #: modules/websession/lib/websession_templates.py:261 #: modules/websession/lib/websession_templates.py:913 #: modules/websession/lib/websession_templates.py:1047 msgid "Password" msgstr "" #: modules/websession/lib/websession_templates.py:262 #: modules/websession/lib/websession_templates.py:289 #: modules/websession/lib/websession_templates.py:325 msgid "Update settings" msgstr "" #: modules/websession/lib/websession_templates.py:277 msgid "Edit language-related settings" msgstr "" #: modules/websession/lib/websession_templates.py:288 msgid "Select desired language of the web interface." msgstr "" #: modules/websession/lib/websession_templates.py:307 msgid "Edit search-related settings" msgstr "" #: modules/websession/lib/websession_templates.py:308 msgid "Show the latest additions box" msgstr "" #: modules/websession/lib/websession_templates.py:310 msgid "Show collection help boxes" msgstr "" #: modules/websession/lib/websession_templates.py:326 msgid "Number of search results per page" msgstr "" #: modules/websession/lib/websession_templates.py:359 msgid "Edit login method" msgstr "" #: modules/websession/lib/websession_templates.py:360 msgid "" "Please select which login method you would like to use to authenticate " "yourself" msgstr "" #: modules/websession/lib/websession_templates.py:361 #: modules/websession/lib/websession_templates.py:376 msgid "Select method" msgstr "" #: modules/websession/lib/websession_templates.py:395 #, python-format msgid "" "If you have lost the password for your %(sitename)s %(x_fmt_open)sinternal " "account%(x_fmt_close)s, then please enter your email address in the " "following form in order to have a password reset link emailed to you." msgstr "" #: modules/websession/lib/websession_templates.py:417 #: modules/websession/lib/websession_templates.py:1045 msgid "Email address" msgstr "" #: modules/websession/lib/websession_templates.py:418 msgid "Send password reset link" msgstr "" #: modules/websession/lib/websession_templates.py:422 #, python-format msgid "" "If you have been using the %(x_fmt_open)sCERN login system%(x_fmt_close)s, " "then you can recover your password through the %(x_url_open)sCERN " "authentication system%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:425 msgid "" "Note that if you have been using an external login system, then we cannot do " "anything and you have to ask there." msgstr "" #: modules/websession/lib/websession_templates.py:426 #, python-format msgid "" "Alternatively, you can ask %s to change your login system from external to " "internal." msgstr "" #: modules/websession/lib/websession_templates.py:453 #, python-format msgid "" "%s offers you the possibility to personalize the interface, to set up your " "own personal library of documents, or to set up an automatic alert query " "that would run periodically and would notify you of search results by email." msgstr "" #: modules/websession/lib/websession_templates.py:463 -#: modules/websession/lib/websession_webinterface.py:277 +#: modules/websession/lib/websession_webinterface.py:282 msgid "Your Settings" msgstr "" #: modules/websession/lib/websession_templates.py:464 msgid "" "Set or change your account email address or password. Specify your " "preferences about the look and feel of the interface." msgstr "" #: modules/websession/lib/websession_templates.py:472 msgid "View all the searches you performed during the last 30 days." msgstr "" +#: modules/websession/lib/websession_templates.py:479 +#: modules/websession/lib/websession_templates.py:625 +msgid "Your Baskets" +msgstr "" + #: modules/websession/lib/websession_templates.py:480 msgid "" "With baskets you can define specific collections of items, store interesting " "records you want to access later or share with others." msgstr "" #: modules/websession/lib/websession_templates.py:489 msgid "" "Subscribe to a search which will be run periodically by our service. The " "result can be sent to you via Email or stored in one of your baskets." msgstr "" #: modules/websession/lib/websession_templates.py:498 #: modules/websession/lib/websession_templates.py:622 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:116 msgid "Your Loans" msgstr "" #: modules/websession/lib/websession_templates.py:499 msgid "" "Check out book you have on loan, submit borrowing requests, etc. Requires " "CERN ID." msgstr "" #: modules/websession/lib/websession_templates.py:524 msgid "" "You are logged in as a guest user, so your alerts will disappear at the end " "of the current session." msgstr "" #: modules/websession/lib/websession_templates.py:547 #, python-format msgid "" "You are logged in as %(x_user)s. You may want to a) %(x_url1_open)slogout" "%(x_url1_close)s; b) edit your %(x_url2_open)saccount settings" "%(x_url2_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:628 msgid "Your Alert Searches" msgstr "" #: modules/websession/lib/websession_templates.py:634 #, python-format msgid "" "You can consult the list of %(x_url_open)syour groups%(x_url_close)s you are " "administering or are a member of." msgstr "" #: modules/websession/lib/websession_templates.py:637 #: modules/websession/lib/websession_templates.py:2347 -#: modules/websession/lib/websession_webinterface.py:1031 +#: modules/websession/lib/websession_webinterface.py:1049 +#: modules/websession/lib/websession_templates_epfl.py:262 msgid "Your Groups" msgstr "" #: modules/websession/lib/websession_templates.py:640 #, python-format msgid "" "You can consult the list of %(x_url_open)syour submissions%(x_url_close)s " "and inquire about their status." msgstr "" #: modules/websession/lib/websession_templates.py:643 #: modules/websubmit/web/yoursubmissions.py:160 msgid "Your Submissions" msgstr "" #: modules/websession/lib/websession_templates.py:646 #, python-format msgid "" "You can consult the list of %(x_url_open)syour approvals%(x_url_close)s with " "the documents you approved or refereed." msgstr "" #: modules/websession/lib/websession_templates.py:649 #: modules/websubmit/web/yourapprovals.py:88 msgid "Your Approvals" msgstr "" #: modules/websession/lib/websession_templates.py:653 #, python-format msgid "You can consult the list of %(x_url_open)syour tickets%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:656 msgid "Your Tickets" msgstr "" #: modules/websession/lib/websession_templates.py:658 -#: modules/websession/lib/websession_webinterface.py:650 +#: modules/websession/lib/websession_webinterface.py:655 msgid "Your Administrative Activities" msgstr "" #: modules/websession/lib/websession_templates.py:685 #: modules/bibharvest/lib/oai_harvest_admin.py:429 #: modules/bibharvest/lib/oai_harvest_admin.py:444 msgid "Try again" msgstr "" #: modules/websession/lib/websession_templates.py:707 #, python-format msgid "" "Somebody (possibly you) coming from %(x_ip_address)s has asked\n" "for a password reset at %(x_sitename)s\n" "for the account \"%(x_email)s\"." msgstr "" #: modules/websession/lib/websession_templates.py:715 msgid "If you want to reset the password for this account, please go to:" msgstr "" #: modules/websession/lib/websession_templates.py:721 #: modules/websession/lib/websession_templates.py:758 msgid "in order to confirm the validity of this request." msgstr "" #: modules/websession/lib/websession_templates.py:722 #: modules/websession/lib/websession_templates.py:759 #, python-format msgid "" "Please note that this URL will remain valid for about %(days)s days only." msgstr "" #: modules/websession/lib/websession_templates.py:744 #, python-format msgid "" "Somebody (possibly you) coming from %(x_ip_address)s has asked\n" "to register a new account at %(x_sitename)s\n" "for the email address \"%(x_email)s\"." msgstr "" #: modules/websession/lib/websession_templates.py:752 msgid "If you want to complete this account registration, please go to:" msgstr "" #: modules/websession/lib/websession_templates.py:778 #, python-format msgid "Okay, a password reset link has been emailed to %s." msgstr "" #: modules/websession/lib/websession_templates.py:793 msgid "Deleting your account" msgstr "" #: modules/websession/lib/websession_templates.py:807 msgid "You are no longer recognized by our system." msgstr "" #: modules/websession/lib/websession_templates.py:809 #, python-format msgid "" "You are still recognized by the centralized\n" " %(x_fmt_open)sSSO%(x_fmt_close)s system. You can\n" " %(x_url_open)slogout from SSO%(x_url_close)s, too." msgstr "" #: modules/websession/lib/websession_templates.py:816 #, python-format msgid "If you wish you can %(x_url_open)slogin here%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:847 msgid "If you already have an account, please login using the form below." msgstr "" #: modules/websession/lib/websession_templates.py:851 #, python-format msgid "" "If you don't own a CERN account yet, you can register a %(x_url_open)snew " "CERN lightweight account%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:854 #, python-format msgid "" "If you don't own an account yet, please %(x_url_open)sregister" "%(x_url_close)s an internal account." msgstr "" #: modules/websession/lib/websession_templates.py:862 #, python-format msgid "If you don't own an account yet, please contact %s." msgstr "" #: modules/websession/lib/websession_templates.py:885 msgid "Login method:" msgstr "" #: modules/websession/lib/websession_templates.py:914 msgid "Remember login on this computer." msgstr "" #: modules/websession/lib/websession_templates.py:915 #: modules/websession/lib/websession_templates.py:1193 -#: modules/websession/lib/websession_webinterface.py:101 -#: modules/websession/lib/websession_webinterface.py:196 -#: modules/websession/lib/websession_webinterface.py:766 -#: modules/websession/lib/websession_webinterface.py:850 +#: modules/websession/lib/websession_webinterface.py:104 +#: modules/websession/lib/websession_webinterface.py:199 +#: modules/websession/lib/websession_webinterface.py:771 +#: modules/websession/lib/websession_webinterface.py:868 +#: modules/websession/lib/websession_templates_epfl.py:298 msgid "login" msgstr "" #: modules/websession/lib/websession_templates.py:920 -#: modules/websession/lib/websession_webinterface.py:554 +#: modules/websession/lib/websession_webinterface.py:559 msgid "Lost your password?" msgstr "" #: modules/websession/lib/websession_templates.py:928 msgid "You can use your nickname or your email address to login." msgstr "" #: modules/websession/lib/websession_templates.py:952 msgid "" "Your request is valid. Please set the new desired password in the following " "form." msgstr "" #: modules/websession/lib/websession_templates.py:975 msgid "Set a new password for" msgstr "" #: modules/websession/lib/websession_templates.py:976 msgid "Type the new password" msgstr "" #: modules/websession/lib/websession_templates.py:977 msgid "Type again the new password" msgstr "" #: modules/websession/lib/websession_templates.py:978 msgid "Set the new password" msgstr "" #: modules/websession/lib/websession_templates.py:1000 msgid "Please enter your email address and desired nickname and password:" msgstr "" #: modules/websession/lib/websession_templates.py:1002 msgid "" "It will not be possible to use the account before it has been verified and " "activated." msgstr "" #: modules/websession/lib/websession_templates.py:1053 msgid "Retype Password" msgstr "" #: modules/websession/lib/websession_templates.py:1054 -#: modules/websession/lib/websession_webinterface.py:953 +#: modules/websession/lib/websession_webinterface.py:971 msgid "register" msgstr "" #: modules/websession/lib/websession_templates.py:1055 #, python-format msgid "" "Please do not use valuable passwords such as your Unix, AFS or NICE " "passwords with this service. Your email address will stay strictly " "confidential and will not be disclosed to any third party. It will be used " "to identify you for personal services of %s. For example, you may set up an " "automatic alert search that will look for new preprints and will notify you " "daily of new arrivals by email." msgstr "" #: modules/websession/lib/websession_templates.py:1059 #, python-format msgid "" "It is not possible to create an account yourself. Contact %s if you want an " "account." msgstr "" #: modules/websession/lib/websession_templates.py:1085 +#: modules/websession/lib/websession_templates_epfl.py:32 #, python-format msgid "" "You seem to be a guest user. You have to %(x_url_open)slogin%(x_url_close)s " "first." msgstr "" #: modules/websession/lib/websession_templates.py:1091 +#: modules/websession/lib/websession_templates_epfl.py:38 msgid "You are not authorized to access administrative functions." msgstr "" #: modules/websession/lib/websession_templates.py:1094 +#: modules/websession/lib/websession_templates_epfl.py:41 #, python-format msgid "You are enabled to the following roles: %(x_role)s." msgstr "" #: modules/websession/lib/websession_templates.py:1110 +#: modules/websession/lib/websession_templates_epfl.py:57 msgid "Run BibSword Client" msgstr "" #: modules/websession/lib/websession_templates.py:1136 +#: modules/websession/lib/websession_templates_epfl.py:82 msgid "Here are some interesting web admin links for you:" msgstr "" #: modules/websession/lib/websession_templates.py:1138 +#: modules/websession/lib/websession_templates_epfl.py:84 #, python-format msgid "" "For more admin-level activities, see the complete %(x_url_open)sAdmin Area" "%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:1191 msgid "guest" msgstr "" #: modules/websession/lib/websession_templates.py:1205 +#: modules/websession/lib/websession_templates_epfl.py:304 msgid "logout" msgstr "" #: modules/websession/lib/websession_templates.py:1253 #: modules/webstyle/lib/webstyle_templates.py:433 #: modules/webstyle/lib/webstyle_templates.py:501 msgid "Personalize" msgstr "" #: modules/websession/lib/websession_templates.py:1261 msgid "Your account" msgstr "" #: modules/websession/lib/websession_templates.py:1267 msgid "Your alerts" msgstr "" #: modules/websession/lib/websession_templates.py:1273 msgid "Your approvals" msgstr "" #: modules/websession/lib/websession_templates.py:1279 msgid "Your baskets" msgstr "" #: modules/websession/lib/websession_templates.py:1285 msgid "Your groups" msgstr "" #: modules/websession/lib/websession_templates.py:1291 msgid "Your loans" msgstr "" #: modules/websession/lib/websession_templates.py:1297 msgid "Your messages" msgstr "" #: modules/websession/lib/websession_templates.py:1303 msgid "Your submissions" msgstr "" #: modules/websession/lib/websession_templates.py:1309 msgid "Your searches" msgstr "" #: modules/websession/lib/websession_templates.py:1362 msgid "Administration" msgstr "" #: modules/websession/lib/websession_templates.py:1378 msgid "Statistics" msgstr "" #: modules/websession/lib/websession_templates.py:1505 msgid "You are an administrator of the following groups:" msgstr "" #: modules/websession/lib/websession_templates.py:1525 #: modules/websession/lib/websession_templates.py:1599 #: modules/websession/lib/websession_templates.py:1662 #: modules/websubmit/lib/websubmit_templates.py:3003 #: modules/websubmit/lib/websubmit_templates.py:3009 msgid "Group" msgstr "" #: modules/websession/lib/websession_templates.py:1532 msgid "You are not an administrator of any groups." msgstr "" #: modules/websession/lib/websession_templates.py:1539 msgid "Edit group" msgstr "" #: modules/websession/lib/websession_templates.py:1546 #, python-format msgid "Edit %s members" msgstr "" #: modules/websession/lib/websession_templates.py:1569 #: modules/websession/lib/websession_templates.py:1709 #: modules/websession/lib/websession_templates.py:1711 -#: modules/websession/lib/websession_webinterface.py:1091 +#: modules/websession/lib/websession_webinterface.py:1109 msgid "Create new group" msgstr "" #: modules/websession/lib/websession_templates.py:1583 msgid "You are a member of the following groups:" msgstr "" #: modules/websession/lib/websession_templates.py:1606 msgid "You are not a member of any groups." msgstr "" #: modules/websession/lib/websession_templates.py:1630 msgid "Join new group" msgstr "" #: modules/websession/lib/websession_templates.py:1631 #: modules/websession/lib/websession_templates.py:2183 #: modules/websession/lib/websession_templates.py:2194 msgid "Leave group" msgstr "" #: modules/websession/lib/websession_templates.py:1646 msgid "You are a member of the following external groups:" msgstr "" #: modules/websession/lib/websession_templates.py:1669 msgid "You are not a member of any external groups." msgstr "" #: modules/websession/lib/websession_templates.py:1717 msgid "Update group" msgstr "" #: modules/websession/lib/websession_templates.py:1719 #, python-format msgid "Edit group %s" msgstr "" #: modules/websession/lib/websession_templates.py:1721 msgid "Delete group" msgstr "" #: modules/websession/lib/websession_templates.py:1794 msgid "Group name:" msgstr "" #: modules/websession/lib/websession_templates.py:1796 msgid "Group description:" msgstr "" #: modules/websession/lib/websession_templates.py:1797 msgid "Group join policy:" msgstr "" #: modules/websession/lib/websession_templates.py:1838 #: modules/websession/lib/websession_templates.py:1911 #: modules/websession/lib/websession_templates.py:2052 #: modules/websession/lib/websession_templates.py:2061 #: modules/websession/lib/websession_templates.py:2181 #: modules/websession/lib/websession_templates.py:2293 msgid "Please select:" msgstr "" #: modules/websession/lib/websession_templates.py:1904 msgid "Join group" msgstr "" #: modules/websession/lib/websession_templates.py:1906 msgid "or find it" msgstr "" #: modules/websession/lib/websession_templates.py:1907 msgid "Choose group:" msgstr "" #: modules/websession/lib/websession_templates.py:1909 msgid "Find group" msgstr "" #: modules/websession/lib/websession_templates.py:2057 msgid "Remove member" msgstr "" #: modules/websession/lib/websession_templates.py:2059 msgid "No members." msgstr "" #: modules/websession/lib/websession_templates.py:2069 msgid "Accept member" msgstr "" #: modules/websession/lib/websession_templates.py:2069 msgid "Reject member" msgstr "" #: modules/websession/lib/websession_templates.py:2071 msgid "No members awaiting approval." msgstr "" #: modules/websession/lib/websession_templates.py:2073 #: modules/websession/lib/websession_templates.py:2107 msgid "Current members" msgstr "" #: modules/websession/lib/websession_templates.py:2074 #: modules/websession/lib/websession_templates.py:2108 msgid "Members awaiting approval" msgstr "" #: modules/websession/lib/websession_templates.py:2075 #: modules/websession/lib/websession_templates.py:2109 msgid "Invite new members" msgstr "" #: modules/websession/lib/websession_templates.py:2080 #, python-format msgid "Invitation to join \"%s\" group" msgstr "" #: modules/websession/lib/websession_templates.py:2081 #, python-format msgid "" "Hello:\n" "\n" "I think you might be interested in joining the group \"%(x_name)s\".\n" "You can join by clicking here: %(x_url)s.\n" "\n" "Best regards.\n" msgstr "" #: modules/websession/lib/websession_templates.py:2095 #, python-format msgid "" "If you want to invite new members to join your group, please use the " "%(x_url_open)sweb message%(x_url_close)s system." msgstr "" #: modules/websession/lib/websession_templates.py:2099 #, python-format msgid "Group: %s" msgstr "" #: modules/websession/lib/websession_templates.py:2182 msgid "Group list" msgstr "" #: modules/websession/lib/websession_templates.py:2185 msgid "You are not member of any group." msgstr "" #: modules/websession/lib/websession_templates.py:2233 msgid "Are you sure you want to delete this group?" msgstr "" #: modules/websession/lib/websession_templates.py:2273 msgid "Are you sure you want to leave this group?" msgstr "" #: modules/websession/lib/websession_templates.py:2289 msgid "Visible and open for new members" msgstr "" #: modules/websession/lib/websession_templates.py:2291 msgid "Visible but new members need approval" msgstr "" #: modules/websession/lib/websession_templates.py:2376 #, python-format msgid "Group %s: New membership request" msgstr "" #: modules/websession/lib/websession_templates.py:2380 #, python-format msgid "A user wants to join the group %s." msgstr "" #: modules/websession/lib/websession_templates.py:2381 #, python-format msgid "" "Please %(x_url_open)saccept or reject%(x_url_close)s this user's request." msgstr "" #: modules/websession/lib/websession_templates.py:2398 #, python-format msgid "Group %s: Join request has been accepted" msgstr "" #: modules/websession/lib/websession_templates.py:2399 #, python-format msgid "Your request for joining group %s has been accepted." msgstr "" #: modules/websession/lib/websession_templates.py:2401 #, python-format msgid "Group %s: Join request has been rejected" msgstr "" #: modules/websession/lib/websession_templates.py:2402 #, python-format msgid "Your request for joining group %s has been rejected." msgstr "" #: modules/websession/lib/websession_templates.py:2405 #: modules/websession/lib/websession_templates.py:2423 #, python-format msgid "You can consult the list of %(x_url_open)syour groups%(x_url_close)s." msgstr "" #: modules/websession/lib/websession_templates.py:2419 #, python-format msgid "Group %s has been deleted" msgstr "" #: modules/websession/lib/websession_templates.py:2421 #, python-format msgid "Group %s has been deleted by its administrator." msgstr "" #: modules/websession/lib/websession_templates.py:2438 #, python-format msgid "" "You can consult the list of %(x_url_open)s%(x_nb_total)i groups" "%(x_url_close)s you are subscribed to (%(x_nb_member)i) or administering " "(%(x_nb_admin)i)." msgstr "" #: modules/websession/lib/websession_templates.py:2457 msgid "" "Warning: The password set for MySQL root user is the same as the default " "Invenio password. For security purposes, you may want to change the password." msgstr "" #: modules/websession/lib/websession_templates.py:2463 msgid "" "Warning: The password set for the Invenio MySQL user is the same as the " "shipped default. For security purposes, you may want to change the password." msgstr "" #: modules/websession/lib/websession_templates.py:2469 msgid "" "Warning: The password set for the Invenio admin user is currently empty. For " "security purposes, it is strongly recommended that you add a password." msgstr "" #: modules/websession/lib/websession_templates.py:2475 msgid "" "Warning: The email address set for support email is currently set to " "info@invenio-software.org. It is recommended that you change this to your " "own address." msgstr "" #: modules/websession/lib/websession_templates.py:2481 msgid "" "A newer version of Invenio is available for download. You may want to visit " msgstr "" #: modules/websession/lib/websession_templates.py:2488 msgid "" "Cannot download or parse release notes from http://invenio-software.org/repo/" "invenio/tree/RELEASE-NOTES" msgstr "" -#: modules/websession/lib/webuser.py:156 -msgid "Database problem" +#: modules/websession/lib/webuser.py:147 +msgid "Maintenance status" +msgstr "" + +#: modules/websession/lib/webuser.py:148 +msgid "Infoscience is currently down for maintenance." +msgstr "" + +#: modules/websession/lib/webuser.py:149 +msgid "We expect to be back online shortly, thanks for your patience." +msgstr "" + +#: modules/websession/lib/webuser.py:150 +msgid "In case of trouble, please contact" msgstr "" -#: modules/websession/lib/webuser.py:304 +#: modules/websession/lib/webuser.py:327 #: modules/websession/lib/webgroup_dblayer.py:314 msgid "user" msgstr "" -#: modules/websession/lib/webuser.py:479 +#: modules/websession/lib/webuser.py:502 #, python-format msgid "Account registration at %s" msgstr "" -#: modules/websession/lib/webuser.py:712 +#: modules/websession/lib/webuser.py:735 msgid "New account on" msgstr "" -#: modules/websession/lib/webuser.py:714 +#: modules/websession/lib/webuser.py:737 msgid "PLEASE ACTIVATE" msgstr "" -#: modules/websession/lib/webuser.py:715 +#: modules/websession/lib/webuser.py:738 msgid "A new account has been created on" msgstr "" -#: modules/websession/lib/webuser.py:717 +#: modules/websession/lib/webuser.py:740 msgid " and is awaiting activation" msgstr "" -#: modules/websession/lib/webuser.py:719 +#: modules/websession/lib/webuser.py:742 msgid " Username/Email" msgstr "" -#: modules/websession/lib/webuser.py:720 +#: modules/websession/lib/webuser.py:743 msgid "You can approve or reject this account request at" msgstr "" -#: modules/websession/lib/webuser.py:902 modules/websession/lib/webuser.py:903 +#: modules/websession/lib/webuser.py:925 modules/websession/lib/webuser.py:926 msgid "Run File Manager" msgstr "" -#: modules/websession/lib/websession_webinterface.py:83 +#: modules/websession/lib/websession_webinterface.py:86 msgid "Mail Cookie Service" msgstr "" -#: modules/websession/lib/websession_webinterface.py:93 +#: modules/websession/lib/websession_webinterface.py:96 msgid "Role authorization request" msgstr "" -#: modules/websession/lib/websession_webinterface.py:93 +#: modules/websession/lib/websession_webinterface.py:96 msgid "This request for an authorization has already been authorized." msgstr "" -#: modules/websession/lib/websession_webinterface.py:96 +#: modules/websession/lib/websession_webinterface.py:99 #, python-format msgid "" "You have successfully obtained an authorization as %(x_role)s! This " "authorization will last until %(x_expiration)s and until you close your " "browser if you are a guest user." msgstr "" -#: modules/websession/lib/websession_webinterface.py:114 +#: modules/websession/lib/websession_webinterface.py:117 msgid "You have confirmed the validity of your email address!" msgstr "" -#: modules/websession/lib/websession_webinterface.py:117 -#: modules/websession/lib/websession_webinterface.py:127 +#: modules/websession/lib/websession_webinterface.py:120 +#: modules/websession/lib/websession_webinterface.py:130 msgid "Please, wait for the administrator to enable your account." msgstr "" -#: modules/websession/lib/websession_webinterface.py:121 -#: modules/websession/lib/websession_webinterface.py:130 +#: modules/websession/lib/websession_webinterface.py:124 +#: modules/websession/lib/websession_webinterface.py:133 #, python-format msgid "You can now go to %(x_url_open)syour account page%(x_url_close)s." msgstr "" -#: modules/websession/lib/websession_webinterface.py:122 -#: modules/websession/lib/websession_webinterface.py:131 +#: modules/websession/lib/websession_webinterface.py:125 +#: modules/websession/lib/websession_webinterface.py:134 msgid "Email address successfully activated" msgstr "" -#: modules/websession/lib/websession_webinterface.py:125 +#: modules/websession/lib/websession_webinterface.py:128 msgid "You have already confirmed the validity of your email address!" msgstr "" -#: modules/websession/lib/websession_webinterface.py:134 +#: modules/websession/lib/websession_webinterface.py:137 msgid "" "This request for confirmation of an email address is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:139 +#: modules/websession/lib/websession_webinterface.py:142 msgid "This request for an authorization is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:152 +#: modules/websession/lib/websession_webinterface.py:155 msgid "Reset password" msgstr "" -#: modules/websession/lib/websession_webinterface.py:158 +#: modules/websession/lib/websession_webinterface.py:161 msgid "This request for resetting a password has already been used." msgstr "" -#: modules/websession/lib/websession_webinterface.py:161 +#: modules/websession/lib/websession_webinterface.py:164 msgid "This request for resetting a password is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:166 +#: modules/websession/lib/websession_webinterface.py:169 msgid "This request for resetting the password is not valid or is expired." msgstr "" -#: modules/websession/lib/websession_webinterface.py:179 +#: modules/websession/lib/websession_webinterface.py:182 msgid "The two provided passwords aren't equal." msgstr "" -#: modules/websession/lib/websession_webinterface.py:194 +#: modules/websession/lib/websession_webinterface.py:197 msgid "The password was successfully set! You can now proceed with the login." msgstr "" -#: modules/websession/lib/websession_webinterface.py:283 +#: modules/websession/lib/websession_webinterface.py:288 #, python-format msgid "%s Personalize, Your Settings" msgstr "" -#: modules/websession/lib/websession_webinterface.py:351 -#: modules/websession/lib/websession_webinterface.py:427 -#: modules/websession/lib/websession_webinterface.py:489 -#: modules/websession/lib/websession_webinterface.py:502 -#: modules/websession/lib/websession_webinterface.py:515 +#: modules/websession/lib/websession_webinterface.py:356 +#: modules/websession/lib/websession_webinterface.py:432 +#: modules/websession/lib/websession_webinterface.py:494 +#: modules/websession/lib/websession_webinterface.py:507 +#: modules/websession/lib/websession_webinterface.py:520 msgid "Settings edited" msgstr "" -#: modules/websession/lib/websession_webinterface.py:353 -#: modules/websession/lib/websession_webinterface.py:426 -#: modules/websession/lib/websession_webinterface.py:467 -#: modules/websession/lib/websession_webinterface.py:491 -#: modules/websession/lib/websession_webinterface.py:504 -#: modules/websession/lib/websession_webinterface.py:510 +#: modules/websession/lib/websession_webinterface.py:358 +#: modules/websession/lib/websession_webinterface.py:431 +#: modules/websession/lib/websession_webinterface.py:472 +#: modules/websession/lib/websession_webinterface.py:496 +#: modules/websession/lib/websession_webinterface.py:509 +#: modules/websession/lib/websession_webinterface.py:515 msgid "Show account" msgstr "" -#: modules/websession/lib/websession_webinterface.py:357 +#: modules/websession/lib/websession_webinterface.py:362 msgid "Unable to change login method." msgstr "" -#: modules/websession/lib/websession_webinterface.py:365 +#: modules/websession/lib/websession_webinterface.py:370 msgid "Switched to internal login method." msgstr "" -#: modules/websession/lib/websession_webinterface.py:366 +#: modules/websession/lib/websession_webinterface.py:371 msgid "" "Please note that if this is the first time that you are using this account " "with the internal login method then the system has set for you a randomly " "generated password. Please click the following button to obtain a password " "reset request link sent to you via email:" msgstr "" -#: modules/websession/lib/websession_webinterface.py:374 +#: modules/websession/lib/websession_webinterface.py:379 msgid "Send Password" msgstr "" -#: modules/websession/lib/websession_webinterface.py:384 +#: modules/websession/lib/websession_webinterface.py:389 #, python-format msgid "" "Unable to switch to external login method %s, because your email address is " "unknown." msgstr "" -#: modules/websession/lib/websession_webinterface.py:388 +#: modules/websession/lib/websession_webinterface.py:393 #, python-format msgid "" "Unable to switch to external login method %s, because your email address is " "unknown to the external login system." msgstr "" -#: modules/websession/lib/websession_webinterface.py:392 +#: modules/websession/lib/websession_webinterface.py:397 msgid "Login method successfully selected." msgstr "" -#: modules/websession/lib/websession_webinterface.py:394 +#: modules/websession/lib/websession_webinterface.py:399 #, python-format msgid "" "The external login method %s does not support email address based logins. " "Please contact the site administrators." msgstr "" -#: modules/websession/lib/websession_webinterface.py:406 +#: modules/websession/lib/websession_webinterface.py:411 msgid "Your nickname has not been updated" msgstr "" -#: modules/websession/lib/websession_webinterface.py:420 +#: modules/websession/lib/websession_webinterface.py:425 msgid "Settings successfully edited." msgstr "" -#: modules/websession/lib/websession_webinterface.py:421 +#: modules/websession/lib/websession_webinterface.py:426 #, python-format msgid "" "Note that if you have changed your email address, you will have to " "%(x_url_open)sreset your password%(x_url_close)s anew." msgstr "" -#: modules/websession/lib/websession_webinterface.py:429 -#: modules/websession/lib/websession_webinterface.py:923 +#: modules/websession/lib/websession_webinterface.py:434 +#: modules/websession/lib/websession_webinterface.py:941 #, python-format msgid "Desired nickname %s is invalid." msgstr "" -#: modules/websession/lib/websession_webinterface.py:430 -#: modules/websession/lib/websession_webinterface.py:436 -#: modules/websession/lib/websession_webinterface.py:449 -#: modules/websession/lib/websession_webinterface.py:471 -#: modules/websession/lib/websession_webinterface.py:477 -#: modules/websession/lib/websession_webinterface.py:914 -#: modules/websession/lib/websession_webinterface.py:919 -#: modules/websession/lib/websession_webinterface.py:924 -#: modules/websession/lib/websession_webinterface.py:935 +#: modules/websession/lib/websession_webinterface.py:435 +#: modules/websession/lib/websession_webinterface.py:441 +#: modules/websession/lib/websession_webinterface.py:454 +#: modules/websession/lib/websession_webinterface.py:476 +#: modules/websession/lib/websession_webinterface.py:482 +#: modules/websession/lib/websession_webinterface.py:932 +#: modules/websession/lib/websession_webinterface.py:937 +#: modules/websession/lib/websession_webinterface.py:942 +#: modules/websession/lib/websession_webinterface.py:953 msgid "Please try again." msgstr "" -#: modules/websession/lib/websession_webinterface.py:432 -#: modules/websession/lib/websession_webinterface.py:438 -#: modules/websession/lib/websession_webinterface.py:445 -#: modules/websession/lib/websession_webinterface.py:451 -#: modules/websession/lib/websession_webinterface.py:473 -#: modules/websession/lib/websession_webinterface.py:479 -#: modules/websession/lib/websession_webinterface.py:526 +#: modules/websession/lib/websession_webinterface.py:437 +#: modules/websession/lib/websession_webinterface.py:443 +#: modules/websession/lib/websession_webinterface.py:450 +#: modules/websession/lib/websession_webinterface.py:456 +#: modules/websession/lib/websession_webinterface.py:478 +#: modules/websession/lib/websession_webinterface.py:484 +#: modules/websession/lib/websession_webinterface.py:531 msgid "Edit settings" msgstr "" -#: modules/websession/lib/websession_webinterface.py:433 -#: modules/websession/lib/websession_webinterface.py:439 -#: modules/websession/lib/websession_webinterface.py:446 -#: modules/websession/lib/websession_webinterface.py:452 -#: modules/websession/lib/websession_webinterface.py:528 +#: modules/websession/lib/websession_webinterface.py:438 +#: modules/websession/lib/websession_webinterface.py:444 +#: modules/websession/lib/websession_webinterface.py:451 +#: modules/websession/lib/websession_webinterface.py:457 +#: modules/websession/lib/websession_webinterface.py:533 msgid "Editing settings failed" msgstr "" -#: modules/websession/lib/websession_webinterface.py:435 -#: modules/websession/lib/websession_webinterface.py:918 +#: modules/websession/lib/websession_webinterface.py:440 +#: modules/websession/lib/websession_webinterface.py:936 #, python-format msgid "Supplied email address %s is invalid." msgstr "" -#: modules/websession/lib/websession_webinterface.py:441 -#: modules/websession/lib/websession_webinterface.py:928 +#: modules/websession/lib/websession_webinterface.py:446 +#: modules/websession/lib/websession_webinterface.py:946 #, python-format msgid "Supplied email address %s already exists in the database." msgstr "" -#: modules/websession/lib/websession_webinterface.py:443 -#: modules/websession/lib/websession_webinterface.py:930 +#: modules/websession/lib/websession_webinterface.py:448 +#: modules/websession/lib/websession_webinterface.py:948 msgid "Or please try again." msgstr "" -#: modules/websession/lib/websession_webinterface.py:448 +#: modules/websession/lib/websession_webinterface.py:453 #, python-format msgid "Desired nickname %s is already in use." msgstr "" -#: modules/websession/lib/websession_webinterface.py:457 +#: modules/websession/lib/websession_webinterface.py:462 msgid "Users cannot edit passwords on this site." msgstr "" -#: modules/websession/lib/websession_webinterface.py:465 +#: modules/websession/lib/websession_webinterface.py:470 msgid "Password successfully edited." msgstr "" -#: modules/websession/lib/websession_webinterface.py:468 +#: modules/websession/lib/websession_webinterface.py:473 msgid "Password edited" msgstr "" -#: modules/websession/lib/websession_webinterface.py:470 -#: modules/websession/lib/websession_webinterface.py:913 +#: modules/websession/lib/websession_webinterface.py:475 +#: modules/websession/lib/websession_webinterface.py:931 msgid "Both passwords must match." msgstr "" -#: modules/websession/lib/websession_webinterface.py:474 -#: modules/websession/lib/websession_webinterface.py:480 +#: modules/websession/lib/websession_webinterface.py:479 +#: modules/websession/lib/websession_webinterface.py:485 msgid "Editing password failed" msgstr "" -#: modules/websession/lib/websession_webinterface.py:476 +#: modules/websession/lib/websession_webinterface.py:481 msgid "Wrong old password inserted." msgstr "" -#: modules/websession/lib/websession_webinterface.py:492 -#: modules/websession/lib/websession_webinterface.py:505 -#: modules/websession/lib/websession_webinterface.py:519 +#: modules/websession/lib/websession_webinterface.py:497 +#: modules/websession/lib/websession_webinterface.py:510 +#: modules/websession/lib/websession_webinterface.py:524 msgid "User settings saved correctly." msgstr "" -#: modules/websession/lib/websession_webinterface.py:512 +#: modules/websession/lib/websession_webinterface.py:517 msgid "Editing bibcatalog authorization failed" msgstr "" -#: modules/websession/lib/websession_webinterface.py:513 +#: modules/websession/lib/websession_webinterface.py:518 msgid "Empty username or password" msgstr "" -#: modules/websession/lib/websession_webinterface.py:522 +#: modules/websession/lib/websession_webinterface.py:527 msgid "Unable to update settings." msgstr "" -#: modules/websession/lib/websession_webinterface.py:583 +#: modules/websession/lib/websession_webinterface.py:588 msgid "" "Cannot send password reset request since you are using external " "authentication system." msgstr "" -#: modules/websession/lib/websession_webinterface.py:599 +#: modules/websession/lib/websession_webinterface.py:604 msgid "The entered email address does not exist in the database." msgstr "" -#: modules/websession/lib/websession_webinterface.py:613 +#: modules/websession/lib/websession_webinterface.py:618 msgid "Password reset request for" msgstr "" -#: modules/websession/lib/websession_webinterface.py:617 +#: modules/websession/lib/websession_webinterface.py:622 msgid "" "The entered email address is incorrect, please check that it is written " "correctly (e.g. johndoe@example.com)." msgstr "" -#: modules/websession/lib/websession_webinterface.py:618 +#: modules/websession/lib/websession_webinterface.py:623 msgid "Incorrect email address" msgstr "" -#: modules/websession/lib/websession_webinterface.py:628 +#: modules/websession/lib/websession_webinterface.py:633 msgid "Reset password link sent" msgstr "" -#: modules/websession/lib/websession_webinterface.py:673 +#: modules/websession/lib/websession_webinterface.py:678 msgid "Delete Account" msgstr "" -#: modules/websession/lib/websession_webinterface.py:699 +#: modules/websession/lib/websession_webinterface.py:704 msgid "Logout" msgstr "" -#: modules/websession/lib/websession_webinterface.py:765 -#: modules/websession/lib/websession_webinterface.py:814 -#: modules/websession/lib/websession_webinterface.py:849 +#: modules/websession/lib/websession_webinterface.py:770 +#: modules/websession/lib/websession_webinterface.py:832 +#: modules/websession/lib/websession_webinterface.py:867 +#: modules/webstyle/lib/webstyle_templates_epfl.py:165 msgid "Login" msgstr "" -#: modules/websession/lib/websession_webinterface.py:880 +#: modules/websession/lib/websession_webinterface.py:898 msgid "Register" msgstr "" -#: modules/websession/lib/websession_webinterface.py:883 -#: modules/websession/lib/websession_webinterface.py:955 +#: modules/websession/lib/websession_webinterface.py:901 +#: modules/websession/lib/websession_webinterface.py:973 #, python-format msgid "%s Personalize, Main page" msgstr "" -#: modules/websession/lib/websession_webinterface.py:900 +#: modules/websession/lib/websession_webinterface.py:918 msgid "Your account has been successfully created." msgstr "" -#: modules/websession/lib/websession_webinterface.py:901 +#: modules/websession/lib/websession_webinterface.py:919 msgid "Account created" msgstr "" -#: modules/websession/lib/websession_webinterface.py:903 +#: modules/websession/lib/websession_webinterface.py:921 msgid "" "In order to confirm its validity, an email message containing an account " "activation key has been sent to the given email address." msgstr "" -#: modules/websession/lib/websession_webinterface.py:904 +#: modules/websession/lib/websession_webinterface.py:922 msgid "" "Please follow instructions presented there in order to complete the account " "registration process." msgstr "" -#: modules/websession/lib/websession_webinterface.py:906 +#: modules/websession/lib/websession_webinterface.py:924 msgid "" "A second email will be sent when the account has been activated and can be " "used." msgstr "" -#: modules/websession/lib/websession_webinterface.py:909 +#: modules/websession/lib/websession_webinterface.py:927 #, python-format msgid "You can now access your %(x_url_open)saccount%(x_url_close)s." msgstr "" -#: modules/websession/lib/websession_webinterface.py:916 -#: modules/websession/lib/websession_webinterface.py:921 -#: modules/websession/lib/websession_webinterface.py:926 -#: modules/websession/lib/websession_webinterface.py:932 -#: modules/websession/lib/websession_webinterface.py:937 -#: modules/websession/lib/websession_webinterface.py:941 -#: modules/websession/lib/websession_webinterface.py:945 +#: modules/websession/lib/websession_webinterface.py:934 +#: modules/websession/lib/websession_webinterface.py:939 +#: modules/websession/lib/websession_webinterface.py:944 #: modules/websession/lib/websession_webinterface.py:950 +#: modules/websession/lib/websession_webinterface.py:955 +#: modules/websession/lib/websession_webinterface.py:959 +#: modules/websession/lib/websession_webinterface.py:963 +#: modules/websession/lib/websession_webinterface.py:968 msgid "Registration failure" msgstr "" -#: modules/websession/lib/websession_webinterface.py:934 +#: modules/websession/lib/websession_webinterface.py:952 #, python-format msgid "Desired nickname %s already exists in the database." msgstr "" -#: modules/websession/lib/websession_webinterface.py:939 +#: modules/websession/lib/websession_webinterface.py:957 msgid "Users cannot register themselves, only admin can register them." msgstr "" -#: modules/websession/lib/websession_webinterface.py:943 +#: modules/websession/lib/websession_webinterface.py:961 msgid "" "The site is having troubles in sending you an email for confirming your " "email address." msgstr "" -#: modules/websession/lib/websession_webinterface.py:943 +#: modules/websession/lib/websession_webinterface.py:961 #: modules/websubmit/lib/websubmit_webinterface.py:141 msgid "" "The error has been logged and will be taken in consideration as soon as " "possible." msgstr "" -#: modules/websession/lib/websession_webinterface.py:990 +#: modules/websession/lib/websession_webinterface.py:1008 msgid "Your tickets" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1026 -#: modules/websession/lib/websession_webinterface.py:1071 -#: modules/websession/lib/websession_webinterface.py:1132 -#: modules/websession/lib/websession_webinterface.py:1196 -#: modules/websession/lib/websession_webinterface.py:1255 -#: modules/websession/lib/websession_webinterface.py:1328 +#: modules/websession/lib/websession_webinterface.py:1044 +#: modules/websession/lib/websession_webinterface.py:1089 +#: modules/websession/lib/websession_webinterface.py:1150 +#: modules/websession/lib/websession_webinterface.py:1214 +#: modules/websession/lib/websession_webinterface.py:1273 +#: modules/websession/lib/websession_webinterface.py:1346 msgid "You are not authorized to use groups." msgstr "" -#: modules/websession/lib/websession_webinterface.py:1157 +#: modules/websession/lib/websession_webinterface.py:1175 msgid "Join New Group" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1211 +#: modules/websession/lib/websession_webinterface.py:1229 msgid "Leave Group" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1283 +#: modules/websession/lib/websession_webinterface.py:1301 msgid "Edit Group" msgstr "" -#: modules/websession/lib/websession_webinterface.py:1357 +#: modules/websession/lib/websession_webinterface.py:1375 msgid "Edit group members" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:85 #: modules/webstyle/lib/webstyle_templates.py:94 msgid "Home" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:432 #: modules/webstyle/lib/webstyle_templates.py:500 #: modules/websubmit/lib/websubmit_engine.py:690 #: modules/websubmit/lib/websubmit_engine.py:1144 #: modules/websubmit/lib/websubmit_engine.py:1190 #: modules/websubmit/lib/websubmit_engine.py:1423 msgid "Submit" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:434 #: modules/webstyle/lib/webstyle_templates.py:502 +#: modules/webstyle/lib/webstyle_templates_epfl.py:474 msgid "Help" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:466 msgid "Last updated" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:504 msgid "Powered by" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:505 msgid "Maintained by" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:552 msgid "This site is also available in the following languages:" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:585 msgid "Browser" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:607 msgid "System Error" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:622 msgid "Traceback" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:669 msgid "Client" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:671 msgid "Please send an error report to the administrator." msgstr "" #: modules/webstyle/lib/webstyle_templates.py:672 msgid "Send error report" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:676 #, python-format msgid "Please contact %s quoting the following information:" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:832 #, python-format msgid "" "Record created %(x_date_creation)s, last modified %(x_date_modification)s" msgstr "" #: modules/webstyle/lib/webstyle_templates.py:903 msgid "The server encountered an error while dealing with your request." msgstr "" #: modules/webstyle/lib/webstyle_templates.py:904 msgid "The system administrators have been alerted." msgstr "" #: modules/webstyle/lib/webstyle_templates.py:905 #, python-format msgid "In case of doubt, please contact %(x_admin_email)s." msgstr "" #: modules/webstyle/lib/webdoc.py:547 #, python-format msgid "%(category)s Pages" msgstr "" +#: modules/webstyle/lib/webdoc_tests.py:105 +#: modules/webstyle/lib/webdoc_webinterface.py:155 +msgid "Help Central" +msgstr "" + #: modules/webstyle/lib/webdoc_webinterface.py:144 #: modules/webstyle/lib/webdoc_webinterface.py:149 msgid "Admin Pages" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:146 #: modules/webstyle/lib/webdoc_webinterface.py:150 msgid "Help Pages" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:148 #: modules/webstyle/lib/webdoc_webinterface.py:151 msgid "Hacking Pages" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:157 msgid "Hacking Invenio" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:159 msgid "Latest modifications:" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:162 #, python-format msgid "This is the table of contents of the %(x_category)s pages." msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:164 msgid "See also" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:179 #, python-format msgid "Page %s Not Found" msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:187 #, python-format msgid "Sorry, page %s does not seem to exist." msgstr "" #: modules/webstyle/lib/webdoc_webinterface.py:190 #, python-format msgid "" "You may want to look at the %(x_url_open)s%(x_category)s pages" "%(x_url_close)s." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:368 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:443 msgid "Choose a file" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:376 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:459 msgid "Access" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:536 #, python-format msgid "" "The uploaded file is too small (<%i o) and has therefore not been considered" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:541 #, python-format msgid "" "The uploaded file is too big (>%i o) and has therefore not been considered" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:548 msgid "" "The uploaded file name is too long and has therefore not been considered" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:560 msgid "" "You have already reached the maximum number of files for this type of " "document" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:583 #: modules/websubmit/lib/websubmit_managedocfiles.py:594 #: modules/websubmit/lib/websubmit_managedocfiles.py:704 #, python-format msgid "A file named %s already exists. Please choose another name." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:605 #, python-format msgid "A file with format '%s' already exists. Please upload another format." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:613 msgid "" "You are not allowed to use dot '.', slash '/', or backslash '\\\\' in file " "names. Choose a different name and upload your file again. In particular, " "note that you should not include the extension in the renaming field." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:784 msgid "Choose how you want to restrict access to this file." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:817 msgid "Add new file" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:842 msgid "You can decide to hide or not previous version(s) of this file." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:843 msgid "" "When you revise a file, the additional formats that you might have " "previously uploaded are removed, since they no longer up-to-date with the " "new file." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:844 msgid "" "Alternative formats uploaded for current version of this file will be removed" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:845 msgid "Keep previous versions" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:847 msgid "Upload" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:859 #: modules/websubmit/lib/websubmit_webinterface.py:449 #: modules/bibedit/lib/bibeditmulti_templates.py:305 msgid "Apply changes" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:864 #, python-format msgid "Need help revising or adding files to record %(recid)s" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:866 #, python-format msgid "" "Dear Support,\n" "I would need help to revise or add a file to record %(recid)s.\n" "I have attached the new version to this email.\n" "Best regards" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:871 #, python-format msgid "" "Having a problem revising a file? Send the revised version to " "%(mailto_link)s." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:874 #, python-format msgid "" "Having a problem adding or revising a file? Send the new/revised version to " "%(mailto_link)s." msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:989 msgid "revise" msgstr "" #: modules/websubmit/lib/websubmit_managedocfiles.py:1033 msgid "add format" msgstr "" #: modules/websubmit/lib/functions/Shared_Functions.py:178 msgid "" "Note that your submission has been inserted into the bibliographic task " "queue and is waiting for execution.\n" msgstr "" #: modules/websubmit/lib/functions/Shared_Functions.py:181 #, python-format msgid "" "The task queue is currently running in automatic mode, and there are " "currently %s tasks waiting to be executed. Your record should be available " "within a few minutes and searchable within an hour or thereabouts.\n" msgstr "" #: modules/websubmit/lib/functions/Shared_Functions.py:183 msgid "" "Because of a human intervention or a temporary problem, the task queue is " "currently set to the manual mode. Your submission is well registered but may " "take longer than usual before it is fully integrated and searchable.\n" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:177 #: modules/websubmit/lib/websubmit_engine.py:790 #: modules/websubmit/web/yoursubmissions.py:61 msgid "Sorry, you must log in to perform this action." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:184 #: modules/websubmit/lib/websubmit_engine.py:820 msgid "Not enough information to go ahead with the submission." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:190 #: modules/websubmit/lib/websubmit_engine.py:271 #: modules/websubmit/lib/websubmit_engine.py:281 #: modules/websubmit/lib/websubmit_engine.py:353 #: modules/websubmit/lib/websubmit_engine.py:394 #: modules/websubmit/lib/websubmit_engine.py:834 #: modules/websubmit/lib/websubmit_engine.py:872 #: modules/websubmit/lib/websubmit_engine.py:930 #: modules/websubmit/lib/websubmit_engine.py:971 msgid "Invalid parameters" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:196 #: modules/websubmit/lib/websubmit_engine.py:826 msgid "Invalid doctype and act parameters" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:227 #: modules/websubmit/lib/websubmit_engine.py:799 #: modules/websubmit/lib/websubmit_engine.py:861 #, python-format msgid "Unable to find the submission directory for the action: %s" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:236 #: modules/websubmit/lib/websubmit_engine.py:1014 msgid "Unknown document type" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:242 #: modules/websubmit/lib/websubmit_engine.py:1020 msgid "Unknown action" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:250 #: modules/websubmit/lib/websubmit_engine.py:1027 msgid "Unable to determine the number of submission pages." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:291 #: modules/websubmit/lib/websubmit_engine.py:880 msgid "" "Unable to create a directory for this submission. The administrator has been " "alerted." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:400 #: modules/websubmit/lib/websubmit_engine.py:978 msgid "Cannot create submission directory. The administrator has been alerted." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:422 #: modules/websubmit/lib/websubmit_engine.py:1000 msgid "No file uploaded?" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:463 #: modules/websubmit/lib/websubmit_engine.py:466 #: modules/websubmit/lib/websubmit_engine.py:599 #: modules/websubmit/lib/websubmit_engine.py:602 msgid "Unknown form field found on submission page." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1063 msgid "" "A serious function-error has been encountered. Adminstrators have been " "alerted.
    Please not that this might be due to wrong characters " "inserted into the form (e.g. by copy and pasting some text from a PDF " "file)." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1386 #, python-format msgid "Unable to find document type: %s" msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1672 msgid "The chosen action is not supported by the document type." msgstr "" #: modules/websubmit/lib/websubmit_engine.py:1749 #: modules/websubmit/lib/websubmit_webinterface.py:1128 #: modules/websubmit/web/approve.py:81 msgid "Warning" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:84 msgid "Document types available for submission" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:85 msgid "Please select the type of document you want to submit" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:102 msgid "No document types available." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:268 msgid "Please log in first." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:268 msgid "Use the top-right menu to log in." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:312 msgid "Please select a category" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:351 msgid "Notice" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:352 msgid "Select a category and then click on an action button." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:375 msgid "" "To continue with a previously interrupted submission, enter an access number " "into the box below:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:377 msgid "GO" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:498 #: modules/websubmit/lib/websubmit_templates.py:967 msgid "SUMMARY" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:534 #: modules/bibharvest/lib/oai_harvest_admin.py:846 #: modules/bibharvest/lib/oai_harvest_admin.py:899 msgid "Previous page" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:540 msgid "Submission number" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:554 #: modules/bibharvest/lib/oai_harvest_admin.py:831 #: modules/bibharvest/lib/oai_harvest_admin.py:887 msgid "Next page" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:569 #: modules/websubmit/lib/websubmit_templates.py:1008 msgid "Are you sure you want to quit this submission?" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:571 #: modules/websubmit/lib/websubmit_templates.py:1009 #: modules/websubmit/lib/websubmit_templates.py:1018 msgid "Back to main menu" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:574 msgid "" "This is your submission access number. It can be used to continue with an " "interrupted submission in case of problems." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:575 msgid "Mandatory fields appear in red in the SUMMARY window." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:721 #, python-format msgid "The field %s is mandatory." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:721 msgid "Please make a choice in the select box" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:735 msgid "Please press a button." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:743 #, python-format msgid "The field %s is mandatory. Please fill it in." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:820 #, python-format msgid "The field %(field)s is mandatory." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:821 msgid "Going back to page" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:958 msgid "finished!" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:966 msgid "end of action" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:990 msgid "Submission no" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1061 #, python-format msgid "" "Here is the %(x_action)s function list for %(x_doctype)s documents at level " "%(x_step)s" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1066 msgid "Function" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1067 msgid "Score" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1068 msgid "Running function" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1074 #, python-format msgid "Function %s does not exist." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1113 msgid "You must now" msgstr "" +#: modules/websubmit/lib/websubmit_templates.py:1118 +#: modules/bibharvest/lib/oai_harvest_admin.py:409 +#: modules/bibharvest/lib/oai_harvest_admin.py:417 +#: modules/bibharvest/lib/oai_harvest_admin.py:431 +#: modules/bibharvest/lib/oai_harvest_admin.py:446 +msgid "or" +msgstr "" + #: modules/websubmit/lib/websubmit_templates.py:1145 msgid "record" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1147 msgid "document" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1149 #: modules/websubmit/lib/websubmit_templates.py:1247 msgid "version" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1184 msgid "file(s)" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1231 msgid "see" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1429 msgid "For" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1430 msgid "all types of document" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1485 msgid "Subm.No." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1486 msgid "Reference" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1488 msgid "First access" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1489 msgid "Last access" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1499 msgid "Are you sure you want to delete this submission?" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1500 #, python-format msgid "Delete submission %(x_id)s in %(x_docname)s" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1524 msgid "Reference not yet given" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1595 msgid "Refereed Documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1605 msgid "You are a general referee" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1611 msgid "You are a referee for category:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1650 #: modules/websubmit/lib/websubmit_templates.py:1695 msgid "List of refereed types of documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1651 #: modules/websubmit/lib/websubmit_templates.py:1696 msgid "" "Select one of the following types of documents to check the documents status" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1664 msgid "Go to specific approval workflow" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1752 msgid "List of refereed categories" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1753 #: modules/websubmit/lib/websubmit_templates.py:1902 msgid "Please choose a category" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1773 #: modules/websubmit/lib/websubmit_templates.py:1814 #: modules/websubmit/lib/websubmit_templates.py:1925 #: modules/websubmit/lib/websubmit_templates.py:1983 #: modules/websubmit/lib/websubmit_templates.py:2049 #: modules/websubmit/lib/websubmit_templates.py:2174 msgid "Pending" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1779 #: modules/websubmit/lib/websubmit_templates.py:1817 #: modules/websubmit/lib/websubmit_templates.py:1932 #: modules/websubmit/lib/websubmit_templates.py:1986 #: modules/websubmit/lib/websubmit_templates.py:2050 #: modules/websubmit/lib/websubmit_templates.py:2175 msgid "Approved" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1785 #: modules/websubmit/lib/websubmit_templates.py:1819 #: modules/websubmit/lib/websubmit_templates.py:1820 #: modules/websubmit/lib/websubmit_templates.py:1939 #: modules/websubmit/lib/websubmit_templates.py:1988 #: modules/websubmit/lib/websubmit_templates.py:1989 #: modules/websubmit/lib/websubmit_templates.py:2051 #: modules/websubmit/lib/websubmit_templates.py:2176 msgid "Rejected" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1813 #: modules/websubmit/lib/websubmit_templates.py:1982 msgid "Key" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1816 #: modules/websubmit/lib/websubmit_templates.py:1985 msgid "Waiting for approval" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1818 #: modules/websubmit/lib/websubmit_templates.py:1987 msgid "Already approved" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1821 #: modules/websubmit/lib/websubmit_templates.py:1992 msgid "Some documents are pending." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1866 msgid "List of refereing categories" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:1946 #: modules/websubmit/lib/websubmit_templates.py:1990 #: modules/websubmit/lib/websubmit_templates.py:1991 #: modules/websubmit/lib/websubmit_templates.py:2177 msgid "Cancelled" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2046 #: modules/websubmit/lib/websubmit_templates.py:2134 msgid "List of refereed documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2047 #: modules/websubmit/lib/websubmit_templates.py:2171 msgid "Click on a report number for more information." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2048 #: modules/websubmit/lib/websubmit_templates.py:2173 msgid "Report Number" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2136 msgid "List of publication documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2138 msgid "List of direct approval documents" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2311 msgid "Your request has been sent to the referee." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2327 #: modules/websubmit/lib/websubmit_templates.py:2447 #: modules/websubmit/lib/websubmit_templates.py:2757 #: modules/websubmit/lib/websubmit_templates.py:2941 msgid "Title:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2333 #: modules/websubmit/lib/websubmit_templates.py:2454 #: modules/websubmit/lib/websubmit_templates.py:2763 #: modules/websubmit/lib/websubmit_templates.py:2947 msgid "Author:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2341 #: modules/websubmit/lib/websubmit_templates.py:2463 #: modules/websubmit/lib/websubmit_templates.py:2771 #: modules/websubmit/lib/websubmit_templates.py:2955 msgid "More information:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2342 #: modules/websubmit/lib/websubmit_templates.py:2464 #: modules/websubmit/lib/websubmit_templates.py:2772 #: modules/websubmit/lib/websubmit_templates.py:2956 msgid "Click here" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2350 msgid "Approval note:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2355 #, python-format msgid "" "This document is still %(x_fmt_open)swaiting for approval%(x_fmt_close)s." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2358 #: modules/websubmit/lib/websubmit_templates.py:2378 #: modules/websubmit/lib/websubmit_templates.py:2387 msgid "It was first sent for approval on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2360 #: modules/websubmit/lib/websubmit_templates.py:2362 #: modules/websubmit/lib/websubmit_templates.py:2380 #: modules/websubmit/lib/websubmit_templates.py:2382 #: modules/websubmit/lib/websubmit_templates.py:2389 #: modules/websubmit/lib/websubmit_templates.py:2391 msgid "Last approval email was sent on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2363 msgid "" "You can send an approval request email again by clicking the following " "button:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2365 #: modules/websubmit/web/publiline.py:364 msgid "Send Again" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2366 msgid "WARNING! Upon confirmation, an email will be sent to the referee." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2369 msgid "" "As a referee for this document, you may click this button to approve or " "reject it" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2371 msgid "Approve/Reject" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2376 #, python-format msgid "This document has been %(x_fmt_open)sapproved%(x_fmt_close)s." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2377 msgid "Its approved reference is:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2383 msgid "It was approved on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2385 #, python-format msgid "This document has been %(x_fmt_open)srejected%(x_fmt_close)s." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2392 msgid "It was rejected on:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2475 #: modules/websubmit/lib/websubmit_templates.py:2530 #: modules/websubmit/lib/websubmit_templates.py:2593 msgid "It has first been asked for refereing process on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2478 #: modules/websubmit/lib/websubmit_templates.py:2532 msgid "Last request e-mail was sent to the publication committee chair on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2482 msgid "A referee has been selected by the publication committee on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2485 #: modules/websubmit/lib/websubmit_templates.py:2548 msgid "No referee has been selected yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2487 #: modules/websubmit/lib/websubmit_templates.py:2550 msgid "Select a referee" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2492 msgid "" "The referee has sent his final recommendations to the publication committee " "on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2495 #: modules/websubmit/lib/websubmit_templates.py:2556 msgid "No recommendation from the referee yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2497 #: modules/websubmit/lib/websubmit_templates.py:2507 #: modules/websubmit/lib/websubmit_templates.py:2558 #: modules/websubmit/lib/websubmit_templates.py:2566 #: modules/websubmit/lib/websubmit_templates.py:2574 msgid "Send a recommendation" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2502 #: modules/websubmit/lib/websubmit_templates.py:2570 msgid "" "The publication committee has sent his final recommendations to the project " "leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2505 #: modules/websubmit/lib/websubmit_templates.py:2572 msgid "No recommendation from the publication committee yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2512 #: modules/websubmit/lib/websubmit_templates.py:2578 #: modules/websubmit/lib/websubmit_templates.py:2598 msgid "It has been cancelled by the author on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2516 #: modules/websubmit/lib/websubmit_templates.py:2581 #: modules/websubmit/lib/websubmit_templates.py:2601 msgid "It has been approved by the project leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2519 #: modules/websubmit/lib/websubmit_templates.py:2583 #: modules/websubmit/lib/websubmit_templates.py:2603 msgid "It has been rejected by the project leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2522 #: modules/websubmit/lib/websubmit_templates.py:2585 #: modules/websubmit/lib/websubmit_templates.py:2605 msgid "No final decision taken yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2524 #: modules/websubmit/lib/websubmit_templates.py:2587 #: modules/websubmit/lib/websubmit_templates.py:2607 #: modules/websubmit/web/publiline.py:1133 #: modules/websubmit/web/publiline.py:1143 msgid "Take a decision" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2535 msgid "" "An editorial board has been selected by the publication committee on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2537 msgid "Add an author list" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2540 msgid "No editorial board has been selected yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2542 msgid "Select an editorial board" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2546 msgid "A referee has been selected by the editorial board on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2554 msgid "" "The referee has sent his final recommendations to the editorial board on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2562 msgid "" "The editorial board has sent his final recommendations to the publication " "committee on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2564 msgid "No recommendation from the editorial board yet." msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2595 msgid "Last request e-mail was sent to the project leader on the " msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2689 msgid "Comments overview" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2811 msgid "search for user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2813 msgid "search for users" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2816 #: modules/websubmit/lib/websubmit_templates.py:2818 #: modules/websubmit/lib/websubmit_templates.py:2871 #: modules/websubmit/lib/websubmit_templates.py:2873 msgid "select user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2827 msgid "connected" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2830 msgid "add this user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2880 msgid "remove this user" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:2994 msgid "User" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:3075 #: modules/websubmit/web/publiline.py:1130 msgid "Select:" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:3076 msgid "approve" msgstr "" #: modules/websubmit/lib/websubmit_templates.py:3077 msgid "reject" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:114 msgid "Requested record does not seem to have been integrated." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:140 msgid "" "The system has encountered an error in retrieving the list of files for this " "document." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:196 #, python-format msgid "The format %s does not exist for the given version: %s" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:210 msgid "This file is restricted: " msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:222 msgid "An error has happened in trying to stream the request file." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:225 msgid "The requested file is hidden and can not be accessed." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:232 msgid "Requested file does not seem to exist." msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:266 +#: modules/websubmit/lib/websubmit_webinterface.py:265 msgid "Access to Fulltext" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:315 +#: modules/websubmit/lib/websubmit_webinterface.py:314 msgid "An error has happened in trying to retrieve the requested file." msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:317 +#: modules/websubmit/lib/websubmit_webinterface.py:316 msgid "Not enough information to retrieve the document" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:325 +#: modules/websubmit/lib/websubmit_webinterface.py:324 msgid "An error has happened in trying to retrieving the requested file." msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:376 +#: modules/websubmit/lib/websubmit_webinterface.py:375 msgid "Manage Document Files" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:394 +#: modules/websubmit/lib/websubmit_webinterface.py:393 #, python-format msgid "Your modifications to record #%i have been submitted" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:402 +#: modules/websubmit/lib/websubmit_webinterface.py:401 #, python-format msgid "Your modifications to record #%i have been cancelled" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:411 +#: modules/websubmit/lib/websubmit_webinterface.py:410 msgid "Edit" msgstr "" -#: modules/websubmit/lib/websubmit_webinterface.py:412 +#: modules/websubmit/lib/websubmit_webinterface.py:411 msgid "Edit record" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:427 #: modules/websubmit/lib/websubmit_webinterface.py:458 msgid "Document File Manager" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:428 #: modules/websubmit/lib/websubmit_webinterface.py:458 #, python-format msgid "Record #%i" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:450 msgid "Cancel all changes" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:922 msgid "Sorry, 'sub' parameter missing..." msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:925 msgid "Sorry. Cannot analyse parameter" msgstr "" #: modules/websubmit/lib/websubmit_webinterface.py:986 msgid "Sorry, invalid URL..." msgstr "" #: modules/websubmit/web/approve.py:55 msgid "approve.py: cannot determine document reference" msgstr "" #: modules/websubmit/web/approve.py:58 msgid "approve.py: cannot find document in database" msgstr "" #: modules/websubmit/web/approve.py:72 msgid "Sorry parameter missing..." msgstr "" #: modules/websubmit/web/publiline.py:130 msgid "Document Approval Workflow" msgstr "" #: modules/websubmit/web/publiline.py:151 msgid "Approval and Refereeing Workflow" msgstr "" #: modules/websubmit/web/publiline.py:330 #: modules/websubmit/web/publiline.py:431 #: modules/websubmit/web/publiline.py:657 msgid "Approval has never been requested for this document." msgstr "" #: modules/websubmit/web/publiline.py:356 #: modules/websubmit/web/publiline.py:457 #: modules/websubmit/web/publiline.py:682 msgid "Unable to display document." msgstr "" #: modules/websubmit/web/publiline.py:686 #: modules/websubmit/web/publiline.py:810 #: modules/websubmit/web/publiline.py:925 #: modules/websubmit/web/publiline.py:989 #: modules/websubmit/web/publiline.py:1030 #: modules/websubmit/web/publiline.py:1086 #: modules/websubmit/web/publiline.py:1149 #: modules/websubmit/web/publiline.py:1199 msgid "Action unauthorized for this document." msgstr "" #: modules/websubmit/web/publiline.py:689 #: modules/websubmit/web/publiline.py:813 #: modules/websubmit/web/publiline.py:928 #: modules/websubmit/web/publiline.py:992 #: modules/websubmit/web/publiline.py:1033 #: modules/websubmit/web/publiline.py:1089 #: modules/websubmit/web/publiline.py:1152 #: modules/websubmit/web/publiline.py:1202 msgid "Action unavailable for this document." msgstr "" #: modules/websubmit/web/publiline.py:699 msgid "Adding users to the editorial board" msgstr "" #: modules/websubmit/web/publiline.py:727 #: modules/websubmit/web/publiline.py:850 msgid "no qualified users, try new search." msgstr "" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "hits" msgstr "" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "too many qualified users, specify more narrow search." msgstr "" #: modules/websubmit/web/publiline.py:729 #: modules/websubmit/web/publiline.py:852 msgid "limit" msgstr "" #: modules/websubmit/web/publiline.py:745 msgid "users in brackets are already attached to the role, try another one..." msgstr "" #: modules/websubmit/web/publiline.py:751 msgid "Removing users from the editorial board" msgstr "" #: modules/websubmit/web/publiline.py:787 msgid "Validate the editorial board selection" msgstr "" #: modules/websubmit/web/publiline.py:832 msgid "Referee selection" msgstr "" #: modules/websubmit/web/publiline.py:918 msgid "Come back to the document" msgstr "" #: modules/websubmit/web/publiline.py:1103 msgid "Back to the document" msgstr "" #: modules/websubmit/web/publiline.py:1131 #: modules/websubmit/web/publiline.py:1191 msgid "Approve" msgstr "" #: modules/websubmit/web/publiline.py:1132 #: modules/websubmit/web/publiline.py:1192 msgid "Reject" msgstr "" #: modules/websubmit/web/publiline.py:1230 msgid "Wrong action for this document." msgstr "" #: modules/websubmit/web/yourapprovals.py:57 msgid "You are not authorized to use approval system." msgstr "" #: modules/webjournal/lib/webjournal_templates.py:49 msgid "Available Journals" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:58 #: modules/webjournal/lib/webjournal_templates.py:97 #, python-format msgid "Contact %(x_url_open)sthe administrator%(x_url_close)s" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:142 msgid "Regeneration Error" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:143 msgid "" "The issue could not be correctly regenerated. Please contact your " "administrator." msgstr "" #: modules/webjournal/lib/webjournal_templates.py:268 #, python-format msgid "If you cannot read this email please go to %(x_journal_link)s" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:415 #: modules/webjournal/lib/webjournal_templates.py:664 #: modules/webjournal/lib/webjournaladminlib.py:292 #: modules/webjournal/lib/webjournaladminlib.py:312 msgid "Add" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:416 #: modules/webjournal/lib/webjournaladminlib.py:331 msgid "Publish" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:417 #: modules/webjournal/lib/webjournaladminlib.py:292 #: modules/webjournal/lib/webjournaladminlib.py:309 msgid "Refresh" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:480 #: modules/webjournal/lib/webjournaladminlib.py:357 #: modules/bibcirculation/lib/bibcirculation_templates.py:3522 #: modules/bibcirculation/lib/bibcirculation_templates.py:3766 #: modules/bibcirculation/lib/bibcirculation_templates.py:7062 #: modules/bibcirculation/lib/bibcirculation_templates.py:14199 msgid "Update" msgstr "" #: modules/webjournal/lib/webjournal_templates.py:659 msgid "Apply" msgstr "" #: modules/webjournal/lib/webjournal_config.py:63 msgid "Page not found" msgstr "" #: modules/webjournal/lib/webjournal_config.py:64 msgid "The requested page does not exist" msgstr "" #: modules/webjournal/lib/webjournal_config.py:94 msgid "No journal articles" msgstr "" #: modules/webjournal/lib/webjournal_config.py:95 #: modules/webjournal/lib/webjournal_config.py:135 msgid "Problem with the configuration of this journal" msgstr "" #: modules/webjournal/lib/webjournal_config.py:134 msgid "No journal issues" msgstr "" #: modules/webjournal/lib/webjournal_config.py:172 msgid "Journal article error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:173 msgid "We could not know which article you were looking for" msgstr "" #: modules/webjournal/lib/webjournal_config.py:206 msgid "No journals available" msgstr "" #: modules/webjournal/lib/webjournal_config.py:207 msgid "We could not provide you any journals" msgstr "" #: modules/webjournal/lib/webjournal_config.py:208 msgid "" "It seems that there are no journals defined on this server. Please contact " "support if this is not right." msgstr "" #: modules/webjournal/lib/webjournal_config.py:233 msgid "Select a journal on this server" msgstr "" #: modules/webjournal/lib/webjournal_config.py:234 msgid "We couldn't guess which journal you are looking for" msgstr "" #: modules/webjournal/lib/webjournal_config.py:235 msgid "" "You did not provide an argument for a journal name. Please select the " "journal you want to read in the list below." msgstr "" #: modules/webjournal/lib/webjournal_config.py:261 msgid "No current issue" msgstr "" #: modules/webjournal/lib/webjournal_config.py:262 msgid "We could not find any informtion on the current issue" msgstr "" #: modules/webjournal/lib/webjournal_config.py:263 msgid "" "The configuration for the current issue seems to be empty. Try providing an " "issue number or check with support." msgstr "" #: modules/webjournal/lib/webjournal_config.py:290 msgid "Issue number badly formed" msgstr "" #: modules/webjournal/lib/webjournal_config.py:291 msgid "We could not read the issue number you provided" msgstr "" #: modules/webjournal/lib/webjournal_config.py:320 msgid "Archive date badly formed" msgstr "" #: modules/webjournal/lib/webjournal_config.py:321 msgid "We could not read the archive date you provided" msgstr "" #: modules/webjournal/lib/webjournal_config.py:355 msgid "No popup record" msgstr "" #: modules/webjournal/lib/webjournal_config.py:356 msgid "We could not deduce the popup article you requested" msgstr "" #: modules/webjournal/lib/webjournal_config.py:388 msgid "Update error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:389 #: modules/webjournal/lib/webjournal_config.py:419 msgid "There was an internal error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:418 msgid "Journal publishing DB error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:450 msgid "Journal issue error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:451 msgid "Issue not found" msgstr "" #: modules/webjournal/lib/webjournal_config.py:480 msgid "Journal ID error" msgstr "" #: modules/webjournal/lib/webjournal_config.py:481 msgid "We could not find the id for this journal in the Database" msgstr "" #: modules/webjournal/lib/webjournal_config.py:512 #: modules/webjournal/lib/webjournal_config.py:514 #, python-format msgid "Category \"%(category_name)s\" not found" msgstr "" #: modules/webjournal/lib/webjournal_config.py:516 msgid "Sorry, this category does not exist for this journal and issue." msgstr "" #: modules/webjournal/lib/webjournaladminlib.py:343 msgid "Please select an issue" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:77 msgid "WebJournal Admin" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:119 #, python-format msgid "Administrate %(journal_name)s" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:158 msgid "Feature a record" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:220 msgid "Email Alert System" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:273 msgid "Issue regenerated" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:324 msgid "Publishing Interface" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:350 msgid "Add Journal" msgstr "" #: modules/webjournal/web/admin/webjournaladmin.py:352 msgid "Edit Settings" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:43 msgid "You have " msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:43 msgid "tickets" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:62 msgid "show" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:63 msgid "close" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:91 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:107 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:126 #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:141 msgid "No information available" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:111 msgid "No seminars today" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:248 msgid "What's on today" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_seminars.py:249 msgid "Seminars of the week" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py:164 msgid "There are no new articles for the moment" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_whatsNew.py:287 msgid "What's new" msgstr "" #: modules/webjournal/lib/widgets/bfe_webjournal_widget_weather.py:225 msgid "Under the CERN sky" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_author.py:48 #, python-format msgid "About your article at %(url)s" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_imprint.py:122 msgid "Issue No." msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:221 msgid "Did you know?" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:253 #, python-format msgid "" "Hi,\n" "\n" "Have a look at the following article:\n" "<%(url)s>" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_article_body.py:260 msgid "Send this article" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_rss.py:141 msgid "Subscribe by RSS" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:87 msgid "News Articles" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:88 msgid "Official News" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:89 msgid "Training and Development" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_main_navigation.py:90 msgid "General Information" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:106 msgid "Archive" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:133 msgid "Select Year:" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:139 msgid "Select Issue:" msgstr "" #: modules/webjournal/lib/elements/bfe_webjournal_archive.py:143 msgid "Select Date:" msgstr "" #: modules/bibedit/lib/bibedit_webinterface.py:183 msgid "Comparing two record revisions" msgstr "" #: modules/bibedit/lib/bibedit_webinterface.py:207 msgid "Failed to create a ticket" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:297 msgid "Next Step" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:298 msgid "Search criteria" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:299 msgid "Output tags" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:300 msgid "Filter collection" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:301 msgid "1. Choose search criteria" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:302 msgid "" "Specify the criteria you'd like to use for filtering records that will be " "changed. Use \"Search\" to see which records would have been filtered using " "these criteria." msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:304 msgid "Preview results" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:505 msgid "2. Define changes" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:506 msgid "" "Specify fields and their subfields that should be changed in every record " "matching the search criteria." msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:507 msgid "Define new field action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:508 msgid "Define new subfield action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:510 msgid "Select action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:511 msgid "Add field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:512 msgid "Delete field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:513 msgid "Update field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:514 msgid "Add subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:515 msgid "Delete subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:516 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:260 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:402 msgid "Save" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:518 msgid "Replace substring" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:519 msgid "Replace full content" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:520 msgid "with" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:521 msgid "when field equals" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:522 msgid "on subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:523 msgid "new value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:524 msgid "condition" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:525 msgid "Apply only to specific field instances" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:526 msgid "value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:555 msgid "Back to Results" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:623 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:571 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:590 msgid "records found" msgstr "" #: modules/bibedit/lib/bibeditmulti_webinterface.py:114 msgid "Multi-Record Editor" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:132 msgid "Export Job Overview" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:117 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:189 msgid "New Export Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:118 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:443 msgid "Export Job History" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:174 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:195 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:323 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:534 msgid "Run" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:176 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:325 msgid "New" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:196 msgid "Last run" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:256 msgid "Frequency" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:257 msgid "Output Format" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:258 msgid "Start" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:259 msgid "Output Directory" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:262 msgid "Edit Queries" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:348 msgid "Output Fields" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:400 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:460 msgid "Output fields" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:438 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:605 msgid "Download" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:439 msgid "View as: " msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:533 msgid "Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:588 msgid "Total" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:653 msgid "All" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:654 msgid "None" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:672 msgid "Manualy" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:674 msgid "Daily" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:676 msgid "Weekly" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:678 msgid "Monthly" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:192 msgid "Edit Export Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:239 msgid "Query Results" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:246 msgid "Export Job Queries" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:320 msgid "New Query" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:325 msgid "Edit Query" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:356 msgid "Export Job Results" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:389 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:423 msgid "Export Job Result" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:465 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:500 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:530 msgid "You are not authorised to access this resource." msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:298 #: modules/bibcirculation/lib/bibcirculation_templates.py:7922 #: modules/bibcirculation/lib/bibcirculation_templates.py:9432 msgid "Loan information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:300 msgid "This book is sent to you ..." msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:320 #: modules/bibcirculation/lib/bibcirculation_templates.py:1624 #: modules/bibcirculation/lib/bibcirculation_templates.py:1925 #: modules/bibcirculation/lib/bibcirculation_templates.py:5228 #: modules/bibcirculation/lib/bibcirculation_templates.py:15577 #: modules/bibcirculation/lib/bibcirculation_templates.py:15739 +#: modules/websearch/lib/websearch_templates_epfl.py:982 msgid "Author" msgstr "" -#: modules/bibcirculation/lib/bibcirculation_utils.py:321 -msgid "Editor" -msgstr "" - #: modules/bibcirculation/lib/bibcirculation_utils.py:322 #: modules/bibcirculation/lib/bibcirculation_templates.py:1627 #: modules/bibcirculation/lib/bibcirculation_templates.py:2485 #: modules/bibcirculation/lib/bibcirculation_templates.py:2828 #: modules/bibcirculation/lib/bibcirculation_templates.py:5230 #: modules/bibcirculation/lib/bibcirculation_templates.py:5289 #: modules/bibcirculation/lib/bibcirculation_templates.py:6322 #: modules/bibcirculation/lib/bibcirculation_templates.py:6552 #: modules/bibcirculation/lib/bibcirculation_templates.py:7010 #: modules/bibcirculation/lib/bibcirculation_templates.py:7161 #: modules/bibcirculation/lib/bibcirculation_templates.py:8635 #: modules/bibcirculation/lib/bibcirculation_templates.py:8868 #: modules/bibcirculation/lib/bibcirculation_templates.py:9102 #: modules/bibcirculation/lib/bibcirculation_templates.py:9327 #: modules/bibcirculation/lib/bibcirculation_templates.py:9534 #: modules/bibcirculation/lib/bibcirculation_templates.py:9744 #: modules/bibcirculation/lib/bibcirculation_templates.py:10143 #: modules/bibcirculation/lib/bibcirculation_templates.py:10344 #: modules/bibcirculation/lib/bibcirculation_templates.py:10597 #: modules/bibcirculation/lib/bibcirculation_templates.py:10743 #: modules/bibcirculation/lib/bibcirculation_templates.py:10938 #: modules/bibcirculation/lib/bibcirculation_templates.py:11278 #: modules/bibcirculation/lib/bibcirculation_templates.py:11357 #: modules/bibcirculation/lib/bibcirculation_templates.py:12250 #: modules/bibcirculation/lib/bibcirculation_templates.py:12326 #: modules/bibcirculation/lib/bibcirculation_templates.py:13106 #: modules/bibcirculation/lib/bibcirculation_templates.py:13379 #: modules/bibcirculation/lib/bibcirculation_templates.py:14386 #: modules/bibcirculation/lib/bibcirculation_templates.py:14602 #: modules/bibcirculation/lib/bibcirculation_templates.py:14851 #: modules/bibcirculation/lib/bibcirculation_templates.py:15870 #: modules/bibcirculation/lib/bibcirculation_templates.py:16094 msgid "ISBN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:339 msgid "Id" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:341 #: modules/bibcirculation/lib/bibcirculation_templates.py:2187 #: modules/bibcirculation/lib/bibcirculation_templates.py:2273 #: modules/bibcirculation/lib/bibcirculation_templates.py:2479 #: modules/bibcirculation/lib/bibcirculation_templates.py:3517 #: modules/bibcirculation/lib/bibcirculation_templates.py:3648 #: modules/bibcirculation/lib/bibcirculation_templates.py:4834 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5405 #: modules/bibcirculation/lib/bibcirculation_templates.py:5665 #: modules/bibcirculation/lib/bibcirculation_templates.py:5727 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5907 #: modules/bibcirculation/lib/bibcirculation_templates.py:6139 #: modules/bibcirculation/lib/bibcirculation_templates.py:6202 #: modules/bibcirculation/lib/bibcirculation_templates.py:8088 #: modules/bibcirculation/lib/bibcirculation_templates.py:8316 #: modules/bibcirculation/lib/bibcirculation_templates.py:8912 #: modules/bibcirculation/lib/bibcirculation_templates.py:9370 #: modules/bibcirculation/lib/bibcirculation_templates.py:10442 #: modules/bibcirculation/lib/bibcirculation_templates.py:10608 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13645 #: modules/bibcirculation/lib/bibcirculation_templates.py:13888 #: modules/bibcirculation/lib/bibcirculation_templates.py:13955 #: modules/bibcirculation/lib/bibcirculation_templates.py:14195 #: modules/bibcirculation/lib/bibcirculation_templates.py:14897 #: modules/bibcirculation/lib/bibcirculation_templates.py:16104 msgid "Address" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:347 #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:528 #: modules/bibcirculation/lib/bibcirculation_templates.py:2279 #: modules/bibcirculation/lib/bibcirculation_templates.py:2862 #: modules/bibcirculation/lib/bibcirculation_templates.py:3200 #: modules/bibcirculation/lib/bibcirculation_templates.py:3394 #: modules/bibcirculation/lib/bibcirculation_templates.py:3947 #: modules/bibcirculation/lib/bibcirculation_templates.py:4126 #: modules/bibcirculation/lib/bibcirculation_templates.py:4306 #: modules/bibcirculation/lib/bibcirculation_templates.py:4557 #: modules/bibcirculation/lib/bibcirculation_templates.py:4684 #: modules/bibcirculation/lib/bibcirculation_templates.py:6574 #: modules/bibcirculation/lib/bibcirculation_templates.py:7926 #: modules/bibcirculation/lib/bibcirculation_templates.py:8375 #: modules/bibcirculation/lib/bibcirculation_templates.py:9434 #: modules/bibcirculation/lib/bibcirculation_templates.py:11834 #: modules/bibcirculation/lib/bibcirculation_templates.py:11966 #: modules/bibcirculation/lib/bibcirculation_templates.py:12708 #: modules/bibcirculation/lib/bibcirculation_templates.py:12811 #: modules/bibcirculation/lib/bibcirculation_templates.py:12917 #: modules/bibcirculation/lib/bibcirculation_templates.py:15102 msgid "Due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:384 msgid "List of pending hold requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:401 #: modules/bibcirculation/lib/bibcirculation_templates.py:1622 #: modules/bibcirculation/lib/bibcirculation_templates.py:2520 #: modules/bibcirculation/lib/bibcirculation_templates.py:2586 #: modules/bibcirculation/lib/bibcirculation_templates.py:2695 #: modules/bibcirculation/lib/bibcirculation_templates.py:3299 #: modules/bibcirculation/lib/bibcirculation_templates.py:3389 #: modules/bibcirculation/lib/bibcirculation_templates.py:4122 #: modules/bibcirculation/lib/bibcirculation_templates.py:4302 #: modules/bibcirculation/lib/bibcirculation_templates.py:4553 #: modules/bibcirculation/lib/bibcirculation_templates.py:4681 #: modules/bibcirculation/lib/bibcirculation_templates.py:11070 msgid "Borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:402 #: modules/bibcirculation/lib/bibcirculation_templates.py:526 #: modules/bibcirculation/lib/bibcirculation_templates.py:628 #: modules/bibcirculation/lib/bibcirculation_templates.py:714 #: modules/bibcirculation/lib/bibcirculation_templates.py:1073 #: modules/bibcirculation/lib/bibcirculation_templates.py:1259 #: modules/bibcirculation/lib/bibcirculation_templates.py:1424 #: modules/bibcirculation/lib/bibcirculation_templates.py:1623 #: modules/bibcirculation/lib/bibcirculation_templates.py:1669 #: modules/bibcirculation/lib/bibcirculation_templates.py:2277 #: modules/bibcirculation/lib/bibcirculation_templates.py:2534 #: modules/bibcirculation/lib/bibcirculation_templates.py:2587 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3195 #: modules/bibcirculation/lib/bibcirculation_templates.py:3832 #: modules/bibcirculation/lib/bibcirculation_templates.py:3944 #: modules/bibcirculation/lib/bibcirculation_templates.py:4123 #: modules/bibcirculation/lib/bibcirculation_templates.py:4303 #: modules/bibcirculation/lib/bibcirculation_templates.py:4554 #: modules/bibcirculation/lib/bibcirculation_templates.py:4858 #: modules/bibcirculation/lib/bibcirculation_templates.py:9900 #: modules/bibcirculation/lib/bibcirculation_templates.py:11071 #: modules/bibcirculation/lib/bibcirculation_templates.py:15097 #: modules/bibcirculation/lib/bibcirculation_templates.py:15356 msgid "Item" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:403 #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:1074 #: modules/bibcirculation/lib/bibcirculation_templates.py:1260 #: modules/bibcirculation/lib/bibcirculation_templates.py:2278 #: modules/bibcirculation/lib/bibcirculation_templates.py:2697 #: modules/bibcirculation/lib/bibcirculation_templates.py:2863 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3197 #: modules/bibcirculation/lib/bibcirculation_templates.py:3301 #: modules/bibcirculation/lib/bibcirculation_templates.py:3391 #: modules/bibcirculation/lib/bibcirculation_templates.py:3834 #: modules/bibcirculation/lib/bibcirculation_templates.py:6575 #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6771 #: modules/bibcirculation/lib/bibcirculation_templates.py:7029 #: modules/bibcirculation/lib/bibcirculation_templates.py:7183 #: modules/bibcirculation/lib/bibcirculation_templates.py:7573 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 #: modules/bibcirculation/lib/bibcirculation_templates.py:9628 #: modules/bibcirculation/lib/bibcirculation_templates.py:9812 #: modules/bibcirculation/lib/bibcirculation_templates.py:11791 #: modules/bibcirculation/lib/bibcirculation_templates.py:11964 #: modules/bibcirculation/lib/bibcirculation_templates.py:12080 #: modules/bibcirculation/lib/bibcirculation_templates.py:15357 msgid "Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:404 #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:1075 #: modules/bibcirculation/lib/bibcirculation_templates.py:1261 #: modules/bibcirculation/lib/bibcirculation_templates.py:2278 #: modules/bibcirculation/lib/bibcirculation_templates.py:2698 #: modules/bibcirculation/lib/bibcirculation_templates.py:2864 #: modules/bibcirculation/lib/bibcirculation_templates.py:3106 #: modules/bibcirculation/lib/bibcirculation_templates.py:3198 #: modules/bibcirculation/lib/bibcirculation_templates.py:3302 #: modules/bibcirculation/lib/bibcirculation_templates.py:3392 #: modules/bibcirculation/lib/bibcirculation_templates.py:3835 #: modules/bibcirculation/lib/bibcirculation_templates.py:5238 #: modules/bibcirculation/lib/bibcirculation_templates.py:6576 #: modules/bibcirculation/lib/bibcirculation_templates.py:6703 #: modules/bibcirculation/lib/bibcirculation_templates.py:6772 #: modules/bibcirculation/lib/bibcirculation_templates.py:7030 #: modules/bibcirculation/lib/bibcirculation_templates.py:7205 #: modules/bibcirculation/lib/bibcirculation_templates.py:7574 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 #: modules/bibcirculation/lib/bibcirculation_templates.py:15358 msgid "Location" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:405 #: modules/bibcirculation/lib/bibcirculation_templates.py:780 #: modules/bibcirculation/lib/bibcirculation_templates.py:929 #: modules/bibcirculation/lib/bibcirculation_templates.py:1076 #: modules/bibcirculation/lib/bibcirculation_templates.py:1262 #: modules/bibcirculation/lib/bibcirculation_templates.py:1426 #: modules/bibcirculation/lib/bibcirculation_templates.py:1671 #: modules/bibcirculation/lib/bibcirculation_templates.py:2589 #: modules/bibcirculation/lib/bibcirculation_templates.py:2699 #: modules/bibcirculation/lib/bibcirculation_templates.py:3106 #: modules/bibcirculation/lib/bibcirculation_templates.py:3303 #: modules/bibcirculation/lib/bibcirculation_templates.py:3836 #: modules/bibcirculation/lib/bibcirculation_templates.py:4435 #: modules/bibcirculation/lib/bibcirculation_templates.py:15359 msgid "From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:406 #: modules/bibcirculation/lib/bibcirculation_templates.py:802 #: modules/bibcirculation/lib/bibcirculation_templates.py:929 #: modules/bibcirculation/lib/bibcirculation_templates.py:1077 #: modules/bibcirculation/lib/bibcirculation_templates.py:1263 #: modules/bibcirculation/lib/bibcirculation_templates.py:1427 #: modules/bibcirculation/lib/bibcirculation_templates.py:1672 #: modules/bibcirculation/lib/bibcirculation_templates.py:2590 #: modules/bibcirculation/lib/bibcirculation_templates.py:2700 #: modules/bibcirculation/lib/bibcirculation_templates.py:3107 #: modules/bibcirculation/lib/bibcirculation_templates.py:3304 #: modules/bibcirculation/lib/bibcirculation_templates.py:3837 #: modules/bibcirculation/lib/bibcirculation_templates.py:4437 #: modules/bibcirculation/lib/bibcirculation_templates.py:15360 #: modules/bibknowledge/lib/bibknowledge_templates.py:334 msgid "To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:407 #: modules/bibcirculation/lib/bibcirculation_templates.py:629 #: modules/bibcirculation/lib/bibcirculation_templates.py:1078 #: modules/bibcirculation/lib/bibcirculation_templates.py:1264 #: modules/bibcirculation/lib/bibcirculation_templates.py:1428 #: modules/bibcirculation/lib/bibcirculation_templates.py:1673 #: modules/bibcirculation/lib/bibcirculation_templates.py:2591 #: modules/bibcirculation/lib/bibcirculation_templates.py:2701 #: modules/bibcirculation/lib/bibcirculation_templates.py:3107 #: modules/bibcirculation/lib/bibcirculation_templates.py:3305 #: modules/bibcirculation/lib/bibcirculation_templates.py:3838 #: modules/bibcirculation/lib/bibcirculation_templates.py:11690 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11965 #: modules/bibcirculation/lib/bibcirculation_templates.py:12081 #: modules/bibcirculation/lib/bibcirculation_templates.py:12508 #: modules/bibcirculation/lib/bibcirculation_templates.py:12602 #: modules/bibcirculation/lib/bibcirculation_templates.py:12705 #: modules/bibcirculation/lib/bibcirculation_templates.py:12808 #: modules/bibcirculation/lib/bibcirculation_templates.py:12914 #: modules/bibcirculation/lib/bibcirculation_templates.py:15099 #: modules/bibcirculation/lib/bibcirculation_templates.py:15361 msgid "Request date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:108 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:152 msgid "You are not authorized to use loans." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:157 #: modules/bibcirculation/lib/bibcirculation_templates.py:489 msgid "Loans - historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:208 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:264 msgid "You are not authorized to use ill." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:212 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:282 #: modules/bibcirculation/lib/bibcirculation_templates.py:10732 msgid "Interlibrary loan request for books" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:290 #: modules/bibcirculation/lib/bibcirculation_templates.py:1511 #: modules/bibcirculation/lib/bibcirculation_templates.py:2277 #: modules/bibcirculation/lib/bibcirculation_templates.py:2860 #: modules/bibcirculation/lib/bibcirculation_templates.py:3105 #: modules/bibcirculation/lib/bibcirculation_templates.py:3196 #: modules/bibcirculation/lib/bibcirculation_templates.py:3300 #: modules/bibcirculation/lib/bibcirculation_templates.py:3390 #: modules/bibcirculation/lib/bibcirculation_templates.py:3945 #: modules/bibcirculation/lib/bibcirculation_templates.py:4124 #: modules/bibcirculation/lib/bibcirculation_templates.py:4304 #: modules/bibcirculation/lib/bibcirculation_templates.py:4555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4682 #: modules/bibcirculation/lib/bibcirculation_templates.py:4861 #: modules/bibcirculation/lib/bibcirculation_templates.py:5240 #: modules/bibcirculation/lib/bibcirculation_templates.py:6572 #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6770 #: modules/bibcirculation/lib/bibcirculation_templates.py:7027 #: modules/bibcirculation/lib/bibcirculation_templates.py:7182 #: modules/bibcirculation/lib/bibcirculation_templates.py:7572 #: modules/bibcirculation/lib/bibcirculation_templates.py:7924 #: modules/bibcirculation/lib/bibcirculation_templates.py:8102 #: modules/bibcirculation/lib/bibcirculation_templates.py:8373 #: modules/bibcirculation/lib/bibcirculation_templates.py:8636 #: modules/bibcirculation/lib/bibcirculation_templates.py:8869 #: modules/bibcirculation/lib/bibcirculation_templates.py:9103 #: modules/bibcirculation/lib/bibcirculation_templates.py:9328 #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9806 #: modules/bibcirculation/lib/bibcirculation_templates.py:11727 #: modules/bibcirculation/lib/bibcirculation_templates.py:12001 #: modules/bibcirculation/lib/bibcirculation_templates.py:12116 #: modules/bibcirculation/lib/bibcirculation_templates.py:12511 #: modules/bibcirculation/lib/bibcirculation_templates.py:12605 #: modules/bibcirculation/lib/bibcirculation_templates.py:12710 #: modules/bibcirculation/lib/bibcirculation_templates.py:12814 #: modules/bibcirculation/lib/bibcirculation_templates.py:12920 msgid "Barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:291 #: modules/bibcirculation/lib/bibcirculation_templates.py:2865 #: modules/bibcirculation/lib/bibcirculation_templates.py:5239 #: modules/bibcirculation/lib/bibcirculation_templates.py:6577 #: modules/bibcirculation/lib/bibcirculation_templates.py:6704 #: modules/bibcirculation/lib/bibcirculation_templates.py:6775 #: modules/bibcirculation/lib/bibcirculation_templates.py:7031 #: modules/bibcirculation/lib/bibcirculation_templates.py:7429 #: modules/bibcirculation/lib/bibcirculation_templates.py:7577 #: modules/bibcirculation/lib/bibcirculation_templates.py:7928 #: modules/bibcirculation/lib/bibcirculation_templates.py:8374 msgid "Loan period" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:292 #: modules/bibcirculation/lib/bibcirculation_templates.py:2592 #: modules/bibcirculation/lib/bibcirculation_templates.py:2702 #: modules/bibcirculation/lib/bibcirculation_templates.py:9907 #: modules/bibcirculation/lib/bibcirculation_templates.py:11077 msgid "Option(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:303 #: modules/bibcirculation/lib/bibcirculation_templates.py:8396 msgid "Request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:333 msgid "See this book on BibCirculation" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:408 msgid "0 borrower(s) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:426 msgid "Borrower(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:462 #: modules/bibcirculation/lib/bibcirculation_templates.py:747 #: modules/bibcirculation/lib/bibcirculation_templates.py:930 #: modules/bibcirculation/lib/bibcirculation_templates.py:1051 #: modules/bibcirculation/lib/bibcirculation_templates.py:1178 #: modules/bibcirculation/lib/bibcirculation_templates.py:1237 #: modules/bibcirculation/lib/bibcirculation_templates.py:1361 #: modules/bibcirculation/lib/bibcirculation_templates.py:1476 #: modules/bibcirculation/lib/bibcirculation_templates.py:1819 #: modules/bibcirculation/lib/bibcirculation_templates.py:1877 #: modules/bibcirculation/lib/bibcirculation_templates.py:1965 #: modules/bibcirculation/lib/bibcirculation_templates.py:2189 #: modules/bibcirculation/lib/bibcirculation_templates.py:2335 #: modules/bibcirculation/lib/bibcirculation_templates.py:2554 #: modules/bibcirculation/lib/bibcirculation_templates.py:2642 #: modules/bibcirculation/lib/bibcirculation_templates.py:2747 #: modules/bibcirculation/lib/bibcirculation_templates.py:3056 #: modules/bibcirculation/lib/bibcirculation_templates.py:3144 #: modules/bibcirculation/lib/bibcirculation_templates.py:3344 #: modules/bibcirculation/lib/bibcirculation_templates.py:3437 #: modules/bibcirculation/lib/bibcirculation_templates.py:3538 #: modules/bibcirculation/lib/bibcirculation_templates.py:3779 #: modules/bibcirculation/lib/bibcirculation_templates.py:3886 #: modules/bibcirculation/lib/bibcirculation_templates.py:4042 #: modules/bibcirculation/lib/bibcirculation_templates.py:4100 #: modules/bibcirculation/lib/bibcirculation_templates.py:4222 #: modules/bibcirculation/lib/bibcirculation_templates.py:4280 #: modules/bibcirculation/lib/bibcirculation_templates.py:4400 #: modules/bibcirculation/lib/bibcirculation_templates.py:4508 #: modules/bibcirculation/lib/bibcirculation_templates.py:4766 #: modules/bibcirculation/lib/bibcirculation_templates.py:4892 #: modules/bibcirculation/lib/bibcirculation_templates.py:4989 #: modules/bibcirculation/lib/bibcirculation_templates.py:5086 #: modules/bibcirculation/lib/bibcirculation_templates.py:5360 #: modules/bibcirculation/lib/bibcirculation_templates.py:5424 #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5591 #: modules/bibcirculation/lib/bibcirculation_templates.py:5667 #: modules/bibcirculation/lib/bibcirculation_templates.py:5729 #: modules/bibcirculation/lib/bibcirculation_templates.py:5844 #: modules/bibcirculation/lib/bibcirculation_templates.py:5910 #: modules/bibcirculation/lib/bibcirculation_templates.py:6000 #: modules/bibcirculation/lib/bibcirculation_templates.py:6065 #: modules/bibcirculation/lib/bibcirculation_templates.py:6140 #: modules/bibcirculation/lib/bibcirculation_templates.py:6203 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6777 #: modules/bibcirculation/lib/bibcirculation_templates.py:7078 #: modules/bibcirculation/lib/bibcirculation_templates.py:7502 #: modules/bibcirculation/lib/bibcirculation_templates.py:7579 #: modules/bibcirculation/lib/bibcirculation_templates.py:7672 #: modules/bibcirculation/lib/bibcirculation_templates.py:7748 #: modules/bibcirculation/lib/bibcirculation_templates.py:7852 #: modules/bibcirculation/lib/bibcirculation_templates.py:7975 #: modules/bibcirculation/lib/bibcirculation_templates.py:8131 #: modules/bibcirculation/lib/bibcirculation_templates.py:8240 #: modules/bibcirculation/lib/bibcirculation_templates.py:8976 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9814 #: modules/bibcirculation/lib/bibcirculation_templates.py:10057 #: modules/bibcirculation/lib/bibcirculation_templates.py:10472 #: modules/bibcirculation/lib/bibcirculation_templates.py:10622 #: modules/bibcirculation/lib/bibcirculation_templates.py:10822 #: modules/bibcirculation/lib/bibcirculation_templates.py:11029 #: modules/bibcirculation/lib/bibcirculation_templates.py:12156 #: modules/bibcirculation/lib/bibcirculation_templates.py:12976 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13465 #: modules/bibcirculation/lib/bibcirculation_templates.py:13578 #: modules/bibcirculation/lib/bibcirculation_templates.py:13647 #: modules/bibcirculation/lib/bibcirculation_templates.py:13741 #: modules/bibcirculation/lib/bibcirculation_templates.py:13810 #: modules/bibcirculation/lib/bibcirculation_templates.py:13889 #: modules/bibcirculation/lib/bibcirculation_templates.py:13956 #: modules/bibcirculation/lib/bibcirculation_templates.py:14049 #: modules/bibcirculation/lib/bibcirculation_templates.py:14117 #: modules/bibcirculation/lib/bibcirculation_templates.py:14216 #: modules/bibcirculation/lib/bibcirculation_templates.py:14299 #: modules/bibcirculation/lib/bibcirculation_templates.py:14475 #: modules/bibcirculation/lib/bibcirculation_templates.py:15047 #: modules/bibcirculation/lib/bibcirculation_templates.py:15185 #: modules/bibcirculation/lib/bibcirculation_templates.py:15281 #: modules/bibcirculation/lib/bibcirculation_templates.py:15528 #: modules/bibcirculation/lib/bibcirculation_templates.py:15618 #: modules/bibcirculation/lib/bibcirculation_templates.py:15686 #: modules/bibcirculation/lib/bibcirculation_templates.py:15778 #: modules/bibcirculation/lib/bibcirculation_templates.py:15961 #: modules/bibcirculation/lib/bibcirculation_templates.py:16118 #: modules/bibcirculation/lib/bibcirculation_templates.py:16290 #: modules/bibcirculation/lib/bibcirculation_templates.py:16648 msgid "Back" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:484 #: modules/bibcirculation/lib/bibcirculation_templates.py:4026 msgid "Renew all loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:503 msgid "You don't have any book on loan." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:527 #: modules/bibcirculation/lib/bibcirculation_templates.py:3199 #: modules/bibcirculation/lib/bibcirculation_templates.py:3393 #: modules/bibcirculation/lib/bibcirculation_templates.py:4125 #: modules/bibcirculation/lib/bibcirculation_templates.py:4305 #: modules/bibcirculation/lib/bibcirculation_templates.py:4556 #: modules/bibcirculation/lib/bibcirculation_templates.py:4683 msgid "Loaned on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:529 #: modules/bibcirculation/lib/bibcirculation_templates.py:631 #: modules/bibcirculation/lib/bibcirculation_templates.py:2869 msgid "Action(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:541 msgid "Renew" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:597 #: modules/bibcirculation/lib/bibcirculation_templates.py:627 msgid "Your Requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:598 msgid "You don't have any request (waiting or pending)." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:601 #: modules/bibcirculation/lib/bibcirculation_templates.py:677 #: modules/bibcirculation/lib/bibcirculation_templates.py:964 #: modules/bibcirculation/lib/bibcirculation_templates.py:995 #: modules/bibcirculation/lib/bibcirculation_templates.py:5477 #: modules/bibcirculation/lib/bibcirculation_templates.py:5764 #: modules/bibcirculation/lib/bibcirculation_templates.py:5947 #: modules/bibcirculation/lib/bibcirculation_templates.py:6242 #: modules/bibcirculation/lib/bibcirculation_templates.py:6820 #: modules/bibcirculation/lib/bibcirculation_templates.py:7616 #: modules/bibcirculation/lib/bibcirculation_templates.py:8539 #: modules/bibcirculation/lib/bibcirculation_templates.py:9008 #: modules/bibcirculation/lib/bibcirculation_templates.py:9854 #: modules/bibcirculation/lib/bibcirculation_templates.py:10667 #: modules/bibcirculation/lib/bibcirculation_templates.py:10857 #: modules/bibcirculation/lib/bibcirculation_templates.py:13015 #: modules/bibcirculation/lib/bibcirculation_templates.py:13503 #: modules/bibcirculation/lib/bibcirculation_templates.py:13687 #: modules/bibcirculation/lib/bibcirculation_templates.py:13995 #: modules/bibcirculation/lib/bibcirculation_templates.py:15317 msgid "Back to home" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:715 msgid "Loaned" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:716 msgid "Returned" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:717 msgid "Renewalls" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:779 #: modules/bibcirculation/lib/bibcirculation_templates.py:928 msgid "Enter your period of interest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:930 #: modules/bibcirculation/lib/bibcirculation_templates.py:2555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4893 #: modules/bibcirculation/lib/bibcirculation_templates.py:4990 #: modules/bibcirculation/lib/bibcirculation_templates.py:5088 #: modules/bibcirculation/lib/bibcirculation_templates.py:5729 #: modules/bibcirculation/lib/bibcirculation_templates.py:5910 #: modules/bibcirculation/lib/bibcirculation_templates.py:7579 #: modules/bibcirculation/lib/bibcirculation_templates.py:7853 #: modules/bibcirculation/lib/bibcirculation_templates.py:8132 #: modules/bibcirculation/lib/bibcirculation_templates.py:8501 #: modules/bibcirculation/lib/bibcirculation_templates.py:10058 #: modules/bibcirculation/lib/bibcirculation_templates.py:13647 #: modules/bibcirculation/lib/bibcirculation_templates.py:14264 #: modules/bibcirculation/lib/bibcirculation_templates.py:15282 msgid "Confirm" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:959 #: modules/bibcirculation/lib/bibcirculation_templates.py:10852 msgid "You can see your loans " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:961 #: modules/bibcirculation/lib/bibcirculation_templates.py:10854 msgid "here" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:962 #: modules/bibcirculation/lib/bibcirculation_templates.py:10855 msgid "." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:993 #: modules/bibcirculation/lib/bibcirculation_templates.py:2475 msgid "A new loan has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1050 #: modules/bibcirculation/lib/bibcirculation_templates.py:1236 msgid "No more requests are pending." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1079 #: modules/bibcirculation/lib/bibcirculation_templates.py:15362 msgid "Actions" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1141 #: modules/bibcirculation/lib/bibcirculation_templates.py:1324 #: modules/bibcirculation/lib/bibcirculation_templates.py:15430 msgid "Associate barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1265 msgid "Options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1398 msgid "No hold requests waiting." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1425 #: modules/bibcirculation/lib/bibcirculation_templates.py:1670 #: modules/bibcirculation/lib/bibcirculation_templates.py:3833 msgid "Request status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1429 #: modules/bibcirculation/lib/bibcirculation_templates.py:1674 msgid "Request options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1457 msgid "Select hold request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1528 #: modules/bibcirculation/lib/bibcirculation_templates.py:4509 msgid "Reset" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1565 #, python-format msgid "" "The item %(x_title)s with barcode %(x_barcode)s has been returned with " "success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1621 msgid "Loan informations" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1626 #: modules/bibcirculation/lib/bibcirculation_templates.py:1925 #: modules/bibcirculation/lib/bibcirculation_templates.py:2484 #: modules/bibcirculation/lib/bibcirculation_templates.py:2827 #: modules/bibcirculation/lib/bibcirculation_templates.py:5231 #: modules/bibcirculation/lib/bibcirculation_templates.py:6319 #: modules/bibcirculation/lib/bibcirculation_templates.py:6550 #: modules/bibcirculation/lib/bibcirculation_templates.py:7008 #: modules/bibcirculation/lib/bibcirculation_templates.py:7159 #: modules/bibcirculation/lib/bibcirculation_templates.py:8634 #: modules/bibcirculation/lib/bibcirculation_templates.py:8867 #: modules/bibcirculation/lib/bibcirculation_templates.py:9101 #: modules/bibcirculation/lib/bibcirculation_templates.py:9326 #: modules/bibcirculation/lib/bibcirculation_templates.py:9532 #: modules/bibcirculation/lib/bibcirculation_templates.py:9743 #: modules/bibcirculation/lib/bibcirculation_templates.py:10142 #: modules/bibcirculation/lib/bibcirculation_templates.py:10342 #: modules/bibcirculation/lib/bibcirculation_templates.py:10596 #: modules/bibcirculation/lib/bibcirculation_templates.py:10741 #: modules/bibcirculation/lib/bibcirculation_templates.py:10935 #: modules/bibcirculation/lib/bibcirculation_templates.py:11276 #: modules/bibcirculation/lib/bibcirculation_templates.py:11351 #: modules/bibcirculation/lib/bibcirculation_templates.py:11433 #: modules/bibcirculation/lib/bibcirculation_templates.py:12248 #: modules/bibcirculation/lib/bibcirculation_templates.py:12320 #: modules/bibcirculation/lib/bibcirculation_templates.py:13104 #: modules/bibcirculation/lib/bibcirculation_templates.py:13378 #: modules/bibcirculation/lib/bibcirculation_templates.py:14383 #: modules/bibcirculation/lib/bibcirculation_templates.py:14600 #: modules/bibcirculation/lib/bibcirculation_templates.py:14849 #: modules/bibcirculation/lib/bibcirculation_templates.py:15577 #: modules/bibcirculation/lib/bibcirculation_templates.py:15739 #: modules/bibcirculation/lib/bibcirculation_templates.py:15867 #: modules/bibcirculation/lib/bibcirculation_templates.py:16092 msgid "Publisher" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1628 #: modules/bibcirculation/lib/bibcirculation_templates.py:11967 #: modules/bibcirculation/lib/bibcirculation_templates.py:12812 #: modules/bibcirculation/lib/bibcirculation_templates.py:12918 msgid "Return date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1666 #, python-format msgid "There %s request(s) on the book who has been returned." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1667 msgid "Waiting requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1711 msgid "Select request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1720 #, python-format msgid "There are no requests waiting on the item %s." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1754 msgid "Welcome to Invenio BibCirculation Admin" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1818 #: modules/bibcirculation/lib/bibcirculation_templates.py:5527 msgid "Search borrower by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1899 msgid "0 item(s) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1926 #: modules/bibcirculation/lib/bibcirculation_templates.py:15578 #: modules/bibcirculation/lib/bibcirculation_templates.py:15740 msgid "No. Copies" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2093 #: modules/bibcirculation/lib/bibcirculation_templates.py:8758 #: modules/bibcirculation/lib/bibcirculation_templates.py:9225 #: modules/bibcirculation/lib/bibcirculation_templates.py:10263 #: modules/bibcirculation/lib/bibcirculation_templates.py:14727 #: modules/bibcirculation/lib/bibcirculation_templates.py:16534 msgid "Select user" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2182 #: modules/bibcirculation/lib/bibcirculation_templates.py:2268 msgid "User information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2186 #: modules/bibcirculation/lib/bibcirculation_templates.py:2272 #: modules/bibcirculation/lib/bibcirculation_templates.py:2478 #: modules/bibcirculation/lib/bibcirculation_templates.py:3519 #: modules/bibcirculation/lib/bibcirculation_templates.py:3647 #: modules/bibcirculation/lib/bibcirculation_templates.py:4833 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5404 #: modules/bibcirculation/lib/bibcirculation_templates.py:5664 #: modules/bibcirculation/lib/bibcirculation_templates.py:5726 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5906 #: modules/bibcirculation/lib/bibcirculation_templates.py:6138 #: modules/bibcirculation/lib/bibcirculation_templates.py:6201 #: modules/bibcirculation/lib/bibcirculation_templates.py:8087 #: modules/bibcirculation/lib/bibcirculation_templates.py:8315 #: modules/bibcirculation/lib/bibcirculation_templates.py:8911 #: modules/bibcirculation/lib/bibcirculation_templates.py:9369 #: modules/bibcirculation/lib/bibcirculation_templates.py:10441 #: modules/bibcirculation/lib/bibcirculation_templates.py:10607 #: modules/bibcirculation/lib/bibcirculation_templates.py:13577 #: modules/bibcirculation/lib/bibcirculation_templates.py:13644 #: modules/bibcirculation/lib/bibcirculation_templates.py:13887 #: modules/bibcirculation/lib/bibcirculation_templates.py:13954 #: modules/bibcirculation/lib/bibcirculation_templates.py:14197 #: modules/bibcirculation/lib/bibcirculation_templates.py:14896 #: modules/bibcirculation/lib/bibcirculation_templates.py:16103 msgid "Phone" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2188 #: modules/bibcirculation/lib/bibcirculation_templates.py:2274 #: modules/bibcirculation/lib/bibcirculation_templates.py:2480 #: modules/bibcirculation/lib/bibcirculation_templates.py:3649 #: modules/bibcirculation/lib/bibcirculation_templates.py:4835 #: modules/bibcirculation/lib/bibcirculation_templates.py:5359 #: modules/bibcirculation/lib/bibcirculation_templates.py:5406 #: modules/bibcirculation/lib/bibcirculation_templates.py:5666 #: modules/bibcirculation/lib/bibcirculation_templates.py:5728 #: modules/bibcirculation/lib/bibcirculation_templates.py:8089 #: modules/bibcirculation/lib/bibcirculation_templates.py:8317 #: modules/bibcirculation/lib/bibcirculation_templates.py:8913 #: modules/bibcirculation/lib/bibcirculation_templates.py:9371 #: modules/bibcirculation/lib/bibcirculation_templates.py:10443 #: modules/bibcirculation/lib/bibcirculation_templates.py:10609 #: modules/bibcirculation/lib/bibcirculation_templates.py:11490 #: modules/bibcirculation/lib/bibcirculation_templates.py:12382 #: modules/bibcirculation/lib/bibcirculation_templates.py:14898 #: modules/bibcirculation/lib/bibcirculation_templates.py:16105 msgid "Mailbox" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2189 msgid "Barcode(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2190 #: modules/bibcirculation/lib/bibcirculation_templates.py:2335 #: modules/bibcirculation/lib/bibcirculation_templates.py:5360 #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5667 #: modules/bibcirculation/lib/bibcirculation_templates.py:5844 #: modules/bibcirculation/lib/bibcirculation_templates.py:6140 #: modules/bibcirculation/lib/bibcirculation_templates.py:6203 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6777 #: modules/bibcirculation/lib/bibcirculation_templates.py:7502 #: modules/bibcirculation/lib/bibcirculation_templates.py:8976 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9659 #: modules/bibcirculation/lib/bibcirculation_templates.py:9814 #: modules/bibcirculation/lib/bibcirculation_templates.py:10472 #: modules/bibcirculation/lib/bibcirculation_templates.py:10622 #: modules/bibcirculation/lib/bibcirculation_templates.py:10822 #: modules/bibcirculation/lib/bibcirculation_templates.py:11029 #: modules/bibcirculation/lib/bibcirculation_templates.py:12156 #: modules/bibcirculation/lib/bibcirculation_templates.py:12976 #: modules/bibcirculation/lib/bibcirculation_templates.py:13283 #: modules/bibcirculation/lib/bibcirculation_templates.py:13465 #: modules/bibcirculation/lib/bibcirculation_templates.py:13578 #: modules/bibcirculation/lib/bibcirculation_templates.py:13889 #: modules/bibcirculation/lib/bibcirculation_templates.py:13956 #: modules/bibcirculation/lib/bibcirculation_templates.py:14475 #: modules/bibcirculation/lib/bibcirculation_templates.py:15047 #: modules/bibcirculation/lib/bibcirculation_templates.py:15961 #: modules/bibcirculation/lib/bibcirculation_templates.py:16118 #: modules/bibcirculation/lib/bibcirculation_templates.py:16290 msgid "Continue" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2275 msgid "List of borrowed books" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2279 msgid "Write note(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2397 msgid "Notification has been sent!" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2482 #: modules/bibcirculation/lib/bibcirculation_templates.py:2825 #: modules/bibcirculation/lib/bibcirculation_templates.py:6317 #: modules/bibcirculation/lib/bibcirculation_templates.py:6546 #: modules/bibcirculation/lib/bibcirculation_templates.py:7004 #: modules/bibcirculation/lib/bibcirculation_templates.py:7155 #: modules/bibcirculation/lib/bibcirculation_templates.py:8632 #: modules/bibcirculation/lib/bibcirculation_templates.py:8865 #: modules/bibcirculation/lib/bibcirculation_templates.py:9099 #: modules/bibcirculation/lib/bibcirculation_templates.py:9324 #: modules/bibcirculation/lib/bibcirculation_templates.py:9528 #: modules/bibcirculation/lib/bibcirculation_templates.py:9741 #: modules/bibcirculation/lib/bibcirculation_templates.py:10140 #: modules/bibcirculation/lib/bibcirculation_templates.py:10338 #: modules/bibcirculation/lib/bibcirculation_templates.py:10594 #: modules/bibcirculation/lib/bibcirculation_templates.py:10737 #: modules/bibcirculation/lib/bibcirculation_templates.py:10933 #: modules/bibcirculation/lib/bibcirculation_templates.py:11272 #: modules/bibcirculation/lib/bibcirculation_templates.py:11347 #: modules/bibcirculation/lib/bibcirculation_templates.py:11425 #: modules/bibcirculation/lib/bibcirculation_templates.py:12244 #: modules/bibcirculation/lib/bibcirculation_templates.py:12316 #: modules/bibcirculation/lib/bibcirculation_templates.py:13100 #: modules/bibcirculation/lib/bibcirculation_templates.py:13376 #: modules/bibcirculation/lib/bibcirculation_templates.py:14381 #: modules/bibcirculation/lib/bibcirculation_templates.py:14597 #: modules/bibcirculation/lib/bibcirculation_templates.py:14846 #: modules/bibcirculation/lib/bibcirculation_templates.py:15865 #: modules/bibcirculation/lib/bibcirculation_templates.py:16089 #: modules/bibcirculation/lib/bibcirculation_templates.py:16219 #: modules/bibcirculation/lib/bibcirculation_templates.py:16406 msgid "Author(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2487 msgid "Print loan information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2627 #: modules/bibcirculation/lib/bibcirculation_templates.py:2730 msgid "Cancel hold request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2665 #: modules/bibcirculation/lib/bibcirculation_templates.py:3079 #: modules/bibcirculation/lib/bibcirculation_templates.py:3271 #: modules/bibcirculation/lib/bibcirculation_templates.py:3801 msgid "There are no requests." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2823 #: modules/bibcirculation/lib/bibcirculation_templates.py:6315 #: modules/bibcirculation/lib/bibcirculation_templates.py:6543 #: modules/bibcirculation/lib/bibcirculation_templates.py:7001 #: modules/bibcirculation/lib/bibcirculation_templates.py:7152 #: modules/bibcirculation/lib/bibcirculation_templates.py:8630 #: modules/bibcirculation/lib/bibcirculation_templates.py:8863 #: modules/bibcirculation/lib/bibcirculation_templates.py:9097 #: modules/bibcirculation/lib/bibcirculation_templates.py:9322 #: modules/bibcirculation/lib/bibcirculation_templates.py:9524 #: modules/bibcirculation/lib/bibcirculation_templates.py:9739 #: modules/bibcirculation/lib/bibcirculation_templates.py:10138 #: modules/bibcirculation/lib/bibcirculation_templates.py:10334 #: modules/bibcirculation/lib/bibcirculation_templates.py:10592 #: modules/bibcirculation/lib/bibcirculation_templates.py:10733 #: modules/bibcirculation/lib/bibcirculation_templates.py:10931 #: modules/bibcirculation/lib/bibcirculation_templates.py:11269 #: modules/bibcirculation/lib/bibcirculation_templates.py:11344 #: modules/bibcirculation/lib/bibcirculation_templates.py:11420 #: modules/bibcirculation/lib/bibcirculation_templates.py:12241 #: modules/bibcirculation/lib/bibcirculation_templates.py:12313 #: modules/bibcirculation/lib/bibcirculation_templates.py:13096 #: modules/bibcirculation/lib/bibcirculation_templates.py:13374 #: modules/bibcirculation/lib/bibcirculation_templates.py:14379 #: modules/bibcirculation/lib/bibcirculation_templates.py:14595 #: modules/bibcirculation/lib/bibcirculation_templates.py:14844 #: modules/bibcirculation/lib/bibcirculation_templates.py:15863 #: modules/bibcirculation/lib/bibcirculation_templates.py:16087 #: modules/bibcirculation/lib/bibcirculation_templates.py:16403 msgid "Item details" msgstr "" -#: modules/bibcirculation/lib/bibcirculation_templates.py:2830 -msgid "Edit this record" -msgstr "" - #: modules/bibcirculation/lib/bibcirculation_templates.py:2832 msgid "Additional details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2866 #: modules/bibcirculation/lib/bibcirculation_templates.py:6578 #: modules/bibcirculation/lib/bibcirculation_templates.py:7032 msgid "No of loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3028 msgid "Add new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3029 msgid "Order new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3030 msgid "ILL request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3031 msgid "Hold requests and loans overview on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3032 #: modules/bibcirculation/lib/bibcirculation_templates.py:3035 msgid "Hold requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3032 #: modules/bibcirculation/lib/bibcirculation_templates.py:3033 #: modules/bibcirculation/lib/bibcirculation_templates.py:3035 #: modules/bibcirculation/lib/bibcirculation_templates.py:3036 #: modules/bibcirculation/lib/bibcirculation_templates.py:3772 #: modules/bibcirculation/lib/bibcirculation_templates.py:3773 #: modules/bibcirculation/lib/bibcirculation_templates.py:3774 #: modules/bibcirculation/lib/bibcirculation_templates.py:3776 #: modules/bibcirculation/lib/bibcirculation_templates.py:3777 #: modules/bibcirculation/lib/bibcirculation_templates.py:3778 msgid "More details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3033 #: modules/bibcirculation/lib/bibcirculation_templates.py:3036 #: modules/bibcirculation/lib/bibcirculation_templates.py:3773 #: modules/bibcirculation/lib/bibcirculation_templates.py:3777 msgid "Loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3034 #: modules/bibcirculation/lib/bibcirculation_templates.py:3775 msgid "Historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3167 #: modules/bibcirculation/lib/bibcirculation_templates.py:3907 #: modules/bibcirculation/lib/bibcirculation_templates.py:4645 msgid "There are no loans." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3201 #: modules/bibcirculation/lib/bibcirculation_templates.py:3395 msgid "Returned on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3202 #: modules/bibcirculation/lib/bibcirculation_templates.py:3396 #: modules/bibcirculation/lib/bibcirculation_templates.py:3948 #: modules/bibcirculation/lib/bibcirculation_templates.py:4127 #: modules/bibcirculation/lib/bibcirculation_templates.py:4307 #: modules/bibcirculation/lib/bibcirculation_templates.py:4558 #: modules/bibcirculation/lib/bibcirculation_templates.py:4685 msgid "Renewals" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3203 #: modules/bibcirculation/lib/bibcirculation_templates.py:3397 #: modules/bibcirculation/lib/bibcirculation_templates.py:3949 #: modules/bibcirculation/lib/bibcirculation_templates.py:4128 #: modules/bibcirculation/lib/bibcirculation_templates.py:4308 #: modules/bibcirculation/lib/bibcirculation_templates.py:4559 msgid "Overdue letters" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3462 #: modules/bibcirculation/lib/bibcirculation_templates.py:3566 #: modules/bibcirculation/lib/bibcirculation_templates.py:3966 #: modules/bibcirculation/lib/bibcirculation_templates.py:4704 #: modules/bibcirculation/lib/bibcirculation_templates.py:9922 #: modules/bibcirculation/lib/bibcirculation_templates.py:14145 #: modules/bibcirculation/lib/bibcirculation_templates.py:15138 msgid "No notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3467 msgid "Notes about this library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3515 msgid "Library details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3521 msgid "No of items" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3571 msgid "Notes about this borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3644 #: modules/bibcirculation/lib/bibcirculation_templates.py:4830 #: modules/bibcirculation/lib/bibcirculation_templates.py:8084 msgid "Personal details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3767 msgid "New loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3768 msgid "New request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3769 msgid "New ILL request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3770 msgid "Notify this borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3771 msgid "Requests, Loans and ILL overview on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3772 #: modules/bibcirculation/lib/bibcirculation_templates.py:3776 msgid "Requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3774 #: modules/bibcirculation/lib/bibcirculation_templates.py:3778 msgid "ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3839 msgid "Request option(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3946 #: modules/bibcirculation/lib/bibcirculation_templates.py:7925 #: modules/bibcirculation/lib/bibcirculation_templates.py:9433 msgid "Loan date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3950 #: modules/bibcirculation/lib/bibcirculation_templates.py:5843 #: modules/bibcirculation/lib/bibcirculation_templates.py:5908 #: modules/bibcirculation/lib/bibcirculation_templates.py:11076 msgid "Type" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3951 #: modules/bibcirculation/lib/bibcirculation_templates.py:4688 msgid "Loan notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3952 msgid "Loans status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3953 #: modules/bibcirculation/lib/bibcirculation_templates.py:4689 msgid "Loan options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3971 #: modules/bibcirculation/lib/bibcirculation_templates.py:4709 #: modules/bibcirculation/lib/bibcirculation_templates.py:9927 msgid "See notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4099 #: modules/bibcirculation/lib/bibcirculation_templates.py:4279 msgid "No result for your search." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4129 #: modules/bibcirculation/lib/bibcirculation_templates.py:4309 #: modules/bibcirculation/lib/bibcirculation_templates.py:4560 msgid "Loan Notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4143 #: modules/bibcirculation/lib/bibcirculation_templates.py:4323 #: modules/bibcirculation/lib/bibcirculation_templates.py:4574 msgid "see notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4148 #: modules/bibcirculation/lib/bibcirculation_templates.py:4328 #: modules/bibcirculation/lib/bibcirculation_templates.py:4579 msgid "no notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4182 #: modules/bibcirculation/lib/bibcirculation_templates.py:4362 #: modules/bibcirculation/lib/bibcirculation_templates.py:4489 msgid "Send recall" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4436 msgid "CERN Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4467 msgid "Message" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4468 msgid "Choose a template" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4485 msgid "Templates" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4486 #: modules/bibcirculation/lib/bibcirculation_templates.py:4686 msgid "Overdue letter" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4487 msgid "Reminder" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4488 msgid "Notification" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4490 msgid "Load" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4510 msgid "Send" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4687 #: modules/bibcirculation/lib/bibcirculation_templates.py:7927 msgid "Loan status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4874 #: modules/bibcirculation/lib/bibcirculation_templates.py:8115 #: modules/bibcirculation/lib/bibcirculation_templates.py:9435 msgid "Write notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4934 msgid "Notes about borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4943 #: modules/bibcirculation/lib/bibcirculation_templates.py:5041 #: modules/bibcirculation/lib/bibcirculation_templates.py:7806 #: modules/bibcirculation/lib/bibcirculation_templates.py:10012 #: modules/bibcirculation/lib/bibcirculation_templates.py:11204 #: modules/bibcirculation/lib/bibcirculation_templates.py:12427 #: modules/bibcirculation/lib/bibcirculation_templates.py:12522 #: modules/bibcirculation/lib/bibcirculation_templates.py:12616 #: modules/bibcirculation/lib/bibcirculation_templates.py:12721 #: modules/bibcirculation/lib/bibcirculation_templates.py:12825 #: modules/bibcirculation/lib/bibcirculation_templates.py:12931 #: modules/bibcirculation/lib/bibcirculation_templates.py:13244 #: modules/bibcirculation/lib/bibcirculation_templates.py:15236 msgid "[delete]" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4986 #: modules/bibcirculation/lib/bibcirculation_templates.py:5085 #: modules/bibcirculation/lib/bibcirculation_templates.py:7849 #: modules/bibcirculation/lib/bibcirculation_templates.py:10055 #: modules/bibcirculation/lib/bibcirculation_templates.py:15279 msgid "Write new note" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5032 msgid "Notes about loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5225 msgid "Book Information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5229 msgid "EAN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5232 +#: modules/bibformat/lib/elements/bfe_imprint.py:25 msgid "Publication date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5233 msgid "Publication place" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5234 #: modules/bibcirculation/lib/bibcirculation_templates.py:6321 #: modules/bibcirculation/lib/bibcirculation_templates.py:10937 #: modules/bibcirculation/lib/bibcirculation_templates.py:11355 #: modules/bibcirculation/lib/bibcirculation_templates.py:12324 #: modules/bibcirculation/lib/bibcirculation_templates.py:14385 #: modules/bibcirculation/lib/bibcirculation_templates.py:14601 #: modules/bibcirculation/lib/bibcirculation_templates.py:14850 #: modules/bibcirculation/lib/bibcirculation_templates.py:15869 #: modules/bibcirculation/lib/bibcirculation_templates.py:16093 msgid "Edition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5235 msgid "Number of pages" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5236 msgid "Sub-library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5237 msgid "CERN Central Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5476 msgid "A new borrower has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5661 #: modules/bibcirculation/lib/bibcirculation_templates.py:5723 msgid "Borrower information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5763 #: modules/bibcirculation/lib/bibcirculation_templates.py:6241 #: modules/bibcirculation/lib/bibcirculation_templates.py:13994 msgid "The information has been updated." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5842 #: modules/bibcirculation/lib/bibcirculation_templates.py:5903 msgid "New library information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5946 msgid "A new library has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5999 #: modules/bibcirculation/lib/bibcirculation_templates.py:7671 msgid "Search library by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6032 #: modules/bibcirculation/lib/bibcirculation_templates.py:7716 msgid "Library(ies)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6135 #: modules/bibcirculation/lib/bibcirculation_templates.py:6198 msgid "Library information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6316 #: modules/bibcirculation/lib/bibcirculation_templates.py:14380 #: modules/bibcirculation/lib/bibcirculation_templates.py:15864 msgid "Book title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6318 #: modules/bibcirculation/lib/bibcirculation_templates.py:10934 #: modules/bibcirculation/lib/bibcirculation_templates.py:11349 #: modules/bibcirculation/lib/bibcirculation_templates.py:11431 #: modules/bibcirculation/lib/bibcirculation_templates.py:12318 #: modules/bibcirculation/lib/bibcirculation_templates.py:14382 #: modules/bibcirculation/lib/bibcirculation_templates.py:14598 #: modules/bibcirculation/lib/bibcirculation_templates.py:14847 #: modules/bibcirculation/lib/bibcirculation_templates.py:15866 #: modules/bibcirculation/lib/bibcirculation_templates.py:16090 msgid "Place" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6555 #, python-format msgid "Copies of %s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 msgid "New copy details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6792 msgid "new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6819 #, python-format msgid "A %s has been added." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7181 msgid "Update copy information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7571 msgid "New copy information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7615 msgid "This item has been updated." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7698 msgid "0 library(ies) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7797 msgid "Notes about library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7929 msgid "Requested ?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7950 msgid "New due date: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7975 msgid "Submit new due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8019 #, python-format msgid "The due date has been updated. New due date: %s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8020 msgid "Back borrower's loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8273 msgid "Select item" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8312 #: modules/bibcirculation/lib/bibcirculation_templates.py:8907 #: modules/bibcirculation/lib/bibcirculation_templates.py:9365 #: modules/bibcirculation/lib/bibcirculation_templates.py:10437 #: modules/bibcirculation/lib/bibcirculation_templates.py:10603 #: modules/bibcirculation/lib/bibcirculation_templates.py:14893 #: modules/bibcirculation/lib/bibcirculation_templates.py:16100 msgid "Borrower details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8350 msgid "This item has no holdings." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8478 #: modules/bibcirculation/lib/bibcirculation_templates.py:8973 msgid "Enter the period of interest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8479 #: modules/bibcirculation/lib/bibcirculation_templates.py:8974 msgid "From: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8480 #: modules/bibcirculation/lib/bibcirculation_templates.py:8975 msgid "To: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8538 #: modules/bibcirculation/lib/bibcirculation_templates.py:9007 msgid "A new request has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9805 #: modules/bibcirculation/lib/bibcirculation_templates.py:13126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13414 msgid "Order details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9562 #: modules/bibcirculation/lib/bibcirculation_templates.py:9807 #: modules/bibcirculation/lib/bibcirculation_templates.py:9901 #: modules/bibcirculation/lib/bibcirculation_templates.py:13126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13415 msgid "Vendor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9625 #: modules/bibcirculation/lib/bibcirculation_templates.py:9808 #: modules/bibcirculation/lib/bibcirculation_templates.py:9903 #: modules/bibcirculation/lib/bibcirculation_templates.py:13416 msgid "Price" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9626 #: modules/bibcirculation/lib/bibcirculation_templates.py:9810 #: modules/bibcirculation/lib/bibcirculation_templates.py:13232 #: modules/bibcirculation/lib/bibcirculation_templates.py:13418 msgid "Order date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9627 #: modules/bibcirculation/lib/bibcirculation_templates.py:9811 #: modules/bibcirculation/lib/bibcirculation_templates.py:9905 #: modules/bibcirculation/lib/bibcirculation_templates.py:11692 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11965 #: modules/bibcirculation/lib/bibcirculation_templates.py:12081 #: modules/bibcirculation/lib/bibcirculation_templates.py:12509 #: modules/bibcirculation/lib/bibcirculation_templates.py:12603 #: modules/bibcirculation/lib/bibcirculation_templates.py:12706 #: modules/bibcirculation/lib/bibcirculation_templates.py:12809 #: modules/bibcirculation/lib/bibcirculation_templates.py:12915 #: modules/bibcirculation/lib/bibcirculation_templates.py:13233 #: modules/bibcirculation/lib/bibcirculation_templates.py:13419 #: modules/bibcirculation/lib/bibcirculation_templates.py:15100 msgid "Expected date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9853 msgid "A new purchase has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9902 msgid "Ordered date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9951 #: modules/bibcirculation/lib/bibcirculation_templates.py:11127 msgid "select" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10003 #: modules/bibcirculation/lib/bibcirculation_templates.py:15227 msgid "Notes about acquisition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10444 #: modules/bibcirculation/lib/bibcirculation_templates.py:10598 #: modules/bibcirculation/lib/bibcirculation_templates.py:10816 #: modules/bibcirculation/lib/bibcirculation_templates.py:11023 #: modules/bibcirculation/lib/bibcirculation_templates.py:11495 #: modules/bibcirculation/lib/bibcirculation_templates.py:12387 #: modules/bibcirculation/lib/bibcirculation_templates.py:14416 #: modules/bibcirculation/lib/bibcirculation_templates.py:14603 #: modules/bibcirculation/lib/bibcirculation_templates.py:14852 #: modules/bibcirculation/lib/bibcirculation_templates.py:15953 #: modules/bibcirculation/lib/bibcirculation_templates.py:16095 #: modules/bibcirculation/lib/bibcirculation_templates.py:16286 #: modules/bibcirculation/lib/bibcirculation_templates.py:16413 msgid "ILL request details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10445 #: modules/bibcirculation/lib/bibcirculation_templates.py:10599 #: modules/bibcirculation/lib/bibcirculation_templates.py:10817 #: modules/bibcirculation/lib/bibcirculation_templates.py:11023 #: modules/bibcirculation/lib/bibcirculation_templates.py:12383 #: modules/bibcirculation/lib/bibcirculation_templates.py:14604 #: modules/bibcirculation/lib/bibcirculation_templates.py:15953 #: modules/bibcirculation/lib/bibcirculation_templates.py:16096 #: modules/bibcirculation/lib/bibcirculation_templates.py:16287 #: modules/bibcirculation/lib/bibcirculation_templates.py:16414 msgid "Period of interest - From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10447 #: modules/bibcirculation/lib/bibcirculation_templates.py:10600 #: modules/bibcirculation/lib/bibcirculation_templates.py:10818 #: modules/bibcirculation/lib/bibcirculation_templates.py:11025 #: modules/bibcirculation/lib/bibcirculation_templates.py:12384 #: modules/bibcirculation/lib/bibcirculation_templates.py:14605 #: modules/bibcirculation/lib/bibcirculation_templates.py:15956 #: modules/bibcirculation/lib/bibcirculation_templates.py:16097 #: modules/bibcirculation/lib/bibcirculation_templates.py:16288 #: modules/bibcirculation/lib/bibcirculation_templates.py:16415 msgid "Period of interest - To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10449 #: modules/bibcirculation/lib/bibcirculation_templates.py:10601 #: modules/bibcirculation/lib/bibcirculation_templates.py:10819 #: modules/bibcirculation/lib/bibcirculation_templates.py:11026 #: modules/bibcirculation/lib/bibcirculation_templates.py:14472 #: modules/bibcirculation/lib/bibcirculation_templates.py:14606 #: modules/bibcirculation/lib/bibcirculation_templates.py:14855 #: modules/bibcirculation/lib/bibcirculation_templates.py:15958 #: modules/bibcirculation/lib/bibcirculation_templates.py:16098 #: modules/bibcirculation/lib/bibcirculation_templates.py:16289 #: modules/bibcirculation/lib/bibcirculation_templates.py:16416 msgid "Additional comments" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10450 msgid "Borrower wants only this edition?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10602 #: modules/bibcirculation/lib/bibcirculation_templates.py:14856 #: modules/bibcirculation/lib/bibcirculation_templates.py:16099 msgid "Only this edition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10666 msgid "A new ILL request has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10820 #: modules/bibcirculation/lib/bibcirculation_templates.py:11027 #, python-format msgid "" "I accept the %s of the service in particular the return of books in due time." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10821 #: modules/bibcirculation/lib/bibcirculation_templates.py:11028 msgid "I want this edition only." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11072 #: modules/bibcirculation/lib/bibcirculation_templates.py:15098 msgid "Supplier" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11075 msgid "Interest from" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11421 msgid "Periodical Title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11423 msgid "Article Title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11427 msgid "Volume, Issue, Page" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11429 #: modules/bibcirculation/lib/bibcirculation_templates.py:16226 #: modules/bibcirculation/lib/bibcirculation_templates.py:16412 msgid "ISSN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11488 #: modules/bibcirculation/lib/bibcirculation_templates.py:12380 msgid "Borrower request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11491 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14853 msgid "Period of interest (From)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11492 #: modules/bibcirculation/lib/bibcirculation_templates.py:14471 #: modules/bibcirculation/lib/bibcirculation_templates.py:14854 msgid "Period of interest (To)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11493 #: modules/bibcirculation/lib/bibcirculation_templates.py:12385 msgid "Borrower comments" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11494 #: modules/bibcirculation/lib/bibcirculation_templates.py:12386 msgid "Only this edition?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11531 #: modules/bibcirculation/lib/bibcirculation_templates.py:11560 #: modules/bibcirculation/lib/bibcirculation_templates.py:11616 #: modules/bibcirculation/lib/bibcirculation_templates.py:11648 #: modules/bibcirculation/lib/bibcirculation_templates.py:11790 #: modules/bibcirculation/lib/bibcirculation_templates.py:11963 #: modules/bibcirculation/lib/bibcirculation_templates.py:12079 #: modules/bibcirculation/lib/bibcirculation_templates.py:12416 #: modules/bibcirculation/lib/bibcirculation_templates.py:12506 #: modules/bibcirculation/lib/bibcirculation_templates.py:12600 #: modules/bibcirculation/lib/bibcirculation_templates.py:12703 #: modules/bibcirculation/lib/bibcirculation_templates.py:12806 #: modules/bibcirculation/lib/bibcirculation_templates.py:12912 msgid "ILL request ID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11531 #: modules/bibcirculation/lib/bibcirculation_templates.py:11560 #: modules/bibcirculation/lib/bibcirculation_templates.py:11728 #: modules/bibcirculation/lib/bibcirculation_templates.py:11873 #: modules/bibcirculation/lib/bibcirculation_templates.py:12001 #: modules/bibcirculation/lib/bibcirculation_templates.py:12116 #: modules/bibcirculation/lib/bibcirculation_templates.py:12417 #: modules/bibcirculation/lib/bibcirculation_templates.py:12512 #: modules/bibcirculation/lib/bibcirculation_templates.py:12606 #: modules/bibcirculation/lib/bibcirculation_templates.py:12711 #: modules/bibcirculation/lib/bibcirculation_templates.py:12815 #: modules/bibcirculation/lib/bibcirculation_templates.py:12921 #: modules/bibcirculation/lib/bibcirculation_templates.py:13234 #: modules/bibcirculation/lib/bibcirculation_templates.py:13420 msgid "Previous notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11578 #: modules/bibcirculation/lib/bibcirculation_templates.py:11745 #: modules/bibcirculation/lib/bibcirculation_templates.py:11891 #: modules/bibcirculation/lib/bibcirculation_templates.py:12018 #: modules/bibcirculation/lib/bibcirculation_templates.py:12133 #: modules/bibcirculation/lib/bibcirculation_templates.py:12451 #: modules/bibcirculation/lib/bibcirculation_templates.py:12545 #: modules/bibcirculation/lib/bibcirculation_templates.py:12639 #: modules/bibcirculation/lib/bibcirculation_templates.py:12744 #: modules/bibcirculation/lib/bibcirculation_templates.py:12848 #: modules/bibcirculation/lib/bibcirculation_templates.py:12954 #: modules/bibcirculation/lib/bibcirculation_templates.py:15104 msgid "Library notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11617 #: modules/bibcirculation/lib/bibcirculation_templates.py:11649 #: modules/bibcirculation/lib/bibcirculation_templates.py:12507 #: modules/bibcirculation/lib/bibcirculation_templates.py:12601 #: modules/bibcirculation/lib/bibcirculation_templates.py:12704 #: modules/bibcirculation/lib/bibcirculation_templates.py:12807 #: modules/bibcirculation/lib/bibcirculation_templates.py:12913 msgid "Library/Supplier" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11694 #: modules/bibcirculation/lib/bibcirculation_templates.py:11842 #: modules/bibcirculation/lib/bibcirculation_templates.py:11969 #: modules/bibcirculation/lib/bibcirculation_templates.py:12084 #: modules/bibcirculation/lib/bibcirculation_templates.py:12510 #: modules/bibcirculation/lib/bibcirculation_templates.py:12604 #: modules/bibcirculation/lib/bibcirculation_templates.py:12709 #: modules/bibcirculation/lib/bibcirculation_templates.py:12813 #: modules/bibcirculation/lib/bibcirculation_templates.py:12919 #: modules/bibcirculation/lib/bibcirculation_templates.py:13144 msgid "Cost" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11834 #: modules/bibcirculation/lib/bibcirculation_templates.py:11966 #: modules/bibcirculation/lib/bibcirculation_templates.py:12082 #: modules/bibcirculation/lib/bibcirculation_templates.py:12707 #: modules/bibcirculation/lib/bibcirculation_templates.py:12810 #: modules/bibcirculation/lib/bibcirculation_templates.py:12916 #: modules/bibcirculation/lib/bibcirculation_templates.py:15101 msgid "Arrival date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11873 msgid "Barcoce" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13014 msgid "An ILL request has been updated with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13502 msgid "Purchase information updated with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13576 #: modules/bibcirculation/lib/bibcirculation_templates.py:13641 msgid "New vendor information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13686 msgid "A new vendor has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13740 #: modules/bibcirculation/lib/bibcirculation_templates.py:14048 msgid "Search vendor by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13777 #: modules/bibcirculation/lib/bibcirculation_templates.py:14085 msgid "Vendor(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13884 #: modules/bibcirculation/lib/bibcirculation_templates.py:13951 msgid "Vendor information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14150 #: modules/bibcirculation/lib/bibcirculation_templates.py:14240 msgid "Notes about this vendor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14193 msgid "Vendor details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14279 msgid "Add notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14377 msgid "Book does not exists on Invenio." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14377 msgid "Please fill the following form." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14473 #: modules/bibcirculation/lib/bibcirculation_templates.py:15959 #, python-format msgid "" "Borrower accepts the %s of the service in particular the return of books in " "due time." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14474 #: modules/bibcirculation/lib/bibcirculation_templates.py:15960 msgid "Borrower wants this edition only." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14607 msgid "Only this edition." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15143 msgid "Notes about this ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15315 msgid "No more requests are pending or waiting." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15466 msgid "Printable format" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15526 -#: modules/bibcirculation/lib/bibcirculation_templates.py:15684 -msgid "" -"Check if the book already exists on Invenio, before to send your ILL request." +msgid "Check if the book already exists on Invenio," msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15550 #: modules/bibcirculation/lib/bibcirculation_templates.py:15713 msgid "0 items found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15618 msgid "Proceed anyway" msgstr "" +#: modules/bibcirculation/lib/bibcirculation_templates.py:15684 +msgid "" +"Check if the book already exists on Invenio, before to send your ILL request." +msgstr "" + #: modules/bibcirculation/lib/bibcirculation_templates.py:15861 msgid "Book does not exists on Invenio. Please fill the following form." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16216 msgid "Article details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16217 #: modules/bibcirculation/lib/bibcirculation_templates.py:16404 msgid "Periodical title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16218 #: modules/bibcirculation/lib/bibcirculation_templates.py:16405 msgid "Article title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16220 #: modules/bibcirculation/lib/bibcirculation_templates.py:16407 +#: modules/websearch/lib/websearch_templates_epfl.py:986 +#: modules/websearch/lib/websearch_templates_epfl.py:1708 msgid "Report number" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16221 #: modules/bibcirculation/lib/bibcirculation_templates.py:16408 msgid "Volume" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16222 #: modules/bibcirculation/lib/bibcirculation_templates.py:16409 msgid "Issue" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16223 #: modules/bibcirculation/lib/bibcirculation_templates.py:16410 msgid "Page" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16225 msgid "Budget code" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:60 msgid "BibCheck Admin" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:70 #: modules/bibcheck/web/admin/bibcheckadmin.py:250 #: modules/bibcheck/web/admin/bibcheckadmin.py:290 #: modules/bibcheck/web/admin/bibcheckadmin.py:328 msgid "Not authorized" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:80 #: modules/bibcheck/web/admin/bibcheckadmin.py:82 #: modules/bibcheck/web/admin/bibcheckadmin.py:84 msgid "ERROR" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:80 msgid "does not exist" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:82 msgid "is not a directory" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:84 msgid "is not writable" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:117 msgid "Limit to knowledge bases containing string:" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:135 msgid "Really delete" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:141 msgid "Verify syntax" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:146 msgid "Create new" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:166 #, python-format msgid "File %s does not exist." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:175 msgid "Calling bibcheck -verify failed." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:182 msgid "Verify BibCheck config file" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:183 msgid "Verify problem" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:205 #: modules/bibcheck/web/admin/bibcheckadmin.py:265 #: modules/bibcheck/web/admin/bibcheckadmin.py:305 msgid "File" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:241 msgid "Edit BibCheck config file" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:270 msgid "already exists." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:273 msgid "written OK." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:279 msgid "write failed." msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:281 msgid "Save BibCheck config file" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:315 msgid "deleted" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:317 msgid "delete failed" msgstr "" #: modules/bibcheck/web/admin/bibcheckadmin.py:319 msgid "Delete BibCheck config file" msgstr "" #: modules/bibharvest/lib/oai_repository_admin.py:153 #: modules/bibharvest/lib/oai_repository_admin.py:258 #: modules/bibharvest/lib/oai_repository_admin.py:337 msgid "Return to main selection" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:118 msgid "Overview of sources" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:119 msgid "Harvesting status" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:137 msgid "Not Set" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:138 msgid "never" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:149 msgid "Never harvested" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:161 msgid "View Holding Pen" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:186 #: modules/bibharvest/lib/oai_harvest_admin.py:547 msgid "No OAI source ID selected." msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:285 #: modules/bibharvest/lib/oai_harvest_admin.py:422 #: modules/bibharvest/lib/oai_harvest_admin.py:436 #: modules/bibharvest/lib/oai_harvest_admin.py:451 #: modules/bibharvest/lib/oai_harvest_admin.py:488 #: modules/bibharvest/lib/oai_harvest_admin.py:535 msgid "Go back to the OAI sources overview" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:408 msgid "Try again with another url" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:415 msgid "Continue anyway" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:818 msgid "Return to the month view" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1092 msgid "Compare with original" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1098 #: modules/bibharvest/lib/oai_harvest_admin.py:1143 msgid "Delete from holding pen" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1116 msgid "Error when retrieving the Holding Pen entry" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1124 msgid "Error when retrieving the record" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1132 msgid "" "Error when formatting the Holding Pen entry. Probably it's content is broken" msgstr "" #: modules/bibharvest/lib/oai_harvest_admin.py:1137 msgid "Accept Holding Pen version" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:75 msgid "Limit display to knowledge bases matching" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:76 msgid "in their rules and descriptions" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:140 msgid "Add New Knowledge Base" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:141 msgid "Configure a dynamic KB" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:142 msgid "Add New Taxonomy" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:183 msgid "This knowledge base already has a taxonomy file." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:184 msgid "If you upload another file, the current version will be replaced." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:186 msgid "The current taxonomy can be accessed with this URL" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:189 msgid "Please upload the RDF file for taxonomy" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:224 msgid "Please configure" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:225 msgid "" "A dynamic knowledge base is a list of values of a " "given field. The list is generated dynamically by " "searching the records using a search expression." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:229 msgid "" "Example: Your records contain field 270__a for the " "name and address of the author's institute. If you " "set the field to '270__a' and the expression to " "'270__a:*Paris*', a list of institutes in Paris " "will be created." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:234 msgid "" "If the expression is empty, a list of all values in " "270__a will be created." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:236 msgid "" "If the expression contains '%', like '270__a:*%*', " "it will be replaced by a search string when the " "knowledge base is used." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:239 msgid "" "You can enter a collection name if the expression " "should be evaluated in a specific collection." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:255 msgid "Exporting: " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:296 #: modules/bibknowledge/lib/bibknowledge_templates.py:557 #: modules/bibknowledge/lib/bibknowledge_templates.py:625 msgid "Knowledge Base Mappings" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:297 #: modules/bibknowledge/lib/bibknowledge_templates.py:558 #: modules/bibknowledge/lib/bibknowledge_templates.py:626 msgid "Knowledge Base Attributes" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:298 #: modules/bibknowledge/lib/bibknowledge_templates.py:559 #: modules/bibknowledge/lib/bibknowledge_templates.py:627 msgid "Knowledge Base Dependencies" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:318 msgid "" "Here you can add new mappings to this base and " "change the base attributes." msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:333 msgid "Map From" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:396 msgid "Search for a mapping" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:514 msgid "You can get a these mappings in textual format by: " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:516 msgid "And the KBA version by:" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:667 msgid "Your rule" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:669 msgid "The left side of the rule " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:671 msgid "The right side of the rule " msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:672 msgid "already appears in these knowledge bases" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:685 msgid "Please select action" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:686 msgid "Replace the selected rules with this rule" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:687 msgid "Add this rule in the current knowledge base" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:688 msgid "Cancel: do not add this rule" msgstr "" #: modules/bibknowledge/lib/bibknowledge_templates.py:719 msgid "" "It is not possible to have two rules with the same left side in the same " "knowledge base." msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:80 msgid "BibKnowledge Admin" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:100 msgid "Knowledge Bases" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:118 msgid "upload is a file" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:130 msgid "Cannot create upload" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:144 msgid "File uploaded" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:173 #: modules/bibknowledge/lib/bibknowledgeadmin.py:217 #: modules/bibknowledge/lib/bibknowledgeadmin.py:267 #: modules/bibknowledge/lib/bibknowledgeadmin.py:304 #: modules/bibknowledge/lib/bibknowledgeadmin.py:357 #: modules/bibknowledge/lib/bibknowledgeadmin.py:466 #: modules/bibknowledge/lib/bibknowledgeadmin.py:525 #: modules/bibknowledge/lib/bibknowledgeadmin.py:587 #: modules/bibknowledge/lib/bibknowledgeadmin.py:679 #: modules/bibknowledge/lib/bibknowledgeadmin.py:696 #: modules/bibknowledge/lib/bibknowledgeadmin.py:711 #: modules/bibknowledge/lib/bibknowledgeadmin.py:747 msgid "Manage Knowledge Bases" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:186 #: modules/bibknowledge/lib/bibknowledgeadmin.py:231 #: modules/bibknowledge/lib/bibknowledgeadmin.py:317 #: modules/bibknowledge/lib/bibknowledgeadmin.py:371 #: modules/bibknowledge/lib/bibknowledgeadmin.py:479 #: modules/bibknowledge/lib/bibknowledgeadmin.py:544 #: modules/bibknowledge/lib/bibknowledgeadmin.py:723 msgid "Unknown Knowledge Base" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:193 #, python-format msgid "Knowledge Base %s" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:240 #, python-format msgid "Knowledge Base %s Attributes" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:326 #, python-format msgid "Knowledge Base %s Dependencies" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:408 msgid "Left side exists" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:416 msgid "Right side exists" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:589 msgid "Knowledge base name missing" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:609 msgid "Unknown knowledge base" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:610 msgid "There is no knowledge base with that name." msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:629 msgid "No such knowledge base" msgstr "" #: modules/bibknowledge/lib/bibknowledgeadmin.py:711 msgid "Delete Knowledge Base" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:157 msgid "BibSword Admin Interface" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:171 #: modules/bibsword/lib/bibsword_webinterface.py:277 #: modules/bibsword/lib/bibsword_webinterface.py:301 #: modules/bibsword/lib/bibsword_webinterface.py:330 msgid "Export with BibSword: Step 2/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:222 #: modules/bibsword/lib/bibsword_webinterface.py:233 #: modules/bibsword/lib/bibsword_webinterface.py:291 msgid "Export with BibSword: Step 1/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:315 #: modules/bibsword/lib/bibsword_webinterface.py:343 #: modules/bibsword/lib/bibsword_webinterface.py:374 msgid "Export with BibSword: Step 3/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:358 #: modules/bibsword/lib/bibsword_webinterface.py:389 msgid "Export with BibSword: Step 4/4" msgstr "" #: modules/bibsword/lib/bibsword_webinterface.py:434 msgid "Export with BibSword: Acknowledgement" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:202 msgid "More than one possible recID, ambiguous behaviour" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:202 msgid "No records match that file name" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:203 msgid "File already exists" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:203 msgid "A file with the same name and format already exists" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:204 #, python-format msgid "No rights to upload to collection '%s'" msgstr "" #: modules/bibupload/lib/batchuploader_engine.py:413 #: modules/bibupload/lib/batchuploader_engine.py:426 #, python-format msgid "" "The user '%(x_user)s' is not authorized to modify collection '%(x_coll)s'" msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:284 +#, python-format +msgid "" +"You can set a new alert from %(x_url_open)syour searches%(x_url_close)s." +msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:381 +#: modules/webalert/lib/webalert_templates_epfl.py:429 +#: modules/webalert/lib/webalert_templates_epfl.py:488 +#: modules/webbasket/lib/webbasket_templates_epfl.py:391 +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +#: modules/webbasket/lib/webbasket_templates_epfl.py:491 +#: modules/webbasket/lib/webbasket_templates_epfl.py:590 +#: modules/webbasket/lib/webbasket_templates_epfl.py:683 +#: modules/webbasket/lib/webbasket_templates_epfl.py:762 +msgid "New personal collection" +msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:383 +#: modules/websession/lib/websession_templates_epfl.py:148 +msgid "My alerts" +msgstr "" + +#: modules/webalert/lib/webalert_templates_epfl.py:431 +#: modules/webalert/lib/webalert_templates_epfl.py:490 +msgid "Performed searches" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:60 +msgid "You have no personal or group collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:61 +#, python-format +msgid "" +"You may want to start by %(x_url_open)screating a new collection" +"%(x_url_close)s." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:68 +msgid "Create collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:358 +#: modules/websearch/lib/websearch_templates_epfl.py:1524 +msgid "Export" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:359 +msgid "Add to my website" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:388 +#: modules/websearch/lib/websearch_templates_epfl.py:1251 +msgid "Search results" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:390 +msgid "Search collections for" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +msgid "Create new collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:430 +#: modules/webbasket/lib/webbasket_templates_epfl.py:626 +msgid "Collection name" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:474 +#, python-format +msgid "%i items have been successfully added to your collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:475 +#, python-format +msgid "Proceed to the %(x_url_open)scollection%(x_url_close)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:480 +#, python-format +msgid " or return to your %(x_url_open)sprevious collection%(x_url_close)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:491 +msgid "Successfully added" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:519 +#, python-format +msgid "" +"Please choose a collection: %(x_basket_selection_box)s (or " +"%(x_url_open)screate a new one%(x_url_close)s first)" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:530 +#, python-format +msgid "Adding %i items to your collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:550 +msgid "Are you sure you want to delete this collection?" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:553 +#, python-format +msgid "%i users are subscribed to this collection." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:555 +#, python-format +msgid "%i user groups are subscribed to this collection." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:557 +#, python-format +msgid "You have set %i alerts on this collection." +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:654 +#: modules/webbasket/lib/webbasket_templates_epfl.py:869 +msgid "Delete collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:684 +#, python-format +msgid "Editing collection %(x_basket_name)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:761 +msgid "Sharing collection to a new group" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:868 +msgid "Edit collection" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:883 +#, python-format +msgid "%(nb)i records, last modified on %(date)s" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:929 +msgid "collection is empty" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1188 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1193 +msgid "All my collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1197 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1202 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1275 +msgid "My personal collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1207 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1212 +#: modules/webbasket/lib/webbasket_templates_epfl.py:1285 +msgid "My groups' collections" +msgstr "" + +#: modules/webbasket/lib/webbasket_templates_epfl.py:1270 +msgid "*** collection name ***" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:246 +#: modules/websearch/lib/websearch_templates_epfl.py:386 +msgid "Infoscience, EPFL's scientific publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:250 +#: modules/websearch/lib/websearch_templates_epfl.py:390 +msgid "EPFL Directive for Research Integrity" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:254 +#: modules/websearch/lib/websearch_templates_epfl.py:394 +msgid "" +"SNSF regulations on information, valorisation and rights to research results" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:259 +#: modules/websearch/lib/websearch_templates_epfl.py:399 +msgid "Overview of SNSF Guidelines on Open Access" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:263 +#: modules/websearch/lib/websearch_templates_epfl.py:403 +msgid "Open Access Guidelines for researchers funded by the ERC" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:295 +msgid "Latest additions" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:356 +msgid "Search publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:359 +#, python-format +msgid "Access to the %s scientific publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:360 +#, python-format +msgid "Access to the %s documentary resources" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:362 +msgid "More news" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:509 +msgid "Filter by document type" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:510 +msgid "Publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:511 +#: modules/webstyle/lib/webstyle_templates_epfl.py:469 +msgid "Journal Articles" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:513 +#: modules/webstyle/lib/webstyle_templates_epfl.py:470 +msgid "Conference Papers" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:515 +msgid "Monographs" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:516 +msgid "Books" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:517 +#: modules/webstyle/lib/webstyle_templates_epfl.py:471 +msgid "Theses" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:518 +msgid "Book Chapters" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:519 +msgid "Conference Proceedings" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:521 +#: modules/websearch/lib/websearch_templates_epfl.py:523 +msgid "Presentations & Talks" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:522 +msgid "Posters" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:525 +msgid "Standards & Patents" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:526 +msgid "Standards" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:527 +msgid "Patents" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:529 +#: modules/webstyle/lib/webstyle_templates_epfl.py:472 +msgid "Reports" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:530 +msgid "Technical Reports" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:531 +msgid "Working Papers" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:533 +msgid "Lectures & teaching material" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:534 +msgid "Teaching Documents" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:535 +msgid "Student Projects" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:537 +msgid "Filter by publication status" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:538 +msgid "Peer-reviewed publications" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:539 +msgid "Published" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:540 +msgid "Accepted" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:541 +msgid "Submitted" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:543 +msgid "Filter by origin" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:544 +msgid "Work produced at EPFL" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:546 +msgid "Filter by fulltext availability" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:547 +msgid "Publicly available" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:548 +msgid "Restricted access" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:569 +msgid "Boolean operators" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:570 +msgid "" +"AND: vetterli AND wavelet (you can also use + char " +"instead of AND)" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:571 +msgid "" +"NOT: vetterli NOT wavelet (you can also use - char " +"instead of NOT)" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:572 +msgid "" +"OR: vetterli OR wavelet (you can also use | char " +"instead of OR)" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:573 +msgid "Parentheses" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:574 +msgid "" +"You can also use parentheses in your queries to group boolean expressions " +"together. Nested parentheses are also supported." +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:575 +msgid "Full documentation about searching" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:855 +msgid "Search specifically in" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:857 +msgid "Focus on" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:980 +#: modules/websearch/lib/websearch_templates_epfl.py:989 +msgid "Any field" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:983 +msgid "Keyword" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:985 +msgid "Source" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:987 +msgid "DOI" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1059 +#: modules/websearch/lib/websearch_templates_epfl.py:1061 +#, python-format +msgid "%s results" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1480 +msgid "Add record to collection" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1481 +msgid "Please choose a collection" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1482 +#, python-format +msgid "or %(x_url_open)screate a new one%(x_url_close)s first" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1485 +msgid "Add record" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1525 +msgid "Integrate these publications into my website" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1707 +msgid "First author" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1709 +msgid "Publication year" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1710 +msgid "Ascending" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1711 +msgid "Descending" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1713 +msgid "HTML detailed" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1714 +msgid "HTML MARC21" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:1762 +msgid "Sort by" +msgstr "" + +#: modules/websearch/lib/websearch_templates_epfl.py:2110 +msgid "Add to my collections" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:146 +msgid "My profile" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:149 +msgid "to be validated" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:150 +msgid "to be imported" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:151 +msgid "to be matched" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:153 +msgid "XX-Translate-test" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:204 +msgid "Dropbox" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:205 +msgid "Delete by reference" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:206 +msgid "Laboratories management" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:207 +msgid "Laboratories stats" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:208 +msgid "Authors management" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:209 +msgid "Create user" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:210 +msgid "Publication statistics / bibliometrics" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:215 +msgid "Deduplicate" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:216 +msgid "Manual match" +msgstr "" + +#: modules/websession/lib/websession_templates_epfl.py:217 +msgid "Rejected imports" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:135 +#: modules/webstyle/lib/webstyle_templates_epfl.py:475 +msgid "About Infoscience" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:136 +msgid "Contact" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:137 +msgid "Accessibility" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:169 +#, python-format +msgid "Logout (%(username)s)" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:225 +msgid "Infoscience: Scientific publications of EPFL" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:333 +msgid "Choose your language" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:460 +msgid "Publications by school" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:461 +msgid "ENAC - Architecture, Civil and Environmental Engineering" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:462 +msgid "I&C - Computer & Communication Sciences" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:463 +msgid "SB - Basic Sciences" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:464 +msgid "STI - Engineering" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:465 +msgid "SV - Life Sciences" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:466 +msgid "CDM - Management of Technology" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:467 +msgid "CDH - College of Humanities" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:468 +msgid "Publications by document type" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:473 +msgid "Deposit / Publish" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:476 +msgid "Open Access & Copyright" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:477 +msgid "Start using Infoscience" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:478 +msgid "Add a document" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:479 +msgid "Document types" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:480 +msgid "Publication status" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:481 +msgid "Manage publications" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:482 +msgid "Edit a publication" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:483 +msgid "Remove a publication" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:484 +msgid "Export a publication list" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:485 +msgid "Manage my account" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:486 +msgid "Create a personal collection" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:487 +msgid "Display my publications in people@EPFL" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:527 +#: modules/webstyle/lib/webstyle_templates_epfl.py:542 +msgid "EPFL Homepage" +msgstr "" + +#: modules/webstyle/lib/webstyle_templates_epfl.py:543 +msgid "Infoscience Homepage" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:15 +msgid "Journal article" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:17 +msgid "Book" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:19 +msgid "Book Chapter" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:21 +msgid "Conference paper" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:23 +msgid "Lecture" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:25 +msgid "Report" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:29 +msgid "Patent" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:31 +msgid "Researcher's profile" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:33 +msgid "Teaching document" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:35 +msgid "Poster" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:37 +msgid "Conference proceedings" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:39 +msgid "Standard" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:41 +msgid "Student project" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:43 +msgid "Presentation / Talk" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:45 +msgid "Thesis" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_doctype.py:47 +msgid "Working paper" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:149 +msgid "Get the whole digitalized project" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:194 +msgid "EPFL intranet: Fulltext" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:204 +#, python-format +msgid "EPFL intranet: %s" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:208 +msgid "Order free pdf" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:280 +msgid "Thesis submitted - Forthcoming publication" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:282 +msgid "Official version" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_epfl_fulltext.py:291 +msgid "There is no available fulltext. Please contact the lab or the authors." +msgstr "" + +#: modules/bibformat/lib/elements/bfe_host.py:31 +#: modules/bibformat/lib/elements/bfe_host.py:38 +msgid "Submitted to" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_host.py:33 +#: modules/bibformat/lib/elements/bfe_host.py:40 +msgid "Accepted in" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_host.py:35 +msgid "Published in" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:31 +msgid "Search for this record at the European Patent Office" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:42 +msgid "View record in Web of Science" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:45 +msgid "View record in Scopus" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:48 +msgid "View record in PubMed" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:51 +msgid "View record in arXiv" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_references.py:60 +msgid "Print copy in library catalog" +msgstr "" + +#: modules/bibformat/lib/elements/bfe_updated_date.py:17 +#, python-format +msgid "Record created on %(creation_date)s, modified on %(modification_date)s" +msgstr ""