From 57206dd3b1069e84c37fe47ed9764fe9dd5a88ec Mon Sep 17 00:00:00 2001 From: icarus Date: Thu, 23 Oct 2025 22:46:24 +0800 Subject: [PATCH] refactor(i18n): restructure translation resources and update logger context Move translation files to new location and update resource structure to include translation namespace Update logger context to include module prefix for better debugging --- src/main/utils/language.ts | 55 ++++++++++++++++++++++++---------- src/renderer/src/i18n/index.ts | 55 ++++++++++++++++++++++++---------- 2 files changed, 78 insertions(+), 32 deletions(-) diff --git a/src/main/utils/language.ts b/src/main/utils/language.ts index fad6c28562..ad4f743e02 100644 --- a/src/main/utils/language.ts +++ b/src/main/utils/language.ts @@ -5,31 +5,54 @@ import type { LanguageVarious } from '@shared/data/preference/preferenceTypes' import { app } from 'electron' import i18n from 'i18next' +import EnUs from '../../renderer/src/i18n/locales/en-us.json' +import ZhCn from '../../renderer/src/i18n/locales/zh-cn.json' +import ZhTw from '../../renderer/src/i18n/locales/zh-tw.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 ZhCn from '../../renderer/src/i18n/locales/zh-cn.json' -import ZhTw from '../../renderer/src/i18n/locales/zh-tw.json' +import deDE from '../../renderer/src/i18n/translate/de-de.json' +import elGR from '../../renderer/src/i18n/translate/el-gr.json' +import esES from '../../renderer/src/i18n/translate/es-es.json' +import frFR from '../../renderer/src/i18n/translate/fr-fr.json' +import JaJP from '../../renderer/src/i18n/translate/ja-jp.json' +import ptPT from '../../renderer/src/i18n/translate/pt-pt.json' +import RuRu from '../../renderer/src/i18n/translate/ru-ru.json' -const logger = loggerService.withContext('i18n') +const logger = loggerService.withContext('main: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] -] as const) +// 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] +// ] as const) +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] + ] as const + ).map(([key, translation]) => [key, { translation }]) +) export const getAppLanguage = (): LanguageVarious => { const language = preferenceService.get('app.language') diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 9244099b77..cba42a1768 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -4,31 +4,54 @@ import { defaultLanguage } from '@shared/config/constant' import i18n from 'i18next' import { initReactI18next } from 'react-i18next' +import enUS from './locales/en-us.json' +import zhCN from './locales/zh-cn.json' +import zhTW from './locales/zh-tw.json' // import deDE from './locales/de-de.json' // import elGR from './locales/el-gr.json' -import enUS from './locales/en-us.json' // import esES from './locales/es-es.json' // import frFR from './locales/fr-fr.json' // import jaJP from './locales/ja-jp.json' // import ptPT from './locales/pt-pt.json' // import ruRU from './locales/ru-ru.json' -import zhCN from './locales/zh-cn.json' -import zhTW from './locales/zh-tw.json' +import deDE from './translate/de-de.json' +import elGR from './translate/el-gr.json' +import esES from './translate/es-es.json' +import frFR from './translate/fr-fr.json' +import jaJP from './translate/ja-jp.json' +import ptPT from './translate/pt-pt.json' +import ruRU from './translate/ru-ru.json' -const logger = loggerService.withContext('I18N') +const logger = loggerService.withContext('renderer:i18n') -const resources = Object.fromEntries([ - ['en-US', enUS], - // ['ja-JP', jaJP], - // ['ru-RU', ruRU], - ['zh-CN', zhCN], - ['zh-TW', zhTW] - // ['de-DE', deDE], - // ['el-GR', elGR], - // ['es-ES', esES], - // ['fr-FR', frFR], - // ['pt-PT', ptPT] -]) +// const resources = Object.fromEntries([ +// ['en-US', enUS], +// ['zh-CN', zhCN], +// ['zh-TW', zhTW], +// ['de-DE', deDE], +// ['el-GR', elGR], +// ['es-ES', esES], +// ['fr-FR', frFR], +// ['ja-JP', jaJP], +// ['pt-PT', ptPT], +// ['ru-RU', ruRU] +// ]) +const resources = Object.fromEntries( + ( + [ + ['en-US', enUS], + ['zh-CN', zhCN], + ['zh-TW', zhTW], + ['de-DE', deDE], + ['el-GR', elGR], + ['es-ES', esES], + ['fr-FR', frFR], + ['ja-JP', jaJP], + ['pt-PT', ptPT], + ['ru-RU', ruRU] + ] as const + ).map(([key, translation]) => [key, { translation }]) +) export const getLanguage = async () => { return (await preferenceService.get('app.language')) || navigator.language || defaultLanguage