- verbeteringen client

- Invoer van een 'constanten' cache op niveau van useTranslation.js, om in de ProgressTracker de boodschappen in de juiste taal te zetten.
This commit is contained in:
Josako
2025-07-21 17:39:52 +02:00
parent f8f941d1e1
commit 0f33beddf4
6 changed files with 379 additions and 5 deletions

View File

@@ -167,6 +167,94 @@ export function useTranslation() {
};
}
// Global cache for constants - shared across all component instances
const CONSTANTS_CACHE = {
currentLanguage: null,
translations: {}
};
/**
* Composable for translating application constants with global caching
* This ensures all component instances share the same cached translations
*/
export function useConstantsTranslation() {
const { translateSafe } = useTranslation();
/**
* Translate constants with global caching
* @param {Object} constants - Object with key-value pairs of constants to translate
* @param {string} targetLang - Target language code
* @param {Object} options - Translation options
* @returns {Promise<Object>} Object with translated constants
*/
const translateConstants = async (constants, targetLang, options = {}) => {
console.log('useConstantsTranslation: translateConstants called', { targetLang, currentCached: CONSTANTS_CACHE.currentLanguage });
// Check if we already have translations for this language
if (CONSTANTS_CACHE.currentLanguage === targetLang && CONSTANTS_CACHE.translations) {
console.log('useConstantsTranslation: Using cached translations for', targetLang);
return { ...CONSTANTS_CACHE.translations };
}
console.log('useConstantsTranslation: Translating constants to', targetLang);
try {
const translated = {};
// Translate each constant
for (const [key, originalText] of Object.entries(constants)) {
translated[key] = await translateSafe(originalText, targetLang, {
context: 'constants',
fallbackText: originalText,
...options
});
}
// Update global cache
CONSTANTS_CACHE.currentLanguage = targetLang;
CONSTANTS_CACHE.translations = translated;
console.log('useConstantsTranslation: Successfully translated and cached constants');
return translated;
} catch (error) {
console.error('useConstantsTranslation: Error translating constants:', error);
// Return original constants as fallback
return { ...constants };
}
};
/**
* Get cached translations for current language
* @returns {Object|null} Cached translations or null if not available
*/
const getCachedTranslations = () => {
return CONSTANTS_CACHE.currentLanguage ? { ...CONSTANTS_CACHE.translations } : null;
};
/**
* Clear the constants cache (useful for testing or language reset)
*/
const clearCache = () => {
CONSTANTS_CACHE.currentLanguage = null;
CONSTANTS_CACHE.translations = {};
console.log('useConstantsTranslation: Cache cleared');
};
/**
* Get current cached language
*/
const getCachedLanguage = () => {
return CONSTANTS_CACHE.currentLanguage;
};
return {
translateConstants,
getCachedTranslations,
clearCache,
getCachedLanguage
};
}
/**
* Simplified composable for basic translation needs
* Use this when you only need simple text translation