From c45f7987e31dd934c2dd7adcd4f96c3d5c1f15ff Mon Sep 17 00:00:00 2001 From: wujunchen Date: Wed, 20 May 2026 13:23:56 +0800 Subject: [PATCH] fix: avoid stringifying locale objects Change-Id: Ic9557acc384d5a23b3cbaaae9fea2678e9afd661 --- src/i18n.ts | 8 ++++---- tests/direct-i18n.test.js | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/i18n.ts b/src/i18n.ts index 98b4bd1..323cc4c 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -6,10 +6,10 @@ import type { PluginSettings } from './types'; export { LOCALE_OVERRIDES, STRINGS } from './i18n-strings'; function supportedBaseLanguage(value: unknown): string | null { - const base = String(value || '') - .trim() - .toLowerCase() - .split(/[-_]/)[0]; + if (typeof value !== 'string') { + return null; + } + const base = value.trim().toLowerCase().split(/[-_]/)[0]; return base && STRINGS[base] ? base : null; } diff --git a/tests/direct-i18n.test.js b/tests/direct-i18n.test.js index 2839c10..be87c0f 100644 --- a/tests/direct-i18n.test.js +++ b/tests/direct-i18n.test.js @@ -35,6 +35,7 @@ const { assert, requireBundledModule, cleanup } = require('./direct-test-setup') assert.strictEqual(i18n.resolveUiLanguage({ uiLanguage: 'es' }), 'es'); assert.strictEqual(i18n.resolveUiLanguage(null), 'en'); assert.strictEqual(i18n.resolveUiLanguage({ uiLanguage: 'auto' }), 'en'); + assert.strictEqual(i18n.resolveUiLanguage({ uiLanguage: { toString: () => 'ja' } }), 'en'); const originalNavigator = Object.getOwnPropertyDescriptor(globalThis, 'navigator'); const setNavigatorLanguage = (language) => {