mapcomplete/UI/i18n/Locale.ts

35 lines
1.3 KiB
TypeScript
Raw Normal View History

import {UIEventSource} from "../../Logic/UIEventSource";
import {LocalStorageSource} from "../../Logic/Web/LocalStorageSource";
2021-01-06 02:21:50 +01:00
import {Utils} from "../../Utils";
2021-08-21 20:25:36 +02:00
import {QueryParameters} from "../../Logic/Web/QueryParameters";
2020-07-20 12:39:43 +02:00
export default class Locale {
2020-07-25 18:00:08 +02:00
public static showLinkToWeblate: UIEventSource<boolean> = new UIEventSource<boolean>(false);
2020-07-31 04:58:58 +02:00
public static language: UIEventSource<string> = Locale.setup();
2022-04-01 12:51:55 +02:00
2020-07-31 04:58:58 +02:00
private static setup() {
2020-12-14 01:14:22 +01:00
const source = LocalStorageSource.Get('language', "en");
2021-01-06 02:21:50 +01:00
if (!Utils.runningFromConsole) {
2020-07-31 17:11:44 +02:00
// @ts-ignore
window.setLanguage = function (language: string) {
source.setData(language)
}
2022-04-03 03:49:09 +02:00
}
source.syncWith(
QueryParameters.GetQueryParameter("language", undefined, "The language to display mapcomplete in. Will be ignored in case a logged-in-user did set their language before. If the specified language does not exist, it will default to the first language in the theme."),
true
)
QueryParameters.GetBooleanQueryParameter("fs-translation-mode",false,"If set, will show a translation button next to every string.")
.addCallbackAndRunD(tr => {
Locale.showLinkToWeblate.setData(Locale.showLinkToWeblate.data || tr);
})
2020-07-31 04:58:58 +02:00
return source;
2020-07-25 18:00:08 +02:00
}
2020-07-20 12:39:43 +02:00
}
2020-07-25 18:00:08 +02:00