forked from MapComplete/MapComplete
		
	Playing around with translatiosn
This commit is contained in:
		
							parent
							
								
									6f8c29d401
								
							
						
					
					
						commit
						fd6f77c98e
					
				
					 7 changed files with 54 additions and 36 deletions
				
			
		|  | @ -1,6 +1,8 @@ | |||
| import {LayerDefinition} from "./LayerDefinition"; | ||||
| import { UIElement } from "../UI/UIElement"; | ||||
| import { FixedUiElement } from "../UI/Base/FixedUiElement"; | ||||
| import {FixedUiElement} from "../UI/Base/FixedUiElement"; | ||||
| import Translation from "../UI/i18n/Translation"; | ||||
| import Translations from "../UI/i18n/Translations"; | ||||
| 
 | ||||
| /** | ||||
|  * A layout is a collection of settings of the global view (thus: welcome text, title, selection of layers). | ||||
|  | @ -10,14 +12,14 @@ export class Layout { | |||
|     public title: UIElement; | ||||
|     public layers: LayerDefinition[]; | ||||
|     public welcomeMessage: UIElement; | ||||
|     public gettingStartedPlzLogin: string; | ||||
|     public welcomeBackMessage: string; | ||||
|     public gettingStartedPlzLogin: UIElement; | ||||
|     public welcomeBackMessage: UIElement; | ||||
|     public welcomeTail: UIElement; | ||||
| 
 | ||||
|     public startzoom: number; | ||||
|     public supportedLanguages: string[]; | ||||
|     public startLon: number; | ||||
|     public startLat: number; | ||||
|     public welcomeTail: string; | ||||
| 
 | ||||
|     public locationContains: string[]; | ||||
| 
 | ||||
|  | @ -43,21 +45,21 @@ export class Layout { | |||
|         startLat: number, | ||||
|         startLon: number, | ||||
|         welcomeMessage: UIElement | string, | ||||
|         gettingStartedPlzLogin: string = "Please login to get started", | ||||
|         welcomeBackMessage: string = "You are logged in. Welcome back!", | ||||
|         welcomeTail: string = "" | ||||
|         gettingStartedPlzLogin: UIElement | string = "Please login to get started", | ||||
|         welcomeBackMessage: UIElement | string = "You are logged in. Welcome back!", | ||||
|         welcomeTail: UIElement | string = "" | ||||
|     ) { | ||||
|         this.supportedLanguages = supportedLanguages; | ||||
|         this.title = typeof(title) === 'string' ? new FixedUiElement(title) : title; | ||||
|         this.title = typeof (title) === 'string' ? new FixedUiElement(title) : title; | ||||
|         this.startLon = startLon; | ||||
|         this.startLat = startLat; | ||||
|         this.startzoom = startzoom; | ||||
|         this.name = name; | ||||
|         this.layers = layers; | ||||
|         this.welcomeMessage = typeof(welcomeMessage) === 'string' ? new FixedUiElement(welcomeMessage) : welcomeMessage; | ||||
|         this.gettingStartedPlzLogin = gettingStartedPlzLogin; | ||||
|         this.welcomeBackMessage = welcomeBackMessage; | ||||
|         this.welcomeTail = welcomeTail; | ||||
|         this.welcomeMessage =Translations.W(welcomeMessage) | ||||
|         this.gettingStartedPlzLogin = Translations.W(gettingStartedPlzLogin); | ||||
|         this.welcomeBackMessage = Translations.W(welcomeBackMessage); | ||||
|         this.welcomeTail = Translations.W(welcomeTail); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ import {GhostBike} from "../Layers/GhostBike"; | |||
| import Translations from "../../UI/i18n/Translations"; | ||||
| import {DrinkingWater} from "../Layers/DrinkingWater"; | ||||
| import {BikeShop} from "../Layers/BikeShop" | ||||
| import Combine from "../../UI/Base/Combine"; | ||||
| 
 | ||||
| 
 | ||||
| export default class Cyclofix extends Layout { | ||||
|  | @ -18,10 +19,13 @@ export default class Cyclofix extends Layout { | |||
|             16, | ||||
|             50.8465573, | ||||
|             4.3516970, | ||||
|             "<h3>" + Translations.t.cyclofix.title.Render() + "</h3>\n" + | ||||
|             "\n" + | ||||
|             `<p>${Translations.t.cyclofix.description.Render()}</p>` | ||||
|             , | ||||
|             new Combine([ | ||||
|                 "<h3>", | ||||
|                 Translations.t.cyclofix.title, | ||||
|                 "</h3><br/><p>", | ||||
|                 Translations.t.cyclofix.description, | ||||
|                 "</p>" | ||||
|             ]), | ||||
|             "", ""); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -18,8 +18,8 @@ export default class BikeStationOperator extends TagRenderingOptions { | |||
|             ], | ||||
|             freeform: { | ||||
|                 key: "operator", | ||||
|                 template: to.template, | ||||
|                 renderTemplate: to.render, | ||||
|                 template: to.template.txt, | ||||
|                 renderTemplate: to.render.txt, | ||||
|                 placeholder: "organisatie" | ||||
|             } | ||||
|         }); | ||||
|  |  | |||
							
								
								
									
										19
									
								
								UI/Base/Combine.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								UI/Base/Combine.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| import {UIElement} from "../UIElement"; | ||||
| import Translations from "../i18n/Translations"; | ||||
| 
 | ||||
| export default class Combine extends UIElement { | ||||
|     private uiElements: UIElement[]; | ||||
| 
 | ||||
|     constructor(uiElements: (string | UIElement)[]) { | ||||
|         super(undefined); | ||||
|         this.uiElements = uiElements.map(Translations.W); | ||||
|     } | ||||
| 
 | ||||
|     InnerRender(): string { | ||||
|         let elements = ""; | ||||
|         for (const element of this.uiElements) { | ||||
|             elements += element.Render(); | ||||
|         } | ||||
|         return elements; | ||||
|     } | ||||
| } | ||||
|  | @ -13,18 +13,23 @@ export abstract class UIElement { | |||
|         this.id = "ui-element-" + UIElement.nextId; | ||||
|         this._source = source; | ||||
|         UIElement.nextId++; | ||||
|         if (UIElement.nextId % 100 == 0) { | ||||
| 
 | ||||
|             console.log(UIElement.nextId) | ||||
|         } | ||||
|         this.ListenTo(source); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public ListenTo(source: UIEventSource<any>) { | ||||
|         if (source === undefined) { | ||||
|             return; | ||||
|             return this; | ||||
|         } | ||||
|         const self = this; | ||||
|         source.addCallback(() => { | ||||
|             self.Update(); | ||||
|         }) | ||||
|         return this; | ||||
|     } | ||||
| 
 | ||||
|     private _onClick: () => void; | ||||
|  |  | |||
|  | @ -243,7 +243,7 @@ form { | |||
|     cursor: pointer; | ||||
|     position: absolute; | ||||
|     margin-left: 2em; | ||||
|     margin-top: 0.5em; | ||||
|     margin-top: 3em; | ||||
| } | ||||
| 
 | ||||
| #messagesbox-wrapper { | ||||
|  |  | |||
							
								
								
									
										20
									
								
								index.ts
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								index.ts
									
										
									
									
									
								
							|  | @ -164,7 +164,6 @@ const bm = new Basemap("leafletDiv", locationControl, new VariableUiElement( | |||
| 
 | ||||
| 
 | ||||
| // ------------- Setup the layers -------------------------------
 | ||||
| const controls = {}; | ||||
| const addButtons: { | ||||
|     name: string, | ||||
|     icon: string, | ||||
|  | @ -194,8 +193,6 @@ for (const layer of layoutToUse.layers) { | |||
| 
 | ||||
|     const flayer = layer.asLayer(bm, allElements, changes, osmConnection.userDetails, selectedElement, generateInfo); | ||||
| 
 | ||||
|     controls[layer.name] = flayer.isDisplayed; | ||||
| 
 | ||||
|     const addButton = { | ||||
|         name: layer.name, | ||||
|         icon: layer.icon, | ||||
|  | @ -272,17 +269,17 @@ new CollapseButton("messagesbox") | |||
| var generateWelcomeMessage = () => { | ||||
|     return new VariableUiElement( | ||||
|         osmConnection.userDetails.map((userdetails) => { | ||||
|             var login = layoutToUse.gettingStartedPlzLogin; | ||||
|             var login = layoutToUse.gettingStartedPlzLogin.Render(); | ||||
|             if (userdetails.loggedIn) { | ||||
|                 login = layoutToUse.welcomeBackMessage; | ||||
|                 login = layoutToUse.welcomeBackMessage.Render(); | ||||
|             } | ||||
|             return "<div id='welcomeMessage'>" + | ||||
|                 layoutToUse.welcomeMessage.Render() + login + layoutToUse.welcomeTail + | ||||
|                 layoutToUse.welcomeMessage.Render() + login + layoutToUse.welcomeTail.Render() + | ||||
|                 "</div>"; | ||||
|         }), | ||||
|         function () { | ||||
|             osmConnection.registerActivateOsmAUthenticationClass() | ||||
|         }); | ||||
|         }).ListenTo(Locale.language); | ||||
| } | ||||
| generateWelcomeMessage().AttachTo("messagesbox"); | ||||
| fullScreenMessage.setData(generateWelcomeMessage()); | ||||
|  | @ -314,12 +311,3 @@ new GeoLocationHandler(bm).AttachTo("geolocate-button"); | |||
| 
 | ||||
| locationControl.ping(); | ||||
| messageBox.update(); | ||||
| 
 | ||||
| /* | ||||
| const eLanguageSelect = document.getElementById('language-select') as HTMLOptionElement | ||||
| eLanguageSelect.addEventListener('input', e => { | ||||
|     // @ts-ignore
 | ||||
|     const selectedLanguage = e.target.value as string | ||||
|     Locale.language.setData(selectedLanguage.toLowerCase()) | ||||
| }) | ||||
| */ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue