Skip to content

Commit

Permalink
fix: Unsupported language is automatically added to preload option #2178
Browse files Browse the repository at this point in the history
  • Loading branch information
adrai committed Apr 29, 2024
1 parent c9e2bf5 commit c1e2f91
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 23.11.3

- fix: Unsupported language is automatically added to preload option [2178](https://github.com/i18next/i18next/issues/2178)

## 23.11.2

- allow defaultValue in nested translation [2174](https://github.com/i18next/i18next/issues/2174)
Expand Down
2 changes: 1 addition & 1 deletion src/i18next.js
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ class I18n extends EventEmitter {
if (typeof lngs === 'string') lngs = [lngs];
const preloaded = this.options.preload || [];

const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);
const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));
// Exit early if all given languages are already preloaded
if (!newLngs.length) {
if (callback) callback();
Expand Down
55 changes: 55 additions & 0 deletions test/runtime/i18next.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -338,4 +338,59 @@ describe('i18next', () => {
});
});
});

describe('#loadLanguages()', () => {
describe('with supportedLngs', () => {
/** @type {import('i18next').i18n} */
let newInstance;
beforeAll(async () => {
newInstance = i18next.createInstance({
fallbackLng: 'en',
supportedLngs: ['en', 'de', 'it'],
preload: ['en', 'de'],
});
await newInstance.init();
});

describe('passing a supported lng', () => {
it('it should extend preload', () => {
newInstance.loadLanguages('it');
expect(newInstance.options.preload).to.include('it');
});
});

describe('passing a non supported lng', () => {
it('it should extend preload', () => {
newInstance.loadLanguages('es');
expect(newInstance.options.preload).not.to.include('es');
});
});
});

describe('without supportedLngs', () => {
/** @type {import('i18next').i18n} */
let newInstance;
beforeAll(async () => {
newInstance = i18next.createInstance({
fallbackLng: 'en',
preload: ['en', 'de'],
});
await newInstance.init();
});

describe('passing a supported lng', () => {
it('it should extend preload', () => {
newInstance.loadLanguages('it');
expect(newInstance.options.preload).to.include('it');
});
});

describe('passing a non supported lng', () => {
it('it should extend preload', () => {
newInstance.loadLanguages('es');
expect(newInstance.options.preload).to.include('es');
});
});
});
});
});

0 comments on commit c1e2f91

Please sign in to comment.