mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-06-29 10:51:34 +00:00
35 lines
903 B
TypeScript
35 lines
903 B
TypeScript
import { useEffect } from 'react';
|
|
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
|
import i18n, { changeLanguageSafely, normalizeLocale } from '~/locales/i18n';
|
|
import store from '~/store';
|
|
|
|
export default function LanguageSync() {
|
|
const lang = useRecoilValue(store.lang);
|
|
const setLanguageLoading = useSetRecoilState(store.languageLoading);
|
|
|
|
useEffect(() => {
|
|
if (i18n.language === normalizeLocale(lang)) {
|
|
setLanguageLoading(false);
|
|
return;
|
|
}
|
|
|
|
let isCurrentRequest = true;
|
|
setLanguageLoading(true);
|
|
|
|
changeLanguageSafely(lang)
|
|
.catch((error) => {
|
|
console.error('[i18n] Failed to change language', error);
|
|
})
|
|
.finally(() => {
|
|
if (isCurrentRequest) {
|
|
setLanguageLoading(false);
|
|
}
|
|
});
|
|
|
|
return () => {
|
|
isCurrentRequest = false;
|
|
};
|
|
}, [lang, setLanguageLoading]);
|
|
|
|
return null;
|
|
}
|