diff --git a/src/main/index.ts b/src/main/index.ts index cdf5804c..7ffd8167 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -94,7 +94,9 @@ app.whenReady().then(() => { .then((name) => console.log(`Added Extension: ${name}`)) .catch((err) => console.log('An error occurred: ', err)) - setTimeout(() => new AppUpdater(), 3000) + if (app.isPackaged) { + setTimeout(() => new AppUpdater(), 3000) + } }) // Quit when all windows are closed, except on macOS. There, it's common diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 2aa97b79..2fd4a1ae 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -225,7 +225,7 @@ const resources = { i18n.use(initReactI18next).init({ resources, - lng: localStorage.getItem('language') || 'en-US', + lng: localStorage.getItem('language') || navigator.language || 'en-US', fallbackLng: 'en-US', interpolation: { escapeValue: false diff --git a/src/renderer/src/pages/settings/components/Changelog.tsx b/src/renderer/src/pages/settings/components/Changelog.tsx index f285090f..c37acbb0 100644 --- a/src/renderer/src/pages/settings/components/Changelog.tsx +++ b/src/renderer/src/pages/settings/components/Changelog.tsx @@ -1,13 +1,13 @@ 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' +import i18n from '@renderer/i18n' const Changelog: FC = () => { - const language = i18next.language + const language = i18n.language const changelog = language === 'zh-CN' ? changelogZh : changelogEn return ( diff --git a/src/renderer/src/services/assistant.ts b/src/renderer/src/services/assistant.ts index 171ae916..b9111e55 100644 --- a/src/renderer/src/services/assistant.ts +++ b/src/renderer/src/services/assistant.ts @@ -1,12 +1,12 @@ import { Assistant, Model, Provider, Topic } from '@renderer/types' import store from '@renderer/store' import { uuid } from '@renderer/utils' -import i18next from 'i18next' +import i18n from '@renderer/i18n' export function getDefaultAssistant(): Assistant { return { id: 'default', - name: i18next.t('assistant.default.name'), + name: i18n.t('assistant.default.name'), prompt: '', topics: [getDefaultTopic()] } @@ -15,7 +15,7 @@ export function getDefaultAssistant(): Assistant { export function getDefaultTopic(): Topic { return { id: uuid(), - name: i18next.t('assistant.default.topic.name'), + name: i18n.t('assistant.default.topic.name'), messages: [] } } diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index da908f0a..3c73f0ad 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -19,7 +19,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 7, + version: 8, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 1b158c82..2eda9a5e 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1,6 +1,9 @@ import { createMigrate } from 'redux-persist' import { RootState } from '.' import { SYSTEM_MODELS } from '@renderer/config/models' +import { isEmpty } from 'lodash' +import i18n from '@renderer/i18n' +import { Assistant } from '@renderer/types' const migrate = createMigrate({ // @ts-ignore store type is unknown @@ -112,6 +115,32 @@ const migrate = createMigrate({ language: navigator.language } } + }, + // @ts-ignore store type is unknown + '8': (state: RootState) => { + const fixAssistantName = (assistant: Assistant) => { + if (isEmpty(assistant.name)) { + assistant.name = i18n.t(`assistant.${assistant.id}.name`) + } + + assistant.topics = assistant.topics.map((topic) => { + if (isEmpty(topic.name)) { + topic.name = i18n.t(`assistant.${assistant.id}.topic.name`) + } + return topic + }) + + return assistant + } + + return { + ...state, + assistants: { + ...state.assistants, + defaultAssistant: fixAssistantName(state.assistants.defaultAssistant), + assistants: state.assistants.assistants.map((assistant) => fixAssistantName(assistant)) + } + } } })