1.0.11 • Published 5 years ago

pocket-i18n v1.0.11

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

Pocket i18n

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

:white_check_mark: Fast translated string lookups (allows nesting!)

:white_check_mark: String template interpolation

:white_check_mark: Compatible with ALL browsers (yes, even IE 11)

:white_check_mark: Can load translation files from URL

:white_check_mark: 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
1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago