mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-24 18:50:56 +08:00
refactor(i18n): simplify language resources and integrate i18next
Remove unused language resources and rename locales to resources for clarity Add i18next initialization with missing key logging
This commit is contained in:
parent
b181902183
commit
262b0aeeb6
@ -1,31 +1,35 @@
|
||||
import { preferenceService } from '@data/PreferenceService'
|
||||
import { loggerService } from '@logger'
|
||||
import { defaultLanguage } from '@shared/config/constant'
|
||||
import type { LanguageVarious } from '@shared/data/preference/preferenceTypes'
|
||||
import { app } from 'electron'
|
||||
import i18next from 'i18next'
|
||||
|
||||
import deDE from '../../renderer/src/i18n/locales/de-de.json'
|
||||
import elGR from '../../renderer/src/i18n/locales/el-gr.json'
|
||||
// import deDE from '../../renderer/src/i18n/locales/de-de.json'
|
||||
// import elGR from '../../renderer/src/i18n/locales/el-gr.json'
|
||||
import EnUs from '../../renderer/src/i18n/locales/en-us.json'
|
||||
import esES from '../../renderer/src/i18n/locales/es-es.json'
|
||||
import frFR from '../../renderer/src/i18n/locales/fr-fr.json'
|
||||
import JaJP from '../../renderer/src/i18n/locales/ja-jp.json'
|
||||
import ptPT from '../../renderer/src/i18n/locales/pt-pt.json'
|
||||
import RuRu from '../../renderer/src/i18n/locales/ru-ru.json'
|
||||
// import esES from '../../renderer/src/i18n/locales/es-es.json'
|
||||
// import frFR from '../../renderer/src/i18n/locales/fr-fr.json'
|
||||
// import JaJP from '../../renderer/src/i18n/locales/ja-jp.json'
|
||||
// import ptPT from '../../renderer/src/i18n/locales/pt-pt.json'
|
||||
// import RuRu from '../../renderer/src/i18n/locales/ru-ru.json'
|
||||
import ZhCn from '../../renderer/src/i18n/locales/zh-cn.json'
|
||||
import ZhTw from '../../renderer/src/i18n/locales/zh-tw.json'
|
||||
|
||||
const locales = Object.fromEntries([
|
||||
const logger = loggerService.withContext('i18n')
|
||||
|
||||
const resources = Object.fromEntries([
|
||||
['en-US', EnUs],
|
||||
['zh-CN', ZhCn],
|
||||
['zh-TW', ZhTw],
|
||||
['ja-JP', JaJP],
|
||||
['ru-RU', RuRu],
|
||||
['de-DE', deDE],
|
||||
['el-GR', elGR],
|
||||
['es-ES', esES],
|
||||
['fr-FR', frFR],
|
||||
['pt-PT', ptPT]
|
||||
])
|
||||
['zh-TW', ZhTw]
|
||||
// ['ja-JP', JaJP],
|
||||
// ['ru-RU', RuRu],
|
||||
// ['de-DE', deDE],
|
||||
// ['el-GR', elGR],
|
||||
// ['es-ES', esES],
|
||||
// ['fr-FR', frFR],
|
||||
// ['pt-PT', ptPT]
|
||||
] as const)
|
||||
|
||||
export const getAppLanguage = (): LanguageVarious => {
|
||||
const language = preferenceService.get('app.language')
|
||||
@ -35,10 +39,25 @@ export const getAppLanguage = (): LanguageVarious => {
|
||||
return language
|
||||
}
|
||||
|
||||
return (Object.keys(locales).includes(appLocale) ? appLocale : defaultLanguage) as LanguageVarious
|
||||
return (Object.keys(resources).includes(appLocale) ? appLocale : defaultLanguage) as LanguageVarious
|
||||
}
|
||||
|
||||
export const getI18n = (): Record<string, any> => {
|
||||
const language = getAppLanguage()
|
||||
return locales[language]
|
||||
return resources[language]
|
||||
}
|
||||
|
||||
const i18n = i18next.init({
|
||||
resources,
|
||||
lng: getAppLanguage(),
|
||||
fallbackLng: defaultLanguage,
|
||||
interpolation: {
|
||||
escapeValue: false
|
||||
},
|
||||
saveMissing: true,
|
||||
missingKeyHandler: (_1, _2, key) => {
|
||||
logger.error(`Missing key: ${key}`)
|
||||
}
|
||||
})
|
||||
|
||||
export { i18n }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user