language-object
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']);
isMultilingual(obj, ['en']);
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'
}
}