Improve the i18n configuration of the chat page (#719)

This commit is contained in:
徒言
2024-01-10 15:18:55 +08:00
committed by GitHub
parent dfa6586e5e
commit 414b693303
7 changed files with 41 additions and 15 deletions

View File

@@ -7,6 +7,7 @@ import Avatar from '@/components/Avatar';
import ToolMenu from './ToolMenu';
import type { ChatItemType } from '@fastgpt/global/core/chat/type';
import { useRouter } from 'next/router';
import { useTranslation } from 'next-i18next';
import { chatContentReplaceBlock } from '@fastgpt/global/core/chat/utils';
const ChatHeader = ({
@@ -28,12 +29,13 @@ const ChatHeader = ({
}) => {
const router = useRouter();
const theme = useTheme();
const { t } = useTranslation();
const { isPc } = useSystemStore();
const title = useMemo(
() =>
chatContentReplaceBlock(history[history.length - 2]?.value)?.slice(0, 8) ||
appName ||
'新对话',
t('chat.New Chat'),
[appName, history]
);
@@ -52,7 +54,11 @@ const ChatHeader = ({
</Box>
<Tag>
<MyIcon name={'history'} w={'14px'} />
<Box ml={1}>{history.length === 0 ? '新的对话' : `${history.length}条记录`}</Box>
<Box ml={1}>
{history.length === 0
? t('chat.Fresh Chat')
: t('chat.History Amount', { amount: history.length })}
</Box>
</Tag>
{!!chatModels && chatModels.length > 0 && (
<Tag ml={2} colorSchema={'green'}>

View File

@@ -74,8 +74,8 @@ const ChatHistorySlider = ({
// custom title edit
const { onOpenModal, EditModal: EditTitleModal } = useEditTitle({
title: '自定义历史记录标题',
placeholder: '如果设置为空,会自动跟随聊天记录。'
title: t('chat.Custom History Title'),
placeholder: t('chat.Custom History Title Description')
});
const { openConfirm, ConfirmModal } = useConfirm({
content: isShare
@@ -240,7 +240,7 @@ const ChatHistorySlider = ({
}}
>
<MyIcon mr={2} name={'core/chat/setTopLight'} w={'16px'}></MyIcon>
{item.top ? '取消置顶' : '置顶'}
{item.top ? t('chat.Unpin') : t('chat.Pin')}
</MenuItem>
)}
{onSetCustomTitle && (
@@ -272,7 +272,7 @@ const ChatHistorySlider = ({
}}
>
<MyIcon mr={2} name={'delete'} w={'16px'}></MyIcon>
{t('common.Delete')}
</MenuItem>
</MenuList>
</Menu>

View File

@@ -2,10 +2,12 @@ import React, { useMemo } from 'react';
import { useChatBox } from '@/components/ChatBox';
import type { ChatItemType } from '@fastgpt/global/core/chat/type.d';
import { Menu, MenuButton, MenuList, MenuItem, Box } from '@chakra-ui/react';
import { useTranslation } from 'next-i18next';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useRouter } from 'next/router';
const ToolMenu = ({ history }: { history: ChatItemType[] }) => {
const { t } = useTranslation();
const { onExportChat } = useChatBox();
const router = useRouter();
@@ -13,7 +15,7 @@ const ToolMenu = ({ history }: { history: ChatItemType[] }) => {
() => [
{
icon: 'core/chat/chatLight',
label: '新对话',
label: t('chat.New Chat'),
onClick: () => {
router.replace({
query: {
@@ -25,15 +27,19 @@ const ToolMenu = ({ history }: { history: ChatItemType[] }) => {
},
{
icon: 'core/app/appApiLight',
label: 'HTML导出',
label: `HTML ${t('Export')}`,
onClick: () => onExportChat({ type: 'html', history })
},
{
icon: 'file/markdown',
label: 'Markdown导出',
label: `Markdown ${t('Export')}`,
onClick: () => onExportChat({ type: 'md', history })
},
{ icon: 'file/pdf', label: 'PDF导出', onClick: () => onExportChat({ type: 'pdf', history }) }
{
icon: 'file/pdf',
label: `PDF ${t('Export')}`,
onClick: () => onExportChat({ type: 'pdf', history })
}
],
[history, onExportChat, router]
);

View File

@@ -86,7 +86,7 @@ const Chat = ({ appId, chatId }: { appId: string; chatId: string }) => {
const newTitle =
chatContentReplaceBlock(prompts[0].content).slice(0, 20) ||
prompts[1]?.value?.slice(0, 20) ||
'新对话';
t('chat.New Chat');
// new chat
if (completionChatId !== chatId) {
@@ -166,7 +166,7 @@ const Chat = ({ appId, chatId }: { appId: string; chatId: string }) => {
setLastChatAppId('');
setLastChatId('');
toast({
title: getErrText(e, '初始化聊天失败'),
title: getErrText(e, t('chat.Failed to initialize chat')),
status: 'error'
});
if (e?.code === 501) {

View File

@@ -88,7 +88,7 @@ const OutLink = ({
const newTitle =
chatContentReplaceBlock(prompts[0].content).slice(0, 20) ||
prompts[1]?.value?.slice(0, 20) ||
'新对话';
t('chat.New Chat');
// new chat
if (completionChatId !== chatId) {