mirror of
https://github.com/cupcakearmy/svelte-i18n.git
synced 2024-11-16 09:59:58 +01:00
110 lines
2.7 KiB
JavaScript
110 lines
2.7 KiB
JavaScript
import { dictionary, locale, format } from '../src/index'
|
|
|
|
let _
|
|
let currentLocale
|
|
|
|
const dict = {
|
|
pt: {
|
|
hi: 'olá você',
|
|
'switch.lang': 'Trocar idioma',
|
|
greeting: {
|
|
ask: 'Por favor, digite seu nome',
|
|
message: 'Olá {name}, como vai?',
|
|
},
|
|
photos:
|
|
'Você {n, plural, =0 {não tem fotos.} =1 {tem uma foto.} other {tem # fotos.}}',
|
|
cats: 'Tenho {n, number} {n,plural,=0{gatos}one{gato}other{gatos}}',
|
|
},
|
|
en: {
|
|
hi: 'hi yo',
|
|
'switch.lang': 'Switch language',
|
|
greeting: {
|
|
ask: 'Please type your name',
|
|
message: 'Hello {name}, how are you?',
|
|
},
|
|
photos:
|
|
'You have {n, plural, =0 {no photos.} =1 {one photo.} other {# photos.}}',
|
|
cats: 'I have {n, number} {n,plural,one{cat}other{cats}}',
|
|
},
|
|
}
|
|
|
|
format.subscribe(formatFn => {
|
|
_ = formatFn
|
|
})
|
|
dictionary.set(dict)
|
|
locale.subscribe(l => (currentLocale = l))
|
|
locale.set('pt')
|
|
|
|
it('should change locale', () => {
|
|
locale.set('pt')
|
|
expect(currentLocale).toBe('pt')
|
|
locale.set('en')
|
|
expect(currentLocale).toBe('en')
|
|
})
|
|
|
|
it('should fallback to message id if id is not found', () => {
|
|
expect(_('batatinha')).toBe('batatinha')
|
|
})
|
|
|
|
it('should translate to current locale', () => {
|
|
locale.set('pt')
|
|
expect(_('switch.lang')).toBe('Trocar idioma')
|
|
locale.set('en')
|
|
expect(_('switch.lang')).toBe('Switch language')
|
|
})
|
|
|
|
it('should translate to passed locale', () => {
|
|
expect(_('switch.lang', 'pt')).toBe('Trocar idioma')
|
|
expect(_('switch.lang', 'en')).toBe('Switch language')
|
|
})
|
|
|
|
it('should interpolate message with variables', () => {
|
|
expect(_('greeting.message', { name: 'Chris' })).toBe(
|
|
'Hello Chris, how are you?',
|
|
)
|
|
})
|
|
|
|
it('should interpolate message with variables according to passed locale', () => {
|
|
expect(_('greeting.message', { name: 'Chris' }, 'pt')).toBe(
|
|
'Olá Chris, como vai?',
|
|
)
|
|
})
|
|
|
|
describe('utilities', () => {
|
|
beforeAll(() => {
|
|
locale.set('en')
|
|
})
|
|
|
|
it('should capital a translated message', () => {
|
|
expect(_.capital('hi')).toBe('Hi yo')
|
|
})
|
|
|
|
it('should title a translated message', () => {
|
|
expect(_.title('hi')).toBe('Hi Yo')
|
|
})
|
|
|
|
it('should lowercase a translated message', () => {
|
|
expect(_.lower('hi')).toBe('hi yo')
|
|
})
|
|
|
|
it('should uppercase a translated message', () => {
|
|
expect(_.upper('hi')).toBe('HI YO')
|
|
})
|
|
|
|
const date = new Date(2019, 3, 24, 23, 45)
|
|
it('should format a time value', () => {
|
|
locale.set('en')
|
|
expect(_.time(date)).toBe('11:45 PM')
|
|
expect(_.time(date, 'medium')).toBe('11:45:00 PM')
|
|
})
|
|
|
|
it('should format a date value', () => {
|
|
expect(_.date(date)).toBe('4/24/19')
|
|
expect(_.date(date, 'medium')).toBe('Apr 24, 2019')
|
|
})
|
|
// number
|
|
it('should format a date value', () => {
|
|
expect(_.number(123123123)).toBe('123,123,123')
|
|
})
|
|
})
|