npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-lokalise-api

v1.0.0

Published

Lokalise API

Downloads

113

Readme

node-lokalise-api

Simple NodeJS wrapper around Lokalise service.

npm license travis status Coverage Status David David Commitizen friendly NPM

Localise API documentation can be found here

Detail package documentation can be found here

Install

Install package as yet another npm library with command:

npm install node-lokalise-api

Also you can use another package manager, for example yarn:

yarn add node-lokalise-api

Usage

Include in your module:

const {LokaliseAPI} = require('node-lokalise-api');

const api = new LokaliseAPI({
    token: '<your-lokalise-api-token>'
});

// get comments for your project
const result = await api.comments.list('<project id>', null, {page: 1, limit: 100});

Avaiable options are:

  • token - access token for Lokalize
  • timeout - maximum allowed time for request in millieconds. (10000 by default)
  • retry - number of allowed retry attempts for failed requests. (2 by default)
  • baseUrl - base url for Lokalize API endpoints. By default it is https://api.lokalise.co/api2.

API

Comments

List project comments

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.comments.list('<project id>', null, {page: 1, limit: 100});

List key comments

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.comments.list('<project id>', '<key id>', {page: 1, limit: 100});

Create comments

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.comments.create('<project id>', '<key id>', {
    comments: [
        {comment: 'This is a test.'},
        {comment: 'Adding multiple comments.'}
    ]
});

Retrieve a comment

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.comments.get('<project id>', '<key id>', '<comment id>');

Delete a comment

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.comments.delete('<project id>', '<key id>', '<comment id>');

Contributors

List all contributors

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.contributors.list('<project id>', {page: 1, limit: 100});

Create contributors

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.contributors.create('<project id>', {
    contributors: [
        {
            email: '[email protected]',
            fullname: 'Mr. Translator',
            is_admin: false,
            is_reviewer: true,
            languages: [
                {
                    lang_iso: en,
                    is_writable: false
                },
                {
                    lang_iso: ru,
                    is_writable: true
                }
            ],
            admin_rights: [
                'keys', 'languages'
            ]
        }
    ]
});

Retrieve a contributor

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.contributors.get('<project id>', '<contributor id>');

Update a contributor

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.contributors.update('<project id>', '<contributor id>', {
    is_admin: true
});

Delete a contributor

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.contributors.delete('<project id>', '<contributor id>');

Files

List all files

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.files.list('<project id>', {page: 1, limit: 100});

Upload a file

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.files.upload('<project id>', {
    filename: 'index.json',
    data: 'D94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL.....',
    lang_iso: 'en',
    tags: [
        'index', 'admin', 'v2.0'
    ],
    convert_placeholders: true
});

Download files

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.files.download('<project id>', {
    format: 'json',
    original_filenames: true
});

Keys

List all keys

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.list('<project id>', {page: 1, limit: 100});

Create keys

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.create('<project id>', {
    keys: [
        {
            key_name: 'index.welcome',
            description: 'Index app welcome',
            platforms: ['web'],
            translations: [
                {
                    language_iso: 'en',
                    translation: 'Welcome'
                }
            ]
        }
    ]
});

Retrieve a key

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.get('<project id>', '<key id>');

Update a key

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.update('<project id>', '<key id>', {
    platforms: ['web', 'other'],
    description: 'Index app welcome'
});

Bulk update

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.updateMany('<project id>', {
    keys: [
        {
            key_id: 331223,
            key_name: 'index.welcome',
            description: 'Index app welcome',
            platforms: ['web']
        },
        {
            key_id: 331224,
            key_name: 'index.hello',
            description: 'Index greetings',
            platforms: ['web']
        }
    ]
});

Delete multiple keys

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.deleteMany('<project id>', {
    keys: [12345, 12346]
});

Delete a key

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.keys.delete('<project id>', '<key id>');

Languages

List system languages

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.languages.list(null, {page: 1, limit: 100});

List project languages

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.languages.list('<project id>', {page: 1, limit: 100});

Create languages

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.languages.create('<project id>', {
    languages: [
        {lang_iso: 'en'},
        {lang_iso: 'ru'}
    ]
});

Retrieve a language

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.languages.get('<project id>', '<language id>');

Update a language

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.languages.update('<project id>', '<language id>', {
    lang_iso: 'en-US',
    plural_forms: [
        'one', 'zero', 'few', 'other'
    ]
});

Delete a language

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.languages.delete('<project id>', '<language id>');

Projects

List all projects

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.projects.list({page: 1, limit: 100});

Create a project

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.projects.create({
    name: 'TheApp Project',
    description: 'iOS + Android strings of TheApp. https://theapp.com'
});

Retrieve a project

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.projects.get('<project id>');

Update a project

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.projects.update('<project id>', {
    name: 'TheZapp Project',
    description: 'iOS + Android strings of TheZapp. https://thezapp.com'
});

Empty a project

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.projects.empty('<project id>');

Delete a project

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.projects.delete('<project id>');

Screenshots

List all screenshots

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.screenshots.list('<project id>', {page: 1, limit: 100});

Create screenshots

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.screenshots.create('<project id>', {
    screenshots: [
        {
            data: 'data:image/jpeg;base64,D94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL',
            ocr: false,
            key_ids: [
                1132290, 1132292, 1132293
            ],
            tags: [
                'onboarding'
            ]
        }
    ]
});

Retrieve a screenshot

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.screenshots.get('<project id>', '<screenshot id>');

Update a screenshot

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.screenshots.update('<project id>', '<screenshot id>', {
    key_ids: [
        1132290, 1132292
    ],
    tags: [
        'main'
    ]
});

Delete a screenshot

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.screenshots.delete('abcde.12345', 567);

Snapshots

List all snapshots

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.snapshots.list('<project id>', {page: 1, limit: 100});

Create a snapshot

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.snapshots.create('<project id>', {
    title: 'API snapshot'
});

Restore a snapshot

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.snapshots.restore('<project id>', '<snapshot id>');

Delete a snapshot

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.snapshots.delete('<project id>', '<snapshot id>');

Tasks

List all tasks

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.tasks.list('<project id>', {page: 1, limit: 100});

Create a task

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.tasks.create('<project id>', {
    title: 'Voicemail messages',
    description: 'Need your help with some voicemail message translation. Thanks!',
    due_date: '2018-12-31 12:00:00 (Etc\/UTC)',
    keys: [11212, 11241, 11245],
    languages: [
        {
            language_iso: 'fi',
            users: [421]
        },
        {
            language_iso: 'ru',
            users: [422]
        }
    ],
    auto_close_languages: true,
    auto_close_task: true
});

Retrieve a task

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.tasks.get('<project id>', '<task id>');

Update a task

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.tasks.update('<project id>', '<task id>', {
    due_date: '2019-12-31 12:00:00 (Etc\/UTC)',
    auto_close_languages: false,
    auto_close_task: false
});

Delete a task

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.tasks.delete('<project id>', '<task id>');

Team Users

List all team users

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.teamUsers.list('<team id>', {page: 1, limit: 100});

Retrieve a team user

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.teamUsers.get('<team id>', '<user id>');

Update a team user

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.teamUsers.update('<team id>', '<user id>', {
     role: 'admin'
});

Delete a team user

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.teamUsers.delete('<team id>', '<user id>');

Teams

List all teams

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.teams.list({page: 1, limit: 100});

Translations

List all translations

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.translations.list('<project id>', {page: 1, limit: 100});

Retrieve a translation

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.translations.get('<project id>', '<translation id>');

Update a translation

Documentation

const {LokaliseAPI} = require('node-lokalise-api');
const api = new LokaliseAPI({token: '<your-lokalise-api-token>'});

const result = await api.translations.update('<project id>', '<translation id>', {
    translation: 'Quick brown fox jumps over the lazy dog.',
    is_fuzzy: false,
    is_reviewed: true
});

Development

Clone repository or its fork to local filesystem

git clone https://github.com/tormozz48/node-lokalise-api.git

Install npm dependencies:

npm install

Here are some suitable commands that can be used during development:

  • npm run build - compile typescript files
  • npm run docs - create documentation based on jsdocs
  • npm run lint - run tslint verification tool
  • npm run test - run tests with mocha
  • npm run cover - calculate code test coverage with istanbul
  • npm run watch - launch watcher for compile source files during development

License

Apache-2.0

Support

Bugs, PRs, comments, suggestions welcomed!