44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
|
|
import { DEFAULT_LOCALE, isLocale, isSupportedLocaleValue, localeConfigValue, normalizeLocale } from './languages'
|
|
|
|
describe('desktop i18n languages', () => {
|
|
it('normalizes supported locale aliases', () => {
|
|
expect(normalizeLocale('en')).toBe('en')
|
|
expect(normalizeLocale('EN-US')).toBe('en')
|
|
expect(normalizeLocale('zh')).toBe('zh')
|
|
expect(normalizeLocale('zh-CN')).toBe('zh')
|
|
expect(normalizeLocale('zh-Hans')).toBe('zh')
|
|
expect(normalizeLocale(' zh_hans_cn ')).toBe('zh')
|
|
expect(normalizeLocale('zh-Hant')).toBe('zh-hant')
|
|
expect(normalizeLocale('zh-TW')).toBe('zh-hant')
|
|
expect(normalizeLocale('zh_HK')).toBe('zh-hant')
|
|
expect(normalizeLocale('ja')).toBe('ja')
|
|
expect(normalizeLocale('ja-JP')).toBe('ja')
|
|
})
|
|
|
|
it('falls back to English for empty or unsupported values', () => {
|
|
expect(normalizeLocale(null)).toBe(DEFAULT_LOCALE)
|
|
expect(normalizeLocale('')).toBe(DEFAULT_LOCALE)
|
|
expect(normalizeLocale('de')).toBe(DEFAULT_LOCALE)
|
|
})
|
|
|
|
it('distinguishes exact locale ids from supported config aliases', () => {
|
|
expect(isSupportedLocaleValue('zh-CN')).toBe(true)
|
|
expect(isSupportedLocaleValue('zh-TW')).toBe(true)
|
|
expect(isSupportedLocaleValue('ja-JP')).toBe(true)
|
|
expect(isSupportedLocaleValue('de')).toBe(false)
|
|
expect(isLocale('zh-CN')).toBe(false)
|
|
expect(isLocale('zh')).toBe(true)
|
|
expect(isLocale('zh-hant')).toBe(true)
|
|
expect(isLocale('ja')).toBe(true)
|
|
})
|
|
|
|
it('returns the persisted config value for supported locales', () => {
|
|
expect(localeConfigValue('en')).toBe('en')
|
|
expect(localeConfigValue('zh')).toBe('zh')
|
|
expect(localeConfigValue('zh-hant')).toBe('zh-hant')
|
|
expect(localeConfigValue('ja')).toBe('ja')
|
|
})
|
|
})
|