From d0a1ffe6e21e81f64b1c9199123be6936dbc4a01 Mon Sep 17 00:00:00 2001 From: balibabu <cike8899@users.noreply.github.com> Date: Mon, 8 Apr 2024 10:41:03 +0800 Subject: [PATCH] Fixed an issue where refreshing the login page caused the language settings to become invalid. #249 (#250) ### What problem does this PR solve? Fixed an issue where refreshing the login page caused the language settings to become invalid. Issue link: #249 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- web/src/app.tsx | 10 +++++++--- web/src/layouts/components/header/index.tsx | 11 +++++------ web/src/locales/en.ts | 4 +++- web/src/locales/zh.ts | 8 +++++--- .../components/chunk-creating-modal/index.tsx | 4 ++-- web/src/pages/add-knowledge/index.tsx | 8 ++------ web/src/pages/chat/index.tsx | 2 +- web/src/pages/user-setting/model.ts | 1 + 8 files changed, 26 insertions(+), 22 deletions(-) diff --git a/web/src/app.tsx b/web/src/app.tsx index e33201a..f4aa150 100644 --- a/web/src/app.tsx +++ b/web/src/app.tsx @@ -1,4 +1,4 @@ -import i18next from '@/locales/config'; +import { default as i18n, default as i18next } from '@/locales/config'; import { App, ConfigProvider, ConfigProviderProps } from 'antd'; import enUS from 'antd/locale/en_US'; import zhCN from 'antd/locale/zh_CN'; @@ -18,8 +18,12 @@ const RootProvider = ({ children }: React.PropsWithChildren) => { }); useEffect(() => { - i18next.changeLanguage(storage.getLanguage()); - }, [locale]); + // Because the language is saved in the backend, a token is required to obtain the api. However, the login page cannot obtain the language through the getUserInfo api, so the language needs to be saved in localstorage. + const lng = storage.getLanguage(); + if (lng) { + i18n.changeLanguage(lng); + } + }, []); return ( <ConfigProvider diff --git a/web/src/layouts/components/header/index.tsx b/web/src/layouts/components/header/index.tsx index d0d2827..3affb22 100644 --- a/web/src/layouts/components/header/index.tsx +++ b/web/src/layouts/components/header/index.tsx @@ -1,16 +1,15 @@ import { ReactComponent as StarIon } from '@/assets/svg/chat-star.svg'; import { ReactComponent as KnowledgeBaseIcon } from '@/assets/svg/knowledge-base.svg'; import { ReactComponent as Logo } from '@/assets/svg/logo.svg'; +import { useTranslate } from '@/hooks/commonHooks'; +import { useNavigateWithFromState } from '@/hooks/routeHook'; import { Layout, Radio, Space, theme } from 'antd'; +import { useCallback, useMemo } from 'react'; +import { useLocation } from 'umi'; import Toolbar from '../right-toolbar'; import styles from './index.less'; -import { useNavigateWithFromState } from '@/hooks/routeHook'; -import { useCallback, useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { useLocation } from 'umi'; - const { Header } = Layout; const RagHeader = () => { @@ -19,7 +18,7 @@ const RagHeader = () => { } = theme.useToken(); const navigate = useNavigateWithFromState(); const { pathname } = useLocation(); - const { t } = useTranslation('translation', { keyPrefix: 'header' }); + const { t } = useTranslate('header'); const tagsData = useMemo( () => [ diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 487b5c3..661af3c 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -129,6 +129,7 @@ export default { uploadTitle: 'Click or drag file to this area to upload', uploadDescription: 'Support for a single or bulk upload. Strictly prohibited from uploading company data or other banned files.', + chunk: 'Chunk', }, knowledgeConfiguration: { titleDescription: @@ -256,6 +257,7 @@ export default { chunkMessage: 'Please input value!', }, chat: { + createAssistant: 'Create an Assistant', assistantSetting: 'Assistant Setting', promptEngine: 'Prompt Engine', modelSetting: 'Model Setting', @@ -383,7 +385,7 @@ export default { img2txtModel: 'Img2txt model', img2txtModelTip: 'The default multi-module model all the newly created knowledgebase will use. It can describe a picture or video.', - sequence2txtModel: 'Img2txt model', + sequence2txtModel: 'Sequence2txt model', sequence2txtModelTip: 'The default ASR model all the newly created knowledgebase will use. Use this model to translate voices to corresponding text.', workspace: 'Workspace', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index aa79895..e2165ea 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -71,7 +71,7 @@ export default { searchFiles: 'ćśç´˘ć–‡ä»¶', localFiles: '本地文件', emptyFiles: '新建空文件', - chunkNumber: '模块数', + chunkNumber: 'ĺ†ĺť—ć•°', uploadDate: 'ä¸ŠäĽ ć—Ąćśź', chunkMethod: '解ćžć–ąćł•', enabled: 'ĺŻç”¨', @@ -94,7 +94,7 @@ export default { testTextPlaceholder: '请输入您的问é˘ďĽ', testingLabel: '测试', similarity: 'ć··ĺ相似度', - termSimilarity: '术čŻç›¸äĽĽĺş¦', + termSimilarity: '关键词相似度', vectorSimilarity: 'ĺ‘量相似度', hits: 'ĺ‘˝ä¸ć•°', view: 'çś‹ćł•', @@ -126,6 +126,7 @@ export default { uploadTitle: '点击ć–拖拽文件至ć¤ĺŚşĺźźĺŤłĺŹŻä¸ŠäĽ ', uploadDescription: '支ćŚĺŤ•ć¬ˇć–ć‰ąé‡Źä¸ŠäĽ ă€‚ 严ç¦ä¸ŠäĽ 公司数据ć–其他违ç¦ć–‡ä»¶ă€‚', + chunk: '解ćžĺť—', }, knowledgeConfiguration: { titleDescription: '在这里更新您的知识库详细信ćŻďĽŚĺ°¤ĺ…¶ćŻč§Łćžć–ąćł•ă€‚', @@ -248,6 +249,7 @@ export default { chunkMessage: '请输入值ďĽ', }, chat: { + createAssistant: '新建助ç†', assistantSetting: '助ç†č®ľç˝®', promptEngine: 'ćŹç¤şĺĽ•ć“Ž', modelSetting: '模型设置', @@ -368,7 +370,7 @@ export default { img2txtModel: 'Img2txt模型', img2txtModelTip: '所有新ĺ›ĺ»şçš„知识库é˝ĺ°†ä˝żç”¨é»č®¤çš„多模块模型。 ĺ®ĺŹŻä»ĄćŹŹčż°ĺ›ľç‰‡ć–视频。', - sequence2txtModel: 'Img2txt模型', + sequence2txtModel: 'Sequence2txt模型', sequence2txtModelTip: '所有新ĺ›ĺ»şçš„知识库é˝ĺ°†ä˝żç”¨é»č®¤çš„ ASR 模型。 使用ć¤ć¨ˇĺž‹ĺ°†čŻéźłçż»čŻ‘为相应的文本。', workspace: '工作空间', diff --git a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx index 93f2382..23020b2 100644 --- a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx @@ -1,7 +1,7 @@ import { useDeleteChunkByIds } from '@/hooks/knowledgeHook'; import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks'; import { DeleteOutlined } from '@ant-design/icons'; -import { Checkbox, Form, Input, Modal, Space } from 'antd'; +import { Checkbox, Divider, Form, Input, Modal, Space } from 'antd'; import React, { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch, useSelector } from 'umi'; @@ -115,7 +115,7 @@ const ChunkCreatingModal: React.FC<kFProps> = ({ doc_id, chunkId }) => { </section> {chunkId && ( <section> - <p>{t('chunk.function')} *</p> + <Divider></Divider> <Space size={'large'}> <Checkbox onChange={handleCheck} checked={checked}> {t('chunk.enabled')} diff --git a/web/src/pages/add-knowledge/index.tsx b/web/src/pages/add-knowledge/index.tsx index 68df603..f27d9e3 100644 --- a/web/src/pages/add-knowledge/index.tsx +++ b/web/src/pages/add-knowledge/index.tsx @@ -10,11 +10,7 @@ import { useEffect, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { Link, Outlet, useDispatch, useLocation } from 'umi'; import Siderbar from './components/knowledge-sidebar'; -import { - KnowledgeDatasetRouteKey, - KnowledgeRouteKey, - datasetRouteMap, -} from './constant'; +import { KnowledgeDatasetRouteKey, KnowledgeRouteKey } from './constant'; import styles from './index.less'; const KnowledgeAdding = () => { @@ -55,7 +51,7 @@ const KnowledgeAdding = () => { if (datasetActiveKey) { items.push({ - title: datasetRouteMap[datasetActiveKey], + title: t(`knowledgeDetails.${datasetActiveKey}`), }); } diff --git a/web/src/pages/chat/index.tsx b/web/src/pages/chat/index.tsx index ba18215..4086471 100644 --- a/web/src/pages/chat/index.tsx +++ b/web/src/pages/chat/index.tsx @@ -204,7 +204,7 @@ const Chat = () => { <Flex className={styles.chatAppWrapper}> <Flex flex={1} vertical> <Button type="primary" onClick={handleShowChatConfigurationModal()}> - Create an Assistant + {t('createAssistant')} </Button> <Divider></Divider> <Flex className={styles.chatAppContent} vertical gap={10}> diff --git a/web/src/pages/user-setting/model.ts b/web/src/pages/user-setting/model.ts index 5fffd8f..fa4add7 100644 --- a/web/src/pages/user-setting/model.ts +++ b/web/src/pages/user-setting/model.ts @@ -66,6 +66,7 @@ const model: DvaModel<SettingModelState> = { // }; // authorizationUtil.setUserInfo(userInfo); if (retcode === 0) { + i18n.changeLanguage(res.language === 'Chinese' ? 'zh' : 'en'); yield put({ type: 'setUserInfo', payload: res }); // localStorage.setItem('userInfo',res.) } -- GitLab