From b455e63da75aa71eea00adc9349d7b456664fbcd Mon Sep 17 00:00:00 2001 From: taichan <40626578+tai-cha@users.noreply.github.com> Date: Thu, 26 Jun 2025 08:26:44 +0900 Subject: chore(frontend): 開発モード時に言語ファイルの変更を自動で反映するように (#16215) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(frontend): 開発モード時に言語ファイルの変更を自動で反映するように * fix message * naming * SPDX --- packages/frontend/src/boot/common.ts | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'packages/frontend/src/boot/common.ts') diff --git a/packages/frontend/src/boot/common.ts b/packages/frontend/src/boot/common.ts index c8098b6cf8..992bde9bd1 100644 --- a/packages/frontend/src/boot/common.ts +++ b/packages/frontend/src/boot/common.ts @@ -81,8 +81,10 @@ export async function common(createVue: () => Promise>) { //#region Detect language & fetch translations const localeVersion = miLocalStorage.getItem('localeVersion'); const localeOutdated = (localeVersion == null || localeVersion !== version || locale == null); - if (localeOutdated) { - const res = await window.fetch(`/assets/locales/${lang}.${version}.json`); + + async function fetchAndUpdateLocale({ useCache } = { useCache: true }) { + const fetchOptions: RequestInit | undefined = useCache ? undefined : { cache: 'no-store' }; + const res = await window.fetch(`/assets/locales/${lang}.${version}.json`, fetchOptions); if (res.status === 200) { const newLocale = await res.text(); const parsedNewLocale = JSON.parse(newLocale); @@ -92,6 +94,23 @@ export async function common(createVue: () => Promise>) { updateI18n(parsedNewLocale); } } + + if (localeOutdated) { + fetchAndUpdateLocale(); + } + + if (import.meta.hot) { + import.meta.hot.on('locale-update', async (updatedLang: string) => { + console.info(`Locale updated: ${updatedLang}`); + if (updatedLang === lang) { + await new Promise(resolve => { + window.setTimeout(resolve, 500); + }); + await fetchAndUpdateLocale({ useCache: false }); + window.location.reload(); + } + }); + } //#endregion // タッチデバイスでCSSの:hoverを機能させる -- cgit v1.2.3-freya