From 3c47e6da6180a4749ea4a8e3a5a964092ac223a5 Mon Sep 17 00:00:00 2001 From: clkim Date: Mon, 9 Feb 2026 17:10:19 +0900 Subject: [PATCH] =?UTF-8?q?fix.=20=EC=96=B8=EC=96=B4=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EA=B8=B0=EB=B3=B8=20=EC=96=B8=EC=96=B4=20gameDataStore?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/middleware/init.route.global.ts | 2 +- layers/middleware/inspection.ts | 8 ++++++-- layers/middleware/pageData.global.ts | 3 ++- layers/server/middleware/gameData.ts | 1 + layers/utils/localeUtil.ts | 12 ++++++------ 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/layers/middleware/init.route.global.ts b/layers/middleware/init.route.global.ts index efdfc69..7357c27 100644 --- a/layers/middleware/init.route.global.ts +++ b/layers/middleware/init.route.global.ts @@ -23,7 +23,7 @@ export default defineNuxtRouteMiddleware(to => { // 최종 로케일 결정 const finalLocale = - csrGetFinalLocale(fullPath, langCodes.value) || + csrGetFinalLocale(fullPath, langCodes.value, defaultLangCode.value) || defaultLangCode.value || DEFAULT_LOCALE_CODE diff --git a/layers/middleware/inspection.ts b/layers/middleware/inspection.ts index 51f30de..694d2a7 100644 --- a/layers/middleware/inspection.ts +++ b/layers/middleware/inspection.ts @@ -9,7 +9,7 @@ export default defineNuxtRouteMiddleware(async to => { try { const gameDataStore = useGameDataStore() - const { gameId, langCodes } = storeToRefs(gameDataStore) + const { gameId, langCodes, defaultLangCode } = storeToRefs(gameDataStore) // app.vue에서 설정한 스토어 값이 없으면 대기 if (!gameId.value || !langCodes.value) return @@ -19,7 +19,11 @@ export default defineNuxtRouteMiddleware(async to => { // const stoveMaintenanceApiUrl = `${runtimeConfig.public.stoveMaintenanceApiUrl}` const stoveGameId = gameId.value - const finalLocale = csrGetFinalLocale(to.path, langCodes.value) + const finalLocale = csrGetFinalLocale( + to.path, + langCodes.value, + defaultLangCode.value + ) // 웹 점검 ----- const { isWebInspection, getInspectionDataExternal } = diff --git a/layers/middleware/pageData.global.ts b/layers/middleware/pageData.global.ts index e54a075..c0bbdf4 100644 --- a/layers/middleware/pageData.global.ts +++ b/layers/middleware/pageData.global.ts @@ -26,7 +26,8 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { const accessToken = csrGetAccessToken() const gameDomain = getGameDomain() const pathWithoutLocale = getPathAfterLanguage(to.path) - const langCode = csrGetFinalLocale(to.path, langCodes.value) || 'ko' + const langCode = + csrGetFinalLocale(to.path, langCodes.value, defaultLangCode.value) || 'ko' let pageDataResponse: PageDataResponse | null = null diff --git a/layers/server/middleware/gameData.ts b/layers/server/middleware/gameData.ts index 9b3611f..0755b5b 100644 --- a/layers/server/middleware/gameData.ts +++ b/layers/server/middleware/gameData.ts @@ -69,6 +69,7 @@ const cache = new LRUCache({ /** * Locale Middleware 역할 함수 * URL의 언어 코드를 최종 언어로 변경하거나 추가 + * template에서는 i18n 버전 때문에 사용 필요. (동일 코드 init.route.global -> csr에서만 실행.) */ function fnLocaleMiddleware( event: H3Event, diff --git a/layers/utils/localeUtil.ts b/layers/utils/localeUtil.ts index cfd3f0d..0168c20 100644 --- a/layers/utils/localeUtil.ts +++ b/layers/utils/localeUtil.ts @@ -1,5 +1,3 @@ -import { DEFAULT_LOCALE_CODE } from '@/i18n.config' - // 사용자 선호 언어 조회 export const getPreferredLanguage = (acceptLanguageHeader = '') => { const languages = acceptLanguageHeader @@ -32,11 +30,15 @@ const parseCookies = (cookieHeader: string) => { * * @param {string} path - 현재 URL 경로 */ -export const csrGetFinalLocale = (path = '', coveragesLocales: string[]) => { +export const csrGetFinalLocale = ( + path = '', + coveragesLocales: string[], + defaultLocale: string +) => { const runtimeConfig = useRuntimeConfig() const baseDomain = `${runtimeConfig.public.baseDomain}` - let finalLocale = DEFAULT_LOCALE_CODE // 기본값 설정 + let finalLocale = defaultLocale // 기본값 설정 // 1. URL 패스에 포함된 언어 if (path && path !== '' && path.split('/').length > 1) { @@ -83,8 +85,6 @@ export const csrGetFinalLocale = (path = '', coveragesLocales: string[]) => { } // 3. 서비스 기본 언어 - finalLocale = DEFAULT_LOCALE_CODE - return finalLocale }