1
- import {
2
- currentSupportedLanguages ,
3
- dayjsLocaleImportMap ,
4
- } from "@renderer/@types/constants"
1
+ import { currentSupportedLanguages , dayjsLocaleImportMap } from "@renderer/@types/constants"
5
2
import { defaultResources } from "@renderer/@types/default-resource"
6
3
import { getGeneralSettings , setGeneralSetting } from "@renderer/atoms/settings/general"
4
+ import { IS_MANUAL_CHANGE_LANGUAGE_KEY } from "@renderer/constants"
7
5
import { fallbackLanguage , i18nAtom , LocaleCache } from "@renderer/i18n"
8
6
import { EventBus } from "@renderer/lib/event-bus"
9
7
import { jotaiStore } from "@renderer/lib/jotai"
@@ -110,7 +108,19 @@ export const I18nProvider: FC<PropsWithChildren> = ({ children }) => {
110
108
111
109
const callOnce = useRef ( false )
112
110
const detectOnce = useRef ( false )
111
+
112
+ useLayoutEffect ( ( ) => {
113
+ const i18next = currentI18NInstance
114
+
115
+ i18next . on ( "languageChanged" , langChangedHandler )
116
+
117
+ return ( ) => {
118
+ i18next . off ( "languageChanged" )
119
+ }
120
+ } , [ currentI18NInstance ] )
121
+
113
122
useLayoutEffect ( ( ) => {
123
+ if ( localStorage . getItem ( IS_MANUAL_CHANGE_LANGUAGE_KEY ) ) return
114
124
if ( detectOnce . current ) return
115
125
const languageDetector = new LanguageDetector ( )
116
126
const userLang = languageDetector . detect ( )
@@ -122,16 +132,6 @@ export const I18nProvider: FC<PropsWithChildren> = ({ children }) => {
122
132
detectOnce . current = true
123
133
} , [ ] )
124
134
125
- useLayoutEffect ( ( ) => {
126
- const i18next = currentI18NInstance
127
-
128
- i18next . on ( "languageChanged" , langChangedHandler )
129
-
130
- return ( ) => {
131
- i18next . off ( "languageChanged" )
132
- }
133
- } , [ currentI18NInstance ] )
134
-
135
135
useLayoutEffect ( ( ) => {
136
136
if ( callOnce . current ) return
137
137
const { language } = getGeneralSettings ( )
0 commit comments