Skip to main content

Multilanguage plugin

Languages

English and Spanish are pre-installed by default.

Add language

Returns the added language

await leemons
.getPlugin('multilanguage')
.services.locales.getProvider()
.add('es-ES', 'Español (España)');

/**
* @return [{code: 'es-ES', name: 'Español (España)'}]
* */

Add many languages

Returns the array of languages we are adding

await leemons
.getPlugin('multilanguage')
.services.locales.getProvider()
.addMany([['es-ES', 'Español (España)']]);

/**
* @return [{code: 'es-ES', name: 'Español (España)'}]
* */

Edit language name

Returns the modified language

await leemons
.getPlugin('multilanguage')
.services.locales.getProvider()
.setName('es-ES', 'Español (España) [es-ES]');

/**
* @return {code: 'es-ES', name: 'Español (España) [es-ES]'}
* */

Remove language

Returns true if deleted, otherwise false.

await leemons.getPlugin('multilanguage').services.locales.getProvider().delete('es-ES');

/**
* @return boolean
* */

Language exists

Returns true if exists, otherwise false.

await leemons.getPlugin('multilanguage').services.locales.getProvider().has('es-ES');

/**
* @return boolean
* */

Multiple languages exist

Returns for each language whether it exists or not

await leemons.getPlugin('multilanguage').services.locales.getProvider().hasMany(['es-ES', 'en']);

/**
* @return { 'es-ES': true, 'en': false }
* */

Retrieve language

Returns the specified language if it exists, otherwise null.

await leemons.getPlugin('multilanguage').services.locales.getProvider().get('es-ES');

/**
* @return {code: 'es-ES', name: 'Español (España)'}
* */

Retrieve multiple languages

Returns an array of the specified languages if they exist. If any do not exist, they will not be in the returned array.

await leemons.getPlugin('multilanguage').services.locales.getProvider().getMany(['es-ES', 'en']);

/**
* @return [
* {code: 'es-ES', name: 'Español (España)'},
* {code: 'en', name: 'English'}
* ]
* */

Translations

There are two ways of storing data, public and private.

Everything is used the same, the only difference is that with private only your plugin will be able to access what you have stored.

Private:

await leemons.getPlugin('multilanguage').services.contents.getProvider();

Public:

await leemons.getPlugin('multilanguage').services.common.getProvider();
ATTENTION

From now on, the keys have to follow the following format:

plugins.(name-of-your-plugin).(key-that-you-want-to-specify)

EXAMPLE

If your plugin package is "leemons-plugin-users" and you want to set the "settings" key, it would look like this:

plugins.users.settings

CAUTION

All values must be stored as a string, if it passed as a value anything other than a string will throw an error.

Add translation

Stores a text for your plugin for the specified language with the specified key

const key = 'plugins.example.settings';
const locale = 'es-ES';
const value = 'configuración';

await leemons.getPlugin('multilanguage').services.contents.getProvider().add(key, locale, value);

/**
* @return {key, locale, value}
* */

Add multiples translations to the same key

Same as .add, but to store multiple translations to the same key in one call.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.addManyByKey('plugins.example.save', {
en: 'Save',
'es-ES': 'Guardar',
'es-MX': 'Salvar',
});

/**
* @return [
* {key: 'plugins.example.save', locale: 'en', value: 'Save'},
* {key: 'plugins.example.save', locale: 'es-ES', value: 'Guardar'},
* {key: 'plugins.example.save', locale: 'es-MX', value: 'Salvar'},
* ]
* */

Add in bulk

Add for many languages, many keys with their translations.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.addMany({
en: {
'plugins.example.save': 'Save',
'plugins.example.config': 'Settings',
},
'es-ES': {
'plugins.example.save': 'Guardar',
'plugins.example.config': 'Configuración',
},
});

Edit translation

Edits a translation by resetting its value.

const key = 'plugins.example.settings';
const locale = 'es-ES';
const value = 'Configuración';

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.setValue(key, locale, value);

/**
* @return {key, locale, value}
* */

Edit multiple translations for the same key

Same as .setValue, but to update multiple translations for the same key in one call.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.setKey('plugins.example.save', {
en: 'Save',
'es-ES': 'Guardar',
'es-MX': 'Salvar',
});

/**
* @return [
* {key: 'plugins.example.save', locale: 'en', value: 'Save'},
* {key: 'plugins.example.save', locale: 'es-ES', value: 'Guardar'},
* {key: 'plugins.example.save', locale: 'es-MX', value: 'Salvar'},
* ]
* */

Edit in bulk

Edit many languages and many keys with their translations.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.setMany({
en: {
'plugins.example.save': 'save',
'plugins.example.config': 'configuration',
},
'es-ES': {
'plugins.example.save': 'guardar',
'plugins.example.config': 'configuración',
},
});

Remove translation for a language

Removes the translation of that key for that language.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.delete('plugins.example.save', 'es-ES');

/**
* @return boolean
* */

Remove translation for all languages

Removes all translations in all languages for the specified key.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.deleteAll({ key: 'plugins.example.save' });

Remove translation for all languages where its key begins with a prefix

Removes all translations, in all languages, for stored keys starting with the specified string.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.deleteKeyStartsWith('plugin.example');

Translation exists

Check if a translation exists for that key and language.

const key = 'plugins.example.save';
const locale = 'es-ES';

await leemons.getPlugin('multilanguage').services.contents.getProvider().has(key, locale);

/**
* @return boolean
* */

Translation count

Returns the number of translations that exist for the specified key.

const key = 'plugins.example.save';
await leemons.getPlugin('multilanguage').services.contents.getProvider().countLocalesWithKey(key);

/**
* @return number
* */

Count translations by prefix and language

Returns the number of translations that exist for that prefix in that language.

const key = 'plugins.example';
const locale = 'es-ES';
await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.countKeyStartsWith(key, locale);

/**
* @return number
* */

Retrieve translation

Returns the translation if it exists for the specified key and language.

const key = 'plugins.example.save';
const locale = 'es-ES';

await leemons.getPlugin('multilanguage').services.contents.getProvider().get(key, locale);

/**
* @return {key, locale, value: 'Guardar'}
* */

Retrieve translations by key

Given a key, returns all translations in all available languages.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.getWithKey('plugins.example.save');

/**
* @return [
* {key: 'plugins.example.save', locale: 'es-ES', value: 'Guardar'},
* {key: 'plugins.example.save', locale: 'en', value: 'Save'},
* {key: 'plugins.example.save', locale: 'es-MX', value: 'Salvar'}
* ]
* */

Retrieve value from translation

Same as .get, but already returns the value.

const key = 'plugins.example.save';
const locale = 'es-ES';

await leemons.getPlugin('multilanguage').services.contents.getProvider().getValue(key, locale);

/**
* @return string Guardar
* */

Retrieve values from translations per key

Same as .getWithKey, but returns the value for each language.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.getLocaleValueWithKey('plugins.example.save');

/**
* @return { 'es-ES': 'Guardar', 'en': 'Save', 'es-MX': 'Salvar' }
* */

Retrieve translations by language

Returns all translations given a language.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.getKeyValueWithLocale('es-ES');

/**
* @return { 'plugins.example.save': 'Guardar', 'plugins.example.config': 'Configuración' }
* */
await leemons.getPlugin('multilanguage').services.contents.getProvider().getWithLocale('es-ES');

/**
* @return [
* {key: 'plugins.example.save', locale: 'es-ES', value: 'Guardar'},
* {key: 'plugins.example.config', locale: 'es-ES', value: 'Configuración'}
* ]
* */

Retrieve translations by key prefix

Returns all translations where the key begins with the specified text for the specified language.

await leemons
.getPlugin('multilanguage')
.services.contents.getProvider()
.getKeyStartsWith('plugins.example', 'es-ES');

/**
* @return [
* {key: 'plugins.example.save', locale: 'es-ES', value: 'Guardar'},
* {key: 'plugins.example.config', locale: 'es-ES', value: 'Configuración'}
* ]
* */