summaryrefslogtreecommitdiff
path: root/packages/frontend/src/boot
diff options
context:
space:
mode:
authortaichan <40626578+tai-cha@users.noreply.github.com>2025-06-26 08:26:44 +0900
committerGitHub <noreply@github.com>2025-06-26 08:26:44 +0900
commitb455e63da75aa71eea00adc9349d7b456664fbcd (patch)
tree3f6f4cb386b6c704dd34cf505a2588f040a69d52 /packages/frontend/src/boot
parentUpdate CHANGELOG.md (diff)
downloadmisskey-b455e63da75aa71eea00adc9349d7b456664fbcd.tar.gz
misskey-b455e63da75aa71eea00adc9349d7b456664fbcd.tar.bz2
misskey-b455e63da75aa71eea00adc9349d7b456664fbcd.zip
chore(frontend): 開発モード時に言語ファイルの変更を自動で反映するように (#16215)
* chore(frontend): 開発モード時に言語ファイルの変更を自動で反映するように * fix message * naming * SPDX
Diffstat (limited to 'packages/frontend/src/boot')
-rw-r--r--packages/frontend/src/boot/common.ts23
1 files changed, 21 insertions, 2 deletions
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<App<Element>>) {
//#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<App<Element>>) {
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を機能させる