@gramps-connect/story 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/editor.js +691 -99
- package/dist/editor.js.map +4 -4
- package/dist/types/editor/StoryEditor.d.ts +1 -1
- package/dist/types/editor/index.d.ts +2 -2
- package/dist/types/editor/mapEditorStrings.d.ts +3 -0
- package/dist/types/editor/strings.d.ts +17 -0
- package/dist/types/editor/translations/de.d.ts +4 -0
- package/dist/types/editor/translations/es.d.ts +4 -0
- package/dist/types/editor/translations/fr.d.ts +4 -0
- package/dist/types/editor/translations/index.d.ts +7 -0
- package/dist/types/editor/translations/nl.d.ts +4 -0
- package/package.json +1 -1
- package/src/editor/MapEditor.tsx +23 -10
- package/src/editor/PlaceMapDialog.tsx +3 -7
- package/src/editor/StoryEditor.tsx +10 -4
- package/src/editor/index.ts +2 -2
- package/src/editor/mapEditorStrings.ts +10 -2
- package/src/editor/strings.ts +43 -2
- package/src/editor/translations/de.ts +140 -0
- package/src/editor/translations/es.ts +140 -0
- package/src/editor/translations/fr.ts +140 -0
- package/src/editor/translations/index.ts +15 -0
- package/src/editor/translations/nl.ts +140 -0
package/dist/editor.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
1
7
|
// src/editor/StoryEditor.tsx
|
|
2
8
|
import { useCallback, useEffect as useEffect9, useMemo as useMemo4, useRef as useRef11, useState as useState10 } from "react";
|
|
3
9
|
import {
|
|
@@ -3732,6 +3738,659 @@ import {
|
|
|
3732
3738
|
TextInput as TextInput4
|
|
3733
3739
|
} from "@mantine/core";
|
|
3734
3740
|
|
|
3741
|
+
// src/editor/translations/de.ts
|
|
3742
|
+
var de_exports = {};
|
|
3743
|
+
__export(de_exports, {
|
|
3744
|
+
editor: () => editor,
|
|
3745
|
+
mapEditor: () => mapEditor
|
|
3746
|
+
});
|
|
3747
|
+
var editor = {
|
|
3748
|
+
story: "Geschichte",
|
|
3749
|
+
storySettings: "Titel, Sprache und Karte",
|
|
3750
|
+
title: "Titel",
|
|
3751
|
+
language: "Sprache",
|
|
3752
|
+
languageHint: "Die Sprache, in der die Geschichte geschrieben ist, z. B. en, de oder fr-CA. Daten werden in ihr gelesen.",
|
|
3753
|
+
map: "Karte",
|
|
3754
|
+
mapHint: "Wie die Karte beim Abspielen der Geschichte beginnt. Leser k\xF6nnen sie trotzdem \xE4ndern.",
|
|
3755
|
+
mapStandard: "Heutige Karte",
|
|
3756
|
+
mapHistorical: "Historische Karten zum Jahr jeder Folie",
|
|
3757
|
+
mapAuto: "Wahl des Betrachters",
|
|
3758
|
+
mapNone: "Keine Karte",
|
|
3759
|
+
slides: "Folien",
|
|
3760
|
+
untitledSlide: "Folie ohne Titel",
|
|
3761
|
+
addSlide: "Folie hinzuf\xFCgen",
|
|
3762
|
+
duplicateSlide: "Duplizieren",
|
|
3763
|
+
deleteSlide: "L\xF6schen",
|
|
3764
|
+
moveUp: "Nach oben",
|
|
3765
|
+
moveDown: "Nach unten",
|
|
3766
|
+
slideTitle: "Titel",
|
|
3767
|
+
text: "Text",
|
|
3768
|
+
bold: "Fett",
|
|
3769
|
+
italic: "Kursiv",
|
|
3770
|
+
date: "Datum",
|
|
3771
|
+
dateHint: "So, wie Leser es sehen sollen, z. B. um 1850, 3. Mai 1850, zwischen 1850 und 1860.",
|
|
3772
|
+
preciseDate: "Genaues Datum (EDTF)",
|
|
3773
|
+
preciseDateHint: "Setzt die Folie auf die Zeitleiste und w\xE4hlt die historischen Karten.",
|
|
3774
|
+
preciseDateFollows: "Aus dem geschriebenen Datum ermittelt.",
|
|
3775
|
+
preciseDateNotUnderstood: "Kein Datum, das die Zeitleiste verwenden kann.",
|
|
3776
|
+
matchDateAsWritten: "Aus dem Datum ermitteln",
|
|
3777
|
+
noPreciseDate: "Keines: Diese Folie bleibt au\xDFerhalb der Zeitleiste.",
|
|
3778
|
+
place: "Ort",
|
|
3779
|
+
placeName: "Name",
|
|
3780
|
+
removePlace: "Ort entfernen",
|
|
3781
|
+
findPlace: "Auf Wikidata suchen",
|
|
3782
|
+
findPlaceHint: "Sucht den Namen auf Wikidata, um die Stecknadel dorthin zu setzen. Nur der Name wird gesendet, und nur, wenn Sie es w\xFCnschen.",
|
|
3783
|
+
findPlaceNone: "Wikidata kennt keinen Ort mit diesem Namen.",
|
|
3784
|
+
findPlaceFailed: "Wikidata war nicht erreichbar.",
|
|
3785
|
+
findPlaceNoPoint: (name) => `Wikidata hat keine Kartenposition f\xFCr ${name}.`,
|
|
3786
|
+
coordinates: "Breite, L\xE4nge",
|
|
3787
|
+
coordinatesHint: "z. B. 47.3769, 8.5417",
|
|
3788
|
+
coordinatesInvalid: "Zwei Zahlen: Breite (-90 bis 90), dann L\xE4nge (-180 bis 180).",
|
|
3789
|
+
placeMap: "Karte: klicken, um die Stecknadel zu setzen",
|
|
3790
|
+
placeMapHint: "Klicken Sie auf die Karte, um die Stecknadel dorthin zu setzen, oder ziehen Sie die Stecknadel.",
|
|
3791
|
+
placeShape: "eine Form",
|
|
3792
|
+
placeOverlays: (count) => count === 1 ? "eine Karten\xFCberlagerung" : `${count} Karten\xFCberlagerungen`,
|
|
3793
|
+
placeKeeps: (what) => `Dieser Ort hat au\xDFerdem ${what}.`,
|
|
3794
|
+
editMap: "Karte bearbeiten",
|
|
3795
|
+
editMapHint: "Formen unter der Stecknadel (eine Pfarrei, eine Route) und dar\xFCbergelegte Scans alter Karten.",
|
|
3796
|
+
mapHelpImage: "Bild: F\xFCgen Sie eine Bilddatei hinzu, etwa den Scan einer alten Karte \u2013 siehe",
|
|
3797
|
+
mapDialogTitle: (placeName) => placeName ? `Karte: ${placeName}` : "Karte",
|
|
3798
|
+
mapHelp: "So benutzen Sie diesen Editor",
|
|
3799
|
+
importShapes: "Formen importieren",
|
|
3800
|
+
importShapesHint: "F\xFCgt die Punkte, Linien und Fl\xE4chen einer KML-, GPX- oder GeoJSON-Datei zu dieser Karte hinzu.",
|
|
3801
|
+
importFailed: (fileName) => `${fileName} konnte nicht als KML-, GPX- oder GeoJSON-Datei gelesen werden.`,
|
|
3802
|
+
importNothing: (fileName) => `${fileName} enth\xE4lt keine Formen.`,
|
|
3803
|
+
overlayAlready: "Dieses Bild ist bereits auf dieser Karte.",
|
|
3804
|
+
overlayDate: "Jahre, die sie zeigt",
|
|
3805
|
+
overlayDateHint: "z. B. 1850, oder 1850 bis 1880. Mit historischen Karten ist sie auf Folien au\xDFerhalb dieser Jahre ausgeblendet.",
|
|
3806
|
+
cancel: "Abbrechen",
|
|
3807
|
+
done: "Fertig",
|
|
3808
|
+
photos: "Fotos",
|
|
3809
|
+
photosHint: "F\xFCgen Sie ein Foto hinzu, ziehen Sie es hierher oder f\xFCgen Sie es ein. Es wird f\xFCr den Bildschirm verkleinert, und versteckte Angaben wie Kamera und Standort werden weggelassen.",
|
|
3810
|
+
addPhoto: "Foto hinzuf\xFCgen",
|
|
3811
|
+
replacePhoto: "Ersetzen",
|
|
3812
|
+
movePhotoUp: "Foto nach oben",
|
|
3813
|
+
movePhotoDown: "Foto nach unten",
|
|
3814
|
+
removePhoto: "Entfernen",
|
|
3815
|
+
caption: "Bildunterschrift",
|
|
3816
|
+
credit: "Bildnachweis",
|
|
3817
|
+
creditHint: "Wer es aufgenommen hat oder woher es stammt",
|
|
3818
|
+
description: "Beschreibung",
|
|
3819
|
+
descriptionHint: "Was das Foto zeigt, f\xFCr alle, die es nicht sehen k\xF6nnen.",
|
|
3820
|
+
photoFailed: (name) => `${name} konnte nicht verwendet werden: Dieser Browser kann es nicht als Bild lesen.`,
|
|
3821
|
+
undo: "R\xFCckg\xE4ngig",
|
|
3822
|
+
redo: "Wiederholen",
|
|
3823
|
+
present: "Vorf\xFChren",
|
|
3824
|
+
preview: "Vorschau",
|
|
3825
|
+
problems: (count) => count === 1 ? "1 Problem vor dem Speichern beheben" : `${count} Probleme vor dem Speichern beheben`,
|
|
3826
|
+
openingSlide: "Er\xF6ffnungsfolie"
|
|
3827
|
+
};
|
|
3828
|
+
var mapEditor = {
|
|
3829
|
+
point: "Punkt",
|
|
3830
|
+
line: "Linie",
|
|
3831
|
+
polygon: "Polygon",
|
|
3832
|
+
rectangle: "Rechteck",
|
|
3833
|
+
select: "Ausw\xE4hlen",
|
|
3834
|
+
image: "Bild",
|
|
3835
|
+
editOptions: "Bearbeitungsoptionen",
|
|
3836
|
+
labelText: "Beschriftung",
|
|
3837
|
+
regionName: "Name des Gebiets (optional)",
|
|
3838
|
+
fillOpacity: "Deckkraft der F\xFCllung",
|
|
3839
|
+
scale: "Skalieren",
|
|
3840
|
+
transform: "Verzerren",
|
|
3841
|
+
overlayName: "Name der \xDCberlagerung (optional)",
|
|
3842
|
+
opacity: "Deckkraft",
|
|
3843
|
+
stackingOrder: "Stapelreihenfolge",
|
|
3844
|
+
removeImage: "Dieses Bild entfernen",
|
|
3845
|
+
resizeImage: "Ziehen, um die Gr\xF6\xDFe zu \xE4ndern (beh\xE4lt die genaue Form, verzerrt oder nicht)",
|
|
3846
|
+
rotateImage: "Ziehen, um zu drehen",
|
|
3847
|
+
warpCorner: "Ziehen, um diese Ecke zu verzerren",
|
|
3848
|
+
basemapFailed: "Die Grundkarte konnte nicht geladen werden.",
|
|
3849
|
+
imageFailed: "Das Bild konnte nicht geladen werden.",
|
|
3850
|
+
lockedOne: "1 Form kann hier nicht bearbeitet werden",
|
|
3851
|
+
lockedMany: (count) => `${count} Formen k\xF6nnen hier nicht bearbeitet werden`,
|
|
3852
|
+
lockedExplain: "Zum Beispiel ein Gebiet mit einem Loch oder eines, dessen Umriss sich selbst kreuzt. Es wird gestrichelt gezeichnet und genau so gespeichert, wie es war.",
|
|
3853
|
+
helpTitle: "So benutzen Sie diesen Editor",
|
|
3854
|
+
helpDrawing: "Zeichnen",
|
|
3855
|
+
helpPoint: "Punkt: einmal klicken, um ihn zu setzen.",
|
|
3856
|
+
helpLine: "Linie, Polygon: klicken, um jeden Punkt zu setzen, dann erneut auf die Markierung des ersten Punktes klicken, um abzuschlie\xDFen \u2013 sie sieht anders aus, sobald es genug Punkte gibt, um die Form zu schlie\xDFen. Auch",
|
|
3857
|
+
helpEnterFinishes: "schlie\xDFt sie ab;",
|
|
3858
|
+
helpEscCancels: "bricht sie ab.",
|
|
3859
|
+
helpRectangle: "Rechteck: von einer Ecke zur gegen\xFCberliegenden Ecke klicken und ziehen.",
|
|
3860
|
+
helpImage: "Bild: ein Medienobjekt zum \xDCberlagern w\xE4hlen \u2013 siehe",
|
|
3861
|
+
helpImages: "Bilder",
|
|
3862
|
+
helpBelow: "unten.",
|
|
3863
|
+
helpEditing: "Eine Form bearbeiten",
|
|
3864
|
+
helpSelect: "Ausw\xE4hlen: auf eine Form klicken, um sie auszuw\xE4hlen, dann sie oder einen ihrer Griffe ziehen.",
|
|
3865
|
+
helpVertex: "Einen Eckpunkt ziehen, um ihn zu verschieben. F\xFCr einen neuen Punkt auf einer Linie, einem Polygon oder Rechteck die kleine Mittelpunktmarkierung zwischen zwei Eckpunkten nach au\xDFen ziehen.",
|
|
3866
|
+
helpColor: "Das Farbfeld legt die Farbe der n\xE4chsten Form fest \u2013 oder \xE4ndert, wenn eine Form ausgew\xE4hlt ist, deren Farbe.",
|
|
3867
|
+
helpDelete: "Eine ausgew\xE4hlte Form oder ein Bild l\xF6schen mit",
|
|
3868
|
+
helpOr: "oder",
|
|
3869
|
+
helpRotate: "Ein ausgew\xE4hltes Polygon, Rechteck oder eine Linie drehen:",
|
|
3870
|
+
helpRotateHandle: "gedr\xFCckt halten und dabei einen ihrer Griffe ziehen.",
|
|
3871
|
+
helpImageMove: "Irgendwo auf ein Bild klicken und ziehen, um es zu verschieben.",
|
|
3872
|
+
helpImageResize: "Seinen \u2198-Griff ziehen, um die Gr\xF6\xDFe zu \xE4ndern \u2013 es w\xE4chst oder schrumpft um seine eigene Mitte und beh\xE4lt seine genaue Form (auch bei einem verzerrten Bild).",
|
|
3873
|
+
helpImageRotate: "Seinen \u21BB-Griff ziehen, um es zu drehen \u2013 praktisch, um eine gescannte alte Karte auszurichten.",
|
|
3874
|
+
helpImageTransform: "Auf \u201EVerzerren\u201C umschalten, um zus\xE4tzlich 4 Eckgriffe zu zeigen, die sich einzeln ziehen lassen (Entzerrung) \u2013 f\xFCr eine gescannte Karte ohne einheitlichen Ma\xDFstab oder einheitliche Ausrichtung. Zur\xFCck auf \u201ESkalieren\u201C blendet diese 4 Griffe nur wieder aus; Verschieben, Gr\xF6\xDFe \xE4ndern und Drehen wirken in beiden F\xE4llen auf die genaue aktuelle Form des Bildes.",
|
|
3875
|
+
helpImageRemove: "Auf seinen \xD7-Griff klicken, um es zu entfernen."
|
|
3876
|
+
};
|
|
3877
|
+
|
|
3878
|
+
// src/editor/translations/es.ts
|
|
3879
|
+
var es_exports = {};
|
|
3880
|
+
__export(es_exports, {
|
|
3881
|
+
editor: () => editor2,
|
|
3882
|
+
mapEditor: () => mapEditor2
|
|
3883
|
+
});
|
|
3884
|
+
var editor2 = {
|
|
3885
|
+
story: "Historia",
|
|
3886
|
+
storySettings: "T\xEDtulo, idioma y mapa",
|
|
3887
|
+
title: "T\xEDtulo",
|
|
3888
|
+
language: "Idioma",
|
|
3889
|
+
languageHint: "El idioma en que est\xE1 escrita la historia, p. ej. en, de o fr-CA. Las fechas se leen en \xE9l.",
|
|
3890
|
+
map: "Mapa",
|
|
3891
|
+
mapHint: "C\xF3mo empieza el mapa al reproducir la historia. Los lectores a\xFAn pueden cambiarlo.",
|
|
3892
|
+
mapStandard: "Mapa actual",
|
|
3893
|
+
mapHistorical: "Mapas hist\xF3ricos del a\xF1o de cada diapositiva",
|
|
3894
|
+
mapAuto: "A elecci\xF3n del lector",
|
|
3895
|
+
mapNone: "Sin mapa",
|
|
3896
|
+
slides: "Diapositivas",
|
|
3897
|
+
untitledSlide: "Diapositiva sin t\xEDtulo",
|
|
3898
|
+
addSlide: "A\xF1adir diapositiva",
|
|
3899
|
+
duplicateSlide: "Duplicar",
|
|
3900
|
+
deleteSlide: "Eliminar",
|
|
3901
|
+
moveUp: "Subir",
|
|
3902
|
+
moveDown: "Bajar",
|
|
3903
|
+
slideTitle: "T\xEDtulo",
|
|
3904
|
+
text: "Texto",
|
|
3905
|
+
bold: "Negrita",
|
|
3906
|
+
italic: "Cursiva",
|
|
3907
|
+
date: "Fecha",
|
|
3908
|
+
dateHint: "Como deben verla los lectores, p. ej. hacia 1850, 3 de mayo de 1850, entre 1850 y 1860.",
|
|
3909
|
+
preciseDate: "Fecha precisa (EDTF)",
|
|
3910
|
+
preciseDateHint: "Sit\xFAa la diapositiva en la l\xEDnea de tiempo y elige los mapas hist\xF3ricos.",
|
|
3911
|
+
preciseDateFollows: "Deducida de la fecha tal como est\xE1 escrita.",
|
|
3912
|
+
preciseDateNotUnderstood: "No es una fecha que la l\xEDnea de tiempo pueda usar.",
|
|
3913
|
+
matchDateAsWritten: "Deducirla de la fecha",
|
|
3914
|
+
noPreciseDate: "Ninguna: esta diapositiva queda fuera de la l\xEDnea de tiempo.",
|
|
3915
|
+
place: "Lugar",
|
|
3916
|
+
placeName: "Nombre",
|
|
3917
|
+
removePlace: "Quitar el lugar",
|
|
3918
|
+
findPlace: "Buscar en Wikidata",
|
|
3919
|
+
findPlaceHint: "Busca el nombre en Wikidata para poner all\xED el marcador. Solo se env\xEDa el nombre, y solo cuando usted lo pide.",
|
|
3920
|
+
findPlaceNone: "Wikidata no tiene ning\xFAn lugar con ese nombre.",
|
|
3921
|
+
findPlaceFailed: "No se pudo conectar con Wikidata.",
|
|
3922
|
+
findPlaceNoPoint: (name) => `Wikidata no tiene una posici\xF3n en el mapa para ${name}.`,
|
|
3923
|
+
coordinates: "Latitud, longitud",
|
|
3924
|
+
coordinatesHint: "p. ej. 47.3769, 8.5417",
|
|
3925
|
+
coordinatesInvalid: "Dos n\xFAmeros: la latitud (de -90 a 90) y luego la longitud (de -180 a 180).",
|
|
3926
|
+
placeMap: "Mapa: haga clic para poner el marcador",
|
|
3927
|
+
placeMapHint: "Haga clic en el mapa para poner all\xED el marcador, o arrastre el marcador.",
|
|
3928
|
+
placeShape: "una forma",
|
|
3929
|
+
placeOverlays: (count) => count === 1 ? "una superposici\xF3n de mapa" : `${count} superposiciones de mapa`,
|
|
3930
|
+
placeKeeps: (what) => `Este lugar tambi\xE9n tiene ${what}.`,
|
|
3931
|
+
editMap: "Editar el mapa",
|
|
3932
|
+
editMapHint: "Formas bajo el marcador (una parroquia, una ruta) y escaneos de mapas antiguos superpuestos.",
|
|
3933
|
+
mapHelpImage: "Imagen: a\xF1ada un archivo de imagen, como el escaneo de un mapa antiguo; consulte",
|
|
3934
|
+
mapDialogTitle: (placeName) => placeName ? `Mapa: ${placeName}` : "Mapa",
|
|
3935
|
+
mapHelp: "C\xF3mo usar este editor",
|
|
3936
|
+
importShapes: "Importar formas",
|
|
3937
|
+
importShapesHint: "A\xF1ade a este mapa los puntos, l\xEDneas y \xE1reas de un archivo KML, GPX o GeoJSON.",
|
|
3938
|
+
importFailed: (fileName) => `No se pudo leer ${fileName} como archivo KML, GPX o GeoJSON.`,
|
|
3939
|
+
importNothing: (fileName) => `${fileName} no contiene formas.`,
|
|
3940
|
+
overlayAlready: "Esa imagen ya est\xE1 en este mapa.",
|
|
3941
|
+
overlayDate: "A\xF1os que muestra",
|
|
3942
|
+
overlayDateHint: "p. ej. 1850, o de 1850 a 1880. Con mapas hist\xF3ricos, se oculta en las diapositivas fuera de esos a\xF1os.",
|
|
3943
|
+
cancel: "Cancelar",
|
|
3944
|
+
done: "Listo",
|
|
3945
|
+
photos: "Fotos",
|
|
3946
|
+
photosHint: "A\xF1ada, suelte o pegue una foto. Se reduce para la pantalla y se omiten datos ocultos como la c\xE1mara y la ubicaci\xF3n.",
|
|
3947
|
+
addPhoto: "A\xF1adir foto",
|
|
3948
|
+
replacePhoto: "Reemplazar",
|
|
3949
|
+
movePhotoUp: "Subir la foto",
|
|
3950
|
+
movePhotoDown: "Bajar la foto",
|
|
3951
|
+
removePhoto: "Quitar",
|
|
3952
|
+
caption: "Pie de foto",
|
|
3953
|
+
credit: "Cr\xE9ditos",
|
|
3954
|
+
creditHint: "Qui\xE9n la tom\xF3 o de d\xF3nde procede",
|
|
3955
|
+
description: "Descripci\xF3n",
|
|
3956
|
+
descriptionHint: "Lo que muestra la foto, para quien no pueda verla.",
|
|
3957
|
+
photoFailed: (name) => `No se pudo usar ${name}: este navegador no puede leerlo como imagen.`,
|
|
3958
|
+
undo: "Deshacer",
|
|
3959
|
+
redo: "Rehacer",
|
|
3960
|
+
present: "Presentar",
|
|
3961
|
+
preview: "Vista previa",
|
|
3962
|
+
problems: (count) => count === 1 ? "1 problema que corregir antes de guardar" : `${count} problemas que corregir antes de guardar`,
|
|
3963
|
+
openingSlide: "Diapositiva inicial"
|
|
3964
|
+
};
|
|
3965
|
+
var mapEditor2 = {
|
|
3966
|
+
point: "Punto",
|
|
3967
|
+
line: "L\xEDnea",
|
|
3968
|
+
polygon: "Pol\xEDgono",
|
|
3969
|
+
rectangle: "Rect\xE1ngulo",
|
|
3970
|
+
select: "Seleccionar",
|
|
3971
|
+
image: "Imagen",
|
|
3972
|
+
editOptions: "Opciones de edici\xF3n",
|
|
3973
|
+
labelText: "Texto de la etiqueta",
|
|
3974
|
+
regionName: "Nombre de la regi\xF3n (opcional)",
|
|
3975
|
+
fillOpacity: "Opacidad del relleno",
|
|
3976
|
+
scale: "Escalar",
|
|
3977
|
+
transform: "Deformar",
|
|
3978
|
+
overlayName: "Nombre de la superposici\xF3n (opcional)",
|
|
3979
|
+
opacity: "Opacidad",
|
|
3980
|
+
stackingOrder: "Orden de apilamiento",
|
|
3981
|
+
removeImage: "Quitar esta imagen",
|
|
3982
|
+
resizeImage: "Arrastre para cambiar el tama\xF1o (mantiene su forma exacta, deformada o no)",
|
|
3983
|
+
rotateImage: "Arrastre para girar",
|
|
3984
|
+
warpCorner: "Arrastre para deformar esta esquina",
|
|
3985
|
+
basemapFailed: "No se pudo cargar el mapa base.",
|
|
3986
|
+
imageFailed: "No se pudo cargar la imagen.",
|
|
3987
|
+
lockedOne: "1 forma no se puede editar aqu\xED",
|
|
3988
|
+
lockedMany: (count) => `${count} formas no se pueden editar aqu\xED`,
|
|
3989
|
+
lockedExplain: "Por ejemplo, una regi\xF3n con un hueco, o una cuyo contorno se cruza a s\xED mismo. Se dibuja con trazo discontinuo y se guarda exactamente como estaba.",
|
|
3990
|
+
helpTitle: "C\xF3mo usar este editor",
|
|
3991
|
+
helpDrawing: "Dibujar",
|
|
3992
|
+
helpPoint: "Punto: haga clic una vez para colocarlo.",
|
|
3993
|
+
helpLine: "L\xEDnea, Pol\xEDgono: haga clic para colocar cada punto y luego vuelva a hacer clic en el marcador del primer punto para terminar; cambia de aspecto cuando hay puntos suficientes para cerrar la forma. Pulsar",
|
|
3994
|
+
helpEnterFinishes: "tambi\xE9n la termina;",
|
|
3995
|
+
helpEscCancels: "la cancela.",
|
|
3996
|
+
helpRectangle: "Rect\xE1ngulo: haga clic y arrastre de una esquina a la opuesta.",
|
|
3997
|
+
helpImage: "Imagen: elija un objeto multimedia para superponer; consulte",
|
|
3998
|
+
helpImages: "Im\xE1genes",
|
|
3999
|
+
helpBelow: "m\xE1s abajo.",
|
|
4000
|
+
helpEditing: "Editar una forma",
|
|
4001
|
+
helpSelect: "Seleccionar: haga clic en una forma para seleccionarla y luego arr\xE1strela a ella o a uno de sus tiradores.",
|
|
4002
|
+
helpVertex: "Arrastre un v\xE9rtice para moverlo. Para a\xF1adir un punto nuevo a una L\xEDnea, Pol\xEDgono o Rect\xE1ngulo, arrastre hacia fuera el peque\xF1o marcador del punto medio entre dos v\xE9rtices.",
|
|
4003
|
+
helpColor: "La muestra de color fija el color de la siguiente forma o, con una forma seleccionada, cambia su color.",
|
|
4004
|
+
helpDelete: "Elimine una forma o imagen seleccionada con",
|
|
4005
|
+
helpOr: "o",
|
|
4006
|
+
helpRotate: "Para girar un Pol\xEDgono, Rect\xE1ngulo o L\xEDnea seleccionado, mantenga pulsada",
|
|
4007
|
+
helpRotateHandle: "mientras arrastra uno de sus tiradores.",
|
|
4008
|
+
helpImageMove: "Arrastre desde cualquier punto de una imagen para moverla.",
|
|
4009
|
+
helpImageResize: "Arrastre su tirador \u2198 para cambiar el tama\xF1o: crece o se encoge desde su propio centro y mantiene su forma exacta (tambi\xE9n en una imagen deformada).",
|
|
4010
|
+
helpImageRotate: "Arrastre su tirador \u21BB para girarla: \xFAtil para alinear un mapa antiguo escaneado.",
|
|
4011
|
+
helpImageTransform: "Cambie a \xABDeformar\xBB para mostrar adem\xE1s 4 tiradores de esquina que se arrastran por separado (georreferenciaci\xF3n el\xE1stica): para un mapa escaneado que no tiene una escala u orientaci\xF3n uniforme. Volver a \xABEscalar\xBB solo oculta de nuevo esos 4 tiradores; mover, cambiar el tama\xF1o y girar siguen funcionando sobre la forma actual exacta de la imagen en ambos casos.",
|
|
4012
|
+
helpImageRemove: "Haga clic en su tirador \xD7 para quitarla."
|
|
4013
|
+
};
|
|
4014
|
+
|
|
4015
|
+
// src/editor/translations/fr.ts
|
|
4016
|
+
var fr_exports = {};
|
|
4017
|
+
__export(fr_exports, {
|
|
4018
|
+
editor: () => editor3,
|
|
4019
|
+
mapEditor: () => mapEditor3
|
|
4020
|
+
});
|
|
4021
|
+
var editor3 = {
|
|
4022
|
+
story: "Histoire",
|
|
4023
|
+
storySettings: "Titre, langue et carte",
|
|
4024
|
+
title: "Titre",
|
|
4025
|
+
language: "Langue",
|
|
4026
|
+
languageHint: "La langue dans laquelle l\u2019histoire est \xE9crite, p. ex. en, de ou fr-CA. Les dates sont lues dans cette langue.",
|
|
4027
|
+
map: "Carte",
|
|
4028
|
+
mapHint: "Comment la carte commence quand l\u2019histoire est lue. Les lecteurs peuvent toujours la changer.",
|
|
4029
|
+
mapStandard: "Carte actuelle",
|
|
4030
|
+
mapHistorical: "Cartes historiques de l\u2019ann\xE9e de chaque diapositive",
|
|
4031
|
+
mapAuto: "Au choix du lecteur",
|
|
4032
|
+
mapNone: "Pas de carte",
|
|
4033
|
+
slides: "Diapositives",
|
|
4034
|
+
untitledSlide: "Diapositive sans titre",
|
|
4035
|
+
addSlide: "Ajouter une diapositive",
|
|
4036
|
+
duplicateSlide: "Dupliquer",
|
|
4037
|
+
deleteSlide: "Supprimer",
|
|
4038
|
+
moveUp: "Monter",
|
|
4039
|
+
moveDown: "Descendre",
|
|
4040
|
+
slideTitle: "Titre",
|
|
4041
|
+
text: "Texte",
|
|
4042
|
+
bold: "Gras",
|
|
4043
|
+
italic: "Italique",
|
|
4044
|
+
date: "Date",
|
|
4045
|
+
dateHint: "Telle que les lecteurs doivent la voir, p. ex. vers 1850, 3 mai 1850, entre 1850 et 1860.",
|
|
4046
|
+
preciseDate: "Date pr\xE9cise (EDTF)",
|
|
4047
|
+
preciseDateHint: "Place la diapositive sur la frise chronologique et choisit les cartes historiques.",
|
|
4048
|
+
preciseDateFollows: "D\xE9duite de la date telle qu\u2019\xE9crite.",
|
|
4049
|
+
preciseDateNotUnderstood: "Ce n\u2019est pas une date utilisable par la frise chronologique.",
|
|
4050
|
+
matchDateAsWritten: "La d\xE9duire de la date",
|
|
4051
|
+
noPreciseDate: "Aucune : cette diapositive reste hors de la frise chronologique.",
|
|
4052
|
+
place: "Lieu",
|
|
4053
|
+
placeName: "Nom",
|
|
4054
|
+
removePlace: "Retirer le lieu",
|
|
4055
|
+
findPlace: "Chercher sur Wikidata",
|
|
4056
|
+
findPlaceHint: "Cherche le nom sur Wikidata pour y placer l\u2019\xE9pingle. Seul le nom est envoy\xE9, et seulement quand vous le demandez.",
|
|
4057
|
+
findPlaceNone: "Wikidata n\u2019a aucun lieu de ce nom.",
|
|
4058
|
+
findPlaceFailed: "Impossible de joindre Wikidata.",
|
|
4059
|
+
findPlaceNoPoint: (name) => `Wikidata n\u2019a pas de position sur la carte pour ${name}.`,
|
|
4060
|
+
coordinates: "Latitude, longitude",
|
|
4061
|
+
coordinatesHint: "p. ex. 47.3769, 8.5417",
|
|
4062
|
+
coordinatesInvalid: "Deux nombres : la latitude (-90 \xE0 90), puis la longitude (-180 \xE0 180).",
|
|
4063
|
+
placeMap: "Carte : cliquez pour placer l\u2019\xE9pingle",
|
|
4064
|
+
placeMapHint: "Cliquez sur la carte pour y placer l\u2019\xE9pingle, ou faites glisser l\u2019\xE9pingle.",
|
|
4065
|
+
placeShape: "une forme",
|
|
4066
|
+
placeOverlays: (count) => count === 1 ? "une superposition de carte" : `${count} superpositions de carte`,
|
|
4067
|
+
placeKeeps: (what) => `Ce lieu a aussi ${what}.`,
|
|
4068
|
+
editMap: "Modifier la carte",
|
|
4069
|
+
editMapHint: "Des formes sous l\u2019\xE9pingle (une paroisse, un itin\xE9raire) et des scans de cartes anciennes pos\xE9s dessus.",
|
|
4070
|
+
mapHelpImage: "Image : ajoutez un fichier image, comme le scan d\u2019une carte ancienne \u2013 voir",
|
|
4071
|
+
mapDialogTitle: (placeName) => placeName ? `Carte : ${placeName}` : "Carte",
|
|
4072
|
+
mapHelp: "Comment utiliser cet \xE9diteur",
|
|
4073
|
+
importShapes: "Importer des formes",
|
|
4074
|
+
importShapesHint: "Ajoute \xE0 cette carte les points, lignes et zones d\u2019un fichier KML, GPX ou GeoJSON.",
|
|
4075
|
+
importFailed: (fileName) => `Impossible de lire ${fileName} comme fichier KML, GPX ou GeoJSON.`,
|
|
4076
|
+
importNothing: (fileName) => `${fileName} ne contient aucune forme.`,
|
|
4077
|
+
overlayAlready: "Cette image est d\xE9j\xE0 sur cette carte.",
|
|
4078
|
+
overlayDate: "Ann\xE9es qu\u2019elle montre",
|
|
4079
|
+
overlayDateHint: "p. ex. 1850, ou 1850 \xE0 1880. Avec les cartes historiques, elle est masqu\xE9e sur les diapositives hors de ces ann\xE9es.",
|
|
4080
|
+
cancel: "Annuler",
|
|
4081
|
+
done: "Termin\xE9",
|
|
4082
|
+
photos: "Photos",
|
|
4083
|
+
photosHint: "Ajoutez, d\xE9posez ou collez une photo. Elle est r\xE9duite pour l\u2019\xE9cran, et les d\xE9tails cach\xE9s comme l\u2019appareil et le lieu sont laiss\xE9s de c\xF4t\xE9.",
|
|
4084
|
+
addPhoto: "Ajouter une photo",
|
|
4085
|
+
replacePhoto: "Remplacer",
|
|
4086
|
+
movePhotoUp: "Monter la photo",
|
|
4087
|
+
movePhotoDown: "Descendre la photo",
|
|
4088
|
+
removePhoto: "Retirer",
|
|
4089
|
+
caption: "L\xE9gende",
|
|
4090
|
+
credit: "Cr\xE9dit",
|
|
4091
|
+
creditHint: "Qui l\u2019a prise, ou d\u2019o\xF9 elle vient",
|
|
4092
|
+
description: "Description",
|
|
4093
|
+
descriptionHint: "Ce que montre la photo, pour qui ne peut pas la voir.",
|
|
4094
|
+
photoFailed: (name) => `Impossible d\u2019utiliser ${name} : ce navigateur ne peut pas le lire comme une image.`,
|
|
4095
|
+
undo: "Annuler",
|
|
4096
|
+
redo: "R\xE9tablir",
|
|
4097
|
+
present: "Pr\xE9senter",
|
|
4098
|
+
preview: "Aper\xE7u",
|
|
4099
|
+
problems: (count) => count === 1 ? "1 probl\xE8me \xE0 corriger avant d\u2019enregistrer" : `${count} probl\xE8mes \xE0 corriger avant d\u2019enregistrer`,
|
|
4100
|
+
openingSlide: "Diapositive d\u2019ouverture"
|
|
4101
|
+
};
|
|
4102
|
+
var mapEditor3 = {
|
|
4103
|
+
point: "Point",
|
|
4104
|
+
line: "Ligne",
|
|
4105
|
+
polygon: "Polygone",
|
|
4106
|
+
rectangle: "Rectangle",
|
|
4107
|
+
select: "S\xE9lectionner",
|
|
4108
|
+
image: "Image",
|
|
4109
|
+
editOptions: "Options de modification",
|
|
4110
|
+
labelText: "Texte de l\u2019\xE9tiquette",
|
|
4111
|
+
regionName: "Nom de la r\xE9gion (facultatif)",
|
|
4112
|
+
fillOpacity: "Opacit\xE9 du remplissage",
|
|
4113
|
+
scale: "\xC9chelle",
|
|
4114
|
+
transform: "D\xE9former",
|
|
4115
|
+
overlayName: "Nom de la superposition (facultatif)",
|
|
4116
|
+
opacity: "Opacit\xE9",
|
|
4117
|
+
stackingOrder: "Ordre d\u2019empilement",
|
|
4118
|
+
removeImage: "Retirer cette image",
|
|
4119
|
+
resizeImage: "Faire glisser pour redimensionner (garde sa forme exacte, d\xE9form\xE9e ou non)",
|
|
4120
|
+
rotateImage: "Faire glisser pour pivoter",
|
|
4121
|
+
warpCorner: "Faire glisser pour d\xE9former ce coin",
|
|
4122
|
+
basemapFailed: "Le fond de carte n\u2019a pas pu \xEAtre charg\xE9.",
|
|
4123
|
+
imageFailed: "L\u2019image n\u2019a pas pu \xEAtre charg\xE9e.",
|
|
4124
|
+
lockedOne: "1 forme ne peut pas \xEAtre modifi\xE9e ici",
|
|
4125
|
+
lockedMany: (count) => `${count} formes ne peuvent pas \xEAtre modifi\xE9es ici`,
|
|
4126
|
+
lockedExplain: "Par exemple, une r\xE9gion perc\xE9e d\u2019un trou, ou dont le contour se croise lui-m\xEAme. Elle est dessin\xE9e en pointill\xE9s et enregistr\xE9e exactement telle quelle.",
|
|
4127
|
+
helpTitle: "Comment utiliser cet \xE9diteur",
|
|
4128
|
+
helpDrawing: "Dessiner",
|
|
4129
|
+
helpPoint: "Point : cliquez une fois pour le placer.",
|
|
4130
|
+
helpLine: "Ligne, Polygone : cliquez pour placer chaque point, puis cliquez de nouveau sur le rep\xE8re du premier point pour terminer \u2013 il change d\u2019aspect d\xE8s qu\u2019il y a assez de points pour fermer la forme. Appuyer sur",
|
|
4131
|
+
helpEnterFinishes: "la termine aussi ;",
|
|
4132
|
+
helpEscCancels: "l\u2019annule.",
|
|
4133
|
+
helpRectangle: "Rectangle : cliquez et faites glisser d\u2019un coin au coin oppos\xE9.",
|
|
4134
|
+
helpImage: "Image : choisissez un objet m\xE9dia \xE0 superposer \u2013 voir",
|
|
4135
|
+
helpImages: "Images",
|
|
4136
|
+
helpBelow: "ci-dessous.",
|
|
4137
|
+
helpEditing: "Modifier une forme",
|
|
4138
|
+
helpSelect: "S\xE9lectionner : cliquez sur une forme pour la s\xE9lectionner, puis faites-la glisser, elle ou l\u2019une de ses poign\xE9es.",
|
|
4139
|
+
helpVertex: "Faites glisser un sommet pour le d\xE9placer. Pour ajouter un point \xE0 une Ligne, un Polygone ou un Rectangle, faites glisser vers l\u2019ext\xE9rieur le petit rep\xE8re du milieu entre deux sommets.",
|
|
4140
|
+
helpColor: "La pastille de couleur fixe la couleur de la prochaine forme \u2013 ou, avec une forme s\xE9lectionn\xE9e, change sa couleur.",
|
|
4141
|
+
helpDelete: "Supprimez une forme ou une image s\xE9lectionn\xE9e avec",
|
|
4142
|
+
helpOr: "ou",
|
|
4143
|
+
helpRotate: "Pour faire pivoter un Polygone, un Rectangle ou une Ligne s\xE9lectionn\xE9, maintenez",
|
|
4144
|
+
helpRotateHandle: "en faisant glisser l\u2019une de ses poign\xE9es.",
|
|
4145
|
+
helpImageMove: "Faites glisser n\u2019importe o\xF9 sur une image pour la d\xE9placer.",
|
|
4146
|
+
helpImageResize: "Faites glisser sa poign\xE9e \u2198 pour la redimensionner \u2013 elle grandit ou r\xE9tr\xE9cit depuis son propre centre en gardant sa forme exacte (de m\xEAme pour une image d\xE9form\xE9e).",
|
|
4147
|
+
helpImageRotate: "Faites glisser sa poign\xE9e \u21BB pour la faire pivoter \u2013 pratique pour aligner une carte ancienne scann\xE9e.",
|
|
4148
|
+
helpImageTransform: "Passez \xE0 \xAB D\xE9former \xBB pour afficher aussi 4 poign\xE9es d\u2019angle \xE0 faire glisser s\xE9par\xE9ment (calage \xE9lastique) \u2013 pour une carte scann\xE9e dont l\u2019\xE9chelle ou l\u2019orientation n\u2019est pas uniforme. Revenir \xE0 \xAB \xC9chelle \xBB masque simplement ces 4 poign\xE9es ; d\xE9placer, redimensionner et pivoter agissent dans les deux cas sur la forme exacte actuelle de l\u2019image.",
|
|
4149
|
+
helpImageRemove: "Cliquez sur sa poign\xE9e \xD7 pour la retirer."
|
|
4150
|
+
};
|
|
4151
|
+
|
|
4152
|
+
// src/editor/translations/nl.ts
|
|
4153
|
+
var nl_exports = {};
|
|
4154
|
+
__export(nl_exports, {
|
|
4155
|
+
editor: () => editor4,
|
|
4156
|
+
mapEditor: () => mapEditor4
|
|
4157
|
+
});
|
|
4158
|
+
var editor4 = {
|
|
4159
|
+
story: "Verhaal",
|
|
4160
|
+
storySettings: "Titel, taal en kaart",
|
|
4161
|
+
title: "Titel",
|
|
4162
|
+
language: "Taal",
|
|
4163
|
+
languageHint: "De taal waarin het verhaal is geschreven, bijv. en, de of fr-CA. Datums worden in die taal gelezen.",
|
|
4164
|
+
map: "Kaart",
|
|
4165
|
+
mapHint: "Hoe de kaart begint als het verhaal wordt afgespeeld. Lezers kunnen hem nog steeds wijzigen.",
|
|
4166
|
+
mapStandard: "Huidige kaart",
|
|
4167
|
+
mapHistorical: "Historische kaarten voor het jaar van elke dia",
|
|
4168
|
+
mapAuto: "Keuze van de lezer",
|
|
4169
|
+
mapNone: "Geen kaart",
|
|
4170
|
+
slides: "Dia's",
|
|
4171
|
+
untitledSlide: "Dia zonder titel",
|
|
4172
|
+
addSlide: "Dia toevoegen",
|
|
4173
|
+
duplicateSlide: "Dupliceren",
|
|
4174
|
+
deleteSlide: "Verwijderen",
|
|
4175
|
+
moveUp: "Omhoog",
|
|
4176
|
+
moveDown: "Omlaag",
|
|
4177
|
+
slideTitle: "Titel",
|
|
4178
|
+
text: "Tekst",
|
|
4179
|
+
bold: "Vet",
|
|
4180
|
+
italic: "Cursief",
|
|
4181
|
+
date: "Datum",
|
|
4182
|
+
dateHint: "Zoals lezers hem moeten zien, bijv. omstreeks 1850, 3 mei 1850, tussen 1850 en 1860.",
|
|
4183
|
+
preciseDate: "Precieze datum (EDTF)",
|
|
4184
|
+
preciseDateHint: "Plaatst de dia op de tijdlijn en kiest de historische kaarten.",
|
|
4185
|
+
preciseDateFollows: "Afgeleid uit de datum zoals geschreven.",
|
|
4186
|
+
preciseDateNotUnderstood: "Geen datum die de tijdlijn kan gebruiken.",
|
|
4187
|
+
matchDateAsWritten: "Afleiden uit de datum",
|
|
4188
|
+
noPreciseDate: "Geen: deze dia blijft buiten de tijdlijn.",
|
|
4189
|
+
place: "Plaats",
|
|
4190
|
+
placeName: "Naam",
|
|
4191
|
+
removePlace: "Plaats verwijderen",
|
|
4192
|
+
findPlace: "Zoeken op Wikidata",
|
|
4193
|
+
findPlaceHint: "Zoekt de naam op Wikidata om de speld daar te zetten. Alleen de naam wordt verstuurd, en alleen als u erom vraagt.",
|
|
4194
|
+
findPlaceNone: "Wikidata heeft geen plaats met die naam.",
|
|
4195
|
+
findPlaceFailed: "Wikidata was niet bereikbaar.",
|
|
4196
|
+
findPlaceNoPoint: (name) => `Wikidata heeft geen kaartpositie voor ${name}.`,
|
|
4197
|
+
coordinates: "Breedte, lengte",
|
|
4198
|
+
coordinatesHint: "bijv. 47.3769, 8.5417",
|
|
4199
|
+
coordinatesInvalid: "Twee getallen: breedte (-90 tot 90), dan lengte (-180 tot 180).",
|
|
4200
|
+
placeMap: "Kaart: klik om de speld te zetten",
|
|
4201
|
+
placeMapHint: "Klik op de kaart om de speld daar te zetten, of sleep de speld.",
|
|
4202
|
+
placeShape: "een vorm",
|
|
4203
|
+
placeOverlays: (count) => count === 1 ? "een kaartoverlay" : `${count} kaartoverlays`,
|
|
4204
|
+
placeKeeps: (what) => `Deze plaats heeft ook ${what}.`,
|
|
4205
|
+
editMap: "Kaart bewerken",
|
|
4206
|
+
editMapHint: "Vormen onder de speld (een parochie, een route) en scans van oude kaarten erover gelegd.",
|
|
4207
|
+
mapHelpImage: "Afbeelding: voeg een afbeeldingsbestand toe, zoals een scan van een oude kaart \u2013 zie",
|
|
4208
|
+
mapDialogTitle: (placeName) => placeName ? `Kaart: ${placeName}` : "Kaart",
|
|
4209
|
+
mapHelp: "Zo gebruikt u deze editor",
|
|
4210
|
+
importShapes: "Vormen importeren",
|
|
4211
|
+
importShapesHint: "Voegt de punten, lijnen en gebieden uit een KML-, GPX- of GeoJSON-bestand aan deze kaart toe.",
|
|
4212
|
+
importFailed: (fileName) => `${fileName} kon niet worden gelezen als KML-, GPX- of GeoJSON-bestand.`,
|
|
4213
|
+
importNothing: (fileName) => `${fileName} bevat geen vormen.`,
|
|
4214
|
+
overlayAlready: "Die afbeelding staat al op deze kaart.",
|
|
4215
|
+
overlayDate: "Jaren die hij toont",
|
|
4216
|
+
overlayDateHint: "bijv. 1850, of 1850 tot 1880. Met historische kaarten is hij verborgen op dia's buiten die jaren.",
|
|
4217
|
+
cancel: "Annuleren",
|
|
4218
|
+
done: "Klaar",
|
|
4219
|
+
photos: "Foto's",
|
|
4220
|
+
photosHint: "Voeg een foto toe, sleep hem hierheen of plak hem. Hij wordt verkleind voor het scherm, en verborgen gegevens zoals camera en locatie worden weggelaten.",
|
|
4221
|
+
addPhoto: "Foto toevoegen",
|
|
4222
|
+
replacePhoto: "Vervangen",
|
|
4223
|
+
movePhotoUp: "Foto omhoog",
|
|
4224
|
+
movePhotoDown: "Foto omlaag",
|
|
4225
|
+
removePhoto: "Verwijderen",
|
|
4226
|
+
caption: "Bijschrift",
|
|
4227
|
+
credit: "Bron",
|
|
4228
|
+
creditHint: "Wie hem heeft gemaakt, of waar hij vandaan komt",
|
|
4229
|
+
description: "Beschrijving",
|
|
4230
|
+
descriptionHint: "Wat de foto laat zien, voor wie hem niet kan zien.",
|
|
4231
|
+
photoFailed: (name) => `${name} kon niet worden gebruikt: deze browser kan het niet als afbeelding lezen.`,
|
|
4232
|
+
undo: "Ongedaan maken",
|
|
4233
|
+
redo: "Opnieuw",
|
|
4234
|
+
present: "Presenteren",
|
|
4235
|
+
preview: "Voorbeeld",
|
|
4236
|
+
problems: (count) => count === 1 ? "1 probleem op te lossen v\xF3\xF3r het opslaan" : `${count} problemen op te lossen v\xF3\xF3r het opslaan`,
|
|
4237
|
+
openingSlide: "Openingsdia"
|
|
4238
|
+
};
|
|
4239
|
+
var mapEditor4 = {
|
|
4240
|
+
point: "Punt",
|
|
4241
|
+
line: "Lijn",
|
|
4242
|
+
polygon: "Veelhoek",
|
|
4243
|
+
rectangle: "Rechthoek",
|
|
4244
|
+
select: "Selecteren",
|
|
4245
|
+
image: "Afbeelding",
|
|
4246
|
+
editOptions: "Bewerkingsopties",
|
|
4247
|
+
labelText: "Labeltekst",
|
|
4248
|
+
regionName: "Naam van het gebied (optioneel)",
|
|
4249
|
+
fillOpacity: "Dekking van de vulling",
|
|
4250
|
+
scale: "Schalen",
|
|
4251
|
+
transform: "Vervormen",
|
|
4252
|
+
overlayName: "Naam van de overlay (optioneel)",
|
|
4253
|
+
opacity: "Dekking",
|
|
4254
|
+
stackingOrder: "Stapelvolgorde",
|
|
4255
|
+
removeImage: "Deze afbeelding verwijderen",
|
|
4256
|
+
resizeImage: "Sleep om de grootte te wijzigen (behoudt de exacte vorm, vervormd of niet)",
|
|
4257
|
+
rotateImage: "Sleep om te draaien",
|
|
4258
|
+
warpCorner: "Sleep om deze hoek te vervormen",
|
|
4259
|
+
basemapFailed: "De basiskaart kon niet worden geladen.",
|
|
4260
|
+
imageFailed: "De afbeelding kon niet worden geladen.",
|
|
4261
|
+
lockedOne: "1 vorm kan hier niet worden bewerkt",
|
|
4262
|
+
lockedMany: (count) => `${count} vormen kunnen hier niet worden bewerkt`,
|
|
4263
|
+
lockedExplain: "Bijvoorbeeld een gebied met een gat erin, of een gebied waarvan de omtrek zichzelf kruist. Het wordt gestippeld getekend en precies zo opgeslagen als het was.",
|
|
4264
|
+
helpTitle: "Zo gebruikt u deze editor",
|
|
4265
|
+
helpDrawing: "Tekenen",
|
|
4266
|
+
helpPoint: "Punt: klik \xE9\xE9n keer om het te plaatsen.",
|
|
4267
|
+
helpLine: "Lijn, Veelhoek: klik om elk punt te plaatsen en klik dan opnieuw op de markering van het eerste punt om af te ronden \u2013 die ziet er anders uit zodra er genoeg punten zijn om de vorm te sluiten. Ook",
|
|
4268
|
+
helpEnterFinishes: "rondt hem af;",
|
|
4269
|
+
helpEscCancels: "breekt hem af.",
|
|
4270
|
+
helpRectangle: "Rechthoek: klik en sleep van de ene hoek naar de tegenoverliggende hoek.",
|
|
4271
|
+
helpImage: "Afbeelding: kies een mediaobject om over de kaart te leggen \u2013 zie",
|
|
4272
|
+
helpImages: "Afbeeldingen",
|
|
4273
|
+
helpBelow: "hieronder.",
|
|
4274
|
+
helpEditing: "Een vorm bewerken",
|
|
4275
|
+
helpSelect: "Selecteren: klik op een vorm om hem te selecteren en sleep dan de vorm of een van zijn grepen.",
|
|
4276
|
+
helpVertex: "Sleep een hoekpunt om het te verplaatsen. Voor een nieuw punt op een Lijn, Veelhoek of Rechthoek sleept u de kleine middelpuntmarkering tussen twee hoekpunten naar buiten.",
|
|
4277
|
+
helpColor: "Het kleurvlak bepaalt de kleur van de volgende vorm \u2013 of wijzigt, met een vorm geselecteerd, diens kleur.",
|
|
4278
|
+
helpDelete: "Verwijder een geselecteerde vorm of afbeelding met",
|
|
4279
|
+
helpOr: "of",
|
|
4280
|
+
helpRotate: "Een geselecteerde Veelhoek, Rechthoek of Lijn draaien: houd",
|
|
4281
|
+
helpRotateHandle: "ingedrukt terwijl u een van de grepen sleept.",
|
|
4282
|
+
helpImageMove: "Sleep ergens op een afbeelding om hem te verplaatsen.",
|
|
4283
|
+
helpImageResize: "Sleep de \u2198-greep om de grootte te wijzigen \u2013 hij groeit of krimpt vanuit zijn eigen midden en behoudt zijn exacte vorm (ook bij een vervormde afbeelding).",
|
|
4284
|
+
helpImageRotate: "Sleep de \u21BB-greep om hem te draaien \u2013 handig om een gescande oude kaart uit te lijnen.",
|
|
4285
|
+
helpImageTransform: "Schakel over naar \u2018Vervormen\u2019 om ook 4 hoekgrepen te tonen die u los kunt slepen (rubber-sheeting) \u2013 voor een gescande kaart zonder gelijkmatige schaal of richting. Terug naar \u2018Schalen\u2019 verbergt die 4 grepen gewoon weer; verplaatsen, grootte wijzigen en draaien werken in beide gevallen op de exacte huidige vorm van de afbeelding.",
|
|
4286
|
+
helpImageRemove: "Klik op de \xD7-greep om hem te verwijderen."
|
|
4287
|
+
};
|
|
4288
|
+
|
|
4289
|
+
// src/editor/translations/index.ts
|
|
4290
|
+
var TRANSLATIONS = { de: de_exports, es: es_exports, fr: fr_exports, nl: nl_exports };
|
|
4291
|
+
|
|
4292
|
+
// src/editor/strings.ts
|
|
4293
|
+
var EDITOR_ENGLISH = {
|
|
4294
|
+
story: "Story",
|
|
4295
|
+
storySettings: "Title, language and map",
|
|
4296
|
+
title: "Title",
|
|
4297
|
+
language: "Language",
|
|
4298
|
+
languageHint: "The language the story is written in, e.g. en, de or fr-CA. Dates are read in it.",
|
|
4299
|
+
map: "Map",
|
|
4300
|
+
mapHint: "How the map starts when the story plays. Readers can still change it.",
|
|
4301
|
+
mapStandard: "Today's map",
|
|
4302
|
+
mapHistorical: "Historical maps for each slide's year",
|
|
4303
|
+
mapAuto: "Viewer's choice",
|
|
4304
|
+
mapNone: "No map",
|
|
4305
|
+
slides: "Slides",
|
|
4306
|
+
untitledSlide: "Untitled slide",
|
|
4307
|
+
addSlide: "Add slide",
|
|
4308
|
+
duplicateSlide: "Duplicate",
|
|
4309
|
+
deleteSlide: "Delete",
|
|
4310
|
+
moveUp: "Move up",
|
|
4311
|
+
moveDown: "Move down",
|
|
4312
|
+
slideTitle: "Title",
|
|
4313
|
+
text: "Text",
|
|
4314
|
+
bold: "Bold",
|
|
4315
|
+
italic: "Italic",
|
|
4316
|
+
date: "Date",
|
|
4317
|
+
dateHint: "As readers should see it, e.g. about 1850, 3 May 1850, between 1850 and 1860.",
|
|
4318
|
+
preciseDate: "Precise date (EDTF)",
|
|
4319
|
+
preciseDateHint: "Places the slide on the timeline and picks historical maps.",
|
|
4320
|
+
preciseDateFollows: "Worked out from the date as written.",
|
|
4321
|
+
preciseDateNotUnderstood: "Not a date the timeline can use.",
|
|
4322
|
+
matchDateAsWritten: "Work it out from the date",
|
|
4323
|
+
noPreciseDate: "None: this slide stays off the timeline.",
|
|
4324
|
+
place: "Place",
|
|
4325
|
+
placeName: "Name",
|
|
4326
|
+
removePlace: "Remove place",
|
|
4327
|
+
findPlace: "Find on Wikidata",
|
|
4328
|
+
findPlaceHint: "Looks the name up on Wikidata, to put the pin there. The name is all that's sent, and only when you ask.",
|
|
4329
|
+
findPlaceNone: "Wikidata has no place by that name.",
|
|
4330
|
+
findPlaceFailed: "Couldn't reach Wikidata.",
|
|
4331
|
+
findPlaceNoPoint: (name) => `Wikidata has no map position for ${name}.`,
|
|
4332
|
+
coordinates: "Latitude, longitude",
|
|
4333
|
+
coordinatesHint: "e.g. 47.3769, 8.5417",
|
|
4334
|
+
coordinatesInvalid: "Two numbers: latitude (-90 to 90), then longitude (-180 to 180).",
|
|
4335
|
+
placeMap: "Map: click to put the pin",
|
|
4336
|
+
placeMapHint: "Click the map to put the pin there, or drag the pin.",
|
|
4337
|
+
placeShape: "a shape",
|
|
4338
|
+
placeOverlays: (count) => count === 1 ? "a map overlay" : `${count} map overlays`,
|
|
4339
|
+
placeKeeps: (what) => `This place also has ${what}.`,
|
|
4340
|
+
editMap: "Edit map",
|
|
4341
|
+
editMapHint: "Shapes under the pin (a parish, a route) and scans of old maps laid over it.",
|
|
4342
|
+
mapHelpImage: "Image: add a picture file, such as a scan of an old map -- see",
|
|
4343
|
+
mapDialogTitle: (placeName) => placeName ? `Map: ${placeName}` : "Map",
|
|
4344
|
+
mapHelp: "How to use this editor",
|
|
4345
|
+
importShapes: "Import shapes",
|
|
4346
|
+
importShapesHint: "Adds the points, lines and areas in a KML, GPX or GeoJSON file to this map.",
|
|
4347
|
+
importFailed: (fileName) => `Couldn't read ${fileName} as a KML, GPX or GeoJSON file.`,
|
|
4348
|
+
importNothing: (fileName) => `${fileName} has no shapes in it.`,
|
|
4349
|
+
overlayAlready: "That image is already on this map.",
|
|
4350
|
+
overlayDate: "Years it shows",
|
|
4351
|
+
overlayDateHint: "e.g. 1850, or 1850 to 1880. With historical maps, it's hidden on slides outside them.",
|
|
4352
|
+
cancel: "Cancel",
|
|
4353
|
+
done: "Done",
|
|
4354
|
+
photos: "Photos",
|
|
4355
|
+
photosHint: "Add, drop or paste a photo. It's resized for the screen, and hidden details like camera and location are left out.",
|
|
4356
|
+
addPhoto: "Add photo",
|
|
4357
|
+
replacePhoto: "Replace",
|
|
4358
|
+
movePhotoUp: "Move photo up",
|
|
4359
|
+
movePhotoDown: "Move photo down",
|
|
4360
|
+
removePhoto: "Remove",
|
|
4361
|
+
caption: "Caption",
|
|
4362
|
+
credit: "Credit",
|
|
4363
|
+
creditHint: "Who took it, or where it's from",
|
|
4364
|
+
description: "Description",
|
|
4365
|
+
descriptionHint: "What the photo shows, for anyone who can't see it.",
|
|
4366
|
+
photoFailed: (name) => `Couldn't use ${name}: this browser can't read it as an image.`,
|
|
4367
|
+
undo: "Undo",
|
|
4368
|
+
redo: "Redo",
|
|
4369
|
+
present: "Present",
|
|
4370
|
+
preview: "Preview",
|
|
4371
|
+
problems: (count) => count === 1 ? "1 problem to fix before saving" : `${count} problems to fix before saving`,
|
|
4372
|
+
openingSlide: "Opening slide"
|
|
4373
|
+
};
|
|
4374
|
+
function browserLanguages() {
|
|
4375
|
+
if (typeof navigator === "undefined") return [];
|
|
4376
|
+
return navigator.languages?.length ? navigator.languages : [navigator.language];
|
|
4377
|
+
}
|
|
4378
|
+
function editorLanguage(languages) {
|
|
4379
|
+
for (const tag of languages) {
|
|
4380
|
+
const base = tag?.toLowerCase().split(/[-_]/)[0];
|
|
4381
|
+
if (base === "en" || base && Object.prototype.hasOwnProperty.call(TRANSLATIONS, base)) return base;
|
|
4382
|
+
}
|
|
4383
|
+
return void 0;
|
|
4384
|
+
}
|
|
4385
|
+
function translationFor(languages) {
|
|
4386
|
+
const lang = editorLanguage(languages);
|
|
4387
|
+
return lang && lang !== "en" ? TRANSLATIONS[lang] : void 0;
|
|
4388
|
+
}
|
|
4389
|
+
function editorStringsFor(...languages) {
|
|
4390
|
+
return translationFor(languages)?.editor ?? EDITOR_ENGLISH;
|
|
4391
|
+
}
|
|
4392
|
+
var EDITOR_LANGUAGES = Object.keys(TRANSLATIONS);
|
|
4393
|
+
|
|
3735
4394
|
// src/editor/mapEditorStrings.ts
|
|
3736
4395
|
var MAP_EDITOR_ENGLISH = {
|
|
3737
4396
|
point: "Point",
|
|
@@ -3782,6 +4441,9 @@ var MAP_EDITOR_ENGLISH = {
|
|
|
3782
4441
|
helpImageTransform: `Switch to "Transform" to also show 4 corner handles you can drag independently (rubber-sheeting) -- for a scanned map that isn't printed at a uniform scale/orientation. Switching back to "Scale" just hides those 4 handles again; move/resize/rotate keep working on the image's exact current shape either way.`,
|
|
3783
4442
|
helpImageRemove: "Click its \xD7 handle to remove it."
|
|
3784
4443
|
};
|
|
4444
|
+
function mapEditorStringsFor(...languages) {
|
|
4445
|
+
return translationFor(languages)?.mapEditor ?? MAP_EDITOR_ENGLISH;
|
|
4446
|
+
}
|
|
3785
4447
|
|
|
3786
4448
|
// src/editor/MapEditor.tsx
|
|
3787
4449
|
import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
@@ -3802,6 +4464,7 @@ var COLOR_SWATCHES = [
|
|
|
3802
4464
|
"#e0678a",
|
|
3803
4465
|
"#555555"
|
|
3804
4466
|
];
|
|
4467
|
+
var UNSET_OPACITY = 0.25;
|
|
3805
4468
|
var EMPTY_LABEL_PREVIEW = { type: "FeatureCollection", features: [] };
|
|
3806
4469
|
var OVERLAY_ANCHOR_LAYER = "image-overlay-anchor";
|
|
3807
4470
|
var TERRA_DRAW_LAYERS = ["td-polygon", "td-polygon-outline", "td-linestring", "td-point", "td-point-marker"];
|
|
@@ -3889,7 +4552,7 @@ var MapEditor = forwardRef(function MapEditor2({
|
|
|
3889
4552
|
renderOverlayOptions,
|
|
3890
4553
|
strings: stringOverrides
|
|
3891
4554
|
}, ref) {
|
|
3892
|
-
const strings = { ...
|
|
4555
|
+
const strings = { ...mapEditorStringsFor(...browserLanguages()), ...stringOverrides };
|
|
3893
4556
|
const live = useRef8({ strings, resolveImage, releaseImage, onError });
|
|
3894
4557
|
live.current = { strings, resolveImage, releaseImage, onError };
|
|
3895
4558
|
const fail = (message) => live.current.onError?.(message);
|
|
@@ -3905,9 +4568,11 @@ var MapEditor = forwardRef(function MapEditor2({
|
|
|
3905
4568
|
const [color, setColor] = useState7(() => defaultColor ?? defaultColors(dark).mark);
|
|
3906
4569
|
const colorRef = useRef8(color);
|
|
3907
4570
|
colorRef.current = color;
|
|
3908
|
-
const [opacity, setOpacity] = useState7(
|
|
4571
|
+
const [opacity, setOpacity] = useState7(UNSET_OPACITY);
|
|
3909
4572
|
const opacityRef = useRef8(opacity);
|
|
3910
4573
|
opacityRef.current = opacity;
|
|
4574
|
+
const unsetColorRef = useRef8(defaultColor ?? defaultColors(dark).mark);
|
|
4575
|
+
unsetColorRef.current = defaultColor ?? defaultColors(dark).mark;
|
|
3911
4576
|
const [labelText, setLabelText] = useState7("");
|
|
3912
4577
|
const refreshLabelPreviewRef = useRef8(null);
|
|
3913
4578
|
const [selectedId, setSelectedId] = useState7(null);
|
|
@@ -3970,8 +4635,8 @@ var MapEditor = forwardRef(function MapEditor2({
|
|
|
3970
4635
|
map.dragRotate.disable();
|
|
3971
4636
|
map.touchZoomRotate.disableRotation();
|
|
3972
4637
|
map.keyboard.disableRotation();
|
|
3973
|
-
const readColor = (feature) => feature.properties.color ??
|
|
3974
|
-
const readOpacity = (feature) => feature.properties.opacity ??
|
|
4638
|
+
const readColor = (feature) => feature.properties.color ?? unsetColorRef.current;
|
|
4639
|
+
const readOpacity = (feature) => feature.properties.opacity ?? UNSET_OPACITY;
|
|
3975
4640
|
const draw = new TerraDraw({
|
|
3976
4641
|
adapter: new TerraDrawMapLibreGLAdapter({ map }),
|
|
3977
4642
|
modes: [
|
|
@@ -4060,8 +4725,8 @@ var MapEditor = forwardRef(function MapEditor2({
|
|
|
4060
4725
|
const feature = id ? draw.getSnapshot().find((f) => String(f.id) === id) : void 0;
|
|
4061
4726
|
setLabelText(feature?.properties?.name ?? "");
|
|
4062
4727
|
if (feature) {
|
|
4063
|
-
setColor(feature.properties?.color ??
|
|
4064
|
-
setOpacity(feature.properties?.opacity ??
|
|
4728
|
+
setColor(feature.properties?.color ?? unsetColorRef.current);
|
|
4729
|
+
setOpacity(feature.properties?.opacity ?? UNSET_OPACITY);
|
|
4065
4730
|
setSelectedOverlayId(null);
|
|
4066
4731
|
}
|
|
4067
4732
|
}
|
|
@@ -4471,12 +5136,13 @@ var MapEditor = forwardRef(function MapEditor2({
|
|
|
4471
5136
|
getResult() {
|
|
4472
5137
|
const savedParts = (drawRef.current?.getSnapshot() ?? []).filter((f) => f.geometry != null && !f.properties?.selectionPoint && !f.properties?.midPoint).map((f) => {
|
|
4473
5138
|
const name = f.properties?.name?.trim();
|
|
4474
|
-
const regionOpacity = f.geometry.type === "Polygon" ? f.properties?.opacity
|
|
5139
|
+
const regionOpacity = f.geometry.type === "Polygon" ? f.properties?.opacity : void 0;
|
|
5140
|
+
const color2 = f.properties?.color;
|
|
4475
5141
|
const sourceKey = f.properties?.sourceKey;
|
|
4476
5142
|
return {
|
|
4477
5143
|
...typeof sourceKey === "string" ? { sourceKey } : {},
|
|
4478
5144
|
geometry: f.geometry,
|
|
4479
|
-
color:
|
|
5145
|
+
...color2 !== void 0 ? { color: color2 } : {},
|
|
4480
5146
|
...name ? { name } : {},
|
|
4481
5147
|
...regionOpacity !== void 0 ? { opacity: regionOpacity } : {}
|
|
4482
5148
|
};
|
|
@@ -4698,7 +5364,7 @@ var MapEditor = forwardRef(function MapEditor2({
|
|
|
4698
5364
|
] });
|
|
4699
5365
|
});
|
|
4700
5366
|
function MapEditorHelp({ strings: stringOverrides, images = true }) {
|
|
4701
|
-
const strings = { ...
|
|
5367
|
+
const strings = { ...mapEditorStringsFor(...browserLanguages()), ...stringOverrides };
|
|
4702
5368
|
return /* @__PURE__ */ jsxs7(Stack4, { gap: "md", children: [
|
|
4703
5369
|
/* @__PURE__ */ jsx9(Text4, { size: "sm", fw: 600, children: strings.helpDrawing }),
|
|
4704
5370
|
/* @__PURE__ */ jsxs7(List, { spacing: 4, size: "sm", children: [
|
|
@@ -4805,9 +5471,6 @@ function editorToPlace(place, result, dates) {
|
|
|
4805
5471
|
// src/editor/PlaceMapDialog.tsx
|
|
4806
5472
|
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
4807
5473
|
var BAR_HEIGHT2 = 56;
|
|
4808
|
-
var STORY_MAP_WORDS = {
|
|
4809
|
-
helpImage: "Image: add a picture file, such as a scan of an old map -- see"
|
|
4810
|
-
};
|
|
4811
5474
|
async function prepareOverlay(file) {
|
|
4812
5475
|
const image = await optimizeImage(file, { purpose: "overlay" });
|
|
4813
5476
|
return { data: new Uint8Array(await image.blob.arrayBuffer()), mime: image.mime, ext: image.ext, width: image.width, height: image.height };
|
|
@@ -4852,7 +5515,7 @@ function PlaceMapDialog({
|
|
|
4852
5515
|
onCancel,
|
|
4853
5516
|
onDone
|
|
4854
5517
|
}) {
|
|
4855
|
-
const mapStrings = {
|
|
5518
|
+
const mapStrings = { helpImage: strings.mapHelpImage, ...mapStringOverrides };
|
|
4856
5519
|
const editorRef = useRef9(null);
|
|
4857
5520
|
const initial = useMemo3(() => placeToEditor(place), [place]);
|
|
4858
5521
|
const [work, setWork] = useState8({ doc, files });
|
|
@@ -4909,9 +5572,9 @@ function PlaceMapDialog({
|
|
|
4909
5572
|
}
|
|
4910
5573
|
};
|
|
4911
5574
|
const done = () => {
|
|
4912
|
-
const
|
|
4913
|
-
if (!
|
|
4914
|
-
onDone(editorToPlace(place,
|
|
5575
|
+
const editor5 = editorRef.current;
|
|
5576
|
+
if (!editor5) return;
|
|
5577
|
+
onDone(editorToPlace(place, editor5.getResult(), dates), workRef.current.doc.media, workRef.current.files);
|
|
4915
5578
|
};
|
|
4916
5579
|
const bar = dark ? "rgba(20,20,20,0.85)" : "rgba(255,255,255,0.9)";
|
|
4917
5580
|
return /* @__PURE__ */ jsxs8(Modal, { opened: true, onClose: onCancel, fullScreen: true, withCloseButton: false, closeOnEscape: false, padding: 0, children: [
|
|
@@ -5174,87 +5837,6 @@ function StoryTextField({ label, value, onChange, boldLabel = "Bold", italicLabe
|
|
|
5174
5837
|
] });
|
|
5175
5838
|
}
|
|
5176
5839
|
|
|
5177
|
-
// src/editor/strings.ts
|
|
5178
|
-
var EDITOR_ENGLISH = {
|
|
5179
|
-
story: "Story",
|
|
5180
|
-
storySettings: "Title, language and map",
|
|
5181
|
-
title: "Title",
|
|
5182
|
-
language: "Language",
|
|
5183
|
-
languageHint: "The language the story is written in, e.g. en, de or fr-CA. Dates are read in it.",
|
|
5184
|
-
map: "Map",
|
|
5185
|
-
mapStandard: "Today's map",
|
|
5186
|
-
mapHistorical: "Historical maps for each slide's year",
|
|
5187
|
-
mapAuto: "Viewer's choice",
|
|
5188
|
-
mapNone: "No map",
|
|
5189
|
-
slides: "Slides",
|
|
5190
|
-
untitledSlide: "Untitled slide",
|
|
5191
|
-
addSlide: "Add slide",
|
|
5192
|
-
duplicateSlide: "Duplicate",
|
|
5193
|
-
deleteSlide: "Delete",
|
|
5194
|
-
moveUp: "Move up",
|
|
5195
|
-
moveDown: "Move down",
|
|
5196
|
-
slideTitle: "Title",
|
|
5197
|
-
text: "Text",
|
|
5198
|
-
bold: "Bold",
|
|
5199
|
-
italic: "Italic",
|
|
5200
|
-
date: "Date",
|
|
5201
|
-
dateHint: "As readers should see it, e.g. about 1850, 3 May 1850, between 1850 and 1860.",
|
|
5202
|
-
preciseDate: "Precise date (EDTF)",
|
|
5203
|
-
preciseDateHint: "Places the slide on the timeline and picks historical maps.",
|
|
5204
|
-
preciseDateFollows: "Worked out from the date as written.",
|
|
5205
|
-
preciseDateNotUnderstood: "Not a date the timeline can use.",
|
|
5206
|
-
matchDateAsWritten: "Work it out from the date",
|
|
5207
|
-
noPreciseDate: "None: this slide stays off the timeline.",
|
|
5208
|
-
place: "Place",
|
|
5209
|
-
placeName: "Name",
|
|
5210
|
-
removePlace: "Remove place",
|
|
5211
|
-
findPlace: "Find on Wikidata",
|
|
5212
|
-
findPlaceHint: "Looks the name up on Wikidata, to put the pin there. The name is all that's sent, and only when you ask.",
|
|
5213
|
-
findPlaceNone: "Wikidata has no place by that name.",
|
|
5214
|
-
findPlaceFailed: "Couldn't reach Wikidata.",
|
|
5215
|
-
findPlaceNoPoint: (name) => `Wikidata has no map position for ${name}.`,
|
|
5216
|
-
coordinates: "Latitude, longitude",
|
|
5217
|
-
coordinatesHint: "e.g. 47.3769, 8.5417",
|
|
5218
|
-
coordinatesInvalid: "Two numbers: latitude (-90 to 90), then longitude (-180 to 180).",
|
|
5219
|
-
placeMap: "Map: click to put the pin",
|
|
5220
|
-
placeMapHint: "Click the map to put the pin there, or drag the pin.",
|
|
5221
|
-
placeShape: "a shape",
|
|
5222
|
-
placeOverlays: (count) => count === 1 ? "a map overlay" : `${count} map overlays`,
|
|
5223
|
-
placeKeeps: (what) => `This place also has ${what}.`,
|
|
5224
|
-
editMap: "Edit map",
|
|
5225
|
-
editMapHint: "Shapes under the pin (a parish, a route) and scans of old maps laid over it.",
|
|
5226
|
-
mapDialogTitle: (placeName) => placeName ? `Map: ${placeName}` : "Map",
|
|
5227
|
-
mapHelp: "How to use this editor",
|
|
5228
|
-
importShapes: "Import shapes",
|
|
5229
|
-
importShapesHint: "Adds the points, lines and areas in a KML, GPX or GeoJSON file to this map.",
|
|
5230
|
-
importFailed: (fileName) => `Couldn't read ${fileName} as a KML, GPX or GeoJSON file.`,
|
|
5231
|
-
importNothing: (fileName) => `${fileName} has no shapes in it.`,
|
|
5232
|
-
overlayAlready: "That image is already on this map.",
|
|
5233
|
-
overlayDate: "Years it shows",
|
|
5234
|
-
overlayDateHint: "e.g. 1850, or 1850 to 1880. With historical maps, it's hidden on slides outside them.",
|
|
5235
|
-
cancel: "Cancel",
|
|
5236
|
-
done: "Done",
|
|
5237
|
-
photos: "Photos",
|
|
5238
|
-
photosHint: "Add, drop or paste a photo. It's resized for the screen, and hidden details like camera and location are left out.",
|
|
5239
|
-
addPhoto: "Add photo",
|
|
5240
|
-
replacePhoto: "Replace",
|
|
5241
|
-
movePhotoUp: "Move photo up",
|
|
5242
|
-
movePhotoDown: "Move photo down",
|
|
5243
|
-
removePhoto: "Remove",
|
|
5244
|
-
caption: "Caption",
|
|
5245
|
-
credit: "Credit",
|
|
5246
|
-
creditHint: "Who took it, or where it's from",
|
|
5247
|
-
description: "Description",
|
|
5248
|
-
descriptionHint: "What the photo shows, for anyone who can't see it.",
|
|
5249
|
-
photoFailed: (name) => `Couldn't use ${name}: this browser can't read it as an image.`,
|
|
5250
|
-
undo: "Undo",
|
|
5251
|
-
redo: "Redo",
|
|
5252
|
-
present: "Present",
|
|
5253
|
-
preview: "Preview",
|
|
5254
|
-
problems: (count) => count === 1 ? "1 problem to fix before saving" : `${count} problems to fix before saving`,
|
|
5255
|
-
openingSlide: "Opening slide"
|
|
5256
|
-
};
|
|
5257
|
-
|
|
5258
5840
|
// src/editor/StoryEditor.tsx
|
|
5259
5841
|
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
5260
5842
|
var BAR_HEIGHT3 = 56;
|
|
@@ -5303,9 +5885,13 @@ function StoryEditor({
|
|
|
5303
5885
|
playerStrings,
|
|
5304
5886
|
parseDateText = suggestEdtf,
|
|
5305
5887
|
placeSearch = WIKIDATA_PLACE_SEARCH,
|
|
5306
|
-
mapStrings
|
|
5888
|
+
mapStrings: mapStringOverrides
|
|
5307
5889
|
}) {
|
|
5308
|
-
const strings = useMemo4(() => ({ ...
|
|
5890
|
+
const strings = useMemo4(() => ({ ...editorStringsFor(...browserLanguages()), ...stringOverrides }), [stringOverrides]);
|
|
5891
|
+
const mapStrings = useMemo4(
|
|
5892
|
+
() => ({ ...mapEditorStringsFor(...browserLanguages()), helpImage: strings.mapHelpImage, ...mapStringOverrides }),
|
|
5893
|
+
[strings, mapStringOverrides]
|
|
5894
|
+
);
|
|
5309
5895
|
const [history, setHistory] = useState10(() => startHistory(initialStory));
|
|
5310
5896
|
const [selected, setSelected] = useState10(0);
|
|
5311
5897
|
const [presenting, setPresenting] = useState10(false);
|
|
@@ -5499,6 +6085,7 @@ function StoryEditor({
|
|
|
5499
6085
|
Select,
|
|
5500
6086
|
{
|
|
5501
6087
|
label: strings.map,
|
|
6088
|
+
description: strings.mapHint,
|
|
5502
6089
|
w: 320,
|
|
5503
6090
|
allowDeselect: false,
|
|
5504
6091
|
data: [
|
|
@@ -5752,6 +6339,7 @@ export {
|
|
|
5752
6339
|
COALESCE_MS,
|
|
5753
6340
|
DateField,
|
|
5754
6341
|
EDITOR_ENGLISH,
|
|
6342
|
+
EDITOR_LANGUAGES,
|
|
5755
6343
|
MAP_EDITOR_ENGLISH,
|
|
5756
6344
|
MapEditor,
|
|
5757
6345
|
MapEditorHelp,
|
|
@@ -5765,11 +6353,15 @@ export {
|
|
|
5765
6353
|
addImage,
|
|
5766
6354
|
addSlide,
|
|
5767
6355
|
blankStory,
|
|
6356
|
+
browserLanguages,
|
|
5768
6357
|
deleteSlide,
|
|
5769
6358
|
duplicateSlide,
|
|
6359
|
+
editorLanguage,
|
|
6360
|
+
editorStringsFor,
|
|
5770
6361
|
editorToPlace,
|
|
5771
6362
|
findMedia,
|
|
5772
6363
|
formatLatLon,
|
|
6364
|
+
mapEditorStringsFor,
|
|
5773
6365
|
moveSlide,
|
|
5774
6366
|
nextSlideId,
|
|
5775
6367
|
parseLatLon,
|