implement language setting
This commit is contained in:
Vendored
+19
-4
@@ -5580,6 +5580,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
var languageNames = {
|
||||||
|
en: "English",
|
||||||
|
de: "Deutsch",
|
||||||
|
es: "Espa\xF1ol"
|
||||||
|
};
|
||||||
var Languages = /* @__PURE__ */ ((Languages2) => {
|
var Languages = /* @__PURE__ */ ((Languages2) => {
|
||||||
Languages2["English"] = "en";
|
Languages2["English"] = "en";
|
||||||
Languages2["German"] = "de";
|
Languages2["German"] = "de";
|
||||||
@@ -6269,7 +6274,7 @@
|
|||||||
this.storageModel.write(path, newValue);
|
this.storageModel.write(path, newValue);
|
||||||
}
|
}
|
||||||
// load
|
// load
|
||||||
loadUsernam() {
|
loadUsername() {
|
||||||
const path = StorageModel.getPath(
|
const path = StorageModel.getPath(
|
||||||
"settings" /* SettingsModel */,
|
"settings" /* SettingsModel */,
|
||||||
filePaths.settingsModel.username
|
filePaths.settingsModel.username
|
||||||
@@ -6296,8 +6301,9 @@
|
|||||||
// init
|
// init
|
||||||
constructor(storageModel2) {
|
constructor(storageModel2) {
|
||||||
this.storageModel = storageModel2;
|
this.storageModel = storageModel2;
|
||||||
this.loadUsernam();
|
this.loadUsername();
|
||||||
this.loadFirstDayofWeek();
|
this.loadFirstDayofWeek();
|
||||||
|
this.loadLanguage();
|
||||||
}
|
}
|
||||||
static getSystemLanguage() {
|
static getSystemLanguage() {
|
||||||
switch (navigator.language.substring(0, 2)) {
|
switch (navigator.language.substring(0, 2)) {
|
||||||
@@ -6323,6 +6329,7 @@
|
|||||||
this.selectedModalPage = new State(
|
this.selectedModalPage = new State(
|
||||||
0 /* Appearance */
|
0 /* Appearance */
|
||||||
);
|
);
|
||||||
|
this.requiresReload = new State(false);
|
||||||
this.firstDayOfWeek = new State("0");
|
this.firstDayOfWeek = new State("0");
|
||||||
this.language = new State("en" /* English */);
|
this.language = new State("en" /* English */);
|
||||||
// guards
|
// guards
|
||||||
@@ -6346,6 +6353,9 @@
|
|||||||
};
|
};
|
||||||
this.hideSettingsModal = () => {
|
this.hideSettingsModal = () => {
|
||||||
this.isShowingSettingsModal.value = false;
|
this.isShowingSettingsModal.value = false;
|
||||||
|
if (this.requiresReload.value == true) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
this.showModalPage = (page) => {
|
this.showModalPage = (page) => {
|
||||||
this.selectedModalPage.value = page;
|
this.selectedModalPage.value = page;
|
||||||
@@ -6353,7 +6363,12 @@
|
|||||||
this.username.value = coreViewModel2.settingsModel.username;
|
this.username.value = coreViewModel2.settingsModel.username;
|
||||||
this.usernameInput.value = coreViewModel2.settingsModel.username;
|
this.usernameInput.value = coreViewModel2.settingsModel.username;
|
||||||
this.firstDayOfWeek.value = coreViewModel2.settingsModel.firstDayOfWeek;
|
this.firstDayOfWeek.value = coreViewModel2.settingsModel.firstDayOfWeek;
|
||||||
|
this.language.value = coreViewModel2.settingsModel.language;
|
||||||
this.firstDayOfWeek.subscribe(this.setFirstDayofWeek);
|
this.firstDayOfWeek.subscribe(this.setFirstDayofWeek);
|
||||||
|
this.language.subscribeSilent((newValue) => {
|
||||||
|
this.coreViewModel.settingsModel.setLanguage(newValue);
|
||||||
|
this.requiresReload.value = true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -6801,9 +6816,9 @@
|
|||||||
)
|
)
|
||||||
)), /* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_drop_down"))), /* @__PURE__ */ createElement("label", { class: "tile flex-no" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "language"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.settings.language), /* @__PURE__ */ createElement("select", { "bind:value": settingsViewModel2.language }, ...[...Object.values(Languages)].map(
|
)), /* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_drop_down"))), /* @__PURE__ */ createElement("label", { class: "tile flex-no" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "language"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.settings.language), /* @__PURE__ */ createElement("select", { "bind:value": settingsViewModel2.language }, ...[...Object.values(Languages)].map(
|
||||||
(language, i) => Option(
|
(language, i) => Option(
|
||||||
|
languageNames[language],
|
||||||
language,
|
language,
|
||||||
i.toString(),
|
language == settingsViewModel2.language.value
|
||||||
i.toString() == settingsViewModel2.language.value
|
|
||||||
)
|
)
|
||||||
)), /* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_drop_down"))));
|
)), /* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_drop_down"))));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export default class SettingsModel {
|
|||||||
this.storageModel.write(path, newValue);
|
this.storageModel.write(path, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
setLanguage(newValue: Languages): void {
|
setLanguage(newValue: string): void {
|
||||||
this.language = newValue;
|
this.language = newValue;
|
||||||
const path = StorageModel.getPath(
|
const path = StorageModel.getPath(
|
||||||
StorageModelSubPaths.SettingsModel,
|
StorageModelSubPaths.SettingsModel,
|
||||||
@@ -40,7 +40,7 @@ export default class SettingsModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// load
|
// load
|
||||||
loadUsernam(): void {
|
loadUsername(): void {
|
||||||
const path = StorageModel.getPath(
|
const path = StorageModel.getPath(
|
||||||
StorageModelSubPaths.SettingsModel,
|
StorageModelSubPaths.SettingsModel,
|
||||||
filePaths.settingsModel.username,
|
filePaths.settingsModel.username,
|
||||||
@@ -71,8 +71,9 @@ export default class SettingsModel {
|
|||||||
constructor(storageModel: StorageModel) {
|
constructor(storageModel: StorageModel) {
|
||||||
this.storageModel = storageModel;
|
this.storageModel = storageModel;
|
||||||
|
|
||||||
this.loadUsernam();
|
this.loadUsername();
|
||||||
this.loadFirstDayofWeek();
|
this.loadFirstDayofWeek();
|
||||||
|
this.loadLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSystemLanguage(): Languages {
|
static getSystemLanguage(): Languages {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as React from "bloatless-react";
|
import * as React from "bloatless-react";
|
||||||
|
|
||||||
import { Languages } from "../translations";
|
import { languageNames, Languages } from "../translations";
|
||||||
import SettingsViewModel, {
|
import SettingsViewModel, {
|
||||||
SettingsModalPages,
|
SettingsModalPages,
|
||||||
} from "../../ViewModel/Global/settingsViewModel";
|
} from "../../ViewModel/Global/settingsViewModel";
|
||||||
@@ -158,9 +158,9 @@ function SettingsRegionalPane(
|
|||||||
<select bind:value={settingsViewModel.language}>
|
<select bind:value={settingsViewModel.language}>
|
||||||
{...[...Object.values(Languages)].map((language, i) =>
|
{...[...Object.values(Languages)].map((language, i) =>
|
||||||
Option(
|
Option(
|
||||||
|
languageNames[language],
|
||||||
language,
|
language,
|
||||||
i.toString(),
|
language ==
|
||||||
i.toString() ==
|
|
||||||
settingsViewModel.language.value,
|
settingsViewModel.language.value,
|
||||||
),
|
),
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -828,6 +828,12 @@ export const allTranslations: {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const languageNames = {
|
||||||
|
en: "English",
|
||||||
|
de: "Deutsch",
|
||||||
|
es: "Español",
|
||||||
|
}
|
||||||
|
|
||||||
export type Translations = typeof englishTranslations;
|
export type Translations = typeof englishTranslations;
|
||||||
export enum Languages {
|
export enum Languages {
|
||||||
English = "en",
|
English = "en",
|
||||||
|
|||||||
@@ -12,9 +12,10 @@ export default class SettingsViewModel {
|
|||||||
selectedModalPage: React.State<SettingsModalPages> = new React.State(
|
selectedModalPage: React.State<SettingsModalPages> = new React.State(
|
||||||
SettingsModalPages.Appearance,
|
SettingsModalPages.Appearance,
|
||||||
);
|
);
|
||||||
|
requiresReload = new React.State<boolean>(false);
|
||||||
|
|
||||||
firstDayOfWeek: React.State<string> = new React.State("0");
|
firstDayOfWeek: React.State<string> = new React.State("0");
|
||||||
language: React.State<Languages> = new React.State(Languages.English);
|
language: React.State<Languages|string> = new React.State(Languages.English);
|
||||||
|
|
||||||
// guards
|
// guards
|
||||||
cannotSetName: React.State<boolean> = React.createProxyState(
|
cannotSetName: React.State<boolean> = React.createProxyState(
|
||||||
@@ -44,6 +45,9 @@ export default class SettingsViewModel {
|
|||||||
|
|
||||||
hideSettingsModal = (): void => {
|
hideSettingsModal = (): void => {
|
||||||
this.isShowingSettingsModal.value = false;
|
this.isShowingSettingsModal.value = false;
|
||||||
|
if (this.requiresReload.value == true) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
showModalPage = (page: SettingsModalPages): void => {
|
showModalPage = (page: SettingsModalPages): void => {
|
||||||
@@ -55,9 +59,14 @@ export default class SettingsViewModel {
|
|||||||
this.username.value = coreViewModel.settingsModel.username;
|
this.username.value = coreViewModel.settingsModel.username;
|
||||||
this.usernameInput.value = coreViewModel.settingsModel.username;
|
this.usernameInput.value = coreViewModel.settingsModel.username;
|
||||||
this.firstDayOfWeek.value = coreViewModel.settingsModel.firstDayOfWeek;
|
this.firstDayOfWeek.value = coreViewModel.settingsModel.firstDayOfWeek;
|
||||||
|
this.language.value = coreViewModel.settingsModel.language;
|
||||||
|
|
||||||
// subscriptions
|
// subscriptions
|
||||||
this.firstDayOfWeek.subscribe(this.setFirstDayofWeek);
|
this.firstDayOfWeek.subscribe(this.setFirstDayofWeek);
|
||||||
|
this.language.subscribeSilent((newValue) => {
|
||||||
|
this.coreViewModel.settingsModel.setLanguage(newValue);
|
||||||
|
this.requiresReload.value = true;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user