Move language files to separate files.
This commit is contained in:
parent
a354893e83
commit
acab226fdf
79
src/App.js
79
src/App.js
@ -40,84 +40,7 @@ import Japan from './Pages/Japan/Japan';
|
|||||||
import JapaneseMain from './Pages/Japan/JapaneseMain';
|
import JapaneseMain from './Pages/Japan/JapaneseMain';
|
||||||
import EquipmentPage from './Pages/Radio/equipmentPage';
|
import EquipmentPage from './Pages/Radio/equipmentPage';
|
||||||
|
|
||||||
const languages = ['en', 'nl'];
|
import { languages, getLanguage } from './Language/Language';
|
||||||
|
|
||||||
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',
|
|
||||||
// Education
|
|
||||||
certification: 'Certification',
|
|
||||||
completed: 'Completed',
|
|
||||||
courses: 'Courses',
|
|
||||||
education: 'Education',
|
|
||||||
issued: 'issued',
|
|
||||||
skills: 'Skills',
|
|
||||||
// Navigation
|
|
||||||
portal: 'Portal',
|
|
||||||
language: 'Language',
|
|
||||||
// Radio
|
|
||||||
equipment: 'Equipment',
|
|
||||||
fielddays: 'Field days',
|
|
||||||
nvisAntenna: 'NVIS Antenna',
|
|
||||||
// Footer
|
|
||||||
footer_contentparsed: 'Content is parsed by',
|
|
||||||
footer_madewith: 'This site was made with',
|
|
||||||
},
|
|
||||||
nl: {
|
|
||||||
// Common
|
|
||||||
and: 'en',
|
|
||||||
on: 'op',
|
|
||||||
// Titles
|
|
||||||
japanese: 'Japans',
|
|
||||||
radio_amateur: 'Radiozendamateur',
|
|
||||||
software: 'Software',
|
|
||||||
// Education
|
|
||||||
certification: 'Certificering',
|
|
||||||
completed: 'Voltooid',
|
|
||||||
courses: 'Cursussen',
|
|
||||||
education: 'Opleiding',
|
|
||||||
issued: 'uitgegeven',
|
|
||||||
skills: 'Vaardigheden',
|
|
||||||
// Navigation
|
|
||||||
portal: 'Portaal',
|
|
||||||
language: 'Taal',
|
|
||||||
// Radio
|
|
||||||
equipment: 'Apparatuur',
|
|
||||||
fielddays: 'Velddagen',
|
|
||||||
nvisAntenna: 'NVIS Antenne',
|
|
||||||
// Footer
|
|
||||||
footer_contentparsed: 'Inhoud is verwerkt door',
|
|
||||||
footer_madewith: 'Deze website is gemaakt met',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export function getString(key) {
|
|
||||||
const language = getLanguage();
|
|
||||||
return languageStrings[language][key] || `{${key}}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const language = getLanguage();
|
const language = getLanguage();
|
||||||
|
|||||||
18
src/Language/Language.js
Normal file
18
src/Language/Language.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
export 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;
|
||||||
|
}
|
||||||
65
src/Language/LanguageStrings.js
Normal file
65
src/Language/LanguageStrings.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import { getLanguage } from "./Language";
|
||||||
|
|
||||||
|
const languageStrings = {
|
||||||
|
en: {
|
||||||
|
// Common
|
||||||
|
and: 'and',
|
||||||
|
on: 'on',
|
||||||
|
// Titles
|
||||||
|
japanese: 'Japanese',
|
||||||
|
radio_amateur: 'Radio amateur',
|
||||||
|
software: 'Software',
|
||||||
|
// Japan
|
||||||
|
download_map_at_github: 'Get this map at Github',
|
||||||
|
// Education
|
||||||
|
certification: 'Certification',
|
||||||
|
completed: 'Completed',
|
||||||
|
courses: 'Courses',
|
||||||
|
education: 'Education',
|
||||||
|
issued: 'issued',
|
||||||
|
skills: 'Skills',
|
||||||
|
// Navigation
|
||||||
|
portal: 'Portal',
|
||||||
|
language: 'Language',
|
||||||
|
// Radio
|
||||||
|
equipment: 'Equipment',
|
||||||
|
fielddays: 'Field days',
|
||||||
|
nvisAntenna: 'NVIS Antenna',
|
||||||
|
// Footer
|
||||||
|
footer_contentparsed: 'Content is parsed by',
|
||||||
|
footer_madewith: 'This site was made with',
|
||||||
|
},
|
||||||
|
nl: {
|
||||||
|
// Common
|
||||||
|
and: 'en',
|
||||||
|
on: 'op',
|
||||||
|
// Titles
|
||||||
|
japanese: 'Japans',
|
||||||
|
radio_amateur: 'Radiozendamateur',
|
||||||
|
software: 'Software',
|
||||||
|
// Japan
|
||||||
|
download_map_at_github: 'Download deze kaart op Github',
|
||||||
|
// Education
|
||||||
|
certification: 'Certificering',
|
||||||
|
completed: 'Voltooid',
|
||||||
|
courses: 'Cursussen',
|
||||||
|
education: 'Opleiding',
|
||||||
|
issued: 'uitgegeven',
|
||||||
|
skills: 'Vaardigheden',
|
||||||
|
// Navigation
|
||||||
|
portal: 'Portaal',
|
||||||
|
language: 'Taal',
|
||||||
|
// Radio
|
||||||
|
equipment: 'Apparatuur',
|
||||||
|
fielddays: 'Velddagen',
|
||||||
|
nvisAntenna: 'NVIS Antenne',
|
||||||
|
// Footer
|
||||||
|
footer_contentparsed: 'Inhoud is verwerkt door',
|
||||||
|
footer_madewith: 'Deze website is gemaakt met',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getString(key) {
|
||||||
|
const language = getLanguage();
|
||||||
|
return languageStrings[language][key] || `{${key}}`;
|
||||||
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import JapanMap from './components/JapanMap';
|
import JapanMap from './components/JapanMap';
|
||||||
import Dropdown from './components/Dropdown';
|
import Dropdown from './components/Dropdown';
|
||||||
import { getLanguage } from '../../App';
|
import { getString } from '../../Language/LanguageStrings'
|
||||||
|
|
||||||
const Japan = () => {
|
const Japan = () => {
|
||||||
const [selectedColor, setSelectedColor] = useState('');
|
const [selectedColor, setSelectedColor] = useState('');
|
||||||
@ -10,8 +10,6 @@ const Japan = () => {
|
|||||||
setSelectedColor(event.target.value);
|
setSelectedColor(event.target.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const language = getLanguage();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<article className='main-page'>
|
<article className='main-page'>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
@ -21,7 +19,7 @@ const Japan = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
<p><a href='https://github.com/PA4KEV/japan-vector-map'>Get this map at Github</a></p>
|
<p><a href='https://github.com/PA4KEV/japan-vector-map'>{getString('download_map_at_github')}</a></p>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Emoji from '../../Content/Emoji';
|
import Emoji from '../../Content/Emoji';
|
||||||
import MarkdownPage from '../markdownPage';
|
import MarkdownPage from '../markdownPage';
|
||||||
import { getLanguage, getString } from '../../App';
|
import { getLanguage } from '../../Language/Language';
|
||||||
|
import { getString } from '../../Language/LanguageStrings'
|
||||||
|
|
||||||
const JapaneseMain = () => {
|
const JapaneseMain = () => {
|
||||||
const language = getLanguage();
|
const language = getLanguage();
|
||||||
|
|||||||
@ -2,7 +2,8 @@ import React from 'react';
|
|||||||
import Emoji from '../../Content/Emoji';
|
import Emoji from '../../Content/Emoji';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import MarkdownPage from '../markdownPage';
|
import MarkdownPage from '../markdownPage';
|
||||||
import { getLanguage, getString } from '../../App';
|
import { getLanguage } from '../../Language/Language';
|
||||||
|
import { getString } from '../../Language/LanguageStrings'
|
||||||
import FielddaysTable from './fielddays/fielddaysTable';
|
import FielddaysTable from './fielddays/fielddaysTable';
|
||||||
|
|
||||||
const RadioMain = () => {
|
const RadioMain = () => {
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Emoji from '../../Content/Emoji';
|
import Emoji from '../../Content/Emoji';
|
||||||
import MarkdownPage from '../markdownPage';
|
import MarkdownPage from '../markdownPage';
|
||||||
import { getLanguage, getString } from '../../App';
|
import { getLanguage } from '../../Language/Language';
|
||||||
|
import { getString } from '../../Language/LanguageStrings'
|
||||||
import educationData from './education.json'
|
import educationData from './education.json'
|
||||||
|
|
||||||
const SoftwareMain = () => {
|
const SoftwareMain = () => {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { getLanguage } from '../App';
|
import { getLanguage } from '../Language/Language';
|
||||||
import { useTheme } from '../ThemeContext';
|
import { useTheme } from '../ThemeContext';
|
||||||
|
|
||||||
const Breadcrumbs = ({ separator, path, children }) => {
|
const Breadcrumbs = ({ separator, path, children }) => {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useTheme } from '../ThemeContext';
|
import { useTheme } from '../ThemeContext';
|
||||||
import './Footer.css';
|
import './Footer.css';
|
||||||
import { getString } from '../App';
|
import { getString } from '../Language/LanguageStrings'
|
||||||
|
|
||||||
|
|
||||||
const Footer = () => {
|
const Footer = () => {
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { useTheme } from '../ThemeContext';
|
import { useTheme } from '../ThemeContext';
|
||||||
import { getString, getLanguage } from '../App';
|
import { getLanguage } from '../Language/Language';
|
||||||
|
import { getString } from '../Language/LanguageStrings'
|
||||||
|
|
||||||
import './Navigation.css';
|
import './Navigation.css';
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user