diff --git a/src/server/web/boot.js b/src/server/web/boot.js
index 993b770ab10a601dbd842586050eb3d303857732..6347c5566ef609d5b883dd215dd51689e9648a4e 100644
--- a/src/server/web/boot.js
+++ b/src/server/web/boot.js
@@ -20,9 +20,10 @@ window.onerror = (e) => {
 	const v = localStorage.getItem('v') || VERSION;
 
 	//#region Detect language & fetch translations
-	if (localStorage.hasOwnProperty('locale')) {
-		// TODO: 非同期でlocaleの更新処理をする
-	} else {
+	const localeVersion = localStorage.getItem('localeVersion');
+	const localeOutdated = (localeVersion == null || localeVersion !== v);
+
+	if (!localStorage.hasOwnProperty('locale') || localeOutdated) {
 		const supportedLangs = LANGS;
 		let lang = localStorage.getItem('lang');
 		if (lang == null || !supportedLangs.includes(lang)) {
@@ -39,6 +40,7 @@ window.onerror = (e) => {
 		const res = await fetch(`/assets/locales/${lang}.${v}.json`);
 		localStorage.setItem('lang', lang);
 		localStorage.setItem('locale', await res.text());
+		localStorage.setItem('localeVersion', v);
 	}
 	//#endregion