1
0
Fork 0
VaultUI/src/pages/SetLanguage.ts

70 lines
2 KiB
TypeScript
Raw Normal View History

import { Margin } from "../elements/Margin";
2021-05-07 23:33:58 +01:00
import { Page } from "../types/Page";
2021-05-07 23:21:38 +01:00
import { changePage, setPageContent } from "../pageUtils";
import { makeElement } from "../htmlUtils";
2021-05-08 01:54:38 +01:00
import { pageState } from "../globalPageState";
2021-04-19 20:17:07 +01:00
import i18next from 'i18next';
2021-05-08 01:54:38 +01:00
// @ts-ignore
import { reloadTitleBar } from "../elements/TitleBar";
import translations from "../translations/index.mjs";
2021-04-19 20:17:07 +01:00
2021-05-08 01:54:38 +01:00
const languageIDs = Object.getOwnPropertyNames(translations);
2021-04-19 20:17:07 +01:00
export class SetLanguagePage extends Page {
constructor() {
super();
}
2021-05-08 01:54:38 +01:00
render(): void {
const setLanguageForm = makeElement({
2021-04-19 20:17:07 +01:00
tag: "form",
id: "setLanguageForm",
children: [
Margin(makeElement({
tag: "select",
class: ["uk-select", "uk-form-width-large"],
attributes: {
name: "language"
},
children: languageIDs.map(function (languageID) {
2021-04-19 20:17:07 +01:00
return makeElement({
tag: "option",
text: i18next.getFixedT(languageID, null)("language_name"),
attributes: { value: languageID }
2021-04-19 20:17:07 +01:00
})
})
})
),
makeElement({
tag: "p",
id: "errorText",
class: "uk-text-danger"
}),
makeElement({
tag: "button",
class: ["uk-button", "uk-button-primary"],
text: i18next.t("set_language_btn"),
attributes: {
type: "submit",
}
})
]
2021-05-08 01:54:38 +01:00
}) as HTMLFormElement;
2021-04-19 20:17:07 +01:00
setPageContent(setLanguageForm);
setLanguageForm.addEventListener("submit", function (e) {
e.preventDefault();
2021-05-08 01:54:38 +01:00
const formData = new FormData(setLanguageForm);
const language = formData.get("language") as string;
pageState.language = language;
console.log(pageState.language);
2021-05-10 11:35:14 +01:00
void i18next.changeLanguage(language).then((t) => {
pageState.pageDirection = t("language_direction");
reloadTitleBar();
changePage("HOME");
2021-04-19 20:17:07 +01:00
});
});
}
2021-05-08 01:54:38 +01:00
get name(): string {
2021-04-19 20:17:07 +01:00
return i18next.t("set_language_title");
}
}