mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-11 08:19:01 +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 { preferenceService } from '@data/PreferenceService'
|
||||||
|
import { loggerService } from '@logger'
|
||||||
import { defaultLanguage } from '@shared/config/constant'
|
import { defaultLanguage } from '@shared/config/constant'
|
||||||
import type { LanguageVarious } from '@shared/data/preference/preferenceTypes'
|
import type { LanguageVarious } from '@shared/data/preference/preferenceTypes'
|
||||||
import { app } from 'electron'
|
import { app } from 'electron'
|
||||||
|
import i18next from 'i18next'
|
||||||
|
|
||||||
import deDE from '../../renderer/src/i18n/locales/de-de.json'
|
// import deDE from '../../renderer/src/i18n/locales/de-de.json'
|
||||||
import elGR from '../../renderer/src/i18n/locales/el-gr.json'
|
// import elGR from '../../renderer/src/i18n/locales/el-gr.json'
|
||||||
import EnUs from '../../renderer/src/i18n/locales/en-us.json'
|
import EnUs from '../../renderer/src/i18n/locales/en-us.json'
|
||||||
import esES from '../../renderer/src/i18n/locales/es-es.json'
|
// import esES from '../../renderer/src/i18n/locales/es-es.json'
|
||||||
import frFR from '../../renderer/src/i18n/locales/fr-fr.json'
|
// import frFR from '../../renderer/src/i18n/locales/fr-fr.json'
|
||||||
import JaJP from '../../renderer/src/i18n/locales/ja-jp.json'
|
// import JaJP from '../../renderer/src/i18n/locales/ja-jp.json'
|
||||||
import ptPT from '../../renderer/src/i18n/locales/pt-pt.json'
|
// import ptPT from '../../renderer/src/i18n/locales/pt-pt.json'
|
||||||
import RuRu from '../../renderer/src/i18n/locales/ru-ru.json'
|
// import RuRu from '../../renderer/src/i18n/locales/ru-ru.json'
|
||||||
import ZhCn from '../../renderer/src/i18n/locales/zh-cn.json'
|
import ZhCn from '../../renderer/src/i18n/locales/zh-cn.json'
|
||||||
import ZhTw from '../../renderer/src/i18n/locales/zh-tw.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],
|
['en-US', EnUs],
|
||||||
['zh-CN', ZhCn],
|
['zh-CN', ZhCn],
|
||||||
['zh-TW', ZhTw],
|
['zh-TW', ZhTw]
|
||||||
['ja-JP', JaJP],
|
// ['ja-JP', JaJP],
|
||||||
['ru-RU', RuRu],
|
// ['ru-RU', RuRu],
|
||||||
['de-DE', deDE],
|
// ['de-DE', deDE],
|
||||||
['el-GR', elGR],
|
// ['el-GR', elGR],
|
||||||
['es-ES', esES],
|
// ['es-ES', esES],
|
||||||
['fr-FR', frFR],
|
// ['fr-FR', frFR],
|
||||||
['pt-PT', ptPT]
|
// ['pt-PT', ptPT]
|
||||||
])
|
] as const)
|
||||||
|
|
||||||
export const getAppLanguage = (): LanguageVarious => {
|
export const getAppLanguage = (): LanguageVarious => {
|
||||||
const language = preferenceService.get('app.language')
|
const language = preferenceService.get('app.language')
|
||||||
@ -35,10 +39,25 @@ export const getAppLanguage = (): LanguageVarious => {
|
|||||||
return language
|
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> => {
|
export const getI18n = (): Record<string, any> => {
|
||||||
const language = getAppLanguage()
|
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