2020-08-17 17:23:15 +02:00
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 {
2022-04-03 03:00:45 +02:00
public static showLinkToWeblate : UIEventSource < boolean > = new UIEventSource < boolean > ( false )
2023-02-09 02:45:19 +01:00
/ * *
* Indicates that - if showLinkToWeblate is true - a link on mobile mode is shown as well
* /
public static showLinkOnMobile : UIEventSource < boolean > = new UIEventSource < boolean > ( false )
2020-07-31 04:58:58 +02:00
public static language : UIEventSource < string > = Locale . setup ( )
2020-07-25 18:00:08 +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 )
} )
2022-04-03 03:00:45 +02:00
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
}