import { popups } from '../popups/popups.js'; import { strip } from '../tools/main.js' const texts = { pages: {}, sections: {}, popups: {} }; let uiLabels = null; const loadPageTexts = async function (page) { if (page === '/') { page = '/index'; }; console.log('Loading page texts for', page); page = '/' + strip(page, '/'); if (!(page in texts.pages)) { texts.pages[page] = await import(`../../i18n/${window.LANGUAGE}/pages${page}.js`); }; for (let i = 0; i < Object.keys(texts.pages[page].texts).length; i++) { const elements = document.querySelectorAll(`[data-i18n-id="${Object.keys(texts.pages[page].texts)[i]}"]`); for (let e of elements) { let n = e.dataset.i18nNumber; if (!(n === '0' || n === '1')) { n = '0'; }; if (texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][n] !== null) { e.textContent = texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][n]; }; e.title = e.textContent; e.ariaLabel = e.textContent; for (let argIndex = 0; argIndex < Object.keys(texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2]).length; argIndex++) { e.setAttribute(Object.keys(texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2])[argIndex], texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2][Object.keys(texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2])[argIndex]]); }; }; }; }; const loadSectionTexts = async function (section) { if (section === '/') { section = '/index'; }; console.log('Loading section texts for', section); section = '/' + strip(section, '/'); if (!(section in texts.sections)) { texts.sections[section] = await import(`../../i18n/${window.LANGUAGE}/${section}.js`); }; for (let i = 0; i < Object.keys(texts.sections[section].texts).length; i++) { const elements = document.querySelectorAll(`[data-i18n-id="${Object.keys(texts.sections[section].texts)[i]}"]`); for (let e of elements) { let n = e.dataset.i18nNumber; if (!(n === '0' || n === '1')) { n = '0'; }; if (texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][n] !== null) { e.textContent = texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][n]; }; e.title = e.textContent; e.ariaLabel = e.textContent; for (let argIndex = 0; argIndex < Object.keys(texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2]).length; argIndex++) { e.setAttribute(Object.keys(texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2])[argIndex], texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2][Object.keys(texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2])[argIndex]]); }; }; }; }; const loadPopupTexts = async function (popup) { console.log('Loading popup texts for', popup); if (!(popup in texts.popups)) { texts.popups[popup] = await import(`../../i18n/${window.LANGUAGE}/popups/${popup}.js`); }; for (let i = 0; i < Object.keys(texts.popups[popup].texts).length; i++) { const elements = document.querySelectorAll(`[data-i18n-id="${Object.keys(texts.popups[popup].texts)[i]}"]`); for (let e of elements) { let n = e.dataset.i18nNumber; if (!(n === '0' || n === '1')) { n = '0'; }; if (texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][n] !== null) { e.textContent = texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][n]; }; e.title = e.textContent; e.ariaLabel = e.textContent; for (let argIndex = 0; argIndex < Object.keys(texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2]).length; argIndex++) { e.setAttribute(Object.keys(texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2])[argIndex], texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2][Object.keys(texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2])[argIndex]]); }; }; }; }; const getPageText = async function (page, id, n = 0) { if (page === '/') { page = '/index'; }; page = '/' + strip(page, '/'); if (!(page in texts.pages)) { texts.pages[page] = await import(`../../i18n/${window.LANGUAGE}/pages${page}.js`); }; if (!(n === 0 || n === 1)) { n = 0; }; if (!(id in texts.pages[page].texts)) { return null; }; return texts.pages[page].texts[id][n]; }; const getSectionText = async function (section, id, n = 0) { section = '/' + strip(section, '/'); if (!(section in texts.sections)) { texts.sections[section] = await import(`../../i18n/${window.LANGUAGE}${section}.js`); }; if (!(n === 0 || n === 1)) { n = 0; }; if (!(id in texts.sections[section].texts)) { return null; }; return texts.sections[section].texts[id][n]; }; const getPopupText = async function (popup, id, n = 0) { popup = '/' + strip(popup, '/'); if (!(popup in texts.popups)) { texts.popups[popup] = await import(`../../i18n/${window.LANGUAGE}/popups/${popup}.js`); }; if (!(n === 0 || n === 1)) { n = 0; }; if (!(id in texts.popups[popup].texts)) { return null; }; return texts.popups[popup].texts[id][n]; }; const getUiLabels = async function () { try { if (!uiLabels) { const path = `../../i18n/ui-labels/${window.LANGUAGE}/main.js`; uiLabels = await import(path); }; } catch (err) { console.error('Error loading UI labels:', err); uiLabels = await import(`../../i18n/ui-labels/en/main.js`); } return uiLabels; }; export { loadPageTexts, loadSectionTexts, loadPopupTexts, getPageText, getSectionText, getPopupText, getUiLabels };