1.0.0 • Published 2 years ago

com.matheusdiasdesouzads.js.message-locator v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

message-locator-js

Localization for message assets.

Usage

Example asset located at res/lang/en/_.json:

{
    "messageId": "Some message",
    "parameterized": "Here: $x",
    "contextualMale": "Male message",
    "contextualFemale": "Female message",
    "contextualOther": "Other message",
    "qtyEmpty": "Empty ($number)",
    "qtyOne": "One ($number)",
    "qtyMultiple": "Multiple ($number)"
}

Example TypeScript:

import MessageLocator from 'com.matheusdiasdesouzads.js.message-locator';

const locator = new MessageLocator({
    supportedLanguages: ['en', 'pt-BR'],
    defaultLanguage: 'en',
    fallbacks: {
        'jp': ['en'],
    },
    assets: {
        source: 'res/lang',
        baseFileNames: ['_'], // _.json
        cleanUnused: true,
    },
});

// loadLanguage() accepts argument language;
// if unspecified, loads default language.
if (!(await locator.loadLanguage())) {
    // failed to load
}

console.log(locator.locate('_.messageId'));
console.log(locator.locate('_.parameterized', {x: 'foo'}));
console.log(locator.locate('_.contextual', 'female'));

// Clone: (assets.cleanUnused = false)
const anotherLocator = MessageLocator.from(locator);