mirror of
https://github.com/umap-project/umap.git
synced 2025-05-04 13:41:49 +02:00
Compare commits
15 commits
985d91a9c7
...
071a8c539d
Author | SHA1 | Date | |
---|---|---|---|
![]() |
071a8c539d | ||
![]() |
ec8fa87b41 | ||
![]() |
ef072f0a8e | ||
![]() |
33f407fd60 | ||
![]() |
324c5cf6bf | ||
![]() |
e53cdcb04e | ||
![]() |
5e3170891a | ||
![]() |
495286c261 | ||
![]() |
15972bab3d | ||
![]() |
bd91934544 | ||
![]() |
581140e08a | ||
![]() |
10f87c0b6e | ||
![]() |
0ec4e74f8f | ||
![]() |
89033e04a2 | ||
![]() |
38f4fd5bb3 |
54 changed files with 621 additions and 243 deletions
|
@ -1,5 +1,5 @@
|
||||||
# This part installs deps needed at runtime.
|
# This part installs deps needed at runtime.
|
||||||
FROM python:3.11-slim AS runtime
|
FROM python:3.12-slim AS common
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
|
@ -13,7 +13,7 @@ RUN apt-get update && \
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
# This part adds deps needed only at buildtime.
|
# This part adds deps needed only at buildtime.
|
||||||
FROM runtime AS build
|
FROM common AS build
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
|
@ -40,7 +40,7 @@ COPY . /srv/umap
|
||||||
|
|
||||||
RUN /venv/bin/pip install .[docker,s3,sync]
|
RUN /venv/bin/pip install .[docker,s3,sync]
|
||||||
|
|
||||||
FROM runtime
|
FROM common
|
||||||
|
|
||||||
COPY --from=build /srv/umap/docker/ /srv/umap/docker/
|
COPY --from=build /srv/umap/docker/ /srv/umap/docker/
|
||||||
COPY --from=build /venv/ /venv/
|
COPY --from=build /venv/ /venv/
|
||||||
|
|
|
@ -26,10 +26,10 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
image: umap/umap:3.0.0
|
image: umap/umap:3.0.2
|
||||||
ports:
|
|
||||||
- "${PORT-8000}:8000"
|
|
||||||
environment:
|
environment:
|
||||||
|
- STATIC_ROOT=/srv/umap/static
|
||||||
|
- MEDIA_ROOT=/srv/umap/uploads
|
||||||
- DATABASE_URL=postgis://postgres@db/postgres
|
- DATABASE_URL=postgis://postgres@db/postgres
|
||||||
- SECRET_KEY=some-long-and-weirdly-unrandom-secret-key
|
- SECRET_KEY=some-long-and-weirdly-unrandom-secret-key
|
||||||
- SITE_URL=https://umap.local/
|
- SITE_URL=https://umap.local/
|
||||||
|
@ -39,7 +39,20 @@ services:
|
||||||
- REDIS_URL=redis://redis:6379
|
- REDIS_URL=redis://redis:6379
|
||||||
volumes:
|
volumes:
|
||||||
- data:/srv/umap/uploads
|
- data:/srv/umap/uploads
|
||||||
|
- static:/srv/umap/static
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
image: nginx:latest
|
||||||
|
ports:
|
||||||
|
- "8000:80"
|
||||||
|
volumes:
|
||||||
|
- ./docker/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- static:/static:ro
|
||||||
|
- data:/data:ro
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
|
static:
|
||||||
db:
|
db:
|
||||||
|
|
111
docker/nginx.conf
Normal file
111
docker/nginx.conf
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
events {
|
||||||
|
worker_connections 1024; # Adjust this to your needs
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
proxy_cache_path /tmp/nginx_ajax_proxy_cache levels=1:2 keys_zone=ajax_proxy:10m inactive=60m;
|
||||||
|
proxy_cache_key "$uri$is_args$args";
|
||||||
|
|
||||||
|
map $http_upgrade $connection_upgrade {
|
||||||
|
default upgrade;
|
||||||
|
'' close;
|
||||||
|
}
|
||||||
|
|
||||||
|
types {
|
||||||
|
application/javascript mjs;
|
||||||
|
}
|
||||||
|
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
sendfile on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
# Server block
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
# Static file serving
|
||||||
|
location /static/ {
|
||||||
|
alias /static/;
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
|
||||||
|
expires 365d;
|
||||||
|
access_log /dev/null;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Geojson files
|
||||||
|
location /uploads/ {
|
||||||
|
alias /data/;
|
||||||
|
expires 30d;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /favicon.ico {
|
||||||
|
alias /static/favicon.ico;
|
||||||
|
}
|
||||||
|
|
||||||
|
# X-Accel-Redirect
|
||||||
|
location /internal/ {
|
||||||
|
internal;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_static on;
|
||||||
|
add_header X-DataLayer-Version $upstream_http_x_datalayer_version;
|
||||||
|
alias /data/;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ajax proxy
|
||||||
|
location ~ ^/proxy/(.*) {
|
||||||
|
internal;
|
||||||
|
add_header X-Proxy-Cache $upstream_cache_status always;
|
||||||
|
proxy_cache_background_update on;
|
||||||
|
proxy_cache_use_stale updating;
|
||||||
|
proxy_cache ajax_proxy;
|
||||||
|
proxy_cache_valid 1m; # Default. Umap will override using X-Accel-Expires
|
||||||
|
set $target_url $1;
|
||||||
|
# URL is encoded, so we need a few hack to clean it back.
|
||||||
|
if ( $target_url ~ (.+)%3A%2F%2F(.+) ){ # fix :// between scheme and destination
|
||||||
|
set $target_url $1://$2;
|
||||||
|
}
|
||||||
|
if ( $target_url ~ (.+?)%3A(.*) ){ # fix : between destination and port
|
||||||
|
set $target_url $1:$2;
|
||||||
|
}
|
||||||
|
if ( $target_url ~ (.+?)%2F(.*) ){ # fix / after port, the rest will be decoded by proxy_pass
|
||||||
|
set $target_url $1/$2;
|
||||||
|
}
|
||||||
|
resolver 8.8.8.8;
|
||||||
|
add_header X-Proxy-Target $target_url; # For debugging
|
||||||
|
proxy_pass_request_headers off;
|
||||||
|
proxy_set_header Content-Type $http_content_type;
|
||||||
|
proxy_set_header Content-Encoding $http_content_encoding;
|
||||||
|
proxy_set_header Content-Length $http_content_length;
|
||||||
|
proxy_read_timeout 10s;
|
||||||
|
proxy_connect_timeout 5s;
|
||||||
|
proxy_ssl_server_name on;
|
||||||
|
proxy_pass $target_url;
|
||||||
|
proxy_intercept_errors on;
|
||||||
|
error_page 301 302 307 = @handle_proxy_redirect;
|
||||||
|
}
|
||||||
|
location @handle_proxy_redirect {
|
||||||
|
resolver 8.8.8.8;
|
||||||
|
set $saved_redirect_location '$upstream_http_location';
|
||||||
|
proxy_pass $saved_redirect_location;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Proxy pass to ASGI server
|
||||||
|
location / {
|
||||||
|
proxy_pass http://app:8000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_buffering off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,21 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 3.0.3 - 2025-04-11
|
||||||
|
|
||||||
|
* do not try to remove a feature not yet added by @yohanboniface in #2637
|
||||||
|
* document that nginx needs to be added in Docker stack to serve statics by @yohanboniface in #2636
|
||||||
|
* display back help button in switch fields by @yohanboniface in #2634
|
||||||
|
* use Last-Modified header from remote data when available by @yohanboniface in #2624
|
||||||
|
* fix text overflow on search results by @yohanboniface in #2628
|
||||||
|
* redirect to user dashboard after map delete by @yohanboniface in #2626
|
||||||
|
* add missing margin-bottom in importers by @yohanboniface in #2627
|
||||||
|
* fix pictogram categories always hidden by @yohanboniface in #2630
|
||||||
|
* display search category on list page by @davidbgk in #2635
|
||||||
|
* allow to hide the layer switcher from bottom bar by @davidbgk in #2639
|
||||||
|
* hidden download button in browser when embedControl=false by @yohanboniface in #2640
|
||||||
|
* allow to hide the back to home button by @davidbgk in #2638
|
||||||
|
|
||||||
|
|
||||||
## 3.0.2 - 2025-04-08
|
## 3.0.2 - 2025-04-08
|
||||||
|
|
||||||
* fix copiable input CSS by @yohanboniface in #2616
|
* fix copiable input CSS by @yohanboniface in #2616
|
||||||
|
@ -32,6 +48,13 @@ Other notable changes:
|
||||||
Note: you may want to update your search index to include the category search,
|
Note: you may want to update your search index to include the category search,
|
||||||
see https://docs.umap-project.org/en/stable/config/settings/#umap_search_configuration
|
see https://docs.umap-project.org/en/stable/config/settings/#umap_search_configuration
|
||||||
|
|
||||||
|
|
||||||
|
### Breaking change
|
||||||
|
|
||||||
|
* The Docker image will not serve assets and data files anymore, an Nginx container must
|
||||||
|
be configured. See [docker-compose.yml](https://github.com/umap-project/umap/blob/master/docker-compose.yml)
|
||||||
|
for an example.
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
* add collaborative real-time map editing
|
* add collaborative real-time map editing
|
||||||
* add atomic undo redo by @yohanboniface in #2570
|
* add atomic undo redo by @yohanboniface in #2570
|
||||||
|
|
|
@ -95,6 +95,12 @@ A switch will be available for them in the "advanced properties" of the map.
|
||||||
|
|
||||||
See [the documentation about ASGI deployment](../deploy/asgi.md) for more information.
|
See [the documentation about ASGI deployment](../deploy/asgi.md) for more information.
|
||||||
|
|
||||||
|
#### REDIS_URL
|
||||||
|
|
||||||
|
Connection URL to the Redis server. Only need for the real-time editing.
|
||||||
|
|
||||||
|
Default: `redis://localhost:6379`
|
||||||
|
|
||||||
#### SECRET_KEY
|
#### SECRET_KEY
|
||||||
|
|
||||||
Must be defined to something unique and secret.
|
Must be defined to something unique and secret.
|
||||||
|
|
|
@ -1,84 +1,10 @@
|
||||||
# Configuring Nginx
|
# Configuring Nginx
|
||||||
|
|
||||||
Here are some configuration files to use umap with nginx and [uWSGI](https://uwsgi-docs.readthedocs.io/en/latest/), a server for python, which will handle your processes for you.
|
See [WSGI](wsgi.md) or [ASGI](asgi.md) for a basic setup.
|
||||||
|
|
||||||
```nginx title="nginx.conf"
|
Then consider adding this configuration
|
||||||
upstream umap {
|
|
||||||
server unix:///srv/umap/umap.sock;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
## Static files and geojson
|
||||||
# the port your site will be served on
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
listen 443 ssl;
|
|
||||||
listen [::]:443 ssl;
|
|
||||||
# the domain name it will serve for
|
|
||||||
server_name your-domain.org;
|
|
||||||
charset utf-8;
|
|
||||||
|
|
||||||
# max upload size
|
|
||||||
client_max_body_size 5M; # adjust to taste
|
|
||||||
|
|
||||||
# Finally, send all non-media requests to the Django server.
|
|
||||||
location / {
|
|
||||||
uwsgi_pass umap;
|
|
||||||
include /srv/umap/uwsgi_params;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## uWSGI
|
|
||||||
|
|
||||||
|
|
||||||
```nginx title="uwsgi_params"
|
|
||||||
uwsgi_param QUERY_STRING $query_string;
|
|
||||||
uwsgi_param REQUEST_METHOD $request_method;
|
|
||||||
uwsgi_param CONTENT_TYPE $content_type;
|
|
||||||
uwsgi_param CONTENT_LENGTH $content_length;
|
|
||||||
|
|
||||||
uwsgi_param REQUEST_URI $request_uri;
|
|
||||||
uwsgi_param PATH_INFO $document_uri;
|
|
||||||
uwsgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
uwsgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
uwsgi_param REQUEST_SCHEME $scheme;
|
|
||||||
uwsgi_param HTTPS $https if_not_empty;
|
|
||||||
|
|
||||||
uwsgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
uwsgi_param REMOTE_PORT $remote_port;
|
|
||||||
uwsgi_param SERVER_PORT $server_port;
|
|
||||||
uwsgi_param SERVER_NAME $server_name;
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```ini title="uwsgi.ini"
|
|
||||||
[uwsgi]
|
|
||||||
uid = umap
|
|
||||||
gid = users
|
|
||||||
# Python related settings
|
|
||||||
# the base directory (full path)
|
|
||||||
chdir = /srv/umap/
|
|
||||||
# umap's wsgi module
|
|
||||||
module = umap.wsgi
|
|
||||||
# the virtualenv (full path)
|
|
||||||
home = /srv/umap/venv
|
|
||||||
|
|
||||||
# process-related settings
|
|
||||||
# master
|
|
||||||
master = true
|
|
||||||
# maximum number of worker processes
|
|
||||||
processes = 4
|
|
||||||
# the socket (use the full path to be safe)
|
|
||||||
socket = /srv/umap/umap.sock
|
|
||||||
# ... with appropriate permissions - may be needed
|
|
||||||
chmod-socket = 666
|
|
||||||
stats = /srv/umap/stats.sock
|
|
||||||
# clear environment on exit
|
|
||||||
vacuum = true
|
|
||||||
plugins = python3
|
|
||||||
```
|
|
||||||
|
|
||||||
## Static files
|
|
||||||
|
|
||||||
```nginx title="nginx.conf"
|
```nginx title="nginx.conf"
|
||||||
location /static {
|
location /static {
|
||||||
|
|
37
docs/deploy/overview.md
Normal file
37
docs/deploy/overview.md
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Deploying uMap
|
||||||
|
|
||||||
|
uMap is a python package, running [Django](https://docs.djangoproject.com/en/5.2/howto/deployment/),
|
||||||
|
so anyone experimented with this stack will find it familiar, but there are some speficic details
|
||||||
|
to know about.
|
||||||
|
|
||||||
|
## Data
|
||||||
|
One important design point of uMap is that while metadata are stored in a PostgreSQL database, the
|
||||||
|
data itself is stored in the file system, as geojson files. This design choice has been made
|
||||||
|
to make uMap scale better, as there are much more reads than writes, and when some
|
||||||
|
map is shared a lot (like on a national media) we want to be able to serve it without needing an
|
||||||
|
overcomplex and costly stack.
|
||||||
|
|
||||||
|
So when a request for data is made (that is on a *DataLayer*), the flow is that uMap will read
|
||||||
|
the request headers to check for permissions, and then it will forward the request to Nginx,
|
||||||
|
that will properly serve the data (a geojson file), without consuming a python worker, and with
|
||||||
|
much more efficiency than python.
|
||||||
|
|
||||||
|
In DEBUG mode, uMap will serve the geojson itself, but this is not recommended in production,
|
||||||
|
unless you have a very small audience.
|
||||||
|
|
||||||
|
Data can also be stored in a [S3 like storage](../config/storage/#using-s3).
|
||||||
|
|
||||||
|
## Assets (JS, CSS…)
|
||||||
|
As any web app, uMap also needs static files to be served. In DEBUG mode, Django will do this
|
||||||
|
kindly, but not in production. See [Nginx configuration](nginx.md) for this.
|
||||||
|
|
||||||
|
Assets can also be stored in a [S3 like storage](../config/storage/#using-s3).
|
||||||
|
|
||||||
|
## python app (metadata, permissions…)
|
||||||
|
|
||||||
|
uMap needs a python server, which can either be of [WSGI](wsgi.md) or [ASGI](asgi.md) (this later
|
||||||
|
is needed in order to use the collaborative live editing).
|
||||||
|
|
||||||
|
## Redis
|
||||||
|
|
||||||
|
Still when using the collaborative live editing, uMap needs a [Redis](../config/settings.md#redis_url) server, to act as pubsub.
|
87
docs/deploy/wsgi.md
Normal file
87
docs/deploy/wsgi.md
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# WSGI
|
||||||
|
|
||||||
|
WSGI is the historical standard to serve python in general, and uMap in this case.
|
||||||
|
From recently, uMap also supports [ASGI](asgi.md), which is required to use the
|
||||||
|
collaborative editing feature.
|
||||||
|
|
||||||
|
## uWSGI
|
||||||
|
|
||||||
|
In Nginx host, use:
|
||||||
|
|
||||||
|
```nginx title="nginx.conf"
|
||||||
|
upstream umap {
|
||||||
|
server unix:///srv/umap/umap.sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# the port your site will be served on
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
listen 443 ssl;
|
||||||
|
listen [::]:443 ssl;
|
||||||
|
# the domain name it will serve for
|
||||||
|
server_name your-domain.org;
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
# max upload size
|
||||||
|
client_max_body_size 5M; # adjust to taste
|
||||||
|
|
||||||
|
# Finally, send all non-media requests to the Django server.
|
||||||
|
location / {
|
||||||
|
uwsgi_pass umap;
|
||||||
|
include /srv/umap/uwsgi_params;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```nginx title="uwsgi_params"
|
||||||
|
uwsgi_param QUERY_STRING $query_string;
|
||||||
|
uwsgi_param REQUEST_METHOD $request_method;
|
||||||
|
uwsgi_param CONTENT_TYPE $content_type;
|
||||||
|
uwsgi_param CONTENT_LENGTH $content_length;
|
||||||
|
|
||||||
|
uwsgi_param REQUEST_URI $request_uri;
|
||||||
|
uwsgi_param PATH_INFO $document_uri;
|
||||||
|
uwsgi_param DOCUMENT_ROOT $document_root;
|
||||||
|
uwsgi_param SERVER_PROTOCOL $server_protocol;
|
||||||
|
uwsgi_param REQUEST_SCHEME $scheme;
|
||||||
|
uwsgi_param HTTPS $https if_not_empty;
|
||||||
|
|
||||||
|
uwsgi_param REMOTE_ADDR $remote_addr;
|
||||||
|
uwsgi_param REMOTE_PORT $remote_port;
|
||||||
|
uwsgi_param SERVER_PORT $server_port;
|
||||||
|
uwsgi_param SERVER_NAME $server_name;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```ini title="uwsgi.ini"
|
||||||
|
[uwsgi]
|
||||||
|
uid = umap
|
||||||
|
gid = users
|
||||||
|
# Python related settings
|
||||||
|
# the base directory (full path)
|
||||||
|
chdir = /srv/umap/
|
||||||
|
# umap's wsgi module
|
||||||
|
module = umap.wsgi
|
||||||
|
# the virtualenv (full path)
|
||||||
|
home = /srv/umap/venv
|
||||||
|
|
||||||
|
# process-related settings
|
||||||
|
# master
|
||||||
|
master = true
|
||||||
|
# maximum number of worker processes
|
||||||
|
processes = 4
|
||||||
|
# the socket (use the full path to be safe)
|
||||||
|
socket = /srv/umap/umap.sock
|
||||||
|
# ... with appropriate permissions - may be needed
|
||||||
|
chmod-socket = 666
|
||||||
|
stats = /srv/umap/stats.sock
|
||||||
|
# clear environment on exit
|
||||||
|
vacuum = true
|
||||||
|
plugins = python3
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
See also [Django documentation](https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/).
|
|
@ -18,10 +18,12 @@ nav:
|
||||||
- Storage: config/storage.md
|
- Storage: config/storage.md
|
||||||
- Icon packs: config/icons.md
|
- Icon packs: config/icons.md
|
||||||
- Deployment:
|
- Deployment:
|
||||||
|
- Overview: deploy/overview.md
|
||||||
- Docker: deploy/docker.md
|
- Docker: deploy/docker.md
|
||||||
- Helm: deploy/helm.md
|
- Helm: deploy/helm.md
|
||||||
- Nginx: deploy/nginx.md
|
- Nginx: deploy/nginx.md
|
||||||
- ASGI: deploy/asgi.md
|
- ASGI: deploy/asgi.md
|
||||||
|
- WSGI: deploy/wsgi.md
|
||||||
- Changelog: changelog.md
|
- Changelog: changelog.md
|
||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
VERSION = "3.0.2"
|
VERSION = "3.0.3"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-04-04 16:49+0000\n"
|
"POT-Creation-Date: 2025-04-11 15:30+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -663,7 +663,11 @@ msgstr[1] ""
|
||||||
msgid "No map found."
|
msgid "No map found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/umap/search.html:35
|
#: templates/umap/search.html:36
|
||||||
|
msgid "Latest created maps in category"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/umap/search.html:43
|
||||||
msgid "Latest created maps"
|
msgid "Latest created maps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -784,25 +788,25 @@ msgstr ""
|
||||||
msgid "Only its owner can delete the map."
|
msgid "Only its owner can delete the map."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: views.py:1051
|
#: views.py:1054
|
||||||
msgid "Map successfully deleted."
|
msgid "Map successfully deleted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: views.py:1077
|
#: views.py:1080
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your map has been cloned! If you want to edit this map from another "
|
"Your map has been cloned! If you want to edit this map from another "
|
||||||
"computer, please use this link: %(anonymous_url)s"
|
"computer, please use this link: %(anonymous_url)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: views.py:1082
|
#: views.py:1085
|
||||||
msgid "Congratulations, your map has been cloned!"
|
msgid "Congratulations, your map has been cloned!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: views.py:1336
|
#: views.py:1339
|
||||||
msgid "Layer successfully deleted."
|
msgid "Layer successfully deleted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: views.py:1358
|
#: views.py:1361
|
||||||
msgid "Permissions updated with success!"
|
msgid "Permissions updated with success!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
Binary file not shown.
|
@ -24,7 +24,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: uMap\n"
|
"Project-Id-Version: uMap\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-04-04 16:49+0000\n"
|
"POT-Creation-Date: 2025-04-11 15:30+0000\n"
|
||||||
"PO-Revision-Date: 2013-11-22 14:00+0000\n"
|
"PO-Revision-Date: 2013-11-22 14:00+0000\n"
|
||||||
"Last-Translator: yohanboniface <yohanboniface@free.fr>, 2013-2014,2018-2019,2023-2025\n"
|
"Last-Translator: yohanboniface <yohanboniface@free.fr>, 2013-2014,2018-2019,2023-2025\n"
|
||||||
"Language-Team: French (http://app.transifex.com/openstreetmap/umap/language/fr/)\n"
|
"Language-Team: French (http://app.transifex.com/openstreetmap/umap/language/fr/)\n"
|
||||||
|
@ -682,7 +682,11 @@ msgstr[2] "%(count)s cartes trouvées :"
|
||||||
msgid "No map found."
|
msgid "No map found."
|
||||||
msgstr "Aucune carte trouvée."
|
msgstr "Aucune carte trouvée."
|
||||||
|
|
||||||
#: templates/umap/search.html:35
|
#: templates/umap/search.html:36
|
||||||
|
msgid "Latest created maps in category"
|
||||||
|
msgstr "Dernières cartes créées dans la catégorie"
|
||||||
|
|
||||||
|
#: templates/umap/search.html:43
|
||||||
msgid "Latest created maps"
|
msgid "Latest created maps"
|
||||||
msgstr "Dernières cartes créées."
|
msgstr "Dernières cartes créées."
|
||||||
|
|
||||||
|
@ -803,25 +807,25 @@ msgstr "Courriel envoyé à %(email)s"
|
||||||
msgid "Only its owner can delete the map."
|
msgid "Only its owner can delete the map."
|
||||||
msgstr "Seul le créateur de la carte peut la supprimer."
|
msgstr "Seul le créateur de la carte peut la supprimer."
|
||||||
|
|
||||||
#: views.py:1051
|
#: views.py:1054
|
||||||
msgid "Map successfully deleted."
|
msgid "Map successfully deleted."
|
||||||
msgstr "La carte a bien été supprimée."
|
msgstr "La carte a bien été supprimée."
|
||||||
|
|
||||||
#: views.py:1077
|
#: views.py:1080
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your map has been cloned! If you want to edit this map from another "
|
"Your map has been cloned! If you want to edit this map from another "
|
||||||
"computer, please use this link: %(anonymous_url)s"
|
"computer, please use this link: %(anonymous_url)s"
|
||||||
msgstr "Votre carte a été dupliquée ! Si vous souhaitez la modifier depuis un autre ordinateur, veuillez utiliser ce lien : %(anonymous_url)s"
|
msgstr "Votre carte a été dupliquée ! Si vous souhaitez la modifier depuis un autre ordinateur, veuillez utiliser ce lien : %(anonymous_url)s"
|
||||||
|
|
||||||
#: views.py:1082
|
#: views.py:1085
|
||||||
msgid "Congratulations, your map has been cloned!"
|
msgid "Congratulations, your map has been cloned!"
|
||||||
msgstr "Votre carte a été dupliquée !"
|
msgstr "Votre carte a été dupliquée !"
|
||||||
|
|
||||||
#: views.py:1336
|
#: views.py:1339
|
||||||
msgid "Layer successfully deleted."
|
msgid "Layer successfully deleted."
|
||||||
msgstr "Calque supprimé."
|
msgstr "Calque supprimé."
|
||||||
|
|
||||||
#: views.py:1358
|
#: views.py:1361
|
||||||
msgid "Permissions updated with success!"
|
msgid "Permissions updated with success!"
|
||||||
msgstr "Les permissions ont bien été modifiées !"
|
msgstr "Les permissions ont bien été modifiées !"
|
||||||
|
|
Binary file not shown.
|
@ -11,7 +11,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: uMap\n"
|
"Project-Id-Version: uMap\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-03-03 17:36+0000\n"
|
"POT-Creation-Date: 2025-04-11 15:30+0000\n"
|
||||||
"PO-Revision-Date: 2013-11-22 14:00+0000\n"
|
"PO-Revision-Date: 2013-11-22 14:00+0000\n"
|
||||||
"Last-Translator: Gideon van Melle <translations@gvmelle.com>, 2025\n"
|
"Last-Translator: Gideon van Melle <translations@gvmelle.com>, 2025\n"
|
||||||
"Language-Team: Dutch (http://app.transifex.com/openstreetmap/umap/language/nl/)\n"
|
"Language-Team: Dutch (http://app.transifex.com/openstreetmap/umap/language/nl/)\n"
|
||||||
|
@ -38,137 +38,205 @@ msgstr "Site is 'alleen lezen' wegens onderhoud"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Using “%(name)s” to authenticate is deprecated and will be removed soon. "
|
"Using “%(name)s” to authenticate is deprecated and will be removed soon. "
|
||||||
"Please configure another provider below before losing access to your account"
|
"Please configure another provider below before losing access to your account"
|
||||||
" and maps."
|
" and maps. Then, please logout and login again with the new provider."
|
||||||
msgstr ""
|
msgstr "Het gebruik van %(name)s om te verifiëren is afgeschaft en zal binnenkort worden verwijderd. Configureer hieronder een andere provider voordat u de toegang tot uw account en kaarten verliest. Log uit en log opnieuw in met de nieuwe provider."
|
||||||
|
|
||||||
#: models.py:60 models.py:79
|
#: models.py:61 models.py:80
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr "naam"
|
msgstr "naam"
|
||||||
|
|
||||||
#: models.py:62 models.py:485
|
#: models.py:63 models.py:493
|
||||||
msgid "description"
|
msgid "description"
|
||||||
msgstr "omschrijving"
|
msgstr "omschrijving"
|
||||||
|
|
||||||
#: models.py:110
|
#: models.py:111
|
||||||
msgid "details"
|
msgid "details"
|
||||||
msgstr "details"
|
msgstr "details"
|
||||||
|
|
||||||
#: models.py:111
|
#: models.py:112
|
||||||
msgid "Link to a page where the licence is detailed."
|
msgid "Link to a page where the licence is detailed."
|
||||||
msgstr "Link naar pagina waar de licentie details staan"
|
msgstr "Link naar pagina waar de licentie details staan"
|
||||||
|
|
||||||
#: models.py:121
|
#: models.py:122
|
||||||
msgid "URL template using OSM tile format"
|
msgid "URL template using OSM tile format"
|
||||||
msgstr "URL-sjabloon met OSM tegel-formaat"
|
msgstr "URL-sjabloon met OSM tegel-formaat"
|
||||||
|
|
||||||
#: models.py:127
|
#: models.py:128
|
||||||
msgid "Order of the tilelayers in the edit box"
|
msgid "Order of the tilelayers in the edit box"
|
||||||
msgstr "Volgorde van de tegel-lagen in het bewerkingsvak."
|
msgstr "Volgorde van de tegel-lagen in het bewerkingsvak."
|
||||||
|
|
||||||
#: models.py:175 models.py:479
|
#: models.py:176 models.py:487
|
||||||
msgid "Only editable with secret edit link"
|
msgid "Only editable with secret edit link"
|
||||||
msgstr "Alleen te bewerken met een geheime link"
|
msgstr "Alleen te bewerken met een geheime link"
|
||||||
|
|
||||||
#: models.py:176 models.py:480
|
#: models.py:177 models.py:488
|
||||||
msgid "Everyone can edit"
|
msgid "Everyone can edit"
|
||||||
msgstr "Iedereen kan wijzigingen maken"
|
msgstr "Iedereen kan wijzigingen maken"
|
||||||
|
|
||||||
#: models.py:179 models.py:473
|
#: models.py:180 models.py:481
|
||||||
msgid "Everyone"
|
msgid "Everyone"
|
||||||
msgstr "Iedereen"
|
msgstr "Iedereen"
|
||||||
|
|
||||||
#: models.py:180 models.py:189 models.py:474
|
#: models.py:181 models.py:190 models.py:482
|
||||||
msgid "Editors and team only"
|
msgid "Editors and team only"
|
||||||
msgstr "Alleen redacteuren en team"
|
msgstr "Alleen redacteuren en team"
|
||||||
|
|
||||||
#: models.py:181 models.py:475
|
#: models.py:182 models.py:483
|
||||||
msgid "Owner only"
|
msgid "Owner only"
|
||||||
msgstr "Alleen eigenaar"
|
msgstr "Alleen eigenaar"
|
||||||
|
|
||||||
#: models.py:184
|
#: models.py:185
|
||||||
msgid "Draft (private)"
|
msgid "Draft (private)"
|
||||||
msgstr "Ontwerp (privé)"
|
msgstr "Ontwerp (privé)"
|
||||||
|
|
||||||
#: models.py:185
|
#: models.py:186
|
||||||
msgid "Everyone (public)"
|
msgid "Everyone (public)"
|
||||||
msgstr "Iedereen (openbaar)"
|
msgstr "Iedereen (openbaar)"
|
||||||
|
|
||||||
#: models.py:188
|
#: models.py:189
|
||||||
msgid "Anyone with link"
|
msgid "Anyone with link"
|
||||||
msgstr "Iedereen met een link"
|
msgstr "Iedereen met een link"
|
||||||
|
|
||||||
#: models.py:190
|
#: models.py:191
|
||||||
msgid "Blocked"
|
msgid "Blocked"
|
||||||
msgstr "geblokkeerd"
|
msgstr "geblokkeerd"
|
||||||
|
|
||||||
#: models.py:191 models.py:469
|
#: models.py:192 models.py:477
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Verwijderd"
|
msgstr "Verwijderd"
|
||||||
|
|
||||||
#: models.py:194
|
#: models.py:195
|
||||||
msgid "center"
|
msgid "center"
|
||||||
msgstr "centreer"
|
msgstr "centreer"
|
||||||
|
|
||||||
#: models.py:195
|
#: models.py:196
|
||||||
msgid "zoom"
|
msgid "zoom"
|
||||||
msgstr "zoom"
|
msgstr "zoom"
|
||||||
|
|
||||||
#: models.py:197
|
#: models.py:198
|
||||||
msgid "locate"
|
msgid "locate"
|
||||||
msgstr "zoek"
|
msgstr "zoek"
|
||||||
|
|
||||||
#: models.py:197
|
#: models.py:198
|
||||||
msgid "Locate user on load?"
|
msgid "Locate user on load?"
|
||||||
msgstr "Gebruiker zoeken tijdens laden?"
|
msgstr "Gebruiker zoeken tijdens laden?"
|
||||||
|
|
||||||
#: models.py:201
|
#: models.py:202
|
||||||
msgid "Choose the map licence."
|
msgid "Choose the map licence."
|
||||||
msgstr "Kies de kaartlicentie"
|
msgstr "Kies de kaartlicentie"
|
||||||
|
|
||||||
#: models.py:202
|
#: models.py:203
|
||||||
msgid "licence"
|
msgid "licence"
|
||||||
msgstr "Licentie"
|
msgstr "Licentie"
|
||||||
|
|
||||||
#: models.py:213
|
#: models.py:214
|
||||||
msgid "owner"
|
msgid "owner"
|
||||||
msgstr "eigenaar"
|
msgstr "eigenaar"
|
||||||
|
|
||||||
#: models.py:217
|
#: models.py:218
|
||||||
msgid "editors"
|
msgid "editors"
|
||||||
msgstr "editors"
|
msgstr "editors"
|
||||||
|
|
||||||
#: models.py:223
|
#: models.py:224
|
||||||
msgid "team"
|
msgid "team"
|
||||||
msgstr "team"
|
msgstr "team"
|
||||||
|
|
||||||
#: models.py:229 models.py:501
|
#: models.py:230 models.py:509
|
||||||
msgid "edit status"
|
msgid "edit status"
|
||||||
msgstr "wijzig status"
|
msgstr "wijzig status"
|
||||||
|
|
||||||
#: models.py:234 models.py:506
|
#: models.py:235 models.py:514
|
||||||
msgid "share status"
|
msgid "share status"
|
||||||
msgstr "deel status"
|
msgstr "deel status"
|
||||||
|
|
||||||
#: models.py:237 models.py:496
|
#: models.py:238 models.py:504
|
||||||
msgid "settings"
|
msgid "settings"
|
||||||
msgstr "instellingen"
|
msgstr "instellingen"
|
||||||
|
|
||||||
#: models.py:407
|
#: models.py:410
|
||||||
msgid "Clone of"
|
msgid "Clone of"
|
||||||
msgstr "Kopie van"
|
msgstr "Kopie van"
|
||||||
|
|
||||||
#: models.py:468 models.py:472 models.py:478
|
#: models.py:476 models.py:480 models.py:486
|
||||||
msgid "Inherit"
|
msgid "Inherit"
|
||||||
msgstr "overerven"
|
msgstr "overerven"
|
||||||
|
|
||||||
#: models.py:491
|
#: models.py:499
|
||||||
msgid "display on load"
|
msgid "display on load"
|
||||||
msgstr "toon tijdens laden"
|
msgstr "toon tijdens laden"
|
||||||
|
|
||||||
#: models.py:492
|
#: models.py:500
|
||||||
msgid "Display this layer on load."
|
msgid "Display this layer on load."
|
||||||
msgstr "Toon deze laag tijdens laden."
|
msgstr "Toon deze laag tijdens laden."
|
||||||
|
|
||||||
|
#: settings/base.py:295
|
||||||
|
msgid "Art and Culture"
|
||||||
|
msgstr "Kunst en cultuur"
|
||||||
|
|
||||||
|
#: settings/base.py:296
|
||||||
|
msgid "Cycling"
|
||||||
|
msgstr "Fietsen"
|
||||||
|
|
||||||
|
#: settings/base.py:297
|
||||||
|
msgid "Business"
|
||||||
|
msgstr "Zakelijk"
|
||||||
|
|
||||||
|
#: settings/base.py:298
|
||||||
|
msgid "Environment"
|
||||||
|
msgstr "Mlieu"
|
||||||
|
|
||||||
|
#: settings/base.py:299
|
||||||
|
msgid "Education"
|
||||||
|
msgstr "Educatie"
|
||||||
|
|
||||||
|
#: settings/base.py:300
|
||||||
|
msgid "Food and Agriculture"
|
||||||
|
msgstr "Voedsel en landbouw"
|
||||||
|
|
||||||
|
#: settings/base.py:301
|
||||||
|
msgid "Geopolitics"
|
||||||
|
msgstr "Geopolitiek"
|
||||||
|
|
||||||
|
#: settings/base.py:302
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "Gezondheid"
|
||||||
|
|
||||||
|
#: settings/base.py:303
|
||||||
|
msgid "Hiking"
|
||||||
|
msgstr "Hiking"
|
||||||
|
|
||||||
|
#: settings/base.py:304
|
||||||
|
msgid "History"
|
||||||
|
msgstr "Geschiedenis"
|
||||||
|
|
||||||
|
#: settings/base.py:305
|
||||||
|
msgid "Public sector"
|
||||||
|
msgstr "Publieke sector"
|
||||||
|
|
||||||
|
#: settings/base.py:306
|
||||||
|
msgid "Science"
|
||||||
|
msgstr "Wetenschap"
|
||||||
|
|
||||||
|
#: settings/base.py:307
|
||||||
|
msgid "Shopping"
|
||||||
|
msgstr "Winkelen"
|
||||||
|
|
||||||
|
#: settings/base.py:308
|
||||||
|
msgid "Sport and Leisure"
|
||||||
|
msgstr "Sport en vrijetijd"
|
||||||
|
|
||||||
|
#: settings/base.py:309
|
||||||
|
msgid "Travel"
|
||||||
|
msgstr "Reizen"
|
||||||
|
|
||||||
|
#: settings/base.py:310
|
||||||
|
msgid "Transports"
|
||||||
|
msgstr "Transport"
|
||||||
|
|
||||||
|
#: settings/base.py:311
|
||||||
|
msgid "Tourism"
|
||||||
|
msgstr "Toerisme"
|
||||||
|
|
||||||
#: templates/403.html:8
|
#: templates/403.html:8
|
||||||
msgid ""
|
msgid ""
|
||||||
"<a href=\"https://discover.umap-project.org/support/faq/#map-statuses\" "
|
"<a href=\"https://discover.umap-project.org/support/faq/#map-statuses\" "
|
||||||
|
@ -421,7 +489,7 @@ msgstr "Mijn teams"
|
||||||
msgid "Map of the uMaps"
|
msgid "Map of the uMaps"
|
||||||
msgstr "Kaart van de uMaps"
|
msgstr "Kaart van de uMaps"
|
||||||
|
|
||||||
#: templates/umap/home.html:24
|
#: templates/umap/home.html:25
|
||||||
msgid "Get inspired, browse maps"
|
msgid "Get inspired, browse maps"
|
||||||
msgstr "Laat u inspireren, blader door kaarten"
|
msgstr "Laat u inspireren, blader door kaarten"
|
||||||
|
|
||||||
|
@ -429,11 +497,15 @@ msgstr "Laat u inspireren, blader door kaarten"
|
||||||
msgid "You are logged in. Continuing..."
|
msgid "You are logged in. Continuing..."
|
||||||
msgstr "U bent ingelogd. Ga verder..."
|
msgstr "U bent ingelogd. Ga verder..."
|
||||||
|
|
||||||
#: templates/umap/map_list.html:11 views.py:437
|
#: templates/umap/map_list.html:18 views.py:444
|
||||||
msgid "by"
|
msgid "by"
|
||||||
msgstr "door"
|
msgstr "door"
|
||||||
|
|
||||||
#: templates/umap/map_list.html:20
|
#: templates/umap/map_list.html:22
|
||||||
|
msgid "See the map"
|
||||||
|
msgstr "Zie de kaart"
|
||||||
|
|
||||||
|
#: templates/umap/map_list.html:28
|
||||||
msgid "More"
|
msgid "More"
|
||||||
msgstr "Meer"
|
msgstr "Meer"
|
||||||
|
|
||||||
|
@ -592,11 +664,15 @@ msgid_plural "%(count)s maps found:"
|
||||||
msgstr[0] "%(count)s kaarten gevonden:"
|
msgstr[0] "%(count)s kaarten gevonden:"
|
||||||
msgstr[1] "%(count)s kaarten gevonden:"
|
msgstr[1] "%(count)s kaarten gevonden:"
|
||||||
|
|
||||||
#: templates/umap/search.html:28
|
#: templates/umap/search.html:30
|
||||||
msgid "No map found."
|
msgid "No map found."
|
||||||
msgstr "Geen kaart gevonden."
|
msgstr "Geen kaart gevonden."
|
||||||
|
|
||||||
#: templates/umap/search.html:33
|
#: templates/umap/search.html:36
|
||||||
|
msgid "Latest created maps in category"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/umap/search.html:43
|
||||||
msgid "Latest created maps"
|
msgid "Latest created maps"
|
||||||
msgstr "Laatste gemaakte kaarten"
|
msgstr "Laatste gemaakte kaarten"
|
||||||
|
|
||||||
|
@ -604,7 +680,11 @@ msgstr "Laatste gemaakte kaarten"
|
||||||
msgid "Search maps"
|
msgid "Search maps"
|
||||||
msgstr "Zoek kaarten"
|
msgstr "Zoek kaarten"
|
||||||
|
|
||||||
#: templates/umap/search_bar.html:16
|
#: templates/umap/search_bar.html:14
|
||||||
|
msgid "Any category"
|
||||||
|
msgstr "Elke categorie"
|
||||||
|
|
||||||
|
#: templates/umap/search_bar.html:19
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Zoeken"
|
msgstr "Zoeken"
|
||||||
|
|
||||||
|
@ -668,70 +748,70 @@ msgstr "Gebruikers"
|
||||||
msgid "New team"
|
msgid "New team"
|
||||||
msgstr "Nieuw Team"
|
msgstr "Nieuw Team"
|
||||||
|
|
||||||
#: views.py:234
|
#: views.py:235
|
||||||
msgid "Cannot delete a team with more than one member"
|
msgid "Cannot delete a team with more than one member"
|
||||||
msgstr "Kan een team met meer dan één lid niet verwijderen"
|
msgstr "Kan een team met meer dan één lid niet verwijderen"
|
||||||
|
|
||||||
#: views.py:238
|
#: views.py:239
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Team “%(name)s” has been deleted"
|
msgid "Team “%(name)s” has been deleted"
|
||||||
msgstr "Team “%(name)s” is verwijderd"
|
msgstr "Team “%(name)s” is verwijderd"
|
||||||
|
|
||||||
#: views.py:442
|
#: views.py:449
|
||||||
msgid "View the map"
|
msgid "View the map"
|
||||||
msgstr "Bekijk de kaart"
|
msgstr "Bekijk de kaart"
|
||||||
|
|
||||||
#: views.py:838
|
#: views.py:845
|
||||||
msgid "See full screen"
|
msgid "See full screen"
|
||||||
msgstr "Volledig scherm weergeven"
|
msgstr "Volledig scherm weergeven"
|
||||||
|
|
||||||
#: views.py:981
|
#: views.py:988
|
||||||
msgid "Map editors updated with success!"
|
msgid "Map editors updated with success!"
|
||||||
msgstr "Kaarteditors met succes bijgewerkt!"
|
msgstr "Kaarteditors met succes bijgewerkt!"
|
||||||
|
|
||||||
#: views.py:1017
|
#: views.py:1024
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The uMap edit link for your map: %(map_name)s"
|
msgid "The uMap edit link for your map: %(map_name)s"
|
||||||
msgstr "De uMap-bewerkingslink voor uw kaart: %(map_name)s"
|
msgstr "De uMap-bewerkingslink voor uw kaart: %(map_name)s"
|
||||||
|
|
||||||
#: views.py:1020
|
#: views.py:1027
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Here is your secret edit link: %(link)s"
|
msgid "Here is your secret edit link: %(link)s"
|
||||||
msgstr "Hier is je geheime bewerkingslink: %(link)s"
|
msgstr "Hier is je geheime bewerkingslink: %(link)s"
|
||||||
|
|
||||||
#: views.py:1027
|
#: views.py:1034
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Can't send email to %(email)s"
|
msgid "Can't send email to %(email)s"
|
||||||
msgstr "Kan geen e-mail verzenden naar %(email)s"
|
msgstr "Kan geen e-mail verzenden naar %(email)s"
|
||||||
|
|
||||||
#: views.py:1030
|
#: views.py:1037
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Email sent to %(email)s"
|
msgid "Email sent to %(email)s"
|
||||||
msgstr "E-mail verzonden naar %(email)s"
|
msgstr "E-mail verzonden naar %(email)s"
|
||||||
|
|
||||||
#: views.py:1041
|
#: views.py:1048
|
||||||
msgid "Only its owner can delete the map."
|
msgid "Only its owner can delete the map."
|
||||||
msgstr "Kaart kan alleen door eigenaar worden verwijderd."
|
msgstr "Kaart kan alleen door eigenaar worden verwijderd."
|
||||||
|
|
||||||
#: views.py:1044
|
#: views.py:1054
|
||||||
msgid "Map successfully deleted."
|
msgid "Map successfully deleted."
|
||||||
msgstr "Kaart succesvol verwijderd."
|
msgstr "Kaart succesvol verwijderd."
|
||||||
|
|
||||||
#: views.py:1070
|
#: views.py:1080
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your map has been cloned! If you want to edit this map from another "
|
"Your map has been cloned! If you want to edit this map from another "
|
||||||
"computer, please use this link: %(anonymous_url)s"
|
"computer, please use this link: %(anonymous_url)s"
|
||||||
msgstr "Uw kaart is gekopieerd! Als u deze kaart wilt wijzigen vanaf een andere computer, gebruik dan deze link: %(anonymous_url)s"
|
msgstr "Uw kaart is gekopieerd! Als u deze kaart wilt wijzigen vanaf een andere computer, gebruik dan deze link: %(anonymous_url)s"
|
||||||
|
|
||||||
#: views.py:1075
|
#: views.py:1085
|
||||||
msgid "Congratulations, your map has been cloned!"
|
msgid "Congratulations, your map has been cloned!"
|
||||||
msgstr "Gefeliciteerd, uw kaart is gekopieerd!"
|
msgstr "Gefeliciteerd, uw kaart is gekopieerd!"
|
||||||
|
|
||||||
#: views.py:1329
|
#: views.py:1339
|
||||||
msgid "Layer successfully deleted."
|
msgid "Layer successfully deleted."
|
||||||
msgstr "Laag is verwijderd."
|
msgstr "Laag is verwijderd."
|
||||||
|
|
||||||
#: views.py:1351
|
#: views.py:1361
|
||||||
msgid "Permissions updated with success!"
|
msgid "Permissions updated with success!"
|
||||||
msgstr "Machtigingen met succes bijgewerkt!"
|
msgstr "Machtigingen met succes bijgewerkt!"
|
||||||
|
|
|
@ -164,8 +164,8 @@ LOGIN_REDIRECT_URL = "login_popup_end"
|
||||||
STATIC_URL = "/static/"
|
STATIC_URL = "/static/"
|
||||||
MEDIA_URL = "/uploads/"
|
MEDIA_URL = "/uploads/"
|
||||||
|
|
||||||
STATIC_ROOT = os.path.join("static")
|
STATIC_ROOT = env("STATIC_ROOT", default=os.path.join("static"))
|
||||||
MEDIA_ROOT = os.path.join("uploads")
|
MEDIA_ROOT = env("MEDIA_ROOT", default=os.path.join("uploads"))
|
||||||
|
|
||||||
STATICFILES_FINDERS = [
|
STATICFILES_FINDERS = [
|
||||||
"django.contrib.staticfiles.finders.FileSystemFinder",
|
"django.contrib.staticfiles.finders.FileSystemFinder",
|
||||||
|
|
|
@ -235,3 +235,7 @@ dt {
|
||||||
display: block;
|
display: block;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
mark {
|
||||||
|
background-color: var(--color-lightCyan);
|
||||||
|
padding: 0 var(--small-box-padding);
|
||||||
|
}
|
||||||
|
|
|
@ -167,7 +167,7 @@
|
||||||
.umap-caption-bar .umap-map-author {
|
.umap-caption-bar .umap-map-author {
|
||||||
margin-inline-end: 10px;
|
margin-inline-end: 10px;
|
||||||
}
|
}
|
||||||
.umap-caption-bar > button + button:after,
|
.umap-caption-bar:has(select:not([hidden])) > button + button:after,
|
||||||
.umap-caption-bar > button + button:before {
|
.umap-caption-bar > button + button:before {
|
||||||
content: '|';
|
content: '|';
|
||||||
padding-inline-start: 10px;
|
padding-inline-start: 10px;
|
||||||
|
|
|
@ -232,6 +232,7 @@ export default class Browser {
|
||||||
toggle.addEventListener('click', () => this.toggleLayers())
|
toggle.addEventListener('click', () => this.toggleLayers())
|
||||||
fitBounds.addEventListener('click', () => this._umap.fitDataBounds())
|
fitBounds.addEventListener('click', () => this._umap.fitDataBounds())
|
||||||
download.addEventListener('click', () => this.downloadVisible(download))
|
download.addEventListener('click', () => this.downloadVisible(download))
|
||||||
|
download.hidden = this._umap.getProperty('embedControl') === false
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadVisible(element) {
|
downloadVisible(element) {
|
||||||
|
|
|
@ -418,6 +418,10 @@ export class DataLayer {
|
||||||
|
|
||||||
removeFeature(feature, sync) {
|
removeFeature(feature, sync) {
|
||||||
const id = stamp(feature)
|
const id = stamp(feature)
|
||||||
|
// This feature was not yet added, may be after
|
||||||
|
// hitting Escape while drawing a new line or
|
||||||
|
// polygon, not yet valid (not enough points)
|
||||||
|
if (!this._index.includes(id)) return
|
||||||
if (sync !== false) {
|
if (sync !== false) {
|
||||||
const oldValue = feature.toGeoJSON()
|
const oldValue = feature.toGeoJSON()
|
||||||
feature.sync.delete(oldValue)
|
feature.sync.delete(oldValue)
|
||||||
|
|
|
@ -23,6 +23,7 @@ BaseMap.mergeOptions({
|
||||||
|
|
||||||
const ControlsMixin = {
|
const ControlsMixin = {
|
||||||
HIDDABLE_CONTROLS: [
|
HIDDABLE_CONTROLS: [
|
||||||
|
'home',
|
||||||
'zoom',
|
'zoom',
|
||||||
'search',
|
'search',
|
||||||
'fullscreen',
|
'fullscreen',
|
||||||
|
@ -41,6 +42,7 @@ const ControlsMixin = {
|
||||||
if (this._umap.hasEditMode() && !this.options.noControl) {
|
if (this._umap.hasEditMode() && !this.options.noControl) {
|
||||||
new U.EditControl(this).addTo(this)
|
new U.EditControl(this).addTo(this)
|
||||||
}
|
}
|
||||||
|
this._controls.home = new U.HomeControl(this._umap)
|
||||||
this._controls.zoom = new Control.Zoom({
|
this._controls.zoom = new Control.Zoom({
|
||||||
zoomInTitle: translate('Zoom in'),
|
zoomInTitle: translate('Zoom in'),
|
||||||
zoomOutTitle: translate('Zoom out'),
|
zoomOutTitle: translate('Zoom out'),
|
||||||
|
@ -91,10 +93,6 @@ const ControlsMixin = {
|
||||||
}
|
}
|
||||||
if (this.options.noControl) return
|
if (this.options.noControl) return
|
||||||
|
|
||||||
// Do not display in an iframe.
|
|
||||||
if (window.self === window.top) {
|
|
||||||
this._controls.home = new U.HomeControl().addTo(this)
|
|
||||||
}
|
|
||||||
this._controls.attribution = new U.AttributionControl().addTo(this)
|
this._controls.attribution = new U.AttributionControl().addTo(this)
|
||||||
if (this.options.miniMap) {
|
if (this.options.miniMap) {
|
||||||
this.whenReady(function () {
|
this.whenReady(function () {
|
||||||
|
|
|
@ -204,6 +204,12 @@ export const SCHEMA = {
|
||||||
type: Object,
|
type: Object,
|
||||||
impacts: ['data'],
|
impacts: ['data'],
|
||||||
},
|
},
|
||||||
|
homeControl: {
|
||||||
|
type: Boolean,
|
||||||
|
impacts: ['ui'],
|
||||||
|
label: translate('Display the back to home icon'),
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
iconClass: {
|
iconClass: {
|
||||||
type: String,
|
type: String,
|
||||||
impacts: ['data'],
|
impacts: ['data'],
|
||||||
|
@ -275,6 +281,12 @@ export const SCHEMA = {
|
||||||
label: translate('Label key'),
|
label: translate('Label key'),
|
||||||
inheritable: true,
|
inheritable: true,
|
||||||
},
|
},
|
||||||
|
layerSwitcher: {
|
||||||
|
type: Boolean,
|
||||||
|
impacts: ['ui'],
|
||||||
|
label: translate('Do you want to display layer switcher in caption bar?'),
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
licence: {
|
licence: {
|
||||||
type: String,
|
type: String,
|
||||||
impacts: ['ui'],
|
impacts: ['ui'],
|
||||||
|
|
|
@ -180,7 +180,7 @@ const BOTTOM_BAR_TEMPLATE = `
|
||||||
<button class="umap-about-link flat" type="button" title="${translate('Open caption')}" data-ref="caption">${translate('Open caption')}</button>
|
<button class="umap-about-link flat" type="button" title="${translate('Open caption')}" data-ref="caption">${translate('Open caption')}</button>
|
||||||
<button class="umap-open-browser-link flat" type="button" title="${translate('Browse data')}" data-ref="browse">${translate('Browse data')}</button>
|
<button class="umap-open-browser-link flat" type="button" title="${translate('Browse data')}" data-ref="browse">${translate('Browse data')}</button>
|
||||||
<button class="umap-open-browser-link flat" type="button" title="${translate('Filter data')}" data-ref="filter">${translate('Filter data')}</button>
|
<button class="umap-open-browser-link flat" type="button" title="${translate('Filter data')}" data-ref="filter">${translate('Filter data')}</button>
|
||||||
<select data-ref=layers></select>
|
<select data-ref="layers"></select>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ export class BottomBar extends WithTemplate {
|
||||||
this.elements.layers.hidden = true
|
this.elements.layers.hidden = true
|
||||||
} else {
|
} else {
|
||||||
this.elements.layers.appendChild(Utils.loadTemplate(`<option value=""></option>`))
|
this.elements.layers.appendChild(Utils.loadTemplate(`<option value=""></option>`))
|
||||||
this.elements.layers.hidden = false
|
this.elements.layers.hidden = !this._umap.getProperty('layerSwitcher')
|
||||||
const visible = datalayers.filter((datalayer) => datalayer.isVisible())
|
const visible = datalayers.filter((datalayer) => datalayer.isVisible())
|
||||||
for (const datalayer of datalayers) {
|
for (const datalayer of datalayers) {
|
||||||
const selected = visible.length === 1 && datalayer.isVisible() ? 'selected' : ''
|
const selected = visible.length === 1 && datalayer.isVisible() ? 'selected' : ''
|
||||||
|
|
|
@ -106,6 +106,11 @@ export default class Umap {
|
||||||
|
|
||||||
if (geojson.properties.schema) this.overrideSchema(geojson.properties.schema)
|
if (geojson.properties.schema) this.overrideSchema(geojson.properties.schema)
|
||||||
|
|
||||||
|
// Do not display in an iframe.
|
||||||
|
if (window.self !== window.top) {
|
||||||
|
geojson.properties.homeControl = false
|
||||||
|
}
|
||||||
|
|
||||||
this._leafletMap.setup()
|
this._leafletMap.setup()
|
||||||
|
|
||||||
this.panel = new Panel(this, this._leafletMap)
|
this.panel = new Panel(this, this._leafletMap)
|
||||||
|
@ -828,6 +833,7 @@ export default class Umap {
|
||||||
UIFields.push(`properties.${name}Control`)
|
UIFields.push(`properties.${name}Control`)
|
||||||
}
|
}
|
||||||
UIFields = UIFields.concat([
|
UIFields = UIFields.concat([
|
||||||
|
'properties.homeControl',
|
||||||
'properties.moreControl',
|
'properties.moreControl',
|
||||||
'properties.scrollWheelZoom',
|
'properties.scrollWheelZoom',
|
||||||
'properties.miniMap',
|
'properties.miniMap',
|
||||||
|
@ -836,6 +842,7 @@ export default class Umap {
|
||||||
'properties.displayPopupFooter',
|
'properties.displayPopupFooter',
|
||||||
'properties.captionBar',
|
'properties.captionBar',
|
||||||
'properties.captionMenus',
|
'properties.captionMenus',
|
||||||
|
'properties.layerSwitcher',
|
||||||
])
|
])
|
||||||
const builder = new MutatingForm(this, UIFields, { umap: this })
|
const builder = new MutatingForm(this, UIFields, { umap: this })
|
||||||
const controlsOptions = DomUtil.createFieldset(
|
const controlsOptions = DomUtil.createFieldset(
|
||||||
|
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Vyberte tuto datovou sadu",
|
"Choose this dataset": "Vyberte tuto datovou sadu",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematická data z OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematická data z OpenStreetMap",
|
||||||
"Choose a theme": "Vyberte si téma",
|
"Choose a theme": "Vyberte si téma",
|
||||||
"Symplify all geometries to points": "Zjednodušte všechny geometrie na body",
|
|
||||||
"Choose this data": "Zvolte tato data",
|
"Choose this data": "Zvolte tato data",
|
||||||
"Search admin boundary": "Hledat hranici správce",
|
"Search admin boundary": "Hledat hranici správce",
|
||||||
"Please choose a theme and a boundary first.": "Nejprve si vyberte téma a hranice.",
|
"Please choose a theme and a boundary first.": "Nejprve si vyberte téma a hranice.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("cs_CZ", locale)
|
L.registerLocale("cs_CZ", locale)
|
||||||
L.setLocale("cs_CZ")
|
L.setLocale("cs_CZ")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Vyberte tuto datovou sadu",
|
"Choose this dataset": "Vyberte tuto datovou sadu",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematická data z OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematická data z OpenStreetMap",
|
||||||
"Choose a theme": "Vyberte si téma",
|
"Choose a theme": "Vyberte si téma",
|
||||||
"Symplify all geometries to points": "Zjednodušte všechny geometrie na body",
|
|
||||||
"Choose this data": "Zvolte tato data",
|
"Choose this data": "Zvolte tato data",
|
||||||
"Search admin boundary": "Hledat hranici správce",
|
"Search admin boundary": "Hledat hranici správce",
|
||||||
"Please choose a theme and a boundary first.": "Nejprve si vyberte téma a hranice.",
|
"Please choose a theme and a boundary first.": "Nejprve si vyberte téma a hranice.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Diesen Datensatz auswählen",
|
"Choose this dataset": "Diesen Datensatz auswählen",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische Daten von OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische Daten von OpenStreetMap",
|
||||||
"Choose a theme": "Thema auswählen",
|
"Choose a theme": "Thema auswählen",
|
||||||
"Symplify all geometries to points": "Alle Geometrien zu Punkten vereinfachen",
|
|
||||||
"Choose this data": "Diese Daten auswählen",
|
"Choose this data": "Diese Daten auswählen",
|
||||||
"Search admin boundary": "Administrative Grenze suchen",
|
"Search admin boundary": "Administrative Grenze suchen",
|
||||||
"Please choose a theme and a boundary first.": "Bitte wähle zuerst ein Thema und eine administrative Grenze.",
|
"Please choose a theme and a boundary first.": "Bitte wähle zuerst ein Thema und eine administrative Grenze.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("de", locale)
|
L.registerLocale("de", locale)
|
||||||
L.setLocale("de")
|
L.setLocale("de")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Diesen Datensatz auswählen",
|
"Choose this dataset": "Diesen Datensatz auswählen",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische Daten von OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische Daten von OpenStreetMap",
|
||||||
"Choose a theme": "Thema auswählen",
|
"Choose a theme": "Thema auswählen",
|
||||||
"Symplify all geometries to points": "Alle Geometrien zu Punkten vereinfachen",
|
|
||||||
"Choose this data": "Diese Daten auswählen",
|
"Choose this data": "Diese Daten auswählen",
|
||||||
"Search admin boundary": "Administrative Grenze suchen",
|
"Search admin boundary": "Administrative Grenze suchen",
|
||||||
"Please choose a theme and a boundary first.": "Bitte wähle zuerst ein Thema und eine administrative Grenze.",
|
"Please choose a theme and a boundary first.": "Bitte wähle zuerst ein Thema und eine administrative Grenze.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Choose this dataset",
|
"Choose this dataset": "Choose this dataset",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
||||||
"Choose a theme": "Choose a theme",
|
"Choose a theme": "Choose a theme",
|
||||||
"Symplify all geometries to points": "Symplify all geometries to points",
|
|
||||||
"Choose this data": "Choose this data",
|
"Choose this data": "Choose this data",
|
||||||
"Search admin boundary": "Search admin boundary",
|
"Search admin boundary": "Search admin boundary",
|
||||||
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("en", locale)
|
L.registerLocale("en", locale)
|
||||||
L.setLocale("en")
|
L.setLocale("en")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Choose this dataset",
|
"Choose this dataset": "Choose this dataset",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
||||||
"Choose a theme": "Choose a theme",
|
"Choose a theme": "Choose a theme",
|
||||||
"Symplify all geometries to points": "Symplify all geometries to points",
|
|
||||||
"Choose this data": "Choose this data",
|
"Choose this data": "Choose this data",
|
||||||
"Search admin boundary": "Search admin boundary",
|
"Search admin boundary": "Search admin boundary",
|
||||||
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Elegir este conjunto de datos",
|
"Choose this dataset": "Elegir este conjunto de datos",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
||||||
"Choose a theme": "Elegir un tema",
|
"Choose a theme": "Elegir un tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas las geometrías a puntos",
|
|
||||||
"Choose this data": "Elegir estos datos",
|
"Choose this data": "Elegir estos datos",
|
||||||
"Search admin boundary": "Buscar límite administrativo",
|
"Search admin boundary": "Buscar límite administrativo",
|
||||||
"Please choose a theme and a boundary first.": "Primero elige un tema y un límite.",
|
"Please choose a theme and a boundary first.": "Primero elige un tema y un límite.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("es", locale)
|
L.registerLocale("es", locale)
|
||||||
L.setLocale("es")
|
L.setLocale("es")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Elegir este conjunto de datos",
|
"Choose this dataset": "Elegir este conjunto de datos",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
||||||
"Choose a theme": "Elegir un tema",
|
"Choose a theme": "Elegir un tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas las geometrías a puntos",
|
|
||||||
"Choose this data": "Elegir estos datos",
|
"Choose this data": "Elegir estos datos",
|
||||||
"Search admin boundary": "Buscar límite administrativo",
|
"Search admin boundary": "Buscar límite administrativo",
|
||||||
"Please choose a theme and a boundary first.": "Primero elige un tema y un límite.",
|
"Please choose a theme and a boundary first.": "Primero elige un tema y un límite.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Aukeratu datu-multzo hau",
|
"Choose this dataset": "Aukeratu datu-multzo hau",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: OpenStreetMap-eko datu tematikoak",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: OpenStreetMap-eko datu tematikoak",
|
||||||
"Choose a theme": "Aukeratu gai bat",
|
"Choose a theme": "Aukeratu gai bat",
|
||||||
"Symplify all geometries to points": "Sinplifikatu geometria guztiak puntutan",
|
|
||||||
"Choose this data": "Aukeratu datu hauek",
|
"Choose this data": "Aukeratu datu hauek",
|
||||||
"Search admin boundary": "Bilatu muga administratiboa",
|
"Search admin boundary": "Bilatu muga administratiboa",
|
||||||
"Please choose a theme and a boundary first.": "Aukeratu gai bat eta muga bat.",
|
"Please choose a theme and a boundary first.": "Aukeratu gai bat eta muga bat.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("eu", locale)
|
L.registerLocale("eu", locale)
|
||||||
L.setLocale("eu")
|
L.setLocale("eu")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Aukeratu datu-multzo hau",
|
"Choose this dataset": "Aukeratu datu-multzo hau",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: OpenStreetMap-eko datu tematikoak",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: OpenStreetMap-eko datu tematikoak",
|
||||||
"Choose a theme": "Aukeratu gai bat",
|
"Choose a theme": "Aukeratu gai bat",
|
||||||
"Symplify all geometries to points": "Sinplifikatu geometria guztiak puntutan",
|
|
||||||
"Choose this data": "Aukeratu datu hauek",
|
"Choose this data": "Aukeratu datu hauek",
|
||||||
"Search admin boundary": "Bilatu muga administratiboa",
|
"Search admin boundary": "Bilatu muga administratiboa",
|
||||||
"Please choose a theme and a boundary first.": "Aukeratu gai bat eta muga bat.",
|
"Please choose a theme and a boundary first.": "Aukeratu gai bat eta muga bat.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "انتخاب این مجموعهداده",
|
"Choose this dataset": "انتخاب این مجموعهداده",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:دادههای موضوعی از اوپناستریتمپ",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:دادههای موضوعی از اوپناستریتمپ",
|
||||||
"Choose a theme": "یک موضوع انتخاب کنید",
|
"Choose a theme": "یک موضوع انتخاب کنید",
|
||||||
"Symplify all geometries to points": "همهٔ هندسهها به نقطه ساده شوند",
|
|
||||||
"Choose this data": "انتخاب این داده",
|
"Choose this data": "انتخاب این داده",
|
||||||
"Search admin boundary": "جستجوی تقسیمات (admin boundary)",
|
"Search admin boundary": "جستجوی تقسیمات (admin boundary)",
|
||||||
"Please choose a theme and a boundary first.": "لطفاً ابتدا یک موضوع و یک تقسیمات انتخاب کنید.",
|
"Please choose a theme and a boundary first.": "لطفاً ابتدا یک موضوع و یک تقسیمات انتخاب کنید.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("fa_IR", locale)
|
L.registerLocale("fa_IR", locale)
|
||||||
L.setLocale("fa_IR")
|
L.setLocale("fa_IR")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "انتخاب این مجموعهداده",
|
"Choose this dataset": "انتخاب این مجموعهداده",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:دادههای موضوعی از اوپناستریتمپ",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:دادههای موضوعی از اوپناستریتمپ",
|
||||||
"Choose a theme": "یک موضوع انتخاب کنید",
|
"Choose a theme": "یک موضوع انتخاب کنید",
|
||||||
"Symplify all geometries to points": "همهٔ هندسهها به نقطه ساده شوند",
|
|
||||||
"Choose this data": "انتخاب این داده",
|
"Choose this data": "انتخاب این داده",
|
||||||
"Search admin boundary": "جستجوی تقسیمات (admin boundary)",
|
"Search admin boundary": "جستجوی تقسیمات (admin boundary)",
|
||||||
"Please choose a theme and a boundary first.": "لطفاً ابتدا یک موضوع و یک تقسیمات انتخاب کنید.",
|
"Please choose a theme and a boundary first.": "لطفاً ابتدا یک موضوع و یک تقسیمات انتخاب کنید.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Choisir ce jeu de données",
|
"Choose this dataset": "Choisir ce jeu de données",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GéoDataMine : données thématiques à partir d'OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GéoDataMine : données thématiques à partir d'OpenStreetMap",
|
||||||
"Choose a theme": "Choisir un thème",
|
"Choose a theme": "Choisir un thème",
|
||||||
"Symplify all geometries to points": "Simplifier les géométries en points",
|
|
||||||
"Choose this data": "Choisir ces données",
|
"Choose this data": "Choisir ces données",
|
||||||
"Search admin boundary": "Chercher une limite administrative",
|
"Search admin boundary": "Chercher une limite administrative",
|
||||||
"Please choose a theme and a boundary first.": "Merci de choisir un thème et une limite administrative.",
|
"Please choose a theme and a boundary first.": "Merci de choisir un thème et une limite administrative.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Catégories",
|
"Tags": "Catégories",
|
||||||
"Geocode": "Géocoder"
|
"Geocode": "Géocoder",
|
||||||
|
"Display the back to home icon": "Afficher le bouton de retour à l'accueil",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Afficher un sélecteur de calques dans la barre de légende ?",
|
||||||
|
"Simplify all geometries to points": "Simplifier les géométries en points"
|
||||||
}
|
}
|
||||||
L.registerLocale("fr", locale)
|
L.registerLocale("fr", locale)
|
||||||
L.setLocale("fr")
|
L.setLocale("fr")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Choisir ce jeu de données",
|
"Choose this dataset": "Choisir ce jeu de données",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GéoDataMine : données thématiques à partir d'OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GéoDataMine : données thématiques à partir d'OpenStreetMap",
|
||||||
"Choose a theme": "Choisir un thème",
|
"Choose a theme": "Choisir un thème",
|
||||||
"Symplify all geometries to points": "Simplifier les géométries en points",
|
|
||||||
"Choose this data": "Choisir ces données",
|
"Choose this data": "Choisir ces données",
|
||||||
"Search admin boundary": "Chercher une limite administrative",
|
"Search admin boundary": "Chercher une limite administrative",
|
||||||
"Please choose a theme and a boundary first.": "Merci de choisir un thème et une limite administrative.",
|
"Please choose a theme and a boundary first.": "Merci de choisir un thème et une limite administrative.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Catégories",
|
"Tags": "Catégories",
|
||||||
"Geocode": "Géocoder"
|
"Geocode": "Géocoder",
|
||||||
|
"Display the back to home icon": "Afficher le bouton de retour à l'accueil",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Afficher un sélecteur de calques dans la barre de légende ?",
|
||||||
|
"Simplify all geometries to points": "Simplifier les géométries en points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Escoller este conxunto de datos",
|
"Choose this dataset": "Escoller este conxunto de datos",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
||||||
"Choose a theme": "Escoller un tema",
|
"Choose a theme": "Escoller un tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas as xeometrías a puntos",
|
|
||||||
"Choose this data": "Escoller estes datos",
|
"Choose this data": "Escoller estes datos",
|
||||||
"Search admin boundary": "Buscar un límite administrativo",
|
"Search admin boundary": "Buscar un límite administrativo",
|
||||||
"Please choose a theme and a boundary first.": "Escolle primeiro un tema e un límite.",
|
"Please choose a theme and a boundary first.": "Escolle primeiro un tema e un límite.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("gl", locale)
|
L.registerLocale("gl", locale)
|
||||||
L.setLocale("gl")
|
L.setLocale("gl")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Escoller este conxunto de datos",
|
"Choose this dataset": "Escoller este conxunto de datos",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: datos temáticos de OpenStreetMap",
|
||||||
"Choose a theme": "Escoller un tema",
|
"Choose a theme": "Escoller un tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas as xeometrías a puntos",
|
|
||||||
"Choose this data": "Escoller estes datos",
|
"Choose this data": "Escoller estes datos",
|
||||||
"Search admin boundary": "Buscar un límite administrativo",
|
"Search admin boundary": "Buscar un límite administrativo",
|
||||||
"Please choose a theme and a boundary first.": "Escolle primeiro un tema e un límite.",
|
"Please choose a theme and a boundary first.": "Escolle primeiro un tema e un límite.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Ezen adatkészlet kiválasztása",
|
"Choose this dataset": "Ezen adatkészlet kiválasztása",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematikus adatok az OpenStreetMap-ről",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematikus adatok az OpenStreetMap-ről",
|
||||||
"Choose a theme": "Téma kiválasztása",
|
"Choose a theme": "Téma kiválasztása",
|
||||||
"Symplify all geometries to points": "Az összes alakzat egyszerűsítése pontokká",
|
|
||||||
"Choose this data": "Ezen adatok kiválasztása",
|
"Choose this data": "Ezen adatok kiválasztása",
|
||||||
"Search admin boundary": "Közigazgatási határ keresése",
|
"Search admin boundary": "Közigazgatási határ keresése",
|
||||||
"Please choose a theme and a boundary first.": "Először válasszon ki egy témát és egy határt.",
|
"Please choose a theme and a boundary first.": "Először válasszon ki egy témát és egy határt.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("hu", locale)
|
L.registerLocale("hu", locale)
|
||||||
L.setLocale("hu")
|
L.setLocale("hu")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Ezen adatkészlet kiválasztása",
|
"Choose this dataset": "Ezen adatkészlet kiválasztása",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematikus adatok az OpenStreetMap-ről",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: tematikus adatok az OpenStreetMap-ről",
|
||||||
"Choose a theme": "Téma kiválasztása",
|
"Choose a theme": "Téma kiválasztása",
|
||||||
"Symplify all geometries to points": "Az összes alakzat egyszerűsítése pontokká",
|
|
||||||
"Choose this data": "Ezen adatok kiválasztása",
|
"Choose this data": "Ezen adatok kiválasztása",
|
||||||
"Search admin boundary": "Közigazgatási határ keresése",
|
"Search admin boundary": "Közigazgatási határ keresése",
|
||||||
"Please choose a theme and a boundary first.": "Először válasszon ki egy témát és egy határt.",
|
"Please choose a theme and a boundary first.": "Először válasszon ki egy témát és egy határt.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Scegli questo dataset",
|
"Choose this dataset": "Scegli questo dataset",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
||||||
"Choose a theme": "Seleziona un tema",
|
"Choose a theme": "Seleziona un tema",
|
||||||
"Symplify all geometries to points": "Semplifica tutte le geometrie in punti",
|
|
||||||
"Choose this data": "Seleziona questi dati",
|
"Choose this data": "Seleziona questi dati",
|
||||||
"Search admin boundary": "Cerca confini amministrativi",
|
"Search admin boundary": "Cerca confini amministrativi",
|
||||||
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("it", locale)
|
L.registerLocale("it", locale)
|
||||||
L.setLocale("it")
|
L.setLocale("it")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Scegli questo dataset",
|
"Choose this dataset": "Scegli questo dataset",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
|
||||||
"Choose a theme": "Seleziona un tema",
|
"Choose a theme": "Seleziona un tema",
|
||||||
"Symplify all geometries to points": "Semplifica tutte le geometrie in punti",
|
|
||||||
"Choose this data": "Seleziona questi dati",
|
"Choose this data": "Seleziona questi dati",
|
||||||
"Search admin boundary": "Cerca confini amministrativi",
|
"Search admin boundary": "Cerca confini amministrativi",
|
||||||
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Kies deze dataset",
|
"Choose this dataset": "Kies deze dataset",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische data van OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische data van OpenStreetMap",
|
||||||
"Choose a theme": "Kies een thema",
|
"Choose a theme": "Kies een thema",
|
||||||
"Symplify all geometries to points": "Symplificeer alle geometrieën tot punten",
|
|
||||||
"Choose this data": "Kies deze data",
|
"Choose this data": "Kies deze data",
|
||||||
"Search admin boundary": "Zoeken administrative grens",
|
"Search admin boundary": "Zoeken administrative grens",
|
||||||
"Please choose a theme and a boundary first.": "Kies eerst een thema en een grens.",
|
"Please choose a theme and a boundary first.": "Kies eerst een thema en een grens.",
|
||||||
|
@ -528,17 +527,20 @@ const locale = {
|
||||||
"Edit map default view": "Standaardweergave van de kaart bewerken",
|
"Edit map default view": "Standaardweergave van de kaart bewerken",
|
||||||
"Use current center and zoom": "Gebruik huidig centrum en zoomniveau",
|
"Use current center and zoom": "Gebruik huidig centrum en zoomniveau",
|
||||||
"Layer permalink": "Permalink-laag",
|
"Layer permalink": "Permalink-laag",
|
||||||
"Back to home": "Back to home",
|
"Back to home": "Terug naar thuispagina",
|
||||||
"Home logo": "Home logo",
|
"Home logo": "Thuispagina logo",
|
||||||
"Add this geometry to my map": "Add this geometry to my map",
|
"Add this geometry to my map": "Voeg deze geometrie toe aan mijn kaart",
|
||||||
"Add this place to my map": "Add this place to my map",
|
"Add this place to my map": "Voeg deze plaats toe aan mijn kaart",
|
||||||
"Cancel last edit": "Cancel last edit",
|
"Cancel last edit": "Laatste bewerking annuleren",
|
||||||
"Redo last edit": "Redo last edit",
|
"Redo last edit": "Laatste bewerking opnieuw uitvoeren",
|
||||||
"Links": "Links",
|
"Links": "Koppelingen",
|
||||||
"Images": "Images",
|
"Images": "Afbeeldingen",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("nl", locale)
|
L.registerLocale("nl", locale)
|
||||||
L.setLocale("nl")
|
L.setLocale("nl")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Kies deze dataset",
|
"Choose this dataset": "Kies deze dataset",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische data van OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematische data van OpenStreetMap",
|
||||||
"Choose a theme": "Kies een thema",
|
"Choose a theme": "Kies een thema",
|
||||||
"Symplify all geometries to points": "Symplificeer alle geometrieën tot punten",
|
|
||||||
"Choose this data": "Kies deze data",
|
"Choose this data": "Kies deze data",
|
||||||
"Search admin boundary": "Zoeken administrative grens",
|
"Search admin boundary": "Zoeken administrative grens",
|
||||||
"Please choose a theme and a boundary first.": "Kies eerst een thema en een grens.",
|
"Please choose a theme and a boundary first.": "Kies eerst een thema en een grens.",
|
||||||
|
@ -528,15 +527,18 @@
|
||||||
"Edit map default view": "Standaardweergave van de kaart bewerken",
|
"Edit map default view": "Standaardweergave van de kaart bewerken",
|
||||||
"Use current center and zoom": "Gebruik huidig centrum en zoomniveau",
|
"Use current center and zoom": "Gebruik huidig centrum en zoomniveau",
|
||||||
"Layer permalink": "Permalink-laag",
|
"Layer permalink": "Permalink-laag",
|
||||||
"Back to home": "Back to home",
|
"Back to home": "Terug naar thuispagina",
|
||||||
"Home logo": "Home logo",
|
"Home logo": "Thuispagina logo",
|
||||||
"Add this geometry to my map": "Add this geometry to my map",
|
"Add this geometry to my map": "Voeg deze geometrie toe aan mijn kaart",
|
||||||
"Add this place to my map": "Add this place to my map",
|
"Add this place to my map": "Voeg deze plaats toe aan mijn kaart",
|
||||||
"Cancel last edit": "Cancel last edit",
|
"Cancel last edit": "Laatste bewerking annuleren",
|
||||||
"Redo last edit": "Redo last edit",
|
"Redo last edit": "Laatste bewerking opnieuw uitvoeren",
|
||||||
"Links": "Links",
|
"Links": "Koppelingen",
|
||||||
"Images": "Images",
|
"Images": "Afbeeldingen",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Escolher este conjunto de dados",
|
"Choose this dataset": "Escolher este conjunto de dados",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
||||||
"Choose a theme": "Escolher um tema",
|
"Choose a theme": "Escolher um tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas as geometrias para pontos",
|
|
||||||
"Choose this data": "Selecionar estes dados",
|
"Choose this data": "Selecionar estes dados",
|
||||||
"Search admin boundary": "Pesquisar limite administrativo",
|
"Search admin boundary": "Pesquisar limite administrativo",
|
||||||
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("pt", locale)
|
L.registerLocale("pt", locale)
|
||||||
L.setLocale("pt")
|
L.setLocale("pt")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Escolher este conjunto de dados",
|
"Choose this dataset": "Escolher este conjunto de dados",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
||||||
"Choose a theme": "Escolher um tema",
|
"Choose a theme": "Escolher um tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas as geometrias para pontos",
|
|
||||||
"Choose this data": "Selecionar estes dados",
|
"Choose this data": "Selecionar estes dados",
|
||||||
"Search admin boundary": "Pesquisar limite administrativo",
|
"Search admin boundary": "Pesquisar limite administrativo",
|
||||||
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "Escolher este conjunto de dados",
|
"Choose this dataset": "Escolher este conjunto de dados",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
||||||
"Choose a theme": "Escolher um tema",
|
"Choose a theme": "Escolher um tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas as geometrias para pontos",
|
|
||||||
"Choose this data": "Escolher estes dados",
|
"Choose this data": "Escolher estes dados",
|
||||||
"Search admin boundary": "Pesquisar limites administrativos",
|
"Search admin boundary": "Pesquisar limites administrativos",
|
||||||
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("pt_PT", locale)
|
L.registerLocale("pt_PT", locale)
|
||||||
L.setLocale("pt_PT")
|
L.setLocale("pt_PT")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "Escolher este conjunto de dados",
|
"Choose this dataset": "Escolher este conjunto de dados",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: dados temáticos do OpenStreetMap",
|
||||||
"Choose a theme": "Escolher um tema",
|
"Choose a theme": "Escolher um tema",
|
||||||
"Symplify all geometries to points": "Simplificar todas as geometrias para pontos",
|
|
||||||
"Choose this data": "Escolher estes dados",
|
"Choose this data": "Escolher estes dados",
|
||||||
"Search admin boundary": "Pesquisar limites administrativos",
|
"Search admin boundary": "Pesquisar limites administrativos",
|
||||||
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
"Please choose a theme and a boundary first.": "Escolha primeiro um tema e um limite.",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -457,7 +457,6 @@ const locale = {
|
||||||
"Choose this dataset": "選擇這個資料集",
|
"Choose this dataset": "選擇這個資料集",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:從開放街圖來的主題資料",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:從開放街圖來的主題資料",
|
||||||
"Choose a theme": "選擇主題",
|
"Choose a theme": "選擇主題",
|
||||||
"Symplify all geometries to points": "簡化所有地理範圍的節點",
|
|
||||||
"Choose this data": "選擇這個資料",
|
"Choose this data": "選擇這個資料",
|
||||||
"Search admin boundary": "搜尋行政邊界",
|
"Search admin boundary": "搜尋行政邊界",
|
||||||
"Please choose a theme and a boundary first.": "請先選擇主題與邊界。",
|
"Please choose a theme and a boundary first.": "請先選擇主題與邊界。",
|
||||||
|
@ -538,7 +537,10 @@ const locale = {
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
||||||
L.registerLocale("zh_TW", locale)
|
L.registerLocale("zh_TW", locale)
|
||||||
L.setLocale("zh_TW")
|
L.setLocale("zh_TW")
|
||||||
|
|
|
@ -457,7 +457,6 @@
|
||||||
"Choose this dataset": "選擇這個資料集",
|
"Choose this dataset": "選擇這個資料集",
|
||||||
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:從開放街圖來的主題資料",
|
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine:從開放街圖來的主題資料",
|
||||||
"Choose a theme": "選擇主題",
|
"Choose a theme": "選擇主題",
|
||||||
"Symplify all geometries to points": "簡化所有地理範圍的節點",
|
|
||||||
"Choose this data": "選擇這個資料",
|
"Choose this data": "選擇這個資料",
|
||||||
"Search admin boundary": "搜尋行政邊界",
|
"Search admin boundary": "搜尋行政邊界",
|
||||||
"Please choose a theme and a boundary first.": "請先選擇主題與邊界。",
|
"Please choose a theme and a boundary first.": "請先選擇主題與邊界。",
|
||||||
|
@ -538,5 +537,8 @@
|
||||||
"Images": "Images",
|
"Images": "Images",
|
||||||
"Iframes": "Iframes",
|
"Iframes": "Iframes",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Geocode": "Geocode"
|
"Geocode": "Geocode",
|
||||||
|
"Display the back to home icon": "Display the back to home icon",
|
||||||
|
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
|
||||||
|
"Simplify all geometries to points": "Simplify all geometries to points"
|
||||||
}
|
}
|
|
@ -32,7 +32,16 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<h2>
|
<h2>
|
||||||
{% trans "Latest created maps" %}
|
{% if request.GET.tags %}
|
||||||
|
{% trans "Latest created maps in category" %}
|
||||||
|
{% for value, label in UMAP_TAGS %}
|
||||||
|
{% if request.GET.tags == value %}
|
||||||
|
<mark>{{ label }}</mark>:
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
{% trans "Latest created maps" %}
|
||||||
|
{% endif %}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="grid-container">
|
<div class="grid-container">
|
||||||
{% include "umap/map_list.html" with prefix="search_map" %}
|
{% include "umap/map_list.html" with prefix="search_map" %}
|
||||||
|
|
|
@ -69,13 +69,7 @@ def test_zoomcontrol_impacts_ui(live_server, page, tilelayer):
|
||||||
|
|
||||||
# Hide them
|
# Hide them
|
||||||
page.get_by_text("User interface options").click()
|
page.get_by_text("User interface options").click()
|
||||||
hide_zoom_controls = (
|
page.locator(".panel .umap-field-zoomControl").get_by_text("never").click()
|
||||||
page.locator(".panel")
|
|
||||||
.filter(has_text=re.compile("Display the zoom control"))
|
|
||||||
.locator("label")
|
|
||||||
.nth(2)
|
|
||||||
)
|
|
||||||
hide_zoom_controls.click()
|
|
||||||
|
|
||||||
expect(zoom_in).to_be_hidden()
|
expect(zoom_in).to_be_hidden()
|
||||||
expect(zoom_out).to_be_hidden()
|
expect(zoom_out).to_be_hidden()
|
||||||
|
|
Loading…
Reference in a new issue