diff --git a/app/pages/[d1]/[d2]/index.vue b/app/pages/[d1]/[d2]/index.vue index dceae28..9013128 100644 --- a/app/pages/[d1]/[d2]/index.vue +++ b/app/pages/[d1]/[d2]/index.vue @@ -4,6 +4,7 @@ import { getLayoutType } from '#layers/utils/dataUtil' const pageDataStore = usePageDataStore() const { pageData } = storeToRefs(pageDataStore) +console.log("๐Ÿš€ d2 index ~ pageData:", pageData) const currentLayout = computed(() => getLayoutType(pageData.value)) diff --git a/layers/components/blocks/LanguageSwitcher.vue b/layers/components/blocks/LanguageSwitcher.vue index da81a41..245d386 100644 --- a/layers/components/blocks/LanguageSwitcher.vue +++ b/layers/components/blocks/LanguageSwitcher.vue @@ -2,7 +2,9 @@
+ + ๋ณ€๊ฒฝ ์ค‘... +
@@ -24,24 +29,40 @@ const availableLanguages = computed(() => { return gameDataStore.gameData?.lang_codes || ['ko'] }) -const { locale } = useI18n() +const { locale, setLocale } = useI18n() const switchLocalePath = useSwitchLocalePath() const router = useRouter() +const pageDataStore = usePageDataStore() const selectedLocale = ref(locale.value) +const isChanging = ref(false) -// ์–ธ์–ด ๋ณ€๊ฒฝ ํ•จ์ˆ˜ +// ์–ธ์–ด ๋ณ€๊ฒฝ ํ•จ์ˆ˜ (CSR ๋ฐฉ์‹) const switchLanguage = async () => { - console.log( - '๐Ÿš€ ~ switchLanguage ~ selectedLocale.value:', - selectedLocale.value - ) - if (selectedLocale.value) { + if (!selectedLocale.value || isChanging.value) return + + isChanging.value = true + + try { // URL ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์–ธ์–ด ๋ณ€๊ฒฝ const path = switchLocalePath(selectedLocale.value) if (path) { - await router.push(path) + // ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™” (์ƒˆ๋กœ์šด ์–ธ์–ด๋กœ ๋‹ค์‹œ ๋กœ๋“œ๋˜๋„๋ก) + pageDataStore.clearPageData() + + // ์–ธ์–ด ๋ณ€๊ฒฝ ๋ฐ ๋ผ์šฐํŒ… + await setLocale(selectedLocale.value) + // await router.push(path) + + // ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์žฌ๋กœ๋“œ ๋ณด์žฅ + await nextTick() + window.location.reload() } + } catch { + // ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ด์ „ ์–ธ์–ด๋กœ ๋ณต์› + selectedLocale.value = locale.value + } finally { + isChanging.value = false } } diff --git a/layers/composables/useGetGameAlias.ts b/layers/composables/useGetGameAlias.ts index 55c6c46..20d3cd4 100644 --- a/layers/composables/useGetGameAlias.ts +++ b/layers/composables/useGetGameAlias.ts @@ -12,7 +12,7 @@ const extractGameAliasFromHost = (host: string, baseDomain: string): string => { return '' } - const subdomain = host.split('.')[0] + const subdomain = host.split(':')[0] return subdomain && subdomain !== 'www' ? subdomain : '' } diff --git a/layers/composables/usePathResolver.ts b/layers/composables/usePathResolver.ts index 2b3707d..c5122a4 100644 --- a/layers/composables/usePathResolver.ts +++ b/layers/composables/usePathResolver.ts @@ -7,16 +7,18 @@ export const usePathResolver = () => { // URL์—์„œ ์–ธ์–ด ์ฝ”๋“œ ํŒจํ„ด์„ ์ฐพ์•„์„œ ๊ทธ ๋’ค์˜ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ถœ // ์˜ˆ: /ko/about/story -> /about/story // ์˜ˆ: /en/test/page -> /test/page + // ์˜ˆ: /zh-tw/about/story -> /about/story + // ์˜ˆ: /zh-cn/test/page -> /test/page // ์˜ˆ: /ko -> "" (๋นˆ ๋ฌธ์ž์—ด) - const languagePattern = /^\/[a-z]{2}\/(.+)$/ + const languagePattern = /^\/[a-z]{2}(-[a-z]{2})?\/(.+)$/ const match = targetUrl.match(languagePattern) - if (match && match[1]) { - return `/${match[1]}` + if (match && match[2]) { + return `/${match[2]}` } - // ์–ธ์–ด ์ฝ”๋“œ๋งŒ ์žˆ๊ณ  ๋’ค์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒฝ์šฐ (์˜ˆ: /ko, /en) - const languageOnlyPattern = /^\/[a-z]{2}$/ + // ์–ธ์–ด ์ฝ”๋“œ๋งŒ ์žˆ๊ณ  ๋’ค์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒฝ์šฐ (์˜ˆ: /ko, /en, /zh-tw, /zh-cn) + const languageOnlyPattern = /^\/[a-z]{2}(-[a-z]{2})?$/ if (languageOnlyPattern.test(targetUrl)) { return '' } diff --git a/layers/layouts/promotion.vue b/layers/layouts/promotion.vue index 674bc39..add72a8 100644 --- a/layers/layouts/promotion.vue +++ b/layers/layouts/promotion.vue @@ -1,4 +1,6 @@ - +