Skip to content

Commit

Permalink
Added getLocales method to localization
Browse files Browse the repository at this point in the history
  • Loading branch information
adrenalin committed Mar 17, 2021
1 parent d70f5ee commit 1504f42
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 1 deletion.
33 changes: 33 additions & 0 deletions lib/Localization.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,39 @@ module.exports = class Localization {
return Localization.registerLocales
}

/**
* Get locales
*
* @static
* @param { string } [lang] Language constraint
* @return { object } Registered locales
*/
static getLocales (lang = null) {
if (!lang) {
return locales
}

const byLanguage = {}

for (const key in locales) {
const locale = locales[key][lang]
if (locale) {
byLanguage[key] = locale
}
}

return byLanguage
}

/**
* Get locales
*
* @return { object } Registered locales
*/
getLocales (...args) {
return Localization.getLocales(...args)
}

/**
* Unregister locales
*
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "helpers.js",
"version": "0.18.1",
"version": "0.18.2",
"description": "Miscellaneous helpers",
"main": "index.js",
"scripts": {
Expand Down
56 changes: 56 additions & 0 deletions tests/localization/getLocales.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
const expect = require('expect.js')
const Localization = require('../../lib/Localization')

describe('Localization getLocales', () => {
it('should return all locales', (done) => {
const locales = {
foo: {
en: 'Foo en',
fi: 'Foo fi'
},
bar: {
en: 'Bar en',
fi: 'Bar fi'
}
}

Localization.registerLocales(locales)
const l10n = new Localization()

const savedStatic = Localization.getLocales()
const savedInstance = l10n.getLocales()

for (const key in locales) {
expect(locales[key]).to.eql(savedStatic[key])
expect(locales[key]).to.eql(savedInstance[key])
}

done()
})

it('should return all locales by language', (done) => {
const locales = {
foo: {
en: 'Foo en',
fi: 'Foo fi'
},
bar: {
en: 'Bar en',
fi: 'Bar fi'
}
}

Localization.registerLocales(locales)
const l10n = new Localization()

const savedStatic = Localization.getLocales('en')
const savedInstance = l10n.getLocales('fi')

for (const key in locales) {
expect(locales[key].en).to.eql(savedStatic[key])
expect(locales[key].fi).to.eql(savedInstance[key])
}

done()
})
})

0 comments on commit 1504f42

Please sign in to comment.