mirror of
https://github.com/maputnik/editor.git
synced 2026-02-09 22:20:03 +00:00
Merge branch 'main' into main
This commit is contained in:
@@ -230,7 +230,7 @@ class AppToolbarInternal extends React.Component<AppToolbarInternalProps> {
|
||||
|
||||
<ToolbarSelect wdKey="nav:inspect">
|
||||
<MdFindInPage />
|
||||
<label>{t("View")}
|
||||
<IconText>{t("View")}
|
||||
<select
|
||||
className="maputnik-select"
|
||||
data-wd-key="maputnik-select"
|
||||
@@ -254,12 +254,12 @@ class AppToolbarInternal extends React.Component<AppToolbarInternalProps> {
|
||||
})}
|
||||
</optgroup>
|
||||
</select>
|
||||
</label>
|
||||
</IconText>
|
||||
</ToolbarSelect>
|
||||
|
||||
<ToolbarSelect wdKey="nav:language">
|
||||
<MdLanguage />
|
||||
<label>{t("Language")}
|
||||
<IconText>Language
|
||||
<select
|
||||
className="maputnik-select"
|
||||
data-wd-key="maputnik-lang-select"
|
||||
@@ -274,7 +274,7 @@ class AppToolbarInternal extends React.Component<AppToolbarInternalProps> {
|
||||
);
|
||||
})}
|
||||
</select>
|
||||
</label>
|
||||
</IconText>
|
||||
</ToolbarSelect>
|
||||
|
||||
<ToolbarLink href={"https://github.com/maplibre/maputnik/wiki"}>
|
||||
|
||||
@@ -11,10 +11,10 @@ import { HighlightedLayer, colorHighlightedLayer } from '../libs/highlight'
|
||||
import 'maplibre-gl/dist/maplibre-gl.css'
|
||||
import '../maplibregl.css'
|
||||
import '../libs/maplibre-rtl'
|
||||
//@ts-ignore
|
||||
import MaplibreGeocoder from '@maplibre/maplibre-gl-geocoder';
|
||||
import MaplibreGeocoder, { MaplibreGeocoderApi, MaplibreGeocoderApiConfig } from '@maplibre/maplibre-gl-geocoder';
|
||||
import '@maplibre/maplibre-gl-geocoder/dist/maplibre-gl-geocoder.css';
|
||||
import { withTranslation, WithTranslation } from 'react-i18next'
|
||||
import i18next from 'i18next'
|
||||
|
||||
function renderPopup(popup: JSX.Element, mountNode: ReactDOM.Container): HTMLElement {
|
||||
ReactDOM.render(popup, mountNode);
|
||||
@@ -68,9 +68,11 @@ type MapMaplibreGlInternalProps = {
|
||||
} & WithTranslation;
|
||||
|
||||
type MapMaplibreGlState = {
|
||||
map: Map | null
|
||||
inspect: MaplibreInspect | null
|
||||
zoom?: number
|
||||
map: Map | null;
|
||||
inspect: MaplibreInspect | null;
|
||||
geocoder: MaplibreGeocoder | null;
|
||||
zoomControl: ZoomControl | null;
|
||||
zoom?: number;
|
||||
};
|
||||
|
||||
class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps, MapMaplibreGlState> {
|
||||
@@ -88,7 +90,12 @@ class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps,
|
||||
this.state = {
|
||||
map: null,
|
||||
inspect: null,
|
||||
geocoder: null,
|
||||
zoomControl: null,
|
||||
}
|
||||
i18next.on('languageChanged', () => {
|
||||
this.forceUpdate();
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -126,6 +133,7 @@ class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps,
|
||||
this.state.inspect!.render();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
@@ -153,9 +161,9 @@ class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps,
|
||||
map.showCollisionBoxes = mapOpts.showCollisionBoxes!;
|
||||
map.showOverdrawInspector = mapOpts.showOverdrawInspector!;
|
||||
|
||||
this.initGeocoder(map);
|
||||
let geocoder = this.initGeocoder(map);
|
||||
|
||||
const zoomControl = new ZoomControl(this.props.t("Zoom:"));
|
||||
const zoomControl = new ZoomControl();
|
||||
map.addControl(zoomControl, 'top-right');
|
||||
|
||||
const nav = new MapLibreGl.NavigationControl({visualizePitch:true});
|
||||
@@ -190,6 +198,8 @@ class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps,
|
||||
this.setState({
|
||||
map,
|
||||
inspect,
|
||||
geocoder,
|
||||
zoomControl,
|
||||
zoom: map.getZoom()
|
||||
});
|
||||
})
|
||||
@@ -222,7 +232,7 @@ class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps,
|
||||
|
||||
initGeocoder(map: Map) {
|
||||
const geocoderConfig = {
|
||||
forwardGeocode: async (config:{query: string, limit: number, language: string[]}) => {
|
||||
forwardGeocode: async (config: MaplibreGeocoderApiConfig) => {
|
||||
const features = [];
|
||||
try {
|
||||
const request = `https://nominatim.openstreetmap.org/search?q=${config.query}&format=geojson&polygon_geojson=1&addressdetails=1`;
|
||||
@@ -255,17 +265,20 @@ class MapMaplibreGlInternal extends React.Component<MapMaplibreGlInternalProps,
|
||||
return {
|
||||
features
|
||||
};
|
||||
}
|
||||
};
|
||||
},
|
||||
} as unknown as MaplibreGeocoderApi;
|
||||
const geocoder = new MaplibreGeocoder(geocoderConfig, {
|
||||
placeholder: this.props.t("Search"),
|
||||
maplibregl: MapLibreGl,
|
||||
});
|
||||
map.addControl(geocoder, 'top-left');
|
||||
return geocoder;
|
||||
}
|
||||
|
||||
render() {
|
||||
const t = this.props.t;
|
||||
this.state.geocoder?.setPlaceholder(t("Search"));
|
||||
this.state.zoomControl?.setLabel(t("Zoom:"));
|
||||
return <div
|
||||
className="maputnik-map__map"
|
||||
role="region"
|
||||
|
||||
@@ -5,6 +5,12 @@
|
||||
"url": "https://cdn.jsdelivr.net/gh/maputnik/editor@9cf74ca405d2be0608b57db8109cf3a6af5b9f49/src/config/empty-style.json",
|
||||
"thumbnail": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAQAAAAHDYbIAAAAEUlEQVR42mP8/58BDhiJ4wAA974H/U5Xe1oAAAAASUVORK5CYII="
|
||||
},
|
||||
{
|
||||
"id": "americana",
|
||||
"title": "Americana",
|
||||
"url": "https://americanamap.org/style.json",
|
||||
"thumbnail": "https://github.com/maplibre/maputnik/assets/649392/23fa75ad-63e6-43f5-8837-03cdb0428bac"
|
||||
},
|
||||
{
|
||||
"id": "dark-matter",
|
||||
"title": "Dark Matter",
|
||||
@@ -13,7 +19,7 @@
|
||||
},
|
||||
{
|
||||
"id": "maptiler-basic-gl-style",
|
||||
"title": "Maptiler Basic",
|
||||
"title": "MapTiler Basic",
|
||||
"url": "https://cdn.jsdelivr.net/gh/openmaptiles/klokantech-basic-gl-style@v1.10/style.json",
|
||||
"thumbnail": "https://maputnik.github.io/thumbnails/klokantech-basic.png"
|
||||
},
|
||||
@@ -65,6 +71,12 @@
|
||||
"url": "https://cdn.jsdelivr.net/gh/openmaptiles/positron-gl-style@v1.9/style.json",
|
||||
"thumbnail": "https://maputnik.github.io/thumbnails/positron.png"
|
||||
},
|
||||
{
|
||||
"id": "protomaps-light",
|
||||
"title": "Protomaps Light",
|
||||
"url": "https://api.protomaps.com/styles/v2/light.json?key=d828297496b11844",
|
||||
"thumbnail": "https://github.com/user-attachments/assets/911f9765-4a7d-4736-9ec0-f2d4c90ae587"
|
||||
},
|
||||
{
|
||||
"id": "stadia-outdoors",
|
||||
"title": "Stadia Outdoors",
|
||||
|
||||
@@ -4,9 +4,11 @@ import resourcesToBackend from "i18next-resources-to-backend";
|
||||
import { initReactI18next } from "react-i18next";
|
||||
|
||||
export const supportedLanguages = {
|
||||
"de": "Deutsch",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"fr": "Français",
|
||||
"he": "עברית",
|
||||
"ja": "日本語",
|
||||
"zh": "简体中文"
|
||||
} as const;
|
||||
|
||||
|
||||
@@ -5,18 +5,14 @@ export default class ZoomControl {
|
||||
_container: HTMLDivElement | undefined = undefined;
|
||||
_textEl: HTMLSpanElement | null = null;
|
||||
|
||||
constructor(public label: string) {}
|
||||
constructor() {}
|
||||
|
||||
onAdd(map: Map) {
|
||||
this._map = map;
|
||||
this._container = document.createElement('div');
|
||||
this._container.className = 'maplibregl-ctrl maplibregl-ctrl-group maplibregl-ctrl-zoom';
|
||||
this._container.setAttribute("data-wd-key", "maplibre:ctrl-zoom");
|
||||
this._container.innerHTML = `
|
||||
${this.label} <span></span>
|
||||
`;
|
||||
this._textEl = this._container.querySelector("span");
|
||||
|
||||
this.setLabel("Zoom:");
|
||||
this.addEventListeners();
|
||||
|
||||
return this._container;
|
||||
@@ -25,6 +21,14 @@ export default class ZoomControl {
|
||||
updateZoomLevel() {
|
||||
this._textEl!.innerHTML = this._map!.getZoom().toFixed(2);
|
||||
}
|
||||
|
||||
setLabel(label: string) {
|
||||
this._container!.innerHTML = `
|
||||
${label} <span></span>
|
||||
`;
|
||||
this._textEl = this._container!.querySelector("span");
|
||||
this.updateZoomLevel();
|
||||
}
|
||||
|
||||
addEventListeners (){
|
||||
this._map!.on('render', () => this.updateZoomLevel());
|
||||
|
||||
60
src/locales/README.md
Normal file
60
src/locales/README.md
Normal file
@@ -0,0 +1,60 @@
|
||||
## Internationalization
|
||||
|
||||
The process of internationlization is pretty straight forward for Maputnik.
|
||||
|
||||
## Add a new language
|
||||
|
||||
#### 1. Edit configuration
|
||||
|
||||
In order to add a new translation you'll need to add it to the configuration files. Please put it in alphabetical order.
|
||||
|
||||
- Open [/i18next-parser.config.ts](/i18next-parser.config.ts) and add the ISO Code of your language to the `locales` array.
|
||||
- Now, open [/src/i18n.ts](/src/i18n.ts) and add the ISO Code and localized name to the supported languages.
|
||||
|
||||
#### 2. Add the localized strings
|
||||
|
||||
Refresh the localization to generate a new directory under `/src/locales/` for your new language.
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run i18n:refresh
|
||||
```
|
||||
|
||||
Replace every `__STRING_NOT_TRANSLATED__` value in the newly generated `translation.json` file with the according translation.
|
||||
Make sure all the keys are translated.
|
||||
|
||||
#### 3. Test your new locale
|
||||
|
||||
Finally, test your language locally by starting a local instance of Maputnik.
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
Consider adding your name as a helping person for the translation of new features.
|
||||
|
||||
## Add localization for a new feature
|
||||
|
||||
If you happen to add a feature which needs some text to be translated, update the translation files.
|
||||
After running, check your working copy for files and add/correct as needed.
|
||||
|
||||
```bash
|
||||
npm run i18n:refresh
|
||||
```
|
||||
|
||||
The following users can help you with the relevant languages:
|
||||
|
||||
| ISO Code | Language | User |
|
||||
|----------|--------------------|--------------------------------------------|
|
||||
| de | German | [@josxha](https://github.com/josxha) |
|
||||
| en | English | [@HarelM](https://github.com/HarelM) |
|
||||
| fr | French | [@lhapaipai](https://github.com/lhapaipai) |
|
||||
| hr | Hebrew | [@HarelM](https://github.com/HarelM) |
|
||||
| ja | Japanese | [@keichan34](https://github.com/keichan34) |
|
||||
| zh | Simplified Chinese | [@jieme](https://github.com/jieme) |
|
||||
|
||||
You can test the UI in different languages using the dropdown in the top menu
|
||||
Note that Maputnik automatically localize based on browser language settings and stores this language in local storage.
|
||||
You can use incognito mode to check a first time usage.
|
||||
|
||||
|
||||
185
src/locales/de/translation.json
Normal file
185
src/locales/de/translation.json
Normal file
@@ -0,0 +1,185 @@
|
||||
{
|
||||
"Input value": "Eingabewert",
|
||||
"Data value": "Datenwert",
|
||||
"Output value": "Ausgabewert",
|
||||
"Function": "Funktion",
|
||||
"Select a type of data scale (default is 'categorical').": "Wähle eine Art Datenskala (Standard ist 'kategorisch').",
|
||||
"Base": "Basis",
|
||||
"Input a data property to base styles off of.": "Gib eine Dateneigenschaft ein, um Stile darauf zu basieren.",
|
||||
"Default": "Standard",
|
||||
"Stops": "Stopps",
|
||||
"Zoom": "Zoom",
|
||||
"Add stop": "Stopp hinzufügen",
|
||||
"Convert to expression": "In Ausdruck umwandeln",
|
||||
"Remove zoom level from stop": "Zoom-Stufe vom Stopp entfernen",
|
||||
"Revert from expression": "Vom Ausdruck zurücksetzen",
|
||||
"Delete expression": "Ausdruck löschen",
|
||||
"Convert property into a zoom function": "Eigenschaft in eine Zoom-Funktion umwandeln",
|
||||
"Convert property to data function": "Eigenschaft in eine Datenfunktion umwandeln",
|
||||
"Layer <1>{formatLayerId(layerId)}</1>: {parsed.data.message}": "Ebene <1>{formatLayerId(layerId)}</1>: {parsed.data.message}",
|
||||
"switch to layer": "zur Ebene wechseln",
|
||||
"Map": "Karte",
|
||||
"Inspect": "Untersuchen",
|
||||
"Deuteranopia filter": "Deuteranopie-Filter",
|
||||
"Protanopia filter": "Protanopie-Filter",
|
||||
"Tritanopia filter": "Tritanopie-Filter",
|
||||
"Achromatopsia filter": "Achromatopsie-Filter",
|
||||
"Layers list": "Ebenenliste",
|
||||
"Layer editor": "Ebenen-Editor",
|
||||
"Map view": "Kartenansicht",
|
||||
"Maputnik on GitHub": "Maputnik auf GitHub",
|
||||
"Open": "Öffnen",
|
||||
"Export": "Exportieren",
|
||||
"Data Sources": "Datenquellen",
|
||||
"Style Settings": "Stileinstellungen",
|
||||
"View": "Ansicht",
|
||||
"Color accessibility": "Farbzugänglichkeit",
|
||||
"Help": "Hilfe",
|
||||
"Comments for the current layer. This is non-standard and not in the spec.": "Kommentare zur aktuellen Ebene. Das ist nicht standardmäßig und nicht in der Spezifikation.",
|
||||
"Comments": "Kommentare",
|
||||
"Comment...": "Dein Kommentar...",
|
||||
"Max Zoom": "Max-Zoom",
|
||||
"Min Zoom": "Min-Zoom",
|
||||
"Source": "Quelle",
|
||||
"Source Layer": "Quellenebene",
|
||||
"Type": "Typ",
|
||||
"Nested filters are not supported.": "Verschachtelte Filter werden nicht unterstützt.",
|
||||
"Upgrade to expression": "Aufrüsten zu Ausdruck",
|
||||
"Filter": "Filter",
|
||||
"every filter matches": "alle Filter passen",
|
||||
"no filter matches": "kein Filter passt",
|
||||
"any filter matches": "irgendein Filter passt",
|
||||
"Add filter": "Filter hinzufügen",
|
||||
"You've entered an old style filter.": "Du hast einen alten Filter-Stil eingegeben.",
|
||||
"Switch to filter editor.": "Zum Filter-Editor wechseln.",
|
||||
"Delete filter block": "Filterblock löschen",
|
||||
"Add value": "Wert hinzufügen",
|
||||
"Remove array item": "Element aus Array entfernen",
|
||||
"Press <1>ESC</1> to lose focus": "Drück <1>ESC</1>, um den Fokus zu verlieren",
|
||||
"Must provide protocol: <1>https://</1>": "Protokoll erforderlich: <1>https://</1>",
|
||||
"Must provide protocol: <1>http://</1> or <3>https://</3>": "Protokoll erforderlich: <1>http://</1> oder <3>https://</3>",
|
||||
"CORS policy won't allow fetching resources served over http from https, use a <1>https://</1> domain": "Die CORS-Politik erlaubt es nicht, Ressourcen über http von https zu laden, benutze eine <1>https://</1>-Domain",
|
||||
"Layer": "Ebene",
|
||||
"JSON Editor": "JSON-Editor",
|
||||
"Delete": "Löschen",
|
||||
"Duplicate": "Duplizieren",
|
||||
"Show": "Anzeigen",
|
||||
"Hide": "Verstecken",
|
||||
"Move layer up": "Ebene nach oben verschieben",
|
||||
"Move layer down": "Ebene nach unten verschieben",
|
||||
"Layer: {{layerId}}": "Ebene: {{layerId}}",
|
||||
"Layers": "Ebenen",
|
||||
"Collapse": "Einklappen",
|
||||
"Expand": "Ausklappen",
|
||||
"Add Layer": "Ebene hinzufügen",
|
||||
"Search": "Suche",
|
||||
"Zoom:": "Zoom:",
|
||||
"Close popup": "Popup schließen",
|
||||
"cursor:": "Mauszeiger:",
|
||||
"center:": "Zentrum:",
|
||||
"rotation:": "Rotation:",
|
||||
"Close modal": "Modale Fenster schließen",
|
||||
"Debug": "Debug",
|
||||
"Options": "Optionen",
|
||||
"<0>Open in OSM</0> — Opens the current view on openstreetmap.org": "<0>In OSM öffnen</0> — Öffnet die aktuelle Ansicht auf openstreetmap.org",
|
||||
"Export Style": "Stil exportieren",
|
||||
"Download Style": "Stil herunterladen",
|
||||
"Download a JSON style to your computer.": "Lade einen JSON-Stil auf deinen Computer herunter.",
|
||||
"Download HTML": "HTML herunterladen",
|
||||
"Cancel": "Abbrechen",
|
||||
"Open Style": "Stil öffnen",
|
||||
"Upload Style": "Stil hochladen",
|
||||
"Upload a JSON style from your computer.": "Lade einen JSON-Stil von deinem Computer hoch.",
|
||||
"Style file": "Stildatei",
|
||||
"Upload": "Hochladen",
|
||||
"Load from URL": "Von URL laden",
|
||||
"Load from a URL. Note that the URL must have <1>CORS enabled</1>.": "Von einer URL laden. Beachte, dass die URL <1>CORS aktiviert</1> haben muss.",
|
||||
"Style URL": "Stil-URL",
|
||||
"Enter URL...": "URL eingeben...",
|
||||
"Gallery Styles": "Galerie-Stile",
|
||||
"Open one of the publicly available styles to start from.": "Öffne einen der öffentlich verfügbaren Stile, um zu starten.",
|
||||
"Loading style": "Stil wird geladen",
|
||||
"Loading: {{requestUrl}}": "Lädt: {{requestUrl}}",
|
||||
"Name": "Name",
|
||||
"Owner": "Besitzer",
|
||||
"Owner ID of the style. Used by Mapbox or future style APIs.": "Besitzer-ID des Stils. Wird von Mapbox oder zukünftigen Style-APIs verwendet.",
|
||||
"Sprite URL": "Sprite-URL",
|
||||
"Glyphs URL": "Glyphen-URL",
|
||||
"Center": "Mittelpunkt",
|
||||
"Bearing": "Ausrichtung",
|
||||
"Pitch": "Neigung",
|
||||
"Light anchor": "Lichtanker",
|
||||
"Light color": "Lichtfarbe",
|
||||
"Light intensity": "Lichtintensität",
|
||||
"Light position": "Lichtposition",
|
||||
"Terrain source": "Geländequelle",
|
||||
"Terrain exaggeration": "Gelände-Übertreibung",
|
||||
"Transition delay": "Übergangsverzögerung",
|
||||
"Transition duration": "Übergangsdauer",
|
||||
"Open Layers (experimental)": "Ebenen öffnen (experimentell)",
|
||||
"Shortcuts menu": "Shortcuts-Menü",
|
||||
"Open modal": "Modale Fenster öffnen",
|
||||
"Export modal": "Modale Fenster exportieren",
|
||||
"Data Sources modal": "Modale Datenquellen",
|
||||
"Style Settings modal": "Modale Stileinstellungen",
|
||||
"Toggle inspect": "Inspektion umschalten",
|
||||
"Focus map": "Karte fokussieren",
|
||||
"Debug modal": "Debug (modale Fenster)",
|
||||
"Increase the zoom level by 1.": "Zoom-Stufe um 1 erhöhen.",
|
||||
"Increase the zoom level by 2.": "Zoom-Stufe um 2 erhöhen.",
|
||||
"Decrease the zoom level by 1.": "Zoom-Stufe um 1 verringern.",
|
||||
"Decrease the zoom level by 2.": "Zoom-Stufe um 2 verringern.",
|
||||
"Pan up by 100 pixels.": "Um 100 Pixel nach oben schwenken.",
|
||||
"Pan down by 100 pixels.": "Um 100 Pixel nach unten schwenken.",
|
||||
"Pan left by 100 pixels.": "Um 100 Pixel nach links schwenken.",
|
||||
"Pan right by 100 pixels.": "Um 100 Pixel nach rechts schwenken.",
|
||||
"Increase the rotation by 15 degrees.": "Rotation um 15 Grad erhöhen.",
|
||||
"Decrease the rotation by 15 degrees.": "Rotation um 15 Grad verringern.",
|
||||
"Increase the pitch by 10 degrees.": "Neigung um 10 Grad erhöhen.",
|
||||
"Decrease the pitch by 10 degrees.": "Neigung um 10 Grad verringern.",
|
||||
"Shortcuts": "Shortcuts",
|
||||
"Press <1>ESC</1> to lose focus of any active elements, then press one of:": "Drück <1>ESC</1>, um den Fokus von aktiven Elementen zu verlieren, und dann drück eine der folgenden Tasten:",
|
||||
"If the Map is in focused you can use the following shortcuts": "Wenn die Karte fokussiert ist, kannst du die folgenden Shortcuts benutzen",
|
||||
"Remove '{{sourceId}}' source": "Quelle '{{sourceId}}' entfernen",
|
||||
"Source ID": "Quellen-ID",
|
||||
"Unique ID that identifies the source and is used in the layer to reference the source.": "Eindeutige ID, die die Quelle identifiziert und in der Ebene verwendet wird, um auf die Quelle zu verweisen.",
|
||||
"Source Type": "Quellentyp",
|
||||
"GeoJSON (JSON)": "GeoJSON (JSON)",
|
||||
"GeoJSON (URL)": "GeoJSON (URL)",
|
||||
"Vector (TileJSON URL)": "Vektor (TileJSON URL)",
|
||||
"Vector (XYZ URLs)": "Vektor (XYZ URLs)",
|
||||
"Raster (TileJSON URL)": "Raster (TileJSON URL)",
|
||||
"Raster (XYZ URL)": "Raster (XYZ URL)",
|
||||
"Raster DEM (TileJSON URL)": "Raster DEM (TileJSON URL)",
|
||||
"Raster DEM (XYZ URLs)": "Raster DEM (XYZ URLs)",
|
||||
"Image": "Bild",
|
||||
"Video": "Video",
|
||||
"Add Source": "Quelle hinzufügen",
|
||||
"Sources": "Quellen",
|
||||
"Active Sources": "Aktive Quellen",
|
||||
"Choose Public Source": "Öffentliche Quelle auswählen",
|
||||
"Add one of the publicly available sources to your style.": "Füge eine der öffentlich verfügbaren Quellen zu deinem Stil hinzu.",
|
||||
"Add New Source": "Neue Quelle hinzufügen",
|
||||
"Add a new source to your style. You can only choose the source type and id at creation time!": "Füge eine neue Quelle zu deinem Stil hinzu. Du kannst den Quellentyp und die ID nur bei der Erstellung auswählen!",
|
||||
"TileJSON URL": "TileJSON URL",
|
||||
"Tile URL": "Kachel-URL",
|
||||
"Coord top left": "Koordinate oben links",
|
||||
"Coord top right": "Koordinate oben rechts",
|
||||
"Coord bottom right": "Koordinate unten rechts",
|
||||
"Coord bottom left": "Koordinate unten links",
|
||||
"Image URL": "Bild-URL",
|
||||
"Video URL": "Video-URL",
|
||||
"GeoJSON URL": "GeoJSON URL",
|
||||
"GeoJSON": "GeoJSON",
|
||||
"Cluster": "Cluster",
|
||||
"Encoding": "Kodierung",
|
||||
"Error:": "Fehler:",
|
||||
"MapTiler Access Token": "MapTiler Zugriffstoken",
|
||||
"Public access token for MapTiler Cloud.": "Öffentlicher Zugriffstoken für MapTiler Cloud.",
|
||||
"Thunderforest Access Token": "Thunderforest Zugriffstoken",
|
||||
"Public access token for Thunderforest services.": "Öffentlicher Zugriffstoken für Thunderforest-Dienste.",
|
||||
"Style Renderer": "Stil-Renderer",
|
||||
"Choose the default Maputnik renderer for this style.": "Wähle den Standard-Renderer für diesen Stil aus.",
|
||||
"Language": "Sprache",
|
||||
"Press <1>ESC</1> to lose focus of any input box": "Drück <1>ESC</1>, um den Fokus von jedem Eingabefeld zu verlieren"
|
||||
}
|
||||
192
src/locales/fr/translation.json
Normal file
192
src/locales/fr/translation.json
Normal file
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"Input value": "Valeur d'entrée",
|
||||
"Data value": "Valeur des données",
|
||||
"Output value": "Valeur de sortie",
|
||||
"Function": "Fonction",
|
||||
"Select a type of data scale (default is 'categorical').": "Sélectionnez un type d'échelle de données (par défaut 'categorical').",
|
||||
"Base": "Base",
|
||||
"Input a data property to base styles off of.": "Entrez une propriété de données pour baser les styles.",
|
||||
"Default": "Par défaut",
|
||||
"Stops": "Arrêts",
|
||||
"Zoom": "Zoom",
|
||||
"Add stop": "Ajouter un arrêt",
|
||||
"Convert to expression": "Convertir en expression",
|
||||
"Remove zoom level from stop": "Supprimer le niveau de zoom de l'arrêt",
|
||||
"Revert from expression": "Annuler l'expression",
|
||||
"Delete expression": "Supprimer l'expression",
|
||||
"Convert property into a zoom function": "Convertir la propriété en fonction de zoom",
|
||||
"Convert property to data function": "Convertir la propriété en fonction de données",
|
||||
"Layer <1>{formatLayerId(layerId)}</1>: {parsed.data.message}": "Calque <1>{formatLayerId(layerId)}</1> : {parsed.data.message}",
|
||||
"switch to layer": "changer de calque",
|
||||
"Map": "Carte",
|
||||
"Inspect": "Inspecter",
|
||||
"Deuteranopia filter": "Filtre Deutéranopie",
|
||||
"Protanopia filter": "Filtre Protanopie",
|
||||
"Tritanopia filter": "Filtre Tritanopie",
|
||||
"Achromatopsia filter": "Filtre Achromatopsie",
|
||||
"Layers list": "Liste des calques",
|
||||
"Layer editor": "Éditeur de calque",
|
||||
"Map view": "Vue de la carte",
|
||||
"Maputnik on GitHub": "Maputnik sur GitHub",
|
||||
"Open": "Ouvrir",
|
||||
"Export": "Exporter",
|
||||
"Data Sources": "Sources de données",
|
||||
"Style Settings": "Paramètres du style",
|
||||
"View": "Vue",
|
||||
"Color accessibility": "Accessibilité des couleurs",
|
||||
"Language": "Langue",
|
||||
"Help": "Aide",
|
||||
"Comments for the current layer. This is non-standard and not in the spec.": "Commentaires pour le calque actuel. Ceci n'est pas standard et n'est pas dans la spécification.",
|
||||
"Comments": "Commentaires",
|
||||
"Comment...": "Votre commentaire...",
|
||||
"Max Zoom": "Zoom max",
|
||||
"Min Zoom": "Zoom min",
|
||||
"Source": "Source",
|
||||
"Source Layer": "Calque Source",
|
||||
"Type": "Type",
|
||||
"Nested filters are not supported.": "Les filtres imbriqués ne sont pas pris en charge.",
|
||||
"Upgrade to expression": "Mettre à niveau vers une expression",
|
||||
"Filter": "Filtre",
|
||||
"every filter matches": "tous les filtres correspondent",
|
||||
"no filter matches": "aucun filtre ne correspond",
|
||||
"any filter matches": "l'un des filtres correspond",
|
||||
"Add filter": "Ajouter un filtre",
|
||||
"You've entered an old style filter.": "Vous avez entré un ancien style de filtre.",
|
||||
"Switch to filter editor.": "Passer à l'éditeur de filtre.",
|
||||
"Delete filter block": "Supprimer le bloc de filtre",
|
||||
"Add value": "Ajouter une valeur",
|
||||
"Remove array item": "Supprimer l'élément de tableau",
|
||||
"Press <1>ESC</1> to lose focus": "Appuyez sur <1>Échap</1> pour perdre le focus",
|
||||
"Must provide protocol: <1>https://</1>": "Protocole requis : <1>https://</1>",
|
||||
"Must provide protocol: <1>http://</1> or <3>https://</3>": "Protocole requis : <1>http://</1> ou <3>https://</3>",
|
||||
"CORS policy won't allow fetching resources served over http from https, use a <1>https://</1> domain": "La politique CORS ne permet pas de récupérer des ressources servies sur http depuis https, utilisez un protocole <1>https://</1>",
|
||||
"Layer": "Calque",
|
||||
"JSON Editor": "Éditeur JSON",
|
||||
"Delete": "Supprimer",
|
||||
"Duplicate": "Dupliquer",
|
||||
"Show": "Afficher",
|
||||
"Hide": "Cacher",
|
||||
"Move layer up": "Monter le calque",
|
||||
"Move layer down": "Descendre le calque",
|
||||
"Layer: {{layerId}}": "Calque : {{layerId}}",
|
||||
"Layers": "Calques",
|
||||
"Collapse": "Réduire",
|
||||
"Expand": "Développer",
|
||||
"Add Layer": "Ajouter un calque",
|
||||
"Zoom:": "Zoom :",
|
||||
"Search": "Recherche",
|
||||
"Close popup": "Fermer la fenêtre",
|
||||
"cursor:": "curseur :",
|
||||
"center:": "centre :",
|
||||
"rotation:": "rotation :",
|
||||
"Close modal": "Fermer la fenêtre modale",
|
||||
"Debug": "Déboguer",
|
||||
"Options": "Options",
|
||||
"<0>Open in OSM</0> — Opens the current view on openstreetmap.org": "<0>Ouvrir dans OSM</0> — Ouvre la vue actuelle sur openstreetmap.org",
|
||||
"Export Style": "Exporter le style",
|
||||
"Download Style": "Télécharger le style",
|
||||
"Download a JSON style to your computer.": "Téléchargez un style JSON sur votre ordinateur.",
|
||||
"Download HTML": "Télécharger HTML",
|
||||
"Cancel": "Annuler",
|
||||
"Open Style": "Ouvrir le style",
|
||||
"Upload Style": "Transférer un style",
|
||||
"Upload a JSON style from your computer.": "Transférer un style JSON depuis votre ordinateur.",
|
||||
"Style file": "Fichier de style",
|
||||
"Upload": "Transférer",
|
||||
"Load from URL": "Charger depuis une URL",
|
||||
"Load from a URL. Note that the URL must have <1>CORS enabled</1>.": "Charger depuis une URL. Notez que l'URL doit avoir les <1>CORS activés</1>.",
|
||||
"Style URL": "URL du style",
|
||||
"Enter URL...": "Entrez l'URL...",
|
||||
"Gallery Styles": "Styles de la galerie",
|
||||
"Open one of the publicly available styles to start from.": "Ouvrez l'un des styles publics disponibles pour commencer.",
|
||||
"Loading style": "Chargement du style",
|
||||
"Loading: {{requestUrl}}": "Chargement : {{requestUrl}}",
|
||||
"Name": "Nom",
|
||||
"Owner": "Propriétaire",
|
||||
"Owner ID of the style. Used by Mapbox or future style APIs.": "ID du propriétaire du style. Utilisé par Mapbox ou les futures API de style.",
|
||||
"Sprite URL": "URL du sprite",
|
||||
"Glyphs URL": "URL des glyphes",
|
||||
"Center": "Centre",
|
||||
"Bearing": "Orientation",
|
||||
"Pitch": "Inclinaison",
|
||||
"Light anchor": "Ancrage de la lumière",
|
||||
"Light color": "Couleur de la lumière",
|
||||
"Light intensity": "Intensité de la lumière",
|
||||
"Light position": "Position de la lumière",
|
||||
"Terrain source": "Source du terrain",
|
||||
"Terrain exaggeration": "Exagération du terrain",
|
||||
"Transition delay": "Délai de transition",
|
||||
"Transition duration": "Durée de transition",
|
||||
"Open Layers (experimental)": "Open Layers (expérimental)",
|
||||
"Shortcuts menu": "Menu des raccourcis",
|
||||
"Open modal": "Ouvrir (modale)",
|
||||
"Export modal": "Exporter (modale)",
|
||||
"Data Sources modal": "Sources de données (modale)",
|
||||
"Style Settings modal": "Paramètres de style (modale)",
|
||||
"Toggle inspect": "Activer/désactiver l'inspection",
|
||||
"Focus map": "Focus sur la carte",
|
||||
"Debug modal": "Déboguer (modale)",
|
||||
"Increase the zoom level by 1.": "Augmenter le niveau de zoom de 1.",
|
||||
"Increase the zoom level by 2.": "Augmenter le niveau de zoom de 2.",
|
||||
"Decrease the zoom level by 1.": "Diminuer le niveau de zoom de 1.",
|
||||
"Decrease the zoom level by 2.": "Diminuer le niveau de zoom de 2.",
|
||||
"Pan up by 100 pixels.": "Déplacer vers le haut de 100 pixels.",
|
||||
"Pan down by 100 pixels.": "Déplacer vers le bas de 100 pixels.",
|
||||
"Pan left by 100 pixels.": "Déplacer vers la gauche de 100 pixels.",
|
||||
"Pan right by 100 pixels.": "Déplacer vers la droite de 100 pixels.",
|
||||
"Increase the rotation by 15 degrees.": "Augmenter l'angle de rotation de 15 degrés.",
|
||||
"Decrease the rotation by 15 degrees.": "Diminuer l'angle de rotation de 15 degrés.",
|
||||
"Increase the pitch by 10 degrees.": "Augmenter l'inclinaison de 10 degrés.",
|
||||
"Decrease the pitch by 10 degrees.": "Diminuer l'inclinaison de 10 degrés.",
|
||||
"Shortcuts": "Raccourcis",
|
||||
"Press <1>ESC</1> to lose focus of any active elements, then press one of:": "Appuyez sur <1>Échap</1> pour perdre le focus des éléments actifs, puis appuyez sur l'un des éléments suivants :",
|
||||
"If the Map is in focused you can use the following shortcuts": "Si la carte a le focus, vous pouvez utiliser les raccourcis suivants",
|
||||
"Remove '{{sourceId}}' source": "Supprimer la source '{{sourceId}}'",
|
||||
"Source ID": "ID de la source",
|
||||
"Unique ID that identifies the source and is used in the layer to reference the source.": "ID unique qui identifie la source et est utilisé dans le calque pour référencer la source.",
|
||||
"Source Type": "Type de source",
|
||||
"GeoJSON (JSON)": "GeoJSON (JSON)",
|
||||
"GeoJSON (URL)": "GeoJSON (URL)",
|
||||
"Vector (TileJSON URL)": "Vecteur (URL TileJSON)",
|
||||
"Vector (XYZ URLs)": "Vecteur (URLs XYZ)",
|
||||
"Raster (TileJSON URL)": "Raster (URL TileJSON)",
|
||||
"Raster (XYZ URL)": "Raster (URL XYZ)",
|
||||
"Raster DEM (TileJSON URL)": "Raster DEM (URL TileJSON)",
|
||||
"Raster DEM (XYZ URLs)": "Raster DEM (URLs XYZ)",
|
||||
"Image": "Image",
|
||||
"Video": "Vidéo",
|
||||
"Add Source": "Ajouter une source",
|
||||
"Sources": "Sources",
|
||||
"Active Sources": "Sources actives",
|
||||
"Choose Public Source": "Choisir une source publique",
|
||||
"Add one of the publicly available sources to your style.": "Ajoutez l'une des sources publiques disponibles à votre style.",
|
||||
"Add New Source": "Ajouter une nouvelle source",
|
||||
"Add a new source to your style. You can only choose the source type and id at creation time!": "Ajoutez une nouvelle source à votre style. Vous ne pouvez choisir le type et l'ID de la source qu'au moment de la création !",
|
||||
"TileJSON URL": "URL TileJSON",
|
||||
"Tile URL": "URL de la tuile",
|
||||
"Coord top left": "Coordonnée en haut à gauche",
|
||||
"Coord top right": "Coordonnée en haut à droite",
|
||||
"Coord bottom right": "Coordonnée en bas à droite",
|
||||
"Coord bottom left": "Coordonnée en bas à gauche",
|
||||
"Image URL": "URL de l'image",
|
||||
"Video URL": "URL de la vidéo",
|
||||
"GeoJSON URL": "URL GeoJSON",
|
||||
"GeoJSON": "GeoJSON",
|
||||
"Cluster": "Cluster",
|
||||
"Encoding": "Encodage",
|
||||
"Error:": "Erreur :",
|
||||
"MapTiler Access Token": "Jeton d'accès MapTiler",
|
||||
"Public access token for MapTiler Cloud.": "Jeton d'accès public pour MapTiler Cloud.",
|
||||
"Thunderforest Access Token": "Jeton d'accès Thunderforest",
|
||||
"Public access token for Thunderforest services.": "Jeton d'accès public pour les services Thunderforest.",
|
||||
"Style Renderer": "Moteur de rendu pour le style",
|
||||
"Choose the default Maputnik renderer for this style.": "Choisissez le moteur de rendu Maputnik par défaut pour ce style.",
|
||||
"Layer options": "Options du calque",
|
||||
"Paint properties": "Propriétés de peinture",
|
||||
"Layout properties": "Propriétés de mise en page",
|
||||
"General layout properties": "Propriétés générales de mise en page",
|
||||
"Text layout properties": "Propriétés de mise en page du texte",
|
||||
"Icon layout properties": "Propriétés de mise en page de l'icône",
|
||||
"Text paint properties": "Propriétés de peinture du texte",
|
||||
"Icon paint properties": "Propriétés de peinture de l'icône"
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
}
|
||||
|
||||
input.maputnik-string {
|
||||
margin-left: 5px;
|
||||
margin: 0 5px;
|
||||
width: 60%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
}
|
||||
|
||||
.maputnik-filter-editor-operator {
|
||||
margin-left: 2%;
|
||||
margin: 0 2%;
|
||||
display: inline-block;
|
||||
width: 17%;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
.maputnik-filter-editor-args {
|
||||
display: inline-block;
|
||||
width: 54%;
|
||||
margin-left: 2%;
|
||||
margin: 0 2%;
|
||||
|
||||
.maputnik-string,
|
||||
.maputnik-number {
|
||||
|
||||
@@ -107,6 +107,9 @@
|
||||
|
||||
height: 24px;
|
||||
}
|
||||
[dir="rtl"] .maputnik-select {
|
||||
background: $color-gray url("#{$icon-down-arrow}") left center no-repeat;
|
||||
}
|
||||
|
||||
// MULTIBUTTON
|
||||
.maputnik-multibutton {
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
}
|
||||
|
||||
&-group-content {
|
||||
margin-left: $margin-3;
|
||||
margin: 0 $margin-3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
.maputnik-popup-layer-id {
|
||||
padding-left: $margin-2;
|
||||
padding-right: 1.6em;
|
||||
padding-right: $margin-2;
|
||||
background-color: $color-midgray;
|
||||
color: $color-white;
|
||||
}
|
||||
@@ -33,6 +33,7 @@
|
||||
.maputnik-input-block {
|
||||
margin: 0;
|
||||
margin-left: $margin-2;
|
||||
margin-right: $margin-2;
|
||||
margin-top: $margin-2;
|
||||
}
|
||||
}
|
||||
@@ -44,4 +45,5 @@
|
||||
.maputnik-popup-table-cell {
|
||||
color: $color-lowgray;
|
||||
padding-left: $margin-2;
|
||||
padding-right: $margin-2;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
.maputnik-toolbar-version {
|
||||
font-size: 10px;
|
||||
margin-left: 4px;
|
||||
margin: 0 4px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
@extend .maputnik-toolbar-link; /* stylelint-disable-line */
|
||||
|
||||
select {
|
||||
margin-left: 6px;
|
||||
margin: 0 6px;
|
||||
border-width: 0;
|
||||
display: inline;
|
||||
width: auto;
|
||||
@@ -114,12 +114,12 @@
|
||||
}
|
||||
|
||||
.maputnik-icon-text {
|
||||
padding-left: $margin-1;
|
||||
padding: 0 $margin-1;
|
||||
}
|
||||
|
||||
.maputnik-icon-action {
|
||||
display: inline;
|
||||
margin-left: $margin-1;
|
||||
margin: 0 $margin-1;
|
||||
}
|
||||
|
||||
.maputnik-toolbar__inner {
|
||||
|
||||
@@ -102,8 +102,7 @@
|
||||
|
||||
&:not(:first-child)
|
||||
{
|
||||
padding-top: $margin-1;
|
||||
padding-left: $margin-2;
|
||||
padding: $margin-1;
|
||||
}
|
||||
|
||||
&:nth-child(1) {
|
||||
|
||||
Reference in New Issue
Block a user