Skip to content

Commit f0f9ebb

Browse files
committed
perf(i18n): 优化国际化资源加载方式
- 移除动态导入和 createResource,改用静态导入和即时转换 - 添加英语和中文的静态导入 - 根据当前语言选择相应的静态资源并进行扁平化处理 - 使用 translator 函数创建翻译器
1 parent 35e5344 commit f0f9ebb

1 file changed

Lines changed: 19 additions & 10 deletions

File tree

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
1-
import * as i18n from '@solid-primitives/i18n';
2-
import { type Accessor, createResource } from 'solid-js';
3-
import type { GlobalDictionary, RawGlobalDictionary } from '@/locales';
1+
import { flatten, translator } from '@solid-primitives/i18n';
2+
import type { Accessor } from 'solid-js';
3+
import type { RawGlobalDictionary } from '@/locales';
4+
import en from '@/locales/en';
45
import zhCN from '@/locales/zh-CN';
56

6-
async function fetchDictionary<T>(locale: T): Promise<GlobalDictionary> {
7-
const dict: RawGlobalDictionary = (await import(`@/locales/${locale}`)).default;
8-
return i18n.flatten(dict);
9-
}
10-
117
export default function createGlobalTranslator<T extends string>(currentLocale: Accessor<T>) {
12-
const [dict] = createResource(currentLocale, fetchDictionary, { initialValue: i18n.flatten(zhCN) });
13-
const t = i18n.translator(dict);
8+
const dictionary = () => {
9+
let rawDictionary: RawGlobalDictionary;
10+
switch (currentLocale()) {
11+
case 'zh-CN':
12+
rawDictionary = zhCN;
13+
break;
14+
case 'en':
15+
rawDictionary = en;
16+
break;
17+
default:
18+
rawDictionary = zhCN;
19+
}
20+
return flatten(rawDictionary);
21+
};
22+
const t = translator(dictionary);
1423
return t;
1524
}

0 commit comments

Comments
 (0)