diff --git a/src/App.js b/src/App.js index 59f7ea4..8c4e8b1 100644 --- a/src/App.js +++ b/src/App.js @@ -10,7 +10,7 @@ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import Home from './Pages/Home'; -import Software from './Pages/Software/Software'; +import SoftwareMain from './Pages/Software/SoftwareMain'; import DXPDevelopment from './Pages/Software/Projects/DXPDevelopment'; import ConfigAutomation from './Pages/Software/Projects/ConfigAutomation'; import KanjiApplication from './Pages/Software/Projects/KanjiApplication'; @@ -29,12 +29,7 @@ import MetroidShooter from './Pages/Software/Projects/MetroidShooter'; import Books from './Pages/Books/Books'; import booksdata from './Pages/Books/books.json' -import Radio from './Pages/Radio/Radio'; -import Components from './Pages/Radio/Components'; -import Balkon from './Pages/Radio/Balkon'; - -import Fielddays from './Pages/Radio/fielddays/fielddays'; -import fielddaysdata from './Pages/Radio/fielddays/fielddays.json'; +import RadioMain from './Pages/Radio/RadioMain'; import MarkdownPage from './Pages/markdownPage'; @@ -43,53 +38,137 @@ import Footer from './UI/Footer'; import BasicPage from './Pages/BasicPage'; import Japan from './Japan/Japan'; -import Japanese from './Pages/Japanese/Japan'; +import JapaneseMain from './Pages/Japan/JapaneseMain'; + +const languages = ['en', 'nl']; + +export function getLanguage() { + const currentPath = window.location.pathname; + let language; + try { + const result = currentPath.split('/')[1]; + if (languages.includes(result)) { + language = result; + } else { + throw new Error('Invalid language detected'); + } + } + catch (error) { + language = 'en'; + } + return language; +} + +const languageStrings = { + en: { + // Common + and: 'and', + on: 'on', + // Titles + japanese: 'Japanese', + radio_amateur: 'Radio amateur', + software: 'Software', + // Navigation + portal: 'Portal', + language: 'Language', + // Radio + fielddays: 'Field days', + // Footer + footer_madewith: 'This site was made with', + footer_contentparsed: 'Content is parsed by', + }, + nl: { + // Common + and: 'en', + on: 'op', + // Titles + japanese: 'Japans', + radio_amateur: 'Radiozendamateur', + software: 'Software', + // Navigation + portal: 'Portaal', + language: 'Taal', + // Radio + fielddays: 'Velddagen', + // Footer + footer_madewith: 'Deze website is gemaakt met', + footer_contentparsed: 'Inhoud is verwerkt door', + }, +}; + +export function getString(language, key) { + return languageStrings[language][key] || `{${key}}`; +} function App() { + const language = getLanguage(); + const dates = ['20231111', '20231230', '20240121']; + + const paths = { + 'japan': , + 'radio': , + 'software': , + }; + + const fieldDaysRoutes = languages.map(lang => { + return dates.map(date => { + const path = `/${lang}/radio/fielddays/${date}`; + const mdPath = `Radio/fielddays/${lang}/${date}.md`; + return } />; + }); + }).flat(); + + function generateRoutes(languages, paths) { + const routes = []; + + languages.forEach(language => { + Object.keys(paths).forEach(path => { + const fullPath = `/${language}/${path}`; + routes.push( + + ); + }); + }); + + return routes; + } + const generatedRoutes = generateRoutes(languages, paths); + return ( -
- +
+ - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> - }> + }> + }> + }> - }> + {fieldDaysRoutes} + {generatedRoutes} + + }> + }> + }> + }> + }> + }> + }> + }> + }> + }> + }> + }> + }> + }> + + }> + }> + }> + + }> }> - }> - }> - }> - - }> - }> - }> - - - - }> + }>
diff --git a/src/overrides.scss b/src/overrides.scss index 6ffc8d1..8d19630 100644 --- a/src/overrides.scss +++ b/src/overrides.scss @@ -66,7 +66,6 @@ body.light { .table-fielddays { font-size: small; white-space: nowrap; - margin: auto; margin-bottom: 10px; }