From ab05190e5ed1d44e2afe18c1ae6d2f663a3a9494 Mon Sep 17 00:00:00 2001 From: TheFlow Date: Sun, 26 Oct 2025 16:18:34 +1300 Subject: [PATCH] fix(i18n): add cache-busting to translation fetches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Forces fresh translation fetches on every language change by appending ?v= to bypass browser cache and service worker cache. Resolves production cache issues where stale translation files persisted after service worker updates. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- public/js/i18n-simple.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/js/i18n-simple.js b/public/js/i18n-simple.js index be3a137b..be7db5bc 100644 --- a/public/js/i18n-simple.js +++ b/public/js/i18n-simple.js @@ -92,8 +92,11 @@ const I18n = { async loadTranslations(lang) { try { + // Cache-busting: Add timestamp to force fresh fetch and bypass stale cache + const cacheBust = `?v=${Date.now()}`; + // Always load common translations (footer, navbar, etc.) - const commonResponse = await fetch(`/locales/${lang}/common.json`); + const commonResponse = await fetch(`/locales/${lang}/common.json${cacheBust}`); let commonTranslations = {}; if (commonResponse.ok) { commonTranslations = await commonResponse.json(); @@ -101,7 +104,7 @@ const I18n = { // Load page-specific translations const pageName = this.detectPageName(); - const pageResponse = await fetch(`/locales/${lang}/${pageName}.json`); + const pageResponse = await fetch(`/locales/${lang}/${pageName}.json${cacheBust}`); let pageTranslations = {}; if (pageResponse.ok) { pageTranslations = await pageResponse.json();