pocket-i18n

1.0.11 • Public • Published

Pocket i18n

Pocket is a blazing fast internationalization library that can fit in your pocket (< 1KB)

Fast translated string lookups (allows nesting!)

String template interpolation

Compatible with ALL browsers (yes, even IE 11)

Can load translation files from URL

Absolutely no dependencies

Getting started

npm i pocket-i18n

Import Pocket

You can use ES6 imports or (CommonJS require).

import Pocket from 'pocket-i18n';

Or, just use a script tag:

<script src="node_modules/pocket-i18n/pocket-i18n.js"></script>

Load translations

Both Pocket.load and Pocket.loadFromUrl return an intl object with a t method for translation lookups.

From an object

const translations = {
    homePage: {
        footer: {
            copyright: 'Copyright {companyName} 2019'
        }
    }
};

const intl = Pocket.load(translations);

intl.t('homePage.footer.copyright', {companyName: 'My Company'});
// Copyright My Company 2019

From URL

const intl = Pocket.loadFromUrl('translations/norwegian.json', function (intl) {
    intl.t('homePage.footer.copyright', {companyName: 'My Company'});
    // Opphavsrett My Company 2019
});

With async/await and promises (need polyfill for IE)

const intl = await new Promise(resolve => Pocket.loadFromUrl('translations/spanish.json', resolve));
intl.t('homePage.footer.copyright', {companyName: 'My Company'});
// Derechos de autor My Company 2019

Using t(lookupStr: string, fillers?: Object)

lookupStr

The translation lookup. Let's say translations object looks like this:

{
    homePage: {
        footer: {
            copyright: 'Copyright My Company 2019'
        }
    }
}

To look up the copyright translation, we would pass 'homePage.footer.copyright'.

fillers (optional)

The set of interpolation values. Let's say translations object looks like this:

{
    homePage: {
        footer: {
            copyright: 'Copyright {companyName} 2019'
        }
    }
}

We would pass the fillers object to t like so:

intl.t('homePage.footer.copyright', {companyName: 'My company'});

Advanced example

const translations = {
    homePage: {
        footer: {
            copyright: 'Copyright {companyName} 2019',
            companyName: 'Translated Company Name'
        }
    }
};

const intl = Pocket.load(translations);

intl.t('homePage.footer.copyright', {companyName: intl.t('homePage.footer.companyName')});
// Copyright Translated Company Name 2019

Package Sidebar

Install

npm i pocket-i18n

Weekly Downloads

0

Version

1.0.11

License

MIT

Unpacked Size

7.13 kB

Total Files

4

Last publish

Collaborators

  • drewctate