diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2025-01-08 19:33:43 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-08 10:33:43 +0000 |
| commit | c49a13de65a678e56a6350c6a8562d73a7caa282 (patch) | |
| tree | cd1d77dc7348e2722e44b3c8c445c81f436b7bea /packages/frontend-embed/src/boot.ts | |
| parent | fix(frontend): 自分以外のノートを消したときに実績を解除... (diff) | |
| download | sharkey-c49a13de65a678e56a6350c6a8562d73a7caa282.tar.gz sharkey-c49a13de65a678e56a6350c6a8562d73a7caa282.tar.bz2 sharkey-c49a13de65a678e56a6350c6a8562d73a7caa282.zip | |
fix(frontend-embed): localeのバージョンチェックが抜けており起動に失敗することがある問題を修正 (#15212)
* fix(frontend-embed): localeのバージョンチェックが抜けており起動に失敗することがある問題を修正
* Update Changelog
Diffstat (limited to 'packages/frontend-embed/src/boot.ts')
| -rw-r--r-- | packages/frontend-embed/src/boot.ts | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/packages/frontend-embed/src/boot.ts b/packages/frontend-embed/src/boot.ts index 8ab4ab32e6..c1b2b58beb 100644 --- a/packages/frontend-embed/src/boot.ts +++ b/packages/frontend-embed/src/boot.ts @@ -17,11 +17,11 @@ import { applyTheme, assertIsTheme } from '@/theme.js'; import { fetchCustomEmojis } from '@/custom-emojis.js'; import { DI } from '@/di.js'; import { serverMetadata } from '@/server-metadata.js'; -import { url } from '@@/js/config.js'; +import { url, version, locale, lang, updateLocale } from '@@/js/config.js'; import { parseEmbedParams } from '@@/js/embed-page.js'; import { postMessageToParentWindow, setIframeId } from '@/post-message.js'; import { serverContext } from '@/server-context.js'; -import { i18n } from '@/i18n.js'; +import { i18n, updateI18n } from '@/i18n.js'; import type { Theme } from '@/theme.js'; @@ -71,6 +71,22 @@ if (embedParams.colorMode === 'dark') { } //#endregion +//#region Detect language & fetch translations +const localeVersion = localStorage.getItem('localeVersion'); +const localeOutdated = (localeVersion == null || localeVersion !== version || locale == null); +if (localeOutdated) { + const res = await window.fetch(`/assets/locales/${lang}.${version}.json`); + if (res.status === 200) { + const newLocale = await res.text(); + const parsedNewLocale = JSON.parse(newLocale); + localStorage.setItem('locale', newLocale); + localStorage.setItem('localeVersion', version); + updateLocale(parsedNewLocale); + updateI18n(parsedNewLocale); + } +} +//#endregion + // サイズの制限 document.documentElement.style.maxWidth = '500px'; |