126 lines
3.6 KiB
JavaScript
126 lines
3.6 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
import i18n from '../../src/js/core/i18n';
|
||
|
import {expect} from 'chai';
|
||
|
|
||
|
describe('i18n', () => {
|
||
|
|
||
|
// cache original language
|
||
|
const english = i18n.en;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
i18n.language('en', english);
|
||
|
});
|
||
|
|
||
|
describe('#language', () => {
|
||
|
|
||
|
it('return the default language (English)', () => {
|
||
|
expect(i18n.language()).to.equal('en');
|
||
|
});
|
||
|
|
||
|
it('can override the default language strings with new ones', () => {
|
||
|
|
||
|
i18n.language('en', {'a': 'This is a test'});
|
||
|
expect(i18n.lang).to.equal('en');
|
||
|
expect(i18n.en).to.deep.equal({'a': 'This is a test'});
|
||
|
});
|
||
|
|
||
|
it ('assign any language and its translations', () => {
|
||
|
i18n.language('tt');
|
||
|
expect(i18n.tt).to.deep.equal(english);
|
||
|
});
|
||
|
|
||
|
it ('assign default language (English) if not translations found for specified language', () => {
|
||
|
i18n.language('tt', {'a': 'This is a test'});
|
||
|
expect(i18n.tt).to.deep.equal({'a': 'This is a test'});
|
||
|
});
|
||
|
|
||
|
it('check if language code passed is valid', () => {
|
||
|
|
||
|
expect(() => {
|
||
|
i18n.language(12345);
|
||
|
}).to.throw(TypeError);
|
||
|
|
||
|
expect(() => {
|
||
|
i18n.language('xxxx');
|
||
|
}).to.throw(TypeError);
|
||
|
|
||
|
expect(() => {
|
||
|
i18n.language('x', {});
|
||
|
}).to.throw(TypeError);
|
||
|
|
||
|
expect(() => {
|
||
|
i18n.language('xxx', {});
|
||
|
}).not.to.throw(TypeError);
|
||
|
|
||
|
expect(() => {
|
||
|
i18n.language('xx-xx', {});
|
||
|
}).not.to.throw(TypeError);
|
||
|
|
||
|
expect(() => {
|
||
|
i18n.language('xxx_XX', {});
|
||
|
}).not.to.throw(TypeError);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('#t', () => {
|
||
|
|
||
|
it('check if language exists; otherwise, it will print the string escaping HTML', () => {
|
||
|
i18n.language('xx', {});
|
||
|
expect(i18n.t('<p>Hello, "world" & everybody</p>')).to.equal('<p>Hello, "world" & everybody</p>');
|
||
|
expect(i18n.t(246437)).to.equal(246437);
|
||
|
});
|
||
|
|
||
|
it('translate strings or returns the specified value, replacing %1 by a specified number', () => {
|
||
|
expect(i18n.t('This is test #%1', 53)).to.equal('This is test #53');
|
||
|
});
|
||
|
|
||
|
it('translate to a specific language', () => {
|
||
|
|
||
|
i18n.language('ko', {
|
||
|
"mejs.plural-form": 0,
|
||
|
'mejs.play': '작동'
|
||
|
});
|
||
|
expect(i18n.t('mejs.play')).to.equal('작동');
|
||
|
|
||
|
i18n.language('es', {
|
||
|
"mejs.plural-form": 1,
|
||
|
'mejs.play': 'Reproducción'
|
||
|
});
|
||
|
expect(i18n.t('mejs.play')).to.equal('Reproducción');
|
||
|
|
||
|
});
|
||
|
|
||
|
it('pluralize a string properly in different languages', () => {
|
||
|
|
||
|
i18n.language('ko', {
|
||
|
"mejs.plural-form": 0,
|
||
|
'mejs.time-skip-back': '%1초 를 뒤로 건너뛰세요'
|
||
|
});
|
||
|
expect(i18n.t('mejs.time-skip-back', 1)).to.equal('1초 를 뒤로 건너뛰세요');
|
||
|
expect(i18n.t('mejs.time-skip-back', 30)).to.equal('30초 를 뒤로 건너뛰세요');
|
||
|
|
||
|
i18n.language('es', {
|
||
|
"mejs.plural-form": 1,
|
||
|
'mejs.time-jump-forward': ['Adelantar 1 segundo', 'Adelantar %1 segundos'],
|
||
|
'mejs.fullscreen-off': 'Desconectar pantalla completa'
|
||
|
});
|
||
|
expect(i18n.t('mejs.time-jump-forward', 1)).to.equal('Adelantar 1 segundo');
|
||
|
expect(i18n.t('mejs.time-jump-forward', 30)).to.equal('Adelantar 30 segundos');
|
||
|
expect(i18n.t('mejs.fullscreen-off', 400)).to.equal('Desconectar pantalla completa');
|
||
|
expect(i18n.t('Hola', 400)).to.equal('Hola');
|
||
|
|
||
|
|
||
|
i18n.language('ar', {});
|
||
|
expect(i18n.t('This is a test', 1)).to.equal('This is a test');
|
||
|
expect(i18n.t('This is test #%1', 1)).to.equal('This is test #1');
|
||
|
expect(i18n.t('This is test #%1', 30)).to.equal('This is test #30');
|
||
|
|
||
|
|
||
|
i18n.language('tt', {'a': 'This is a test'});
|
||
|
expect(i18n.t('a')).to.equal('This is a test');
|
||
|
expect(i18n.t('This is a test', 1)).to.equal('This is a test');
|
||
|
expect(i18n.t('This is test #%1', 30)).to.equal('This is test #30');
|
||
|
});
|
||
|
});
|
||
|
});
|