This commit is contained in:
Pieter Vander Vennet 2024-07-18 16:16:56 +02:00
parent a4db7178f4
commit 70510d1def
4 changed files with 183 additions and 212 deletions

View file

@ -23,16 +23,16 @@
export let assignTo: UIEventSource<string> = Locale.language
export let preferredLanguages: Store<string[]> = undefined
let preferredFiltered: string[] = undefined
preferredLanguages?.addCallbackAndRunD((preferredLanguages) => {
let lng = navigator.language
if (lng === "en-US") {
lng = "en"
}
const lng = Locale.getBestSupportedLanguage()
if (preferredLanguages?.indexOf(lng) < 0) {
preferredLanguages?.push(lng)
}
preferredFiltered = preferredLanguages?.filter((l) => availableLanguages.indexOf(l) >= 0)
})
export let clss: string = undefined
let current = Locale.language
</script>

View file

@ -2,6 +2,7 @@ import { UIEventSource } from "../../Logic/UIEventSource"
import { LocalStorageSource } from "../../Logic/Web/LocalStorageSource"
import { Utils } from "../../Utils"
import { QueryParameters } from "../../Logic/Web/QueryParameters"
import native from "../../assets/language_native.json"
export default class Locale {
public static showLinkToWeblate: UIEventSource<boolean> = new UIEventSource<boolean>(false)
@ -11,6 +12,23 @@ export default class Locale {
public static showLinkOnMobile: UIEventSource<boolean> = new UIEventSource<boolean>(false)
public static language: UIEventSource<string> = Locale.setup()
public static getBestSupportedLanguage(browserLanguage?: string){
browserLanguage ??= navigator.languages?.[0] ?? navigator.language ?? "en"
console.log("Browser language is", browserLanguage)
const availableLanguages = Object.keys(native)
const hasBrowserLang = availableLanguages.indexOf(browserLanguage) >= 0
if (hasBrowserLang) {
return browserLanguage
}
browserLanguage = browserLanguage.replace(/[-_].*/g, "")
const hasBrowserLangFallback = availableLanguages.indexOf(browserLanguage) >= 0
if(hasBrowserLangFallback){
return browserLanguage
}
console.log("Language",browserLanguage,"not supported, defaulting to english")
return "en"
}
/**
* Creates the UIEventSource containing the identifier of the current language
*
@ -54,11 +72,7 @@ export default class Locale {
} else {
let browserLanguage = "en"
if (typeof navigator !== "undefined") {
browserLanguage = navigator.languages?.[0] ?? navigator.language ?? "en"
console.log("Browser language is", browserLanguage)
if (browserLanguage === "en-US") {
browserLanguage = "en"
}
browserLanguage = Locale.getBestSupportedLanguage()
}
source = LocalStorageSource.Get("language", browserLanguage)
}

View file

@ -11,7 +11,7 @@
"gl": "lingua galega",
"he": "עברית",
"hu": "magyar",
"id": "Indonesia",
"id": "bahasa Indonesia",
"it": "italiano",
"ja": "日本語",
"nb_NO": "bokmål",

File diff suppressed because it is too large Load diff