More work on translations
This commit is contained in:
parent
bb08d6b11f
commit
ae90440f16
5 changed files with 85 additions and 23 deletions
|
@ -51,7 +51,7 @@ export class GrbToFix extends LayerDefinition {
|
||||||
},
|
},
|
||||||
question: "Wat is het huisnummer?"
|
question: "Wat is het huisnummer?"
|
||||||
}
|
}
|
||||||
).OnlyShowIf(new Tag("fixme","*","")),
|
),
|
||||||
|
|
||||||
new TagRenderingOptions({
|
new TagRenderingOptions({
|
||||||
|
|
||||||
|
|
2
State.ts
2
State.ts
|
@ -24,7 +24,7 @@ export class State {
|
||||||
// The singleton of the global state
|
// The singleton of the global state
|
||||||
public static state: State;
|
public static state: State;
|
||||||
|
|
||||||
public static vNumber = "0.0.7";
|
public static vNumber = "0.0.7a ¿hablas español?";
|
||||||
|
|
||||||
// The user journey states thresholds when a new feature gets unlocked
|
// The user journey states thresholds when a new feature gets unlocked
|
||||||
public static userJourney = {
|
public static userJourney = {
|
||||||
|
|
|
@ -12,6 +12,8 @@ import {FilteredLayer} from "../Logic/FilteredLayer";
|
||||||
import {Utils} from "../Utils";
|
import {Utils} from "../Utils";
|
||||||
import {UIEventSource} from "../Logic/UIEventSource";
|
import {UIEventSource} from "../Logic/UIEventSource";
|
||||||
import {UserDetails} from "../Logic/Osm/OsmConnection";
|
import {UserDetails} from "../Logic/Osm/OsmConnection";
|
||||||
|
import Translation from "./i18n/Translation";
|
||||||
|
import {SubtleButton} from "./Base/SubtleButton";
|
||||||
|
|
||||||
export class ShareScreen extends UIElement {
|
export class ShareScreen extends UIElement {
|
||||||
|
|
||||||
|
@ -20,7 +22,7 @@ export class ShareScreen extends UIElement {
|
||||||
private _options: UIElement;
|
private _options: UIElement;
|
||||||
private _iframeCode: UIElement;
|
private _iframeCode: UIElement;
|
||||||
private _link: UIElement;
|
private _link: UIElement;
|
||||||
private _linkStatus: UIElement;
|
private _linkStatus: UIEventSource<string | UIElement>;
|
||||||
private _editLayout: UIElement;
|
private _editLayout: UIElement;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -83,7 +85,7 @@ export class ShareScreen extends UIElement {
|
||||||
}
|
}
|
||||||
return "layer-"+flayer.layerDef.id+"="+flayer.isDisplayed.data
|
return "layer-"+flayer.layerDef.id+"="+flayer.isDisplayed.data
|
||||||
}
|
}
|
||||||
|
|
||||||
optionParts.push(includeLayerChoices.isEnabled.map((includeLayerSelection) => {
|
optionParts.push(includeLayerChoices.isEnabled.map((includeLayerSelection) => {
|
||||||
if (includeLayerSelection) {
|
if (includeLayerSelection) {
|
||||||
return Utils.NoNull(State.state.filteredLayers.data.map(fLayerToParam)).join("&")
|
return Utils.NoNull(State.state.filteredLayers.data.map(fLayerToParam)).join("&")
|
||||||
|
@ -93,21 +95,22 @@ export class ShareScreen extends UIElement {
|
||||||
}, State.state.filteredLayers.data.map((flayer) => flayer.isDisplayed)));
|
}, State.state.filteredLayers.data.map((flayer) => flayer.isDisplayed)));
|
||||||
|
|
||||||
|
|
||||||
const switches = [{urlName: "fs-userbadge", human: "Enable the login-button"},
|
const switches = [
|
||||||
{urlName: "fs-search", human: "Enable the search bar"},
|
{urlName: "fs-userbadge", human: tr.fsUserbadge},
|
||||||
{urlName: "fs-welcome-message", human: "Enable the welcome message"},
|
{urlName: "fs-search", human: tr.fsSearch},
|
||||||
{urlName: "fs-layers", human: "Enable thelayer control"},
|
{urlName: "fs-welcome-message", human: tr.fsWelcomeMessage},
|
||||||
{urlName: "layer-control-toggle", human: "Start with the layer control expanded", reverse:true},
|
{urlName: "fs-layers", human: tr.fsLayers},
|
||||||
{urlName: "fs-add-new", human: "Enable the 'add new POI' button"},
|
{urlName: "layer-control-toggle", human: tr.fsLayerControlToggle, reverse: true},
|
||||||
{urlName: "fs-geolocation", human: "Enable the 'geolocate-me' button"},
|
{urlName: "fs-addXXXnew", human: tr.fsAddNew},
|
||||||
|
{urlName: "fs-geolocation", human: tr.fsGeolocation},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
for (const swtch of switches) {
|
for (const swtch of switches) {
|
||||||
|
|
||||||
const checkbox = new CheckBox(
|
const checkbox = new CheckBox(
|
||||||
new Combine([Img.checkmark, swtch.human]),
|
new Combine([Img.checkmark, Translations.W(swtch.human)]),
|
||||||
new Combine([Img.no_checkmark, swtch.human]),
|
new Combine([Img.no_checkmark, Translations.W(swtch.human)]),
|
||||||
swtch.reverse ? false : true
|
swtch.reverse ? false : true
|
||||||
);
|
);
|
||||||
optionCheckboxes.push(checkbox);
|
optionCheckboxes.push(checkbox);
|
||||||
|
@ -171,16 +174,19 @@ export class ShareScreen extends UIElement {
|
||||||
if (userDetails.csCount <= State.userJourney.themeGeneratorUnlock) {
|
if (userDetails.csCount <= State.userJourney.themeGeneratorUnlock) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return `<h3>Edit this theme</h3>` +
|
|
||||||
`<a target='_blank' href='./customGenerator.html#${State.state.layoutDefinition}'>Click here to edit</a>`
|
return new SubtleButton("./assets/pencil.svg",
|
||||||
|
new Combine([tr.editThisTheme.SetClass("bold"), "<br/>",
|
||||||
|
tr.editThemeDescription]),
|
||||||
|
{url: `./customGenerator.html#${State.state.layoutDefinition}`, newTab: true}).Render();
|
||||||
|
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const status = new UIEventSource(" ");
|
this._linkStatus = new UIEventSource<string | Translation>("");
|
||||||
this._linkStatus = new VariableUiElement(status);
|
this.ListenTo(this._linkStatus);
|
||||||
const self = this;
|
const self = this;
|
||||||
this._link = new VariableUiElement(
|
this._link = new VariableUiElement(
|
||||||
url.map((url) => {
|
url.map((url) => {
|
||||||
|
@ -195,7 +201,6 @@ export class ShareScreen extends UIElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
function rejected() {
|
function rejected() {
|
||||||
status.setData("Copying to clipboard...")
|
|
||||||
var copyText = document.getElementById("code-link--copyable");
|
var copyText = document.getElementById("code-link--copyable");
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
@ -204,13 +209,17 @@ export class ShareScreen extends UIElement {
|
||||||
copyText.setSelectionRange(0, 99999); /*For mobile devices*/
|
copyText.setSelectionRange(0, 99999); /*For mobile devices*/
|
||||||
|
|
||||||
document.execCommand("copy");
|
document.execCommand("copy");
|
||||||
status.setData("Copied to clipboard")
|
const copied = tr.copiedToClipboard;
|
||||||
|
copied.SetClass("thanks")
|
||||||
|
self._linkStatus.setData(copied);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
navigator.share(shareData)
|
navigator.share(shareData)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
status.setData("Thanks for sharing!")
|
const thx = tr.thanksForSharing;
|
||||||
|
thx.SetClass("thanks");
|
||||||
|
this._linkStatus.setData(thx);
|
||||||
}, rejected)
|
}, rejected)
|
||||||
.catch(rejected)
|
.catch(rejected)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -226,10 +235,10 @@ export class ShareScreen extends UIElement {
|
||||||
const tr = Translations.t.general.sharescreen;
|
const tr = Translations.t.general.sharescreen;
|
||||||
|
|
||||||
return new VerticalCombine([
|
return new VerticalCombine([
|
||||||
|
this._editLayout,
|
||||||
tr.intro,
|
tr.intro,
|
||||||
this._link,
|
this._link,
|
||||||
this._linkStatus,
|
Translations.W(this._linkStatus.data),
|
||||||
this._editLayout,
|
|
||||||
tr.addToHomeScreen,
|
tr.addToHomeScreen,
|
||||||
tr.embedIntro,
|
tr.embedIntro,
|
||||||
this._options,
|
this._options,
|
||||||
|
|
|
@ -995,6 +995,51 @@ export default class Translations {
|
||||||
es: "<h3>Inclúyelo en tu página web</h3>Incluye este mapa en tu página web. <br/> Te animamos a que lo hagas, no hace falta que pidas permiso. <br/> Es gratis, y siempre lo será. A más gente que lo use más valioso será.",
|
es: "<h3>Inclúyelo en tu página web</h3>Incluye este mapa en tu página web. <br/> Te animamos a que lo hagas, no hace falta que pidas permiso. <br/> Es gratis, y siempre lo será. A más gente que lo use más valioso será.",
|
||||||
fr: "<h3>Incorporer à votre website</h3>AJouter la carte à votre website. <br/>On vous en encourage - pas besoin de permission. <br/> C'est gratuit et pour toujours. Le plus de personnes l'utilisent, le mieux ce sera.",
|
fr: "<h3>Incorporer à votre website</h3>AJouter la carte à votre website. <br/>On vous en encourage - pas besoin de permission. <br/> C'est gratuit et pour toujours. Le plus de personnes l'utilisent, le mieux ce sera.",
|
||||||
nl: "<h3>Plaats dit op je website</h3>Voeg dit kaartje toe op je eigen website.<br/>We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.<br/> Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller"
|
nl: "<h3>Plaats dit op je website</h3>Voeg dit kaartje toe op je eigen website.<br/>We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.<br/> Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller"
|
||||||
|
}),
|
||||||
|
copiedToClipboard: new T({
|
||||||
|
en: "Link copied to clipboard",
|
||||||
|
nl: "Link gekopieerd naar klembord"
|
||||||
|
}),
|
||||||
|
thanksForSharing: new T({
|
||||||
|
en: "Thanks for sharing!",
|
||||||
|
nl: "Bedankt om te delen!"
|
||||||
|
}),
|
||||||
|
editThisTheme: new T({
|
||||||
|
en: "Edit this theme",
|
||||||
|
nl: "Pas dit thema aan"
|
||||||
|
}),
|
||||||
|
editThemeDescription: new T({
|
||||||
|
en: "Add or change questions to this map theme",
|
||||||
|
nl: "Pas vragen aan of voeg vragen toe aan dit kaartthema",
|
||||||
|
}),
|
||||||
|
fsUserbadge: new T({
|
||||||
|
en: "Enable the login-button",
|
||||||
|
nl: "Activeer de login-knop"
|
||||||
|
}),
|
||||||
|
fsSearch: new T({
|
||||||
|
en: "Enable the search bar",
|
||||||
|
nl: "Activeer de zoekbalk"
|
||||||
|
}),
|
||||||
|
fsWelcomeMessage: new T({
|
||||||
|
en: "Show the welcome message popup and associated tabs",
|
||||||
|
nl: "Toon het welkomstbericht en de bijhorende tabbladen "
|
||||||
|
}),
|
||||||
|
fsLayers: new T({
|
||||||
|
en: "Enable thelayer control",
|
||||||
|
nl: "Toon de knop voor laagbediening"
|
||||||
|
}),
|
||||||
|
|
||||||
|
fsLayerControlToggle: new T({
|
||||||
|
en: "Start with the layer control expanded",
|
||||||
|
nl: "Toon de laagbediening meteen volledig"
|
||||||
|
}),
|
||||||
|
fsAddNew: new T({
|
||||||
|
en: "Enable the 'add new POI' button",
|
||||||
|
nl: "Activeer het toevoegen van nieuwe POI"
|
||||||
|
}),
|
||||||
|
fsGeolocation: new T({
|
||||||
|
en: "Enable the 'geolocate-me' button (mobile only)",
|
||||||
|
nl: "Toon het knopje voor geolocalisatie (enkel op mobiel)"
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
morescreen: {
|
morescreen: {
|
||||||
|
@ -1070,7 +1115,11 @@ export default class Translations {
|
||||||
es: "No se han seleccionado etiquetas",
|
es: "No se han seleccionado etiquetas",
|
||||||
ca: "No s\'han seleccionat etiquetes"
|
ca: "No s\'han seleccionat etiquetes"
|
||||||
}),
|
}),
|
||||||
customThemeIntro: new T({en: "<h3>Custom themes</h3>These are previously visited user-generated themes."})
|
customThemeIntro: new T({
|
||||||
|
en: "<h3>Custom themes</h3>These are previously visited user-generated themes.",
|
||||||
|
nl: "<h3>Onofficiële themea's</h3>Je bezocht deze thema's gemaakt door andere OpenStreetMappers eerder"
|
||||||
|
}),
|
||||||
|
|
||||||
},
|
},
|
||||||
favourite: {
|
favourite: {
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,10 @@ form {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
.thanks {
|
.thanks {
|
||||||
background-color: #43d904;
|
background-color: #43d904;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
Loading…
Add table
Reference in a new issue