Switch tracking from Array to Set

This commit is contained in:
Wolfsblvt 2025-02-27 21:26:45 +01:00
parent b98556855d
commit f11a834895

View File

@ -9,7 +9,7 @@ var langs;
// eslint-disable-next-line prefer-const // eslint-disable-next-line prefer-const
var localeData; var localeData;
/** @type {Array<string>|null} Array of translations keys if they should be tracked - if not tracked then null */ /** @type {Set<string>|null} Array of translations keys if they should be tracked - if not tracked then null */
let trackMissingDynamicTranslate = null; let trackMissingDynamicTranslate = null;
export const getCurrentLocale = () => localeFile; export const getCurrentLocale = () => localeFile;
@ -104,8 +104,8 @@ export function translate(text, key = null) {
console.trace('WARN: No translation key provided'); console.trace('WARN: No translation key provided');
return ''; return '';
} }
if (trackMissingDynamicTranslate && localeData && !Object.hasOwn(localeData, translationKey) && !trackMissingDynamicTranslate.includes(translationKey)) { if (trackMissingDynamicTranslate && localeData && !Object.hasOwn(localeData, translationKey)) {
trackMissingDynamicTranslate.push(translationKey); trackMissingDynamicTranslate.add(translationKey);
} }
return localeData?.[translationKey] || text; return localeData?.[translationKey] || text;
} }
@ -178,7 +178,7 @@ async function getMissingTranslations() {
const missingData = []; const missingData = [];
if (trackMissingDynamicTranslate) { if (trackMissingDynamicTranslate) {
missingData.push(...trackMissingDynamicTranslate.map(key => ({ key, language: localeFile, value: key }))); missingData.push(...Array.from(trackMissingDynamicTranslate).map(key => ({ key, language: localeFile, value: key })));
} }
// Determine locales to search for untranslated strings // Determine locales to search for untranslated strings
@ -225,7 +225,7 @@ async function getMissingTranslations() {
console.log(missingDataMap); console.log(missingDataMap);
if (trackMissingDynamicTranslate) { if (trackMissingDynamicTranslate) {
const trackMissingDynamicTranslateMap = Object.fromEntries(trackMissingDynamicTranslate.map(key => [key, key])); const trackMissingDynamicTranslateMap = Object.fromEntries(Array.from(trackMissingDynamicTranslate).map(key => [key, key]));
console.log(`Dynamic translations missing (${Object.keys(trackMissingDynamicTranslateMap).length}):`); console.log(`Dynamic translations missing (${Object.keys(trackMissingDynamicTranslateMap).length}):`);
console.log(trackMissingDynamicTranslateMap); console.log(trackMissingDynamicTranslateMap);
} }
@ -292,7 +292,7 @@ export async function initLocales() {
}); });
if (localStorage.getItem('trackDynamicTranslate') === 'true' && isSupportedNonEnglish()) { if (localStorage.getItem('trackDynamicTranslate') === 'true' && isSupportedNonEnglish()) {
trackMissingDynamicTranslate = []; trackMissingDynamicTranslate = new Set();
} }
registerDebugFunction('getMissingTranslations', 'Get missing translations', registerDebugFunction('getMissingTranslations', 'Get missing translations',
@ -307,7 +307,7 @@ export async function initLocales() {
const isTracking = localStorage.getItem('trackDynamicTranslate') !== 'true'; const isTracking = localStorage.getItem('trackDynamicTranslate') !== 'true';
localStorage.setItem('trackDynamicTranslate', isTracking ? 'true' : 'false'); localStorage.setItem('trackDynamicTranslate', isTracking ? 'true' : 'false');
if (isTracking && isSupportedNonEnglish()) { if (isTracking && isSupportedNonEnglish()) {
trackMissingDynamicTranslate = []; trackMissingDynamicTranslate = new Set();
toastr.success('Dynamic translation tracking enabled.'); toastr.success('Dynamic translation tracking enabled.');
} else if (isTracking) { } else if (isTracking) {
trackMissingDynamicTranslate = null; trackMissingDynamicTranslate = null;