frontend-i18n.test.js 1019 B

1234567891011121314151617181920212223242526272829
  1. import assert from 'node:assert/strict';
  2. import { test } from 'node:test';
  3. import {
  4. DEFAULT_LOCALE,
  5. createTranslator,
  6. normalizeLocale,
  7. supportedLocales
  8. } from '../src/frontend/i18n/index.js';
  9. test('uses Chinese as the default locale and normalizes supported aliases', () => {
  10. assert.equal(DEFAULT_LOCALE, 'zh-CN');
  11. assert.deepEqual(supportedLocales, ['zh-CN', 'en-US']);
  12. assert.equal(normalizeLocale(), 'zh-CN');
  13. assert.equal(normalizeLocale('zh'), 'zh-CN');
  14. assert.equal(normalizeLocale('en'), 'en-US');
  15. assert.equal(normalizeLocale('fr-FR'), 'zh-CN');
  16. });
  17. test('translates known UI keys and falls back safely', () => {
  18. const zh = createTranslator('zh-CN');
  19. const en = createTranslator('en-US');
  20. assert.equal(zh('common.refresh'), '刷新');
  21. assert.equal(en('common.refresh'), 'Refresh');
  22. assert.equal(zh('auth.loginTitle'), '登录控制台');
  23. assert.equal(en('auth.loginTitle'), 'Sign in to console');
  24. assert.equal(en('missing.translation.key'), 'missing.translation.key');
  25. });