현재 프로젝트 진행중에 i18n을 사용중에 있었는데
새로고침을 진행하게 되면 init language로 돌아오는 현상을 목격했다.
현상을 해결하기 위해서 구글링중 발견한 방법은 로컬 스토리지에 현재 언어를 저장하는 것이였다.
// 기존
<button
onClick={() => {
changelanguageToKo();
}}
>
// 현재
<button
onClick={() => {
changelanguageToKo();
dispatch({ type: 'SET_LANGUAGE', language: 'ko' });
}}
>
// 새로 고침시 loginform 에서 넘어온 i18n의 값은 초기화가 됨.
// 그러므로 로컬 스토리지에 저장후 값이 다를때만 로컬스토리지 기준으로 변경.
const { language } = useMainState();
const { i18n } = useTranslation();
if (i18n.language != language) {
console.log('Refresh detected');
i18n.changeLanguage(language);
}