LanguagePicker now has a proper constructor
This commit is contained in:
parent
8047f69fea
commit
51a6756dd4
6 changed files with 29 additions and 30 deletions
|
@ -8,52 +8,52 @@ import * as used_languages from "../assets/generated/used_languages.json"
|
|||
import Lazy from "./Base/Lazy";
|
||||
import Toggle from "./Input/Toggle";
|
||||
|
||||
export default class LanguagePicker {
|
||||
export default class LanguagePicker extends Toggle {
|
||||
|
||||
|
||||
public static CreateLanguagePicker(
|
||||
languages: string[],
|
||||
label: string | BaseUIElement = "") : BaseUIElement{
|
||||
constructor(languages: string[],
|
||||
label: string | BaseUIElement = "") {
|
||||
|
||||
|
||||
if (languages === undefined || languages.length <= 1) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const allLanguages : string[] = used_languages.languages;
|
||||
|
||||
|
||||
const allLanguages: string[] = used_languages.languages;
|
||||
|
||||
const normalPicker = LanguagePicker.dropdownFor(languages, label);
|
||||
const fullPicker = new Lazy(() => LanguagePicker.dropdownFor(allLanguages, label))
|
||||
return new Toggle(fullPicker, normalPicker, Locale.showLinkToWeblate)
|
||||
super(fullPicker, normalPicker, Locale.showLinkToWeblate);
|
||||
}
|
||||
|
||||
|
||||
private static dropdownFor(languages: string[], label: string | BaseUIElement): BaseUIElement {
|
||||
return new DropDown(label, languages
|
||||
.filter(lang => lang !== "_context")
|
||||
.map(lang => {
|
||||
return {value: lang, shown: LanguagePicker.hybrid(lang) }
|
||||
}
|
||||
), Locale.language)
|
||||
return new DropDown(label, languages
|
||||
.filter(lang => lang !== "_context")
|
||||
.map(lang => {
|
||||
return {value: lang, shown: LanguagePicker.hybrid(lang)}
|
||||
}
|
||||
), Locale.language)
|
||||
}
|
||||
|
||||
private static hybrid(lang: string): Translation {
|
||||
const nativeText = native[lang] ?? lang
|
||||
const allTranslations = (language_translations["default"] ?? language_translations)
|
||||
const allTranslations = (language_translations["default"] ?? language_translations)
|
||||
const translation = {}
|
||||
const trans = allTranslations[lang]
|
||||
if(trans === undefined){
|
||||
const trans = allTranslations[lang]
|
||||
if (trans === undefined) {
|
||||
return new Translation({"*": nativeText})
|
||||
}
|
||||
for (const key in trans) {
|
||||
const translationInKey = allTranslations[lang][key]
|
||||
if(nativeText.toLowerCase() === translationInKey.toLowerCase()){
|
||||
if (nativeText.toLowerCase() === translationInKey.toLowerCase()) {
|
||||
translation[key] = nativeText
|
||||
}else{
|
||||
translation[key] = nativeText + " ("+translationInKey+")"
|
||||
} else {
|
||||
translation[key] = nativeText + " (" + translationInKey + ")"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return new Translation(translation)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue