From 76da63056b365315cb228ebfdbb175cdc4d2c880 Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 29 Jan 2026 11:10:30 +0900 Subject: [PATCH 1/7] =?UTF-8?q?fix.=20=EC=96=B8=EC=96=B4=20=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20=EB=AC=B4=ED=95=9C=20=EB=A6=AC?= =?UTF-8?q?=EB=8B=A4=EC=9D=B4=EB=A0=89=ED=8A=B8=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/middleware/pageData.global.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/layers/middleware/pageData.global.ts b/layers/middleware/pageData.global.ts index a6e7662..06a685d 100644 --- a/layers/middleware/pageData.global.ts +++ b/layers/middleware/pageData.global.ts @@ -20,7 +20,7 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { const pageDataStore = usePageDataStore() const loadingStore = useLoadingStore() - const { langCodes } = storeToRefs(gameDataStore) + const { langCodes, defaultLangCode } = storeToRefs(gameDataStore) const stoveApiBaseUrl = runtimeConfig.public.stoveApiUrl const accessToken = csrGetAccessToken() @@ -113,7 +113,19 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { } // 91002 (Invalid LangCode): 미지원 언어로 접근 if (pageDataResponse?.code === 91002) { - return navigateTo(`/${langCode}/home`) + // 페이지별 지원 언어에 현재 langCode가 포함되지 않는 경우 + // 서비스 기본 언어(게임 기본 언어 또는 ko)로 한 번만 리다이렉트 + const fallbackLang = + defaultLangCode.value || + // defaultLangCode가 없으면 ko 우선, 없으면 첫 번째 언어, 그래도 없으면 ko + (langCodes.value?.includes('ko') ? 'ko' : langCodes.value?.[0] || 'ko') + + // 이미 fallback 언어로 접근 중이라면 더 이상 리다이렉트하지 않음 (무한 루프 방지) + if (langCode === fallbackLang) { + return + } + + return navigateTo(`/${fallbackLang}/home`) } // [TODO] From 9279b5c7d5877afb8201677d86727773f7b8f7e7 Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 29 Jan 2026 17:06:39 +0900 Subject: [PATCH 2/7] =?UTF-8?q?fix.=20/=20=EC=A0=91=EA=B7=BC=EC=8B=9C?= =?UTF-8?q?=EC=97=90=EB=8F=84=20lang=5Fcode=20=EC=A0=84=EB=8B=AC=20?= =?UTF-8?q?=EB=90=98=EB=8F=84=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/utils/urlUtil.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layers/utils/urlUtil.ts b/layers/utils/urlUtil.ts index 76bd4a5..b9c379d 100644 --- a/layers/utils/urlUtil.ts +++ b/layers/utils/urlUtil.ts @@ -61,7 +61,7 @@ export const getPathLocale = (url: string): string => { if (!url) return '' const cleanUrl = url.endsWith('/') ? url.slice(0, -1) : url - return cleanUrl.split('/')[1] + return cleanUrl.split('/')[1] || '' } /** From dcc7380e835f123af18280c105eeae522dc6bf30 Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 29 Jan 2026 18:14:21 +0900 Subject: [PATCH 3/7] =?UTF-8?q?fix.=20buttonList=20=EC=A4=91=EC=95=99=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/components/widgets/ButtonList.vue | 2 +- layers/layouts/default.vue | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/layers/components/widgets/ButtonList.vue b/layers/components/widgets/ButtonList.vue index a95d052..fc11979 100644 --- a/layers/components/widgets/ButtonList.vue +++ b/layers/components/widgets/ButtonList.vue @@ -123,7 +123,7 @@ const handleButtonClick = (button: PageDataResourceGroup) => {