1
0
mirror of https://github.com/pavlobu/deskreen.git synced 2025-06-01 07:10:09 -07:00

able to preserve language with electron store

This commit is contained in:
Pavlo Buidenkov 2022-05-31 19:56:10 +02:00
parent 4d37caaaf0
commit 9f67432182
7 changed files with 22 additions and 17 deletions

View File

@ -17,7 +17,6 @@ i18n
// init i18next // init i18next
// for all options read: https://www.i18next.com/overview/configuration-options // for all options read: https://www.i18next.com/overview/configuration-options
.init({ .init({
// fallbackLng: 'ua',
lng: 'en', lng: 'en',
saveMissing: true, saveMissing: true,
saveMissingTo: 'all', saveMissingTo: 'all',

View File

@ -34,7 +34,7 @@ export default function LanguageSelector() {
getLangFullNameToLangISOKeyMap().get(event.currentTarget.value) || getLangFullNameToLangISOKeyMap().get(event.currentTarget.value) ||
'English'; 'English';
i18n.changeLanguage(newLang); i18n.changeLanguage(newLang);
ipcRenderer.invoke(IpcEvents.AppLanguageChanged); ipcRenderer.invoke(IpcEvents.AppLanguageChanged, newLang);
} }
}; };

View File

@ -17,6 +17,8 @@ import translationZH_TW from '../locales/zh_TW/translation.json';
import translationDA from '../locales/da/translation.json'; import translationDA from '../locales/da/translation.json';
import translationDE from '../locales/de/translation.json'; import translationDE from '../locales/de/translation.json';
import { IpcEvents } from '../main/IpcEvents.enum'; import { IpcEvents } from '../main/IpcEvents.enum';
import { ElectronStoreKeys } from '../enums/ElectronStoreKeys.enum';
import store from '../deskreen-electron-store';
export const getLangFullNameToLangISOKeyMap = (): Map<string, string> => { export const getLangFullNameToLangISOKeyMap = (): Map<string, string> => {
const res = new Map<string, string>(); const res = new Map<string, string>();
@ -68,7 +70,11 @@ export const getShuffledArrayOfHello = (): string[] => {
async function initI18NextOptions() { async function initI18NextOptions() {
const appPath = await ipcRenderer.invoke(IpcEvents.GetAppPath); const appPath = await ipcRenderer.invoke(IpcEvents.GetAppPath);
const appLanguage = String(store.get(ElectronStoreKeys.AppLanguage));
i18n.use(SyncBackend);
i18n.use(initReactI18next);
const i18nextOptions = { const i18nextOptions = {
debug: true,
interpolation: { interpolation: {
escapeValue: false, escapeValue: false,
}, },
@ -85,10 +91,7 @@ async function initI18NextOptions() {
jsonIndent: 2, jsonIndent: 2,
}, },
saveMissing: true, saveMissing: true,
// lng: (settings.hasSync('appLanguage') lng: config.languages.includes(appLanguage) ? appLanguage : 'en',
// ? settings.getSync('appLanguage')
// : 'en') as string,
lng: 'en',
fallbackLng: config.fallbackLng, fallbackLng: config.fallbackLng,
whitelist: config.languages, whitelist: config.languages,
react: { react: {
@ -102,9 +105,6 @@ async function initI18NextOptions() {
} }
initI18NextOptions(); initI18NextOptions();
i18n.use(SyncBackend);
i18n.use(initReactI18next);
i18n.on('languageChanged', () => { i18n.on('languageChanged', () => {
ipcRenderer.send('client-changed-language', i18n.language); ipcRenderer.send('client-changed-language', i18n.language);
}); });

View File

@ -5,13 +5,12 @@ import i18nextBackend from 'i18next-node-fs-backend';
import { join } from 'path'; import { join } from 'path';
import config from './app.lang.config'; import config from './app.lang.config';
import isProduction from '../utils/isProduction'; import isProduction from '../utils/isProduction';
import store from '../deskreen-electron-store';
import { ElectronStoreKeys } from '../enums/ElectronStoreKeys.enum';
const i18nextOptions = { const i18nextOptions = {
fallbackLng: config.fallbackLng, fallbackLng: config.fallbackLng,
// lng: (settings.hasSync('appLanguage') lng: store.get(ElectronStoreKeys.AppLanguage),
// ? settings.getSync('appLanguage')
// : 'en') as string,
lng: 'en',
ns: 'translation', ns: 'translation',
defaultNS: 'translation', defaultNS: 'translation',
backend: { backend: {

View File

@ -12,7 +12,6 @@ import 'core-js/stable';
import 'regenerator-runtime/runtime'; import 'regenerator-runtime/runtime';
import path from 'path'; import path from 'path';
import { app, BrowserWindow, shell } from 'electron'; import { app, BrowserWindow, shell } from 'electron';
// import ElectronStore from 'electron-store';
import store from './deskreen-electron-store'; import store from './deskreen-electron-store';
import i18n from './configs/i18next.config'; import i18n from './configs/i18next.config';
import signalingServer from './server'; import signalingServer from './server';
@ -24,8 +23,6 @@ import getNewVersionTag from './utils/getNewVersionTag';
import initIpcMainHandlers from './main/ipcMainHandlers'; import initIpcMainHandlers from './main/ipcMainHandlers';
import { ElectronStoreKeys } from './enums/ElectronStoreKeys.enum'; import { ElectronStoreKeys } from './enums/ElectronStoreKeys.enum';
// const store = new ElectronStore();
export default class DeskreenApp { export default class DeskreenApp {
mainWindow: BrowserWindow | null = null; mainWindow: BrowserWindow | null = null;
@ -184,6 +181,9 @@ export default class DeskreenApp {
setTimeout(async () => { setTimeout(async () => {
if (lng !== 'en' && i18n.language !== lng) { if (lng !== 'en' && i18n.language !== lng) {
i18n.changeLanguage(lng); i18n.changeLanguage(lng);
if (store.has(ElectronStoreKeys.AppLanguage)) {
store.delete(ElectronStoreKeys.AppLanguage);
}
store.set(ElectronStoreKeys.AppLanguage, lng); store.set(ElectronStoreKeys.AppLanguage, lng);
} }
}, 400); }, 400);

View File

@ -21,4 +21,5 @@ export enum IpcEvents {
GetDesktopSharingSourceIds = 'get-desktop-sharing-source-ids', GetDesktopSharingSourceIds = 'get-desktop-sharing-source-ids',
SetDesktopCapturerSourceId = 'set-desktop-capturer-source-id', SetDesktopCapturerSourceId = 'set-desktop-capturer-source-id',
NotifyAllSessionsWithAppThemeChanged = 'notify-all-sessions-with-app-theme-changed', NotifyAllSessionsWithAppThemeChanged = 'notify-all-sessions-with-app-theme-changed',
GetAppLanguage = 'get-app-language',
} }

View File

@ -9,6 +9,8 @@ import signalingServer from '../server';
import Logger from '../utils/LoggerWithFilePrefix'; import Logger from '../utils/LoggerWithFilePrefix';
import { IpcEvents } from './IpcEvents.enum'; import { IpcEvents } from './IpcEvents.enum';
import SharingSessionStatusEnum from '../features/SharingSessionService/SharingSessionStatusEnum'; import SharingSessionStatusEnum from '../features/SharingSessionService/SharingSessionStatusEnum';
import { ElectronStoreKeys } from '../enums/ElectronStoreKeys.enum';
import store from '../deskreen-electron-store';
const log = new Logger(__filename); const log = new Logger(__filename);
const v4IPGetter = require('internal-ip').v4; const v4IPGetter = require('internal-ip').v4;
@ -180,7 +182,11 @@ export default function initIpcMainHandlers(
getDeskreenGlobal().connectedDevicesService.disconnectAllDevices(); getDeskreenGlobal().connectedDevicesService.disconnectAllDevices();
}); });
ipcMain.handle(IpcEvents.AppLanguageChanged, () => { ipcMain.handle(IpcEvents.AppLanguageChanged, (_, newLang) => {
if (store.has(ElectronStoreKeys.AppLanguage)) {
store.delete(ElectronStoreKeys.AppLanguage);
}
store.set(ElectronStoreKeys.AppLanguage, newLang);
getDeskreenGlobal().sharingSessionService.sharingSessions.forEach( getDeskreenGlobal().sharingSessionService.sharingSessions.forEach(
(sharingSession) => { (sharingSession) => {
sharingSession?.appLanguageChanged(); sharingSession?.appLanguageChanged();