Skip to content
Translation and bibliography management for ZoteroBib
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Fix a bug with creator type lookup Jul 10, 2019
.babelrc Update dependencies. Migrate build to Babel 7 Oct 3, 2018
COPYING Add license May 10, 2018
package-lock.json 3.0.2 Jul 10, 2019
package.json 3.0.2 Jul 10, 2019

Zotero Translation Client


Zotero Translation Client is a library that can process URLs and identifiers (such as ISBN or DOI) into CSL-JSON bibliography items using translation server, optionally persisting these items in a storage object provided.


Current version of Translation Client (2.x.x) is compatible with Translation Server v2. For compatiblity with v1, please use 1.x.x version.

Getting The Library

npm i zotero-translation-client

Quick start

  1. Install and start translation server

  2. Configure the library to work with the translation server

const ZoteroTranslationClient = require('zotero-translation-client');
let translationClient = new ZoteroTranslationClient({
	persist: false,
	translateURL: ''
  1. Translate some urls
const { items: [ myPaper ] } = await translationClient.translateUrl('');

In-memory Storage

Normally each call to translateUrl returns an item and also caches it in memory. Cached items can be retrieved at any time, either as Zotero Items:

const [ myPaper ] = translationClient.itemsRaw;

Or in CSL-JSON format:

const [ myPaperAsCSL ] = translationClient.itemsCSL;

This behaviour can be prevented using second, optional argument to translationClient.translate, i.e. calling translationClient.translateUrl(url, { add: false }) will return a translated item but won't store it anywhere.


In the example above, after refreshing the page (or restarting a node script), all previosly translated, cached items are lost. If that's not desired behaviour, Zotero Translation Client accepts any Web Storage compatible container for persistance. In fact, by default, it will attempt to use Local Storage for persistence.

If you're running Zotero Translation Client in node, you'll either need to disable persistence (as in the example above) or provide your own Web Storage compatible container (e.g. node-localstorage):

const LocalStorage = require('node-localstorage').LocalStorage;
const fileStorage = new LocalStorage('./my-citations');

let translationClient = new ZoteroTranslationClient({
	storage: fileStorage,
	translateURL: ''
You can’t perform that action at this time.