fix: change language of renderer

This commit is contained in:
tiddlygit-test 2021-05-04 23:49:44 +08:00
parent baef9b4f5b
commit 8fcfc7fb7e
2 changed files with 7 additions and 6 deletions

View file

@ -4,6 +4,7 @@ import { Backend as ElectronFsBackend } from './services/libs/i18n/i18next-elect
export async function initI18N(): Promise<void> {
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<void> {
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);

View file

@ -11,7 +11,7 @@ export const preloadBindings = function (
): {
send: (channel: I18NChannels, readWriteFileArgs: IReadWriteFileRequest) => Promise<void>;
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<void> => {
@ -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);
});
},