Server-side Zotero translation based on Mozilla xpcshell
JavaScript Shell
Latest commit b30d87b Aug 3, 2016 @mvolz mvolz committed with dstillman Add documentation on how to run tests (#33)

An xpcshell-based approach to Zotero server side translation.

Currently supports import, export, and web translation.


  1. Do a recursive clone of this repository. If you've already cloned it, you can run git submodule update --init --recursive to make sure you have all the files.

  2. Download the XULRunner SDK:

    translation-server is currently known to work with XULRunner version 41.

  3. Extract the XULRunner SDK into the repository root, which should create a xulrunner-sdk folder, or symlink the SDK from elsewhere on your system to 'xulrunner-sdk'. You do not need to build the SDK.

Build and Run

  1. Run the script. If all goes well, there should be no output.

    $ ./
  2. Run the server:

    $ build/ 
    zotero(3)(+0000000): HTTP server listening on *:1969
  3. Try a query!

    $ curl -d '{"url":"","sessionid":"abc123"}' \
          --header "Content-Type: application/json" \


Docker Container



Supported endpoints are: /web, /import, /export, and /refresh.

Read server_translation.js for more information.

Web Translators

Translates a web page

  • endpoint: /web
  • request method: POST
  • request body: JSON object containing a url and a random sessionid
  • example:
curl -X POST --header 'Content-Type: application/json' -d '{
  "url": "",
  "sessionid": "abc123"
}' 'http://localhost:1969/web'

Import Translators

Converts input in any format Zotero can import (RIS, BibTeX, etc.) to items in Zotero API JSON format

  • endpoint: /import
  • request method: POST
  • request body: item data in a supported format
  • example:
curl -X POST -d 'TY  - JOUR
TI  - Die Grundlage der allgemeinen Relativitätstheorie
AU  - Einstein, Albert
PY  - 1916
SP  - 769
EP  - 822
JO  - Annalen der Physik
VL  - 49
ER  -' 'http://localhost:1969/import'

Export Translators

Converts items in Zotero API JSON format to a supported export format (RIS, BibTeX, etc.)

  • endpoint: /export
  • request method: POST
  • query parameter: format, which must be a supported export format
  • request body: An array of items in Zotero API JSON format


To run the tests, go to the translation-server directory and run:

./build/ -test /path/to/file/output.JSON