- 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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user