diff options
author | 2022-04-03 02:05:40 +0200 | |
---|---|---|
committer | 2022-05-16 00:54:59 +0200 | |
commit | 49c622189cf1d2c489b963d9be2f7493543afa3a (patch) | |
tree | 87636e0c08ce6ee2258566e3e0879707c9a51ea7 /packages/shared/src | |
parent | build: Allow command line arguments to watch (diff) | |
download | sophie-49c622189cf1d2c489b963d9be2f7493543afa3a.tar.gz sophie-49c622189cf1d2c489b963d9be2f7493543afa3a.tar.zst sophie-49c622189cf1d2c489b963d9be2f7493543afa3a.zip |
feat(main): Language setting in config file
Load localization according to either the environment or the
configuration file from the list of supported locales.
Ideally, we would also set the chromium locale with --lang, but by the
time we have read the config file (to known which locale to set),
electron has already initialized the chromium resource bundle.
So the chromium localization will always be auto-detected by chromium.
Also makes startup hopefully a bit faster by doing more things
concurrently while the localization and the main window is being loaded.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'packages/shared/src')
-rw-r--r-- | packages/shared/src/index.ts | 4 | ||||
-rw-r--r-- | packages/shared/src/stores/GlobalSettingsBase.ts | 3 | ||||
-rw-r--r-- | packages/shared/src/stores/SharedStoreBase.ts | 4 |
3 files changed, 8 insertions, 3 deletions
diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 51f9f06..c4de885 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts | |||
@@ -18,8 +18,6 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | export const fallbackLng = ['en']; | ||
22 | |||
23 | export type { default as SophieRenderer } from './contextBridge/SophieRenderer'; | 21 | export type { default as SophieRenderer } from './contextBridge/SophieRenderer'; |
24 | 22 | ||
25 | export { MainToRendererIpcMessage, RendererToMainIpcMessage } from './ipc'; | 23 | export { MainToRendererIpcMessage, RendererToMainIpcMessage } from './ipc'; |
@@ -44,6 +42,7 @@ export type { | |||
44 | export { | 42 | export { |
45 | default as GlobalSettingsBase, | 43 | default as GlobalSettingsBase, |
46 | defineGlobalSettingsModel, | 44 | defineGlobalSettingsModel, |
45 | SYSTEM_LOCALE, | ||
47 | } from './stores/GlobalSettingsBase'; | 46 | } from './stores/GlobalSettingsBase'; |
48 | 47 | ||
49 | export { default as Profile } from './stores/Profile'; | 48 | export { default as Profile } from './stores/Profile'; |
@@ -79,4 +78,5 @@ export type { | |||
79 | export { | 78 | export { |
80 | default as SharedStoreBase, | 79 | default as SharedStoreBase, |
81 | defineSharedStoreModel, | 80 | defineSharedStoreModel, |
81 | FALLBACK_LOCALE, | ||
82 | } from './stores/SharedStoreBase'; | 82 | } from './stores/SharedStoreBase'; |
diff --git a/packages/shared/src/stores/GlobalSettingsBase.ts b/packages/shared/src/stores/GlobalSettingsBase.ts index 1bd0628..c74c822 100644 --- a/packages/shared/src/stores/GlobalSettingsBase.ts +++ b/packages/shared/src/stores/GlobalSettingsBase.ts | |||
@@ -30,10 +30,13 @@ import { ThemeSource } from '../schemas/ThemeSource'; | |||
30 | 30 | ||
31 | import ServiceBase from './ServiceBase'; | 31 | import ServiceBase from './ServiceBase'; |
32 | 32 | ||
33 | export const SYSTEM_LOCALE = 'system'; | ||
34 | |||
33 | export function defineGlobalSettingsModel<TS extends IAnyModelType>( | 35 | export function defineGlobalSettingsModel<TS extends IAnyModelType>( |
34 | service: TS, | 36 | service: TS, |
35 | ) { | 37 | ) { |
36 | return types.model('GlobalSettings', { | 38 | return types.model('GlobalSettings', { |
39 | language: SYSTEM_LOCALE, | ||
37 | themeSource: types.optional( | 40 | themeSource: types.optional( |
38 | types.enumeration(ThemeSource.options), | 41 | types.enumeration(ThemeSource.options), |
39 | 'system', | 42 | 'system', |
diff --git a/packages/shared/src/stores/SharedStoreBase.ts b/packages/shared/src/stores/SharedStoreBase.ts index 86bd0fc..a576a0e 100644 --- a/packages/shared/src/stores/SharedStoreBase.ts +++ b/packages/shared/src/stores/SharedStoreBase.ts | |||
@@ -31,6 +31,8 @@ import GlobalSettingsBase from './GlobalSettingsBase'; | |||
31 | import ProfileBase from './Profile'; | 31 | import ProfileBase from './Profile'; |
32 | import ServiceBase from './ServiceBase'; | 32 | import ServiceBase from './ServiceBase'; |
33 | 33 | ||
34 | export const FALLBACK_LOCALE = 'en'; | ||
35 | |||
34 | export function defineSharedStoreModel< | 36 | export function defineSharedStoreModel< |
35 | TG extends IAnyModelType, | 37 | TG extends IAnyModelType, |
36 | TP extends IAnyModelType, | 38 | TP extends IAnyModelType, |
@@ -43,7 +45,7 @@ export function defineSharedStoreModel< | |||
43 | servicesById: types.map(service), | 45 | servicesById: types.map(service), |
44 | services: types.array(types.reference(service)), | 46 | services: types.array(types.reference(service)), |
45 | shouldUseDarkColors: false, | 47 | shouldUseDarkColors: false, |
46 | language: 'en', | 48 | language: FALLBACK_LOCALE, |
47 | }); | 49 | }); |
48 | } | 50 | } |
49 | 51 | ||