| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | import {DropDown} from "./Input/DropDown"; | 
					
						
							|  |  |  | import Locale from "./i18n/Locale"; | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | import BaseUIElement from "./BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2022-02-24 02:33:20 +01:00
										 |  |  | import * as native from "../assets/language_native.json" | 
					
						
							|  |  |  | import * as language_translations from "../assets/language_translations.json" | 
					
						
							|  |  |  | import {Translation} from "./i18n/Translation"; | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class LanguagePicker { | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     public static CreateLanguagePicker( | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  |         languages: string[], | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |         label: string | BaseUIElement = "") { | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-30 21:29:17 +01:00
										 |  |  |         if (languages === undefined || languages.length <= 1) { | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  |             return undefined; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-02-24 02:33:20 +01:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2021-02-20 03:29:55 +01:00
										 |  |  |         return new DropDown(label, languages.map(lang => { | 
					
						
							| 
									
										
										
										
											2022-02-24 02:33:20 +01:00
										 |  |  |                 return {value: lang, shown: LanguagePicker.hybrid(lang) } | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-06-14 17:42:26 +02:00
										 |  |  |         ), Locale.language); | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-24 02:33:20 +01:00
										 |  |  |     private static hybrid(lang: string): Translation { | 
					
						
							|  |  |  |         const nativeText = native[lang] ?? lang | 
					
						
							|  |  |  |         const allTranslations =  (language_translations["default"] ?? language_translations) | 
					
						
							|  |  |  |         const translation = {} | 
					
						
							|  |  |  |         const trans =  allTranslations[lang] | 
					
						
							|  |  |  |         console.log("Generating a hybrid for "+lang, trans) | 
					
						
							|  |  |  |         if(trans === undefined){ | 
					
						
							|  |  |  |             return new Translation({"*": nativeText}) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         for (const key in trans) { | 
					
						
							|  |  |  |             const translationInKey = allTranslations[lang][key] | 
					
						
							|  |  |  |             if(nativeText.toLowerCase() === translationInKey.toLowerCase()){ | 
					
						
							|  |  |  |                 translation[key] = nativeText | 
					
						
							|  |  |  |             }else{ | 
					
						
							|  |  |  |                 translation[key] = nativeText + " ("+translationInKey+")" | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return new Translation(translation) | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | } |