mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-11 12:07:54 +00:00
93ddf427b4
Refs #17
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
APP_LOCALES,
|
|
DEFAULT_LOCALE,
|
|
isAppLocalePreference,
|
|
isAppLocale,
|
|
localeDirection,
|
|
localePluralVariant,
|
|
resolveAppLocale,
|
|
} from './locales';
|
|
|
|
describe('app locale metadata', () => {
|
|
it('keeps the planned locale set stable', () => {
|
|
expect(APP_LOCALES).toEqual(['en', 'zh-CN', 'he', 'fa', 'uk', 'ru']);
|
|
expect(DEFAULT_LOCALE).toBe('en');
|
|
});
|
|
|
|
it('normalizes common system language tags', () => {
|
|
expect(resolveAppLocale('en-US')).toBe('en');
|
|
expect(resolveAppLocale('zh-Hans-CN')).toBe('zh-CN');
|
|
expect(resolveAppLocale('iw-IL')).toBe('he');
|
|
expect(resolveAppLocale('fa-IR')).toBe('fa');
|
|
expect(resolveAppLocale('uk-UA')).toBe('uk');
|
|
expect(resolveAppLocale('ru-RU')).toBe('ru');
|
|
expect(resolveAppLocale('de-DE')).toBe('en');
|
|
});
|
|
|
|
it('marks the planned RTL locales correctly', () => {
|
|
expect(localeDirection('en')).toBe('ltr');
|
|
expect(localeDirection('zh-CN')).toBe('ltr');
|
|
expect(localeDirection('he')).toBe('rtl');
|
|
expect(localeDirection('fa')).toBe('rtl');
|
|
expect(localeDirection('uk')).toBe('ltr');
|
|
expect(localeDirection('ru')).toBe('ltr');
|
|
});
|
|
|
|
it('selects locale-aware plural categories', () => {
|
|
expect(localePluralVariant('en', 1)).toBe('one');
|
|
expect(localePluralVariant('en', 2)).toBe('many');
|
|
expect(localePluralVariant('ru-RU', 1)).toBe('one');
|
|
expect(localePluralVariant('ru-RU', 2)).toBe('few');
|
|
expect(localePluralVariant('ru-RU', 5)).toBe('many');
|
|
expect(localePluralVariant('uk-UA', 2)).toBe('few');
|
|
});
|
|
|
|
it('guards locale values before they reach i18next', () => {
|
|
expect(isAppLocale('en')).toBe(true);
|
|
expect(isAppLocale('fa')).toBe(true);
|
|
expect(isAppLocale('ru')).toBe(true);
|
|
expect(isAppLocale('de')).toBe(false);
|
|
expect(isAppLocale(null)).toBe(false);
|
|
expect(isAppLocalePreference('system')).toBe(true);
|
|
expect(isAppLocalePreference('fa')).toBe(true);
|
|
expect(isAppLocalePreference('de')).toBe(false);
|
|
});
|
|
});
|