From 74aa95339cc3f8801b710b1d22a61ee63f780cbe Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Mon, 15 Jul 2024 15:54:10 +0800 Subject: [PATCH] feat: add changes log --- .eslintignore | 1 + .prettierignore | 1 + src/renderer/src/App.tsx | 1 - src/renderer/src/CHANGELOG.md | 7 -- .../src/assets/changelog/CHANGELOG.en.md | 7 ++ .../src/assets/changelog/CHANGELOG.zh.md | 8 ++ .../src/assets/styles/changelog.module.scss | 73 +++++++++++++++++++ src/renderer/src/hooks/useAppInitEffect.ts | 2 + src/renderer/src/i18n/index.ts | 6 +- src/renderer/src/main.tsx | 1 + .../src/pages/settings/AboutSettings.tsx | 17 +---- .../src/pages/settings/GeneralSettings.tsx | 2 +- .../pages/settings/components/Changelog.tsx | 29 ++++++++ 13 files changed, 130 insertions(+), 25 deletions(-) delete mode 100644 src/renderer/src/CHANGELOG.md create mode 100644 src/renderer/src/assets/changelog/CHANGELOG.en.md create mode 100644 src/renderer/src/assets/changelog/CHANGELOG.zh.md create mode 100644 src/renderer/src/assets/styles/changelog.module.scss create mode 100644 src/renderer/src/pages/settings/components/Changelog.tsx diff --git a/.eslintignore b/.eslintignore index a6f34fea7..8129084dd 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,3 +2,4 @@ node_modules dist out .gitignore + diff --git a/.prettierignore b/.prettierignore index 9c6b791d5..1eb3622a0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,3 +4,4 @@ pnpm-lock.yaml LICENSE.md tsconfig.json tsconfig.*.json +CHANGELOG*.md diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index d1fad168d..a886947d4 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -7,7 +7,6 @@ import { PersistGate } from 'redux-persist/integration/react' import Sidebar from './components/app/Sidebar' import TopViewContainer from './components/TopView' import { AntdThemeConfig, getAntdLocale } from './config/antd' -import './i18n' import AppsPage from './pages/apps/AppsPage' import HomePage from './pages/home/HomePage' import SettingsPage from './pages/settings/SettingsPage' diff --git a/src/renderer/src/CHANGELOG.md b/src/renderer/src/CHANGELOG.md deleted file mode 100644 index 2f4f83465..000000000 --- a/src/renderer/src/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# Changelog - -## 0.2.1 (2024-07-15) - -1.【功能】新增消息暂停发送功能 -2.【修复】修复多语言切换不彻底问题 -3.【构建】支持 macOS Intel 架构 diff --git a/src/renderer/src/assets/changelog/CHANGELOG.en.md b/src/renderer/src/assets/changelog/CHANGELOG.en.md new file mode 100644 index 000000000..109a1fc3f --- /dev/null +++ b/src/renderer/src/assets/changelog/CHANGELOG.en.md @@ -0,0 +1,7 @@ +# CHANGES LOG + +### v0.2.1 - 2024-07-15 + +1. **Feature**: Add new feature for pausing message sending +2. **Fix**: Resolve incomplete translation issue upon language switch +3. **Build**: Support for macOS Intel architecture diff --git a/src/renderer/src/assets/changelog/CHANGELOG.zh.md b/src/renderer/src/assets/changelog/CHANGELOG.zh.md new file mode 100644 index 000000000..e9f4bf1a6 --- /dev/null +++ b/src/renderer/src/assets/changelog/CHANGELOG.zh.md @@ -0,0 +1,8 @@ +# 更新日志 + +### v0.2.1 - 2024-07-15 + +1. 【功能】新增消息暂停发送功能 +2. 【修复】修复多语言切换不彻底问题 +3. 【构建】支持 macOS Intel 架构 + diff --git a/src/renderer/src/assets/styles/changelog.module.scss b/src/renderer/src/assets/styles/changelog.module.scss new file mode 100644 index 000000000..f46ed5770 --- /dev/null +++ b/src/renderer/src/assets/styles/changelog.module.scss @@ -0,0 +1,73 @@ +$background-color: #121212; +$text-color: #ffffff; +$heading-color: #bb86fc; +$link-color: #3498db; +$code-background: #1e1e1e; +$code-color: #f0e7db; + +.markdown { + body { + background-color: $background-color; + color: $text-color; + font-family: Arial, sans-serif; + padding: 20px; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + color: $heading-color; + } + + h3 { + margin: 10px 0; + font-weight: 500; + font-family: Arial, sans-serif; + } + + a { + color: $link-color; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + + strong { + font-weight: bold; + } + + pre { + background-color: $code-background; + padding: 10px; + border-radius: 5px; + overflow-x: auto; + } + + code { + background-color: $code-background; + color: $code-color; + padding: 2px 4px; + border-radius: 3px; + } + + blockquote { + border-left: 4px solid $heading-color; + padding-left: 10px; + margin-left: 0; + color: #b3b3b3; + } + + ul, + ol { + padding-left: 30px; + } + + li { + margin-bottom: 5px; + } +} diff --git a/src/renderer/src/hooks/useAppInitEffect.ts b/src/renderer/src/hooks/useAppInitEffect.ts index d8510b887..98ad872c5 100644 --- a/src/renderer/src/hooks/useAppInitEffect.ts +++ b/src/renderer/src/hooks/useAppInitEffect.ts @@ -1,3 +1,4 @@ +import { i18nInit } from '@renderer/i18n' import LocalStorage from '@renderer/services/storage' import { useAppDispatch } from '@renderer/store' import { setAvatar } from '@renderer/store/runtime' @@ -12,5 +13,6 @@ export function useAppInitEffect() { const storedImage = await LocalStorage.getImage('avatar') storedImage && dispatch(setAvatar(storedImage)) }) + i18nInit() }, [dispatch]) } diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 71fe797e7..2aa97b794 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -225,11 +225,15 @@ const resources = { i18n.use(initReactI18next).init({ resources, - lng: store.getState().settings.language || 'en-US', + lng: localStorage.getItem('language') || 'en-US', fallbackLng: 'en-US', interpolation: { escapeValue: false } }) +export function i18nInit() { + i18n.changeLanguage(store.getState().settings.language || 'en-US') +} + export default i18n diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index 40d90854b..b8ff1d4e6 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom/client' import App from './App' import './assets/styles/index.scss' import './init' +import './i18n' ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( diff --git a/src/renderer/src/pages/settings/AboutSettings.tsx b/src/renderer/src/pages/settings/AboutSettings.tsx index eab33a264..2b279912d 100644 --- a/src/renderer/src/pages/settings/AboutSettings.tsx +++ b/src/renderer/src/pages/settings/AboutSettings.tsx @@ -4,8 +4,7 @@ import styled from 'styled-components' import Logo from '@renderer/assets/images/logo.png' import { runAsyncFunction } from '@renderer/utils' import { useTranslation } from 'react-i18next' -import Markdown from 'react-markdown' -import changelogs from '@renderer/CHANGELOG.md?raw' +import Changelog from './components/Changelog' const AboutSettings: FC = () => { const [version, setVersion] = useState('') @@ -25,9 +24,7 @@ const AboutSettings: FC = () => { Cherry Studio (v{version}) {t('settings.about.description')} - - {changelogs} - + ) } @@ -60,14 +57,4 @@ const Description = styled.div` text-align: center; ` -const ChangeLog = styled.div` - font-size: 14px; - color: var(--color-text-2); - background-color: var(--color-background-soft); - margin-top: 40px; - padding: 20px; - border-radius: 5px; - width: 800px; -` - export default AboutSettings diff --git a/src/renderer/src/pages/settings/GeneralSettings.tsx b/src/renderer/src/pages/settings/GeneralSettings.tsx index 6e2591504..2d346f51a 100644 --- a/src/renderer/src/pages/settings/GeneralSettings.tsx +++ b/src/renderer/src/pages/settings/GeneralSettings.tsx @@ -21,7 +21,7 @@ const GeneralSettings: FC = () => { const onSelectLanguage = (value: string) => { dispatch(setLanguage(value)) i18next.changeLanguage(value) - setTimeout(() => window.location.reload(), 500) + localStorage.setItem('language', value) } return ( diff --git a/src/renderer/src/pages/settings/components/Changelog.tsx b/src/renderer/src/pages/settings/components/Changelog.tsx new file mode 100644 index 000000000..f285090f5 --- /dev/null +++ b/src/renderer/src/pages/settings/components/Changelog.tsx @@ -0,0 +1,29 @@ +import changelogEn from '@renderer/assets/changelog/CHANGELOG.en.md?raw' +import changelogZh from '@renderer/assets/changelog/CHANGELOG.zh.md?raw' +import i18next from 'i18next' +import { FC } from 'react' +import Markdown from 'react-markdown' +import styled from 'styled-components' +import styles from '@renderer/assets/styles/changelog.module.scss' + +const Changelog: FC = () => { + const language = i18next.language + const changelog = language === 'zh-CN' ? changelogZh : changelogEn + + return ( + + {changelog} + + ) +} + +const Container = styled.div` + font-size: 14px; + background-color: var(--color-background-soft); + margin-top: 40px; + padding: 20px; + border-radius: 5px; + width: 650px; +` + +export default Changelog