35 lines
1.6 KiB
TypeScript
35 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
import { normalizeLocale, translate } from '../src/i18n';
|
|
import { en, ja, zhCN, zhTW } from '../src/i18n/resources';
|
|
import { jaOverrides } from '../src/i18n/ja';
|
|
|
|
describe('i18n', () => {
|
|
it('normalizes English variants and keeps Chinese as the fallback', () => {
|
|
expect(normalizeLocale('en-US')).toBe('en');
|
|
expect(normalizeLocale('en')).toBe('en');
|
|
expect(normalizeLocale('zh-CN')).toBe('zh-CN');
|
|
expect(normalizeLocale('zh-TW')).toBe('zh-TW');
|
|
expect(normalizeLocale('zh-Hant-HK')).toBe('zh-TW');
|
|
expect(normalizeLocale('ja-JP')).toBe('ja');
|
|
expect(normalizeLocale('unsupported')).toBe('zh-CN');
|
|
});
|
|
|
|
it('translates messages and interpolates variables', () => {
|
|
expect(translate('zh-CN', 'kernel.install.installingVersion', { version: '1.2.3' }))
|
|
.toBe('正在安装 1.2.3');
|
|
expect(translate('en', 'kernel.install.installingVersion', { version: '1.2.3' }))
|
|
.toBe('Installing 1.2.3');
|
|
expect(translate('zh-TW', 'kernel.install.installingVersion', { version: '1.2.3' }))
|
|
.toBe('正在安裝 1.2.3');
|
|
expect(translate('ja', 'kernel.install.installingVersion', { version: '1.2.3' }))
|
|
.toBe('1.2.3 をインストールしています');
|
|
});
|
|
|
|
it('keeps both locale dictionaries structurally aligned', () => {
|
|
expect(Object.keys(en).sort()).toEqual(Object.keys(zhCN).sort());
|
|
expect(Object.keys(zhTW).sort()).toEqual(Object.keys(zhCN).sort());
|
|
expect(Object.keys(ja).sort()).toEqual(Object.keys(zhCN).sort());
|
|
expect(Object.keys(jaOverrides).sort()).toEqual(Object.keys(zhCN).sort());
|
|
});
|
|
});
|