This commit is contained in:
HyeonJongKim
2025-10-30 14:50:39 +09:00
2 changed files with 31 additions and 1 deletions

View File

@@ -1,10 +1,39 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import appBridge from '@/utils/appBridge';
import ko from './ko.json';
import en from './en.json';
// 초기 언어 설정
let initialLanguage = 'ko';
// 네이티브 환경이 아닐 때는 localStorage에서 확인
if (!appBridge.isNativeEnvironment()) {
const storedLanguage = localStorage.getItem('i18nextLng');
if (storedLanguage && (storedLanguage === 'ko' || storedLanguage === 'en')) {
initialLanguage = storedLanguage;
}
} else {
// 네이티브 환경에서는 네이티브 언어를 가져와 localStorage에 설정
try {
appBridge.getLanguage().then((language) => {
if (language && typeof language === 'string' && (language === 'ko' || language === 'en')) {
localStorage.setItem('i18nextLng', language);
// i18n이 이미 초기화된 경우 언어 변경
if (i18n.isInitialized && i18n.language !== language) {
i18n.changeLanguage(language);
}
}
}).catch((error) => {
console.warn('Failed to get native language during init:', error);
});
} catch (error) {
console.warn('Failed to get native language:', error);
}
}
i18n
.use(LanguageDetector)
.use(initReactI18next)
@@ -13,7 +42,7 @@ i18n
en: {translation: en},
ko: {translation: ko},
},
lng: 'ko',
lng: initialLanguage,
fallbackLng: 'ko',
debug: true,
interpolation: {

View File

@@ -87,6 +87,7 @@ export const SettingPage = () => {
// i18n 언어도 동기화
if (i18n.language !== language) {
i18n.changeLanguage(language);
localStorage.setItem('i18nextLng', language);
}
});
}, [getLanguage, i18n]);