diff --git a/src/i18n.ts b/src/i18n.ts index a0222ed2..76768df7 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -4,6 +4,7 @@ import { Backend as ElectronFsBackend } from './services/libs/i18n/i18next-elect export async function initI18N(): Promise { const isDevelopment = await window.service.context.get('isDevelopment'); + const language = await window.service.preference.get('language'); await i18n .use(ElectronFsBackend) .use(initReactI18next) @@ -18,11 +19,11 @@ export async function initI18N(): Promise { saveMissing: isDevelopment, saveMissingTo: 'current', // namespace: 'translation', - lng: 'zh_CN', // we switch to language set in preference later, in src/main.ts + lng: language, fallbackLng: isDevelopment ? false : 'en', }); - window.i18n.i18nextElectronBackend.onLanguageChange(async (language: string) => { - await i18n.changeLanguage(language, (error?: Error) => { + window.i18n.i18nextElectronBackend.onLanguageChange(async (language: { lng: string }) => { + await i18n.changeLanguage(language.lng, (error?: Error) => { // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions if (error) { console.error(error); diff --git a/src/services/libs/i18n/preloadBindings.ts b/src/services/libs/i18n/preloadBindings.ts index 7cd2b49b..a17d0a87 100644 --- a/src/services/libs/i18n/preloadBindings.ts +++ b/src/services/libs/i18n/preloadBindings.ts @@ -11,7 +11,7 @@ export const preloadBindings = function ( ): { send: (channel: I18NChannels, readWriteFileArgs: IReadWriteFileRequest) => Promise; onReceive: (channel: I18NChannels, callback: (readWriteFileArgs: IReadWriteFileRequest) => void) => void; - onLanguageChange: (callback: (language: string) => unknown) => void; + onLanguageChange: (callback: (language: { lng: string }) => unknown) => void; } { return { send: async (channel: I18NChannels, readWriteFileArgs: IReadWriteFileRequest): Promise => { @@ -27,9 +27,9 @@ export const preloadBindings = function ( ipcRenderer.on(channel, (_event: IpcRendererEvent, arguments_: IReadWriteFileRequest) => callback(arguments_)); } }, - onLanguageChange: (callback: (language: string) => unknown) => { + onLanguageChange: (callback: (language: { lng: string }) => unknown) => { // Deliberately strip event as it includes "sender" - ipcRenderer.on(I18NChannels.changeLanguageRequest, (_event: IpcRendererEvent, language: string) => { + ipcRenderer.on(I18NChannels.changeLanguageRequest, (_event: IpcRendererEvent, language: { lng: string }) => { callback(language); }); },