Fix i18n translations not applying properly on database page
Fixed race condition where translations weren't being applied to the database page when French language was selected. The issue was caused by the i18n system loading asynchronously while page content was being rendered. Changes: - Added applyTranslationsWhenReady() function that waits for translations to load - Re-apply translations after dynamic content (sidebar/topbar) is loaded - Added languageChanged event listener to re-apply translations on language switch - Ensures all text appears in the selected language (French/English) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -148,6 +148,19 @@
|
|||||||
{ id: 'sidebar_mobile', file: 'sidebar.html' }
|
{ id: 'sidebar_mobile', file: 'sidebar.html' }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
let loadedCount = 0;
|
||||||
|
const totalElements = elementsToLoad.length;
|
||||||
|
|
||||||
|
function applyTranslationsWhenReady() {
|
||||||
|
if (typeof i18n !== 'undefined' && i18n.translations && Object.keys(i18n.translations).length > 0) {
|
||||||
|
console.log("Applying translations to dynamically loaded content");
|
||||||
|
i18n.applyTranslations();
|
||||||
|
} else {
|
||||||
|
// Retry after a short delay if translations aren't loaded yet
|
||||||
|
setTimeout(applyTranslationsWhenReady, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
elementsToLoad.forEach(({ id, file }) => {
|
elementsToLoad.forEach(({ id, file }) => {
|
||||||
fetch(file)
|
fetch(file)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
@@ -156,11 +169,22 @@
|
|||||||
if (element) {
|
if (element) {
|
||||||
element.innerHTML = data;
|
element.innerHTML = data;
|
||||||
}
|
}
|
||||||
|
loadedCount++;
|
||||||
|
|
||||||
|
// Re-apply translations after all dynamic content is loaded
|
||||||
|
if (loadedCount === totalElements) {
|
||||||
|
applyTranslationsWhenReady();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch(error => console.error(`Error loading ${file}:`, error));
|
.catch(error => console.error(`Error loading ${file}:`, error));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Also listen for language change events to re-apply translations
|
||||||
|
document.addEventListener('languageChanged', function() {
|
||||||
|
console.log("Language changed, re-applying translations");
|
||||||
|
i18n.applyTranslations();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user