From 9c73d5cf123a27360f7008b0ee542231f95071cc Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Tue, 1 Aug 2023 01:24:54 +0800 Subject: [PATCH] refactor: add onLanguageLoaded event on setWebMetaFormConfig --- client/shared/i18n/index.ts | 11 ++++++++++- client/shared/index.tsx | 1 + client/shared/utils/date-helper.ts | 4 ++-- client/web/src/init.tsx | 7 +++++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/client/shared/i18n/index.ts b/client/shared/i18n/index.ts index 3a18b82a..c132d0e2 100644 --- a/client/shared/i18n/index.ts +++ b/client/shared/i18n/index.ts @@ -123,10 +123,19 @@ export function getLanguage(): AllowedLanguage { return i18next.language as AllowedLanguage; } +/** + * 语言加载 + */ +export function onLanguageLoaded( + cb: (loaded: { [language: string]: { [namespace: string]: boolean } }) => void +) { + i18next.on('loaded', cb); +} + /** * 监听语言变更 */ -export function onLanguageChange(cb: (lang: string) => void) { +export function onLanguageChanged(cb: (lang: string) => void) { i18next.on('languageChanged', cb); } diff --git a/client/shared/index.tsx b/client/shared/index.tsx index 3eedbc5f..611c0301 100644 --- a/client/shared/index.tsx +++ b/client/shared/index.tsx @@ -51,6 +51,7 @@ export { setLanguage, getLanguage, useTranslation, + onLanguageLoaded, } from './i18n'; export type { AllowedLanguage } from './i18n'; export { Trans } from './i18n/Trans'; diff --git a/client/shared/utils/date-helper.ts b/client/shared/utils/date-helper.ts index 58a7c791..60f2dd86 100644 --- a/client/shared/utils/date-helper.ts +++ b/client/shared/utils/date-helper.ts @@ -2,7 +2,7 @@ import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; // 导入插件 import duration from 'dayjs/plugin/duration'; // 导入插件 import 'dayjs/locale/zh-cn'; // 导入本地化语言 -import { onLanguageChange } from '../i18n'; +import { onLanguageChanged } from '../i18n'; /** * Reference: https://day.js.org/ @@ -11,7 +11,7 @@ import { onLanguageChange } from '../i18n'; dayjs.extend(relativeTime); dayjs.extend(duration); dayjs.locale('zh-cn'); // 默认使用中文 -onLanguageChange((lang) => { +onLanguageChanged((lang) => { if (lang === 'en-US') { dayjs.locale('en'); return; diff --git a/client/web/src/init.tsx b/client/web/src/init.tsx index af14254d..686b5306 100644 --- a/client/web/src/init.tsx +++ b/client/web/src/init.tsx @@ -15,6 +15,7 @@ import { setErrorHook, showToasts, parseUrlStr, + onLanguageLoaded, } from 'tailchat-shared'; import { getPopupContainer } from './utils/dom-helper'; import { getUserJWT } from './utils/jwt-helper'; @@ -72,8 +73,10 @@ setGlobalLoading((text) => { setImageUrlParser(parseUrlStr); -setWebMetaFormConfig({ - submitLabel: t('提交'), +onLanguageLoaded(() => { + setWebMetaFormConfig({ + submitLabel: t('提交'), + }); }); const backToLoginPage = (() => {