Start work on i18n.
This commit is contained in:
parent
39ab714460
commit
281156eacc
|
@ -9,6 +9,7 @@
|
||||||
"eslint-plugin-import": "^2.22.1",
|
"eslint-plugin-import": "^2.22.1",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"html-webpack-plugin": "^5.3.1",
|
"html-webpack-plugin": "^5.3.1",
|
||||||
|
"i18next": "^20.2.1",
|
||||||
"mini-css-extract-plugin": "^1.4.1",
|
"mini-css-extract-plugin": "^1.4.1",
|
||||||
"node-sass": "^5.0.0",
|
"node-sass": "^5.0.0",
|
||||||
"prismjs": "^1.23.0",
|
"prismjs": "^1.23.0",
|
||||||
|
|
109
src/main.js
109
src/main.js
|
@ -1,5 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
// JS & CSS
|
||||||
|
|
||||||
import "./scss/main.scss";
|
import "./scss/main.scss";
|
||||||
import UIkit from 'uikit/dist/js/uikit.min.js';
|
import UIkit from 'uikit/dist/js/uikit.min.js';
|
||||||
import Icons from 'uikit/dist/js/uikit-icons.min.js';
|
import Icons from 'uikit/dist/js/uikit-icons.min.js';
|
||||||
|
@ -17,6 +19,8 @@ import { PageState } from "./PageState.js";
|
||||||
import { makeElement } from "./htmlUtils.js";
|
import { makeElement } from "./htmlUtils.js";
|
||||||
import { getSealStatus } from './api.js';
|
import { getSealStatus } from './api.js';
|
||||||
|
|
||||||
|
// Pages
|
||||||
|
|
||||||
import {
|
import {
|
||||||
HomePage,
|
HomePage,
|
||||||
MePage,
|
MePage,
|
||||||
|
@ -59,6 +63,15 @@ const pages = {
|
||||||
PW_GEN: new PwGenPage(),
|
PW_GEN: new PwGenPage(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Translations
|
||||||
|
import i18next from 'i18next';
|
||||||
|
import translation_en from './translations/en.js'
|
||||||
|
import translation_de from './translations/de.js'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Globals
|
||||||
|
|
||||||
var pageState = new PageState();
|
var pageState = new PageState();
|
||||||
window.pageState = pageState;
|
window.pageState = pageState;
|
||||||
window.realPages = pages;
|
window.realPages = pages;
|
||||||
|
@ -70,53 +83,53 @@ function ListItem(children) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function () {
|
function onLoad() {
|
||||||
document.body.innerHTML = "";
|
document.body.innerHTML = "";
|
||||||
document.body.appendChild(makeElement({
|
document.body.appendChild(makeElement({
|
||||||
tag: "nav",
|
tag: "nav",
|
||||||
class: ["uk-navbar", "uk-navbar-container"],
|
class: ["uk-navbar", "uk-navbar-container"],
|
||||||
children: [
|
children: [
|
||||||
makeElement({
|
makeElement({
|
||||||
tag: "div",
|
tag: "div",
|
||||||
class: "uk-navbar-left",
|
class: "uk-navbar-left",
|
||||||
children: makeElement({
|
children: makeElement({
|
||||||
tag: "ul",
|
tag: "ul",
|
||||||
class: "uk-navbar-nav",
|
class: "uk-navbar-nav",
|
||||||
children: [
|
children: [
|
||||||
ListItem(makeElement({
|
ListItem(makeElement({
|
||||||
tag: "a",
|
tag: "a",
|
||||||
text: "Home",
|
text: i18next.t("home_btn"),
|
||||||
onclick: _ => { changePage("HOME"); }
|
onclick: _ => { changePage("HOME"); }
|
||||||
})),
|
})),
|
||||||
ListItem(makeElement({
|
ListItem(makeElement({
|
||||||
tag: "a",
|
tag: "a",
|
||||||
text: "Back",
|
text: i18next.t("back_btn"),
|
||||||
onclick: _ => { pageState.currentPage.goBack(); }
|
onclick: _ => { pageState.currentPage.goBack(); }
|
||||||
})),
|
})),
|
||||||
ListItem(makeElement({
|
ListItem(makeElement({
|
||||||
tag: "a",
|
tag: "a",
|
||||||
text: "Refresh",
|
text: i18next.t("refresh_btn"),
|
||||||
onclick: _ => { changePage(pageState.currentPage); }
|
onclick: _ => { changePage(pageState.currentPage); }
|
||||||
})),
|
})),
|
||||||
]
|
]
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
makeElement({
|
||||||
|
tag: "div",
|
||||||
|
class: "uk-navbar-right",
|
||||||
|
children: makeElement({
|
||||||
|
tag: "ul",
|
||||||
|
class: "uk-navbar-nav",
|
||||||
|
children: [
|
||||||
|
ListItem(makeElement({
|
||||||
|
tag: "a",
|
||||||
|
text: "Me",
|
||||||
|
onclick: _ => { changePage("ME"); }
|
||||||
|
}))
|
||||||
|
]
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}),
|
]
|
||||||
makeElement({
|
|
||||||
tag: "div",
|
|
||||||
class: "uk-navbar-right",
|
|
||||||
children: makeElement({
|
|
||||||
tag: "ul",
|
|
||||||
class: "uk-navbar-nav",
|
|
||||||
children: [
|
|
||||||
ListItem(makeElement({
|
|
||||||
tag: "a",
|
|
||||||
text: "Me",
|
|
||||||
onclick: _ => { changePage("ME"); }
|
|
||||||
}))
|
|
||||||
]
|
|
||||||
})
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}));
|
}));
|
||||||
document.body.appendChild(makeElement({
|
document.body.appendChild(makeElement({
|
||||||
tag: "div",
|
tag: "div",
|
||||||
|
@ -152,4 +165,18 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
i18next.init({
|
||||||
|
lng: 'de',
|
||||||
|
debug: true,
|
||||||
|
resources: {
|
||||||
|
en: { translation: translation_en },
|
||||||
|
de: { translation: translation_de },
|
||||||
|
|
||||||
|
}
|
||||||
|
}).then(function (t) {
|
||||||
|
onLoad();
|
||||||
|
});
|
||||||
}, false);
|
}, false);
|
5
src/translations/de.js
Normal file
5
src/translations/de.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
"home_btn": "Startseite",
|
||||||
|
"back_btn": "Zurück",
|
||||||
|
"refresh_btn": "Neu laden"
|
||||||
|
}
|
5
src/translations/en.js
Normal file
5
src/translations/en.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
"home_btn": "Home",
|
||||||
|
"back_btn": "Back",
|
||||||
|
"refresh_btn": "Refresh"
|
||||||
|
}
|
|
@ -21,12 +21,11 @@ module.exports = {
|
||||||
{
|
{
|
||||||
test: /\.(sa|sc|c)ss$/,
|
test: /\.(sa|sc|c)ss$/,
|
||||||
use: [
|
use: [
|
||||||
MiniCssExtractPlugin.loader,
|
MiniCssExtractPlugin.loader,
|
||||||
"css-loader",
|
"css-loader",
|
||||||
"sass-loader"
|
"sass-loader"
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
};
|
};
|
Loading…
Reference in a new issue