37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import fallback from './fallback/th'
|
|
|
|
export default defineI18nLocale(async (locale: string) => {
|
|
const runtimeConfig = useRuntimeConfig()
|
|
const dataResourcesUrl = runtimeConfig.public.dataResourcesUrl as string
|
|
const multilingualFileName = 'STOVE_PUBTEMPLATE_common_translations.json'
|
|
try {
|
|
const resultGetMultilingual = await useGetMultilingual({
|
|
baseApiUrl: dataResourcesUrl,
|
|
fileName: multilingualFileName,
|
|
})
|
|
|
|
// multilingual 객체에서 현재 locale에 해당하는 데이터 추출
|
|
const multilingualData = resultGetMultilingual?.value?.multilingual
|
|
if (multilingualData && typeof multilingualData === 'object') {
|
|
// locale이 'th'이므로 'th' 키의 데이터를 반환
|
|
const localeData = multilingualData[locale] || multilingualData['th']
|
|
|
|
// localeData가 유효한 객체인지 확인
|
|
if (
|
|
localeData &&
|
|
typeof localeData === 'object' &&
|
|
!Array.isArray(localeData) &&
|
|
Object.keys(localeData).length > 0
|
|
) {
|
|
return localeData
|
|
}
|
|
}
|
|
|
|
// fallback이 빈 객체인 경우를 대비하여 최소한의 기본값 반환
|
|
return Object.keys(fallback).length > 0 ? fallback : { _placeholder: '' }
|
|
} catch (e) {
|
|
console.error('[Exception] th.defineI18nLocale: ', e)
|
|
return Object.keys(fallback).length > 0 ? fallback : { _placeholder: '' }
|
|
}
|
|
})
|