@ambassify/language-object

Detection and conversion library for language objects.

Usage no npm install needed!

<script type="module">
  import ambassifyLanguageObject from 'https://cdn.skypack.dev/@ambassify/language-object';
</script>

README

language-object

CircleCI

Installation

npm install --save @ambassify/language-object

Usage

This package expose a parse-js parser, a method to test for multilingual objects and a method to cast objects.

parser

For more info on parse-js see the documentation.

Example:

const parser = require('@ambassify/language-object/parser');

parse.register('languageObject', require())
parse().json().languageObject().parse({
    nl: 'hallo',
    en: 'hello'
});

Returns

{
    __type: 'multilingual',
    nl: 'hallo',
    en: 'hello'
}

isMultilingual

isMultilingual will check if the __type property equals multilingual if set.

  • If the __type property is set, but does not equal multilingual it will return false.
  • If the __type property is undefined this method will check whether the only enumerable properties are valid languages as supplied by the second argument to isMultilingual.
  • If __type is missing and languages is not set or empty it will always return false.
isMultilingual(languageObject, [languages])

Example:

const isMultilingual = require('@ambassify/language-object/ismultilingual');

const obj = {
    nl: 'hallo',
    en: 'hello'
};

isMultilingual(obj, ['en','nl']); // true
isMultilingual(obj, ['en']); // false

cast

Casts language-object to include __type and valid language keys.

Unless force is set to true, it uses isMultilingual to validate objects first, if an object is not valid it will return null.

cast(languageObject, [languages], [force=false])

Example:

const cast = require('@ambassify/language-object/cast');

const obj = {
    nl: 'hallo',
    en: 'hello'
};

cast(obj, ['en','nl']);

Returns

{
    __type: 'multilingual',
    nl: 'hallo',
    en: 'hello'
}

translate

Takes in an object an selects only the language key that you would like to have selected.

cast(sourceObject, [selectLanguage], [availableLanguages])

Example:

const cast = require('@ambassify/language-object/translate');

const obj = {
    hi_nl: 'hallo',
    hi_en: 'hello',
    nested: {
        regular: 'key',
        value_nl: 'in dutch',
        value_en: 'in english'
    }
};

translate(obj, 'en', ['en','nl']);

Returns

{
    hi: 'hello',
    nested: {
        regular: 'key',
        value: 'in english'
    }
}