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.
npm i zotero-translation-client
-
Install and start translation server
-
Configure the library to work with the translation server
const ZoteroTranslationClient = require('zotero-translation-client');
let translationClient = new ZoteroTranslationClient({
persist: false,
translateURL: 'http://my-translation.server.example.com:1234'
});
- Translate some urls
const { items: [ myPaper ] } = await translationClient.translateUrl('http://example.com/paper');
console.log(myPaper);
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: 'http://my-translation.server.example.com:1234'
});