diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..5b1d828a0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.js] +indent_size = 2 + +[Makefile] +indent_style = tab diff --git a/.eslintrc b/.eslintrc index f43b4c3b4..301bd74f4 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,36 +1,12 @@ -{ - "extends": "openlayers", - "env": { - "jquery": true - }, - "parserOptions": { - "ecmaVersion": 6, - "ecmaFeatures": { - "generators": false, - "objectLiteralDuplicateProperties": false - }, - "sourceType": "module" - }, - "rules": { - "no-console": 0 - }, - "globals": { - "angular": false, - "goog": false, - "d3": false, - "Bloodhound": false, - "ol": false, - "olcs": false, - "Cesium": false, - "proj4": false, - "ngeo": false, - "gmf": false, - "app": false, - "Fuse": false, - "lux": false, - "autoComplete": false, - "JSZip": false, - "Promise": true, - "google": false - } -} +extends: /usr/lib/node_modules/ngeo/.eslintrc.yaml +globals: + 'geoportailv3': false + 'olcs': false + 'JSZip': false + 'Fuse': false +rules: + 'prefer-arrow-callback': 0 + 'indent': 0 + 'no-var': 0 + 'prefer-template': 0 + 'prefer-const': 0 diff --git a/.gitignore b/.gitignore index 88f95f727..9e1671f5a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,34 +1,23 @@ +*~ *.pyc -*.po~ -/apache/README.txt -/apache/frontend.conf -/apache/mapserver.conf -/apache/wsgi.conf -/apache/application.wsgi -/deploy/deploy.cfg -/alembic.ini -/alembic_static.ini -/lux_alembic.ini -/development.ini -/production.ini -/project.yaml -/*.egg-info/ -/print/WEB-INF/classes/logback.xml -/geoportailv3/locale/*/LC_MESSAGES/*.mo -/geoportailv3/locale/*/LC_MESSAGES/*-client.po -/geoportailv3/locale/*/LC_MESSAGES/*-client-tooltips.po -/geoportailv3/static/mobile/ -#/geoportailv3/static/mobile/resources/sass/.sass-cache -#/geoportailv3/static/mobile/resources/css/app.css -#/geoportailv3/static/mobile/archive/ -#/geoportailv3/static/mobile/build/ -#/geoportailv3/static/mobile/openlayers-mobile.js -#/geoportailv3/static/mobile/bootstrap.js -#/geoportailv3/static/mobile/bootstrap.json -/geoportailv3/static/build -/geoportailv3/locale/*.pot -/.eggs -/.build -/package-lock.json -/node_modules -vars_wepa.yaml +*.pyo +__pycache__/ +/.env +/geoportal/.venv/ +/geoportal/dist/ +/geoportal/build/ +/geoportal/geoportailv3_geoportal/static-ngeo/build/ +/geoportal/geoportailv3_geoportal.egg-info/ +/geoportal/geoportailv3_geoportal/locale/*/LC_MESSAGES/*.mo +/geoportal/c2cgeoportal/ +/geoportal/node_modules/ +/geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-client.pot +/geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-server.pot +/geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-tooltips.pot +/geoportal/geoportailv3_geoportal/locale/ngeo.pot +/.build/ +/node_modules/ +/geoportailv3/ +/apache/ +/print/WEB-INF/ +/geoportailv3.egg-info/ diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 598b5154c..000000000 --- a/.jshintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - // suppresses warnings about using [] notation (person['name']) W069 - // /!\ this option will be removed in the next major release of jshint - "sub": true, - // suppresses errors that occur when adding @typedef - "-W030": true -} diff --git a/.travis.yml b/.travis.yml index 47847f6fa..0b9342cc5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,39 +1,12 @@ -language: python - -dist: trusty - -python: -- 2.7 +--- sudo: false + addons: - postgresql: "9.5" apt: packages: - - postgresql-9.5-postgis-2.3 - -install: -- createdb -E UTF8 -T template0 template_postgis -U postgres -- psql -d template_postgis -c "CREATE EXTENSION postgis;" -U postgres -- createdb -E UTF8 -T template_postgis lux -U postgres -- createuser www-data --no-superuser --no-createdb --no-createrole -U postgres -- psql -d lux -c 'CREATE SCHEMA geov3;' -U postgres -- psql -d lux -c 'CREATE SCHEMA geov3_static;' -U postgres -- psql -d lux -c 'CREATE SCHEMA geov3_stats;' -U postgres -- psql -d lux -c "ALTER USER \"www-data\" PASSWORD 'www-data';" -U postgres -- psql -d lux -c 'GRANT SELECT ON spatial_ref_sys TO "www-data";' -U postgres -- psql -d lux -c 'GRANT ALL ON SCHEMA geov3 TO "www-data";' -U postgres -- psql -d lux -c 'GRANT ALL ON SCHEMA geov3_static TO "www-data";' -U postgres -- psql -d lux -c 'GRANT ALL ON SCHEMA geov3_stats TO "www-data";' -U postgres -- psql -d lux -c 'GRANT ALL ON geometry_columns TO "www-data";' -U postgres - -- make -f travis.mk .build/requirements.timestamp || make -f travis.mk .build/requirements.timestamp -- make -f travis.mk .build/dev-requirements.timestamp || make -f travis.mk .build/dev-requirements.timestamp -- make -f travis.mk alembic.ini lux_alembic.ini -- .build/venv/bin/alembic upgrade head -- .build/venv/bin/alembic -c lux_alembic.ini upgrade head -- make -f travis.mk .build/build.js || make -f travis.mk .build/build.js -- make -f travis.mk build + - python3-netifaces script: -- make -f travis.mk checks + - ln -s env-localdev .env + - make build diff --git a/.tx/config b/.tx/config index c2c231377..6603ea65f 100644 --- a/.tx/config +++ b/.tx/config @@ -2,20 +2,25 @@ host = https://www.transifex.com [geoportailv3-lu.geoportailv3-client] -file_filter = geoportailv3/locale//LC_MESSAGES/geoportailv3-client.po -source_file = geoportailv3/locale/geoportailv3-client.pot +file_filter = geoportal/geoportailv3_geoportal/locale//LC_MESSAGES/geoportailv3_geoportal-client.po +source_file = geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-client.pot source_lang = frp type = PO [geoportailv3-lu.geoportailv3-server] -file_filter = geoportailv3/locale//LC_MESSAGES/geoportailv3-server.po -source_file = geoportailv3/locale/geoportailv3-server.pot +file_filter = geoportal/geoportailv3_geoportal/locale//LC_MESSAGES/geoportailv3_geoportal-server.po +source_file = geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-server.pot source_lang = frp type = PO - [geoportailv3-lu.geoportailv3-tooltips] -file_filter = geoportailv3/locale//LC_MESSAGES/geoportailv3-tooltips.po -source_file = geoportailv3/locale/geoportailv3-tooltips.pot +file_filter = geoportal/geoportailv3_geoportal/locale//LC_MESSAGES/geoportailv3_geoportal-tooltips.po +source_file = geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-tooltips.pot +source_lang = frp +type = PO + +[ngeo.ngeo-2_3] +file_filter = geoportal/geoportailv3_geoportal/locale//LC_MESSAGES/ngeo.po +source_file = geoportal/geoportailv3_geoportal/locale/ngeo.pot source_lang = frp type = PO diff --git a/CONST_CHANGELOG.txt b/CONST_CHANGELOG.txt deleted file mode 100644 index e1ff22e5e..000000000 --- a/CONST_CHANGELOG.txt +++ /dev/null @@ -1,452 +0,0 @@ -This file includes migration steps for each release of c2cgeoportal. - - -Version 1.6.3 -============= - -1. To use the MapFish print v3 protocol from the CGXP client add the following config - lines in the `cgxp_print` plugin in the `geoportailv3/templates/viewer.js` file: - - + version: 3 - -2. To still use Mapfish Print v2 you should: - - * In the `vars_geoportailv3.yaml` file, add the following variable - - print_url: http://localhost:8080/print-{instanceid}/pdf/ - - * Add also in the `check_collector` variable the following variable: - - check_collector: - + disabled: [checker_print3capabilities, checker_pdf3] - - * Add the following line in your geoportailv3.mk file: - - PRINT_VERSION = 2 - - * Be sure that you moved your file `print/templates/print.mako.in` - to `print/config.yaml.mako` and did the required changes. - -3. In all `mapserver/*.map` or `mapserver/*.map.mako` files, convert all SRS - codes in METADATA sections to uppercase. - - Lowercase SRS codes may cause incompatibility problems with some client - tools including CGXP WMSBrowser plugin. - - Exemple: - - METADATA - ... - "wms_srs" "epsg:21781 epsg:3857" - ... - END - - should be converted to: - - METADATA - ... - "wms_srs" "EPSG:21781 EPSG:3857" - ... - END - - Note that “epsg” has to be in lowercase when used in the PROJ4 ‘init’ directive. - - PROJECTION - "init=epsg:21781" - END - -4. In all `mapserver/*.map` or `mapserver/*.map.mako` files, adding an EXTENT to all - LAYER definitions will be a great performance improvement, see: - http://docs.camptocamp.net/c2cgeoportal/1.6/administrator/mapfile.html#performance-improvement - -5. In `vars_geoportailv3.yaml` file add `admin_interface` key in `update_paths`: - - update_paths: - - authtkt - - checker - - check_collector.hosts - + - admin_interface - -6. In the `geoportailv3/templates/index.html`, `geoportailv3/templates/edit.html` - and `geoportailv3/templates/routing.html` do the following changes to use IE11 when available : - - - - + - -7. Remove the `lang_files` from the `vars/checker` in the file `vars_geoportailv3.yaml`. - -8. If in your `vars_geoportailv3.yaml` file you have the following `available_functionalities` they can be removed - because they are the default settings: - - # The list of functionalities that can be configured - # through the admin interface. - available_functionalities: - - default_basemap - - print_template - - mapserver_substitution - -9. In the Mapfish print v3 configuration do the following change ([htps] => https?): - - - !configureHttpRequests - httpProcessors: - - !mapUri - mapping: - - ([htps])://${host}/(.*): "$1://127.0.0.1/$2" - + (https?)://${host}/(.*): "$1://127.0.0.1/$2" - -10. In the Mapfish print v3 configuration do the following change: - - - !configureHttpRequests - httpProcessors: - ... - - !forwardHeaders - headers: - - Cookie - - Host - - - Referrer - + - Referer - -11. In the `apache/application.wsgi.mako` add the following lines: - - import site - +import sys - +import re - - site.addsitedir("${python_path}") - - +# Remove site packages - +regex = re.compile("^/usr/lib/python.\../dist-packages$") - +sys.path = [p for p in sys.path if regex.match(p) is None] - + - from pyramid.paster import get_app, setup_logging - - configfile = "${directory}/${'development' if development == 'TRUE' else 'production'}.ini" - -12. On deploy the post-restore-code will be moved to pre-restore-code and deeply modified. - If you did not modify it you can just copy the new version with the following: - - mv deploy/hooks/post-restore-code deploy/hooks/pre-restore-code - cp /tmp/geoportailv3/deploy/hooks/pre-restore-code deploy/hooks - chmod +x deploy/hooks/pre-restore-code - - and the `.gitignore` file should also be adapted: - - - /deploy/hooks/post-restore-database - + /deploy/hooks/pre-restore-database - - -Version 1.6.2 -============= - -1. In the `geoportailv3/models.py` add the following lines: - - from pyramid.security import DENY_ALL - - LayerInternalWMS.__acl__ = [DENY_ALL] - LayerExternalWMS.__acl__ = [DENY_ALL] - LayerWMTS.__acl__ = [DENY_ALL] - WMTSDimension.__acl__ = [DENY_ALL] - -2. If you still use version 2 of the print the `.war` file should be updated to the latest version. - - cd print - wget http://pypi.camptocamp.net/print-servlet-2.1-SNAPSHOT-IMG-MAGICK-daeea96d2d3b33d6ccf02fe62d81b9c7aa2574a2.war - mv print-servlet-2.1-SNAPSHOT-IMG-MAGICK-daeea96d2d3b33d6ccf02fe62d81b9c7aa2574a2.war print-servlet-2.1-SNAPSHOT-IMG-MAGICK.war - touch print-servlet-2.1-SNAPSHOT-IMG-MAGICK.war - -3. In the `geoportailv3/__init__.py` file remove all the `config.add_settings({ ... })`, they should be in the `vars_*.yaml` files. - - -Version 1.6 -=========== - -1. Warning about .in and .mako files - - In c2cgeoportal 1.6, the .in are globally replaced by .mako - - .in STILL WORK! - - You can keep the .in, the system is backward compatible, - or you can choose to replace your .in by .mako, to stick to c2cgeoportal - evolution. - - .mako offer more flexibility, so it is advised to replace the .in - by .mako - - Please note the following syntax changes: - - - a variable named ${vars:} in a .in will be written ${} in - a .mako. - - ${buildout:directory} must be replaced by ${directory}. - - Also, in all the CHANGELOG points specifying both .in/.mako files, it means - you need to modify the file you have (either the .in or the .mako), you MUST - NOT have both files. - -2. Follow the instructions explained in this documentation chapter: - http://docs.camptocamp.net/c2cgeoportal/1.6/integrator/upgrade_application.html#easy-upgrading-an-application-from-1-5-to-1-6 - -3. Get the new and heavily modified files: - - at that point, the following folder should exist: /tmp/geoportailv3/ - - cp /tmp/geoportailv3/.gitignore . - cp /tmp/geoportailv3/.jshintrc . - cp /tmp/geoportailv3/.travis.yml . - cp /tmp/geoportailv3/travis.mk . - cp /tmp/geoportailv3/geoportailv3.mk . - cp /tmp/geoportailv3/README.rst . - cp /tmp/geoportailv3/alembic.ini.mako . - cp /tmp/geoportailv3/alembic_static.ini.mako . - cp /tmp/geoportailv3/build.json . - cp /tmp/geoportailv3/development.ini.mako . - cp /tmp/geoportailv3/lingua.cfg . - cp /tmp/geoportailv3/package.json . - cp /tmp/geoportailv3/production.ini.mako . - cp /tmp/geoportailv3/vars_geoportailv3.yaml . - cp /tmp/geoportailv3/deploy/hooks/post-restore-code deploy/hooks - cp /tmp/geoportailv3/apache/application.wsgi.mako apache/ - chmod +x deploy/hooks/post-restore-code - -4. Starting from version 1.6 we use a new build system based on Make that will change - many of your habits, information are given at: - http://docs.camptocamp.net/c2cgeoportal/1.6/integrator/make.html - - Main things to do: - - Move your old `config.yaml` and your `[vars]` section of the old - `buildout.cfg` file to the new `vars_geoportailv3.yaml` file in the `vars:` parameter. - - Move your special task from your old `buildout.cfg` file to your new - `geoportailv3.mk` file - - The `README.rst`, `.gitignore` files will be overwritten. - Please make sure to back your changes up before proceeding. - - The `development.ini.in`, `production.ini.in` files will be replaced by - the `development.ini.mako`, `production.ini.mako` files. If you lost - something it should probably be moved in the `vars_geoportailv3.yaml` file. - - The `print/template/print.mako.in` file should be moved to - `print/config.yaml.mako`. The paths provided in `print/config.yaml.mako` - must be adapted accordingly. For instance: - `<%include file="/A4_portrait.mako" />` should be changed to - `<%include file="templates/A4_portrait.mako" />`. - - The build environments (`.mk` files) must be recreated. - For multi project mode have a look at the documentation: - http://docs.camptocamp.net/c2cgeoportal/master/integrator/create_application.html - -5. In the `setup.cfg` file you should remove all the `[compile_catalog]`, - `[extract_messages]`, `[init_catalog]`, `[update_catalog]` sections. - -6. In the `setup.py` file you should remove the `message_extractors` - argument. - -7. In the geoportailv3/__init__.py file do the following changes: - - -from c2cgeoportal import locale_negotiator - +from c2cgeoportal import locale_negotiator, add_interface, INTERFACE_TYPE_SENCHA_TOUCH - - Replace all the mobile view configuration (all the `config.add_route ...`, - `config.add_view ...` under the line "# mobile views and routes") by the - following lines: - + add_interface(config) - + add_interface(config, 'edit') - + add_interface(config, 'routing') - + add_interface(config, 'mobile', INTERFACE_TYPE_SENCHA_TOUCH) - - Remove the activation of the static view (now done directly in c2cgeoportal): - - # add the main static view - - config.add_static_view( - - name='proj', - - path='geoportailv3:static', - - cachebust=True, - - ) - - Remove the activation of the admin interface (now done directly in c2cgeoportal): - - if asbool(config.get_settings().get('enable_admin_interface')): - - config.formalchemy_admin( - - 'admin', package='geoportailv3', - - view='fa.jquery.pyramid.ModelView', factory=FAModels - - ) - - Remove the activation of the checkers (now done directly in c2cgeoportal): - - config.add_route('checker_all', '/checker_all') - -8. In the `geoportailv3/templates/*.html` files you should do the following - changes: - - - jsbuild_cfg = request.registry.settings.get('jsbuild_cfg') - - jsbuild_root_dir = request.registry.settings.get('jsbuild_root_dir') - + jsbuild_settings = request.registry.settings.get('jsbuild', {}) - + jsbuild_cfg = jsbuild_settings.get('config') - + jsbuild_root_dir = jsbuild_settings.get('root_dir') - - Remove the no more needed `_query=url_params` argument of the - `static_url` calls. - -9. In the `geoportailv3/templates/*.js` files do the following changes: - - - <% json_extent = user.role.json_extent if user else None %> - - % if json_extent: - - var INITIAL_EXTENT = ${json_extent}; - + <% bounds = user.role.bounds if user else None %> - + % if bounds: - + var INITIAL_EXTENT = ${dumps(bounds)}; - - replace `url_role_params` by `version_role_params` in all the file. - - in the WMTS_OPTIONS add the following lines: - - + getURL: function() { - + var url = OpenLayers.Layer.WMTS.prototype.getURL.apply(this, arguments); - + return url + "?${'&'.join(["%s=%s" % p for p in version_params.items()]) | n}"; - + }, - -10. In the `geoportailv3/templates/*.js`, `geoportailv3/templates/api/*.js`, - `geoportailv3/static/mobile/config.js`, `geoportailv3/static/mobile/index.html` - files add ` | n` after all the `static_url` and `route_url` call, like: - - "${request.static_url('...')}" - + "${request.static_url('...') | n}" - -11. In the `geoportailv3/templates/edit.js` file - add the following attribute to the `cgxp_editing` plugin: - + metadataParams: ${dumps(version_role_params) | n} - -12. In the mapfile add the following lines to all restricted layers: - - VALIDATION - ${mapserver_layer_validation} - END - -13. Remove the deprecated versioning table: - - sudo -u postgres psql -c "DROP TABLE version_geoportailv3" - -14. For non Apt/Dpkg based OS, disable the package checking: - In the ``buildout.cfg`` section ``[buildout]`` add: - - parts -= - test-packages - test-packages-mobile - test-packages-tilecloud-chain - -15. In the `geoportailv3/static/mobile/config.js` add the following line at the top of the file: - - +OpenLayers.ImgPath = "${request.static_url('geoportailv3:static/lib/cgxp/core/src/theme/img/ol/') | n}"; - -16. Move the `jsbuild/app.cfg` file to `jsbuild/app.cfg.mako`. - - Add the following lines in the start of the file: - <% - root = [ - "geoportailv3/static/lib/cgxp/core/src/script", - "geoportailv3/static/lib/cgxp/ext", - "geoportailv3/static/lib/cgxp/geoext/lib", - "geoportailv3/static/lib/cgxp/openlayers/lib", - "geoportailv3/static/lib/cgxp/openlayers.addins/GoogleEarthView/lib", - "geoportailv3/static/lib/cgxp/openlayers.addins/Spherical/lib", - "geoportailv3/static/lib/cgxp/openlayers.addins/URLCompressed/lib", - "geoportailv3/static/lib/cgxp/openlayers.addins/DynamicMeasure/lib", - "geoportailv3/static/lib/cgxp/openlayers.addins/AddViaPoint/lib", - "geoportailv3/static/lib/cgxp/openlayers.addins/AutoProjection/lib", - "geoportailv3/static/lib/cgxp/gxp/src/script", - "geoportailv3/static/lib/cgxp/proj4js", - "geoportailv3/static/lib/cgxp/geoext.ux/ux/Measure/lib", - "geoportailv3/static/lib/cgxp/geoext.ux/ux/SimplePrint/lib", - "geoportailv3/static/lib/cgxp/geoext.ux/ux/FeatureEditing/lib", - "geoportailv3/static/lib/cgxp/geoext.ux/ux/FeatureSelectionModel/lib", - "geoportailv3/static/lib/cgxp/geoext.ux/ux/WMSBrowser/lib", - "geoportailv3/static/lib/cgxp/geoext.ux/ux/StreetViewPanel", - "geoportailv3/static/lib/cgxp/sandbox", - "geoportailv3/static/lib/cgxp/styler/lib", - "geoportailv3/static/lib/cgxp/ext.ux/TwinTriggerComboBox", - "geoportailv3/static/lib/cgxp/ext.ux/GroupComboBox", - "geoportailv3/static/lib/cgxp/ext.ux/ColorPicker", - "geoportailv3/static/lib/cgxp/ext.ux/base64", - "geoportailv3/static/lib/cgxp/ext.overrides", - "geoportailv3/static/lib/cgxp/dygraphs", - "geoportailv3/static/js", - ] - %> - - Replace all the root sections (for all built files) by: - - root = - ${"\n ".join(root)} - -17. Remove your Apache configuration file, probably in - `/var/www/vhost/geoportailv3/conf`. Now it will be automatically created. - - To define a customized path, set the variables APACHE_VHOST and/or - APACHE_CONF_DIR in your `.mk` file. - -18. Notes on database changes: - * In prevision of GeoMapFish 2.0 some tables were added and some fields updated. - * Table ``user`` has been moved to schema ``main_static`` in order to store all - data modified by the web application in the same schema. - As a result the passwords no longer need to be synchronised among the various instances - of the application and the password replication tool has been removed. - -19. Add at the end of the `deploy/hooks/post-restore-database.mako` or - `deploy/hooks/post-restore-database.in` file the following line: - - + .build/venv/bin/alembic -c alembic_static.ini upgrade head - -20. In your `apache/wsgi.conf.mako` or `apache/wsgi.conf.in` file replace all the - `apache-entry-point` by `apache_entry_point` - -21. In your `apache/frontend.conf.mako` or `apache/frontend.conf.in` file in the - `` section, - add the following mimetypes to the existing list: - - ... application/vnd.ogc.wms_xml application/vnd.ogc.gml application/vnd.ogc.se_xml - - and in the `` section, - add the following lines: - - AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/xml - Header add Access-Control-Allow-Headers "X-Requested-With, Content-Type" - -22. In the `geoportailv3/subscribers.py`, `geoportailv3/models.py`, `geoportailv3/forms.py` files do the following changes: - - -... = TranslationStringFactory('geoportailv3') - +... = TranslationStringFactory("geoportailv3-server") - -23. In the `geoportailv3/subscribers.py` file do the following change: - - - return localizer.translate(tsf2(localizer.translate(tsf1(string)))) - + result = localizer.translate(tsf1(string)) - + return localizer.translate(tsf2(string)) if result == string else result - -24. Add the `print_spec` in the `checker` config `vars_geoportailv3.yaml` file: - - checker: - ... - print_spec: - layout: "A4 portrait" - outputFormat: "pdf" - attributes: - title: "" - comments: "" - datasource: [] - map: - projection: "EPSG:21781" - dpi: 254 - rotation: 0 - center: [600000, 200000] - scale: 100000 - longitudeFirst: true - layers: [] - legend: {} - -25. Remove the deprecated files: - - git rm -r geoportailv3/CONST_migration - git rm -r geoportailv3/static/build - git rm config.yaml.in - git rm bootstrap.py - git rm -r *buildout* - git rm development.ini.in production.ini.in - git rm versions.cfg - -26. In your `apache/wsgi.conf.in` or `apache/wsgi.conf.mako` file, do the - following change: - - - WSGIScriptAlias /${vars:instanceid}/wsgi ${buildout:directory/buildout/parts/modwsgi/wsgi} - + WSGIScriptAlias /${instanceid}/wsgi ${directory}/apache/application.wsgi diff --git a/CONST_Makefile b/CONST_Makefile deleted file mode 100644 index 911331ef3..000000000 --- a/CONST_Makefile +++ /dev/null @@ -1,808 +0,0 @@ -VENV_BIN ?= .build/venv/bin -PYTHON_VERSION = $(shell $(VENV_BIN)/python -c "import sys; print('%i.%i' % (sys.version_info.major, sys.version_info.minor))" 2> /dev/null) -PACKAGE = geoportailv3 - -# Don't minify the js / css, ... -DEVELOPMENT ?= FALSE -# Language provided by the application -LANGUAGES ?= en fr de -# Enable CGXP build -CGXP ?= TRUE -# Enable sencha touch build -MOBILE ?= TRUE -# Enable ngeo build -NGEO ?= FALSE -# Use TileCloud chain -TILECLOUD_CHAIN ?= TRUE -# Used print version -PRINT_VERSION ?= 3 - -PIP_CMD ?= $(VENV_BIN)/pip -PIP_INSTALL_ARGS += install --trusted-host pypi.camptocamp.net --no-binary pycparser - -GIT_MODULES_FOLDER ?= .git/modules/ - -ifeq ($(CGXP), TRUE) -DEFAULT_WEB_RULE += build-cgxp -endif -ifeq ($(MOBILE), TRUE) -DEFAULT_WEB_RULE += sencha-touch -endif -ifeq ($(NGEO), TRUE) -DEFAULT_WEB_RULE += build-ngeo -CLIENT_CHECK_RULE ?= lint-ngeo -endif -WEB_RULE ?= $(DEFAULT_WEB_RULE) - -# Make rules - -DEFAULT_BUILD_RULES ?= test-packages .build/requirements.timestamp $(WEB_RULE) build-server apache -ifeq ($(TILECLOUD_CHAIN), TRUE) -DEFAULT_BUILD_RULES += test-packages-tilecloud-chain -endif -ifeq ($(MOBLE), TRUE) -DEFAULT_BUILD_RULES += test-packages-mobile -endif -ifeq ($(NGEO), TRUE) -DEFAULT_BUILD_RULES += test-packages-ngeo -endif -ifeq ($(PRINT_VERSION), 2) -DEFAULT_BUILD_RULES += print -endif -ifeq ($(PRINT_VERSION), 3) -DEFAULT_BUILD_RULES += print -endif -BUILD_RULES ?= $(PRE_RULES) $(filter-out $(DISABLE_BUILD_RULES),$(DEFAULT_BUILD_RULES)) $(POST_RULES) - -# Requirements -CONST_REQUIREMENT ?= CONST_requirements.txt -EGGS_DEPENDENCIES += .build/venv.timestamp-noclean setup.py CONST_versions.txt $(CONST_REQUIREMENT) -REQUIREMENTS += -r $(CONST_REQUIREMENT) -DEV_REQUIREMENTS += -r CONST_dev-requirements.txt -ifeq ($(TILECLOUD_CHAIN), TRUE) -DEV_REQUIREMENTS += 'tilecloud-chain>=1.0.0dev' -endif -ifeq ($(CGXP), TRUE) -DEV_REQUIREMENTS += JSTools 'c2c.cssmin>=0.7dev6' -endif -ifeq ($(NGEO), TRUE) -DEV_REQUIREMENTS += https://github.com/google/closure-linter/archive/v2.3.19.tar.gz -endif - -OUTPUT_DIR = $(PACKAGE)/static/build - -# Git - -GIT_REMOTE ?= origin -GIT_BRANCH = $(shell git rev-parse --abbrev-ref HEAD) - -# ngeo -GCC_JS_FILES = $(shell find node_modules/openlayers/src/ol node_modules/ngeo/src node_modules/ol-cesium/src $(PACKAGE)/static/js -type f -name '*.js' 2> /dev/null) -APP_HTML_FILES = $(shell find $(PACKAGE)/templates -type f -name '*.html') -APP_PARTIALS_FILES := $(shell find $(PACKAGE)/static/js -type f -name '*.html') -LESS_FILES += $(shell find $(PACKAGE)/static/less -type f -name '*.less' 2> /dev/null) -JSON_CLIENT_LOCALISATION_FILES = $(addprefix $(OUTPUT_DIR)/locale/, $(addsuffix /$(PACKAGE).json, $(LANGUAGES))) -NGEO_LIBS_JS_FILES += \ - node_modules/jquery/dist/jquery.min.js \ - node_modules/ngeo/third-party/jquery-ui/jquery-ui.min.js \ - node_modules/angular/angular.min.js \ - node_modules/angular-animate/angular-animate.min.js \ - node_modules/angular-sanitize/angular-sanitize.min.js \ - node_modules/angular-touch/angular-touch.min.js \ - node_modules/corejs-typeahead/dist/typeahead.bundle.min.js \ - node_modules/angular-ui-date/dist/date.js \ - node_modules/angular-float-thead/angular-floatThead.js \ - node_modules/floatthead/dist/jquery.floatThead.min.js \ - node_modules/angular-ui-slider/src/slider.js \ - node_modules/proj4/dist/proj4.js \ - node_modules/angular-gettext/dist/angular-gettext.min.js \ - node_modules/angular-dynamic-locale/dist/tmhDynamicLocale.min.js \ - node_modules/bootstrap/dist/js/bootstrap.min.js \ - node_modules/d3/build/d3.min.js -NGEO_PROJECT_LIBS_JS_FILES ?= - -# CGXP -JSBUILD_MAIN_FILES = $(shell find $(PACKAGE)/static/lib/cgxp $(PACKAGE)/static/js -name "*.js" -print 2> /dev/null) -JSBUILD_MAIN_CONFIG = jsbuild/app.cfg -JSBUILD_MAIN_OUTPUT_FILES ?= app.js edit.js routing.js api.js xapi.js -JSBUILD_MAIN_OUTPUT_FILES += $(addprefix lang-, $(addsuffix .js, $(LANGUAGES))) -JSBUILD_MAIN_OUTPUT_FILES += $(addprefix api-lang-, $(addsuffix .js, $(LANGUAGES))) -JSBUILD_MAIN_OUTPUT_FILES := $(addprefix $(OUTPUT_DIR)/, $(JSBUILD_MAIN_OUTPUT_FILES)) -JSBUILD_ARGS = $(if ifeq($(DEVELOPMENT), ‘TRUE’),-u,) - -ifeq ($(DEVELOPMENT), FALSE) - CSSMIN_ARGS += --compress -endif -DEFAULT_CSS_BASE_FILES += \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/ext-all.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/xtheme-gray.css \ - $(PACKAGE)/static/lib/cgxp/openlayers/theme/default/style.css \ - $(PACKAGE)/static/lib/cgxp/geoext/resources/css/popup.css \ - $(PACKAGE)/static/lib/cgxp/geoext/resources/css/gxtheme-gray.css \ - $(PACKAGE)/static/lib/cgxp/geoext.ux/ux/Measure/resources/css/measure.css \ - $(PACKAGE)/static/lib/cgxp/sandbox/FeatureEditing/resources/css/feature-editing.css \ - $(PACKAGE)/static/lib/cgxp/styler/theme/css/styler.css \ - $(PACKAGE)/static/lib/cgxp/gxp/src/theme/all.css \ - $(PACKAGE)/static/lib/cgxp/core/src/theme/all.css \ - $(PACKAGE)/static/lib/cgxp/ext.ux/ColorPicker/ressources/colorpicker.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/examples/ux/css/Spinner.css \ - $(PACKAGE)/static/css/proj.css \ - $(PACKAGE)/static/css/proj-map.css \ - $(PACKAGE)/static/css/proj-widgets.css -ifdef CSS_BASE_FILES -CSS_BASE_FILES := $(DEFAULT_CSS_BASE_FILES) $(CSS_BASE_FILES) -else -CSS_BASE_FILES := $(DEFAULT_CSS_BASE_FILES) -endif -CSS_BASE_OUTPUT = $(OUTPUT_DIR)/app.css - -DEFAULT_CSS_API_FILES += \ - $(PACKAGE)/static/lib/cgxp/openlayers/theme/default/style.css \ - $(PACKAGE)/static/css/proj-map.css -ifdef CSS_API_FILES -CSS_API_FILES := $(DEFAULT_CSS_API_FILES) $(CSS_API_FILES) -else -CSS_API_FILES := $(DEFAULT_CSS_API_FILES) -endif -CSS_API_OUTPUT = $(OUTPUT_DIR)/api.css - -DEFAULT_CSS_XAPI_FILES += \ - $(PACKAGE)/static/lib/cgxp/core/src/theme/reset.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/editor.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/pivotgrid.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/menu.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/panel.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/grid.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/debug.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/qtips.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/dd.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/form.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/resizable.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/toolbar.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/slider.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/combo.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/layout.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/dialog.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/core.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/button.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/progress.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/tabs.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/box.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/borders.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/date-picker.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/tree.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/window.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/visual/list-view.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/editor.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/pivotgrid.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/menu.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/panel.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/grid.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/debug.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/qtips.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/dd.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/form.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/resizable.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/toolbar.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/panel-reset.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/slider.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/combo.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/layout.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/dialog.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/core.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/button.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/progress.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/tabs.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/box.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/borders.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/date-picker.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/tree.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/window.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/structure/list-view.css \ - $(PACKAGE)/static/lib/cgxp/ext/Ext/resources/css/xtheme-gray.css \ - $(PACKAGE)/static/lib/cgxp/openlayers/theme/default/style.css \ - $(PACKAGE)/static/lib/cgxp/geoext/resources/css/gxtheme-gray.css \ - $(PACKAGE)/static/lib/cgxp/geoext.ux/ux/Measure/resources/css/measure.css \ - $(PACKAGE)/static/lib/cgxp/gxp/src/theme/all.css \ - $(PACKAGE)/static/lib/cgxp/core/src/theme/all.css \ - $(PACKAGE)/static/css/proj-map.css \ - $(PACKAGE)/static/css/proj-widgets.css -ifdef CSS_XAPI_FILES -CSS_XAPI_FILES := $(DEFAULT_CSS_XAPI_FILES) $(CSS_XAPI_FILES) -else -CSS_XAPI_FILES := $(DEFAULT_CSS_XAPI_FILES) -endif -CSS_XAPI_OUTPUT = $(OUTPUT_DIR)/xapi.css - -VALIDATE_PY_FOLDERS = $(PACKAGE)/*.py $(PACKAGE)/lib $(PACKAGE)/scripts $(PACKAGE)/views -VALIDATE_PY_TEST_FOLDERS = $(PACKAGE)/tests - -# Sencha touch - -SENCHA_CMD ?= sencha-cmd - -JSBUILD_MOBILE_CONFIG = jsbuild/mobile.cfg -JSBUILD_MOBILE_OUTPUT_DIR = $(PACKAGE)/static/mobile/ -JSBUILD_MOBILE_OUTPUT_FILES = $(addprefix $(JSBUILD_MOBILE_OUTPUT_DIR), openlayers-mobile.js) -MOBILE_APP_JS_FILES = $(PACKAGE)/static/mobile/config.js $(PACKAGE)/static/mobile/app.js $(shell find $(PACKAGE)/static/mobile/app -type f -name '*.js' 2> /dev/null) - -# Documentation -SPHINX_FILES = $(shell find doc -name "*.rst" -print) - -# Server localisation -SERVER_LOCALISATION_SOURCES_FILES += $(PACKAGE)/models.py $(shell find $(PACKAGE)/templates -type f -name '*.html') -SERVER_LOCALISATION_FILES = $(addprefix $(PACKAGE)/locale/, $(addsuffix /LC_MESSAGES/$(PACKAGE)-server.mo, $(LANGUAGES))) -CLIENT_LOCALISATION_FILES = $(addprefix $(PACKAGE)/locale/, $(addsuffix /LC_MESSAGES/$(PACKAGE)-client.mo, $(LANGUAGES))) - -# Print -PRINT_BASE_DIR ?= print -PRINT_WAR ?= print-$(INSTANCE_ID).war -PRINT_OUTPUT ?= /srv/tomcat/tomcat1/webapps -PRINT_TMP ?= /tmp -TOMCAT_SERVICE_COMMAND ?= sudo /etc/init.d/tomcat-tomcat1 -ifneq ($(TOMCAT_SERVICE_COMMAND),) -TOMCAT_STOP_COMMAND ?= $(TOMCAT_SERVICE_COMMAND) stop -TOMCAT_START_COMMAND ?= $(TOMCAT_SERVICE_COMMAND) start -endif -ifeq ($(PRINT_VERSION), 3) -PRINT_BASE_WAR ?= print-servlet.war -PRINT_INPUT += print-apps WEB-INF -PRINT_REQUIREMENT += \ - $(PRINT_BASE_DIR)/WEB-INF/lib/jasperreports-functions-5.5.0.jar \ - $(PRINT_BASE_DIR)/WEB-INF/lib/joda-time-1.6.jar \ - $(PRINT_BASE_DIR)/WEB-INF/lib/jasperreports-fonts-5.5.0.jar \ - $(PRINT_BASE_DIR)/WEB-INF/lib/postgresql-9.3-1102.jdbc41.jar \ - $(PRINT_BASE_DIR)/WEB-INF/classes/logback.xml \ - $(PRINT_BASE_DIR)/WEB-INF/classes/mapfish-spring-application-context-override.xml \ - $(shell find $(PRINT_BASE_DIR)/print-apps) -endif - -ifeq ($(PRINT_VERSION), 2) -PRINT_BASE_WAR ?= print-servlet-2.1-SNAPSHOT-IMG-MAGICK.war -PRINT_INPUT_LS ?= config.yaml WEB-INF/classes/log4j.properties -PRINT_INPUT_FIND ?= *.tif *.bmp *.jpg *.jpeg *.gif *.png *.pdf -PRINT_INPUT += $(shell cd $(PRINT_BASE_DIR) && ls -1 $(PRINT_INPUT_LS) 2> /dev/null) -PRINT_INPUT += $(foreach INPUT, $(PRINT_INPUT_FIND), $(shell cd $(PRINT_BASE_DIR) && find -name '$(INPUT)' -type f)) -PRINT_REQUIREMENT += $(addprefix $(PRINT_BASE_DIR)/, $(PRINT_INPUT)) -endif - -PRINT_REQUIREMENT += $(PRINT_BASE_DIR)/$(PRINT_BASE_WAR) - -# Apache -APACHE_ENTRY_POINT ?= /$(INSTANCE_ID)/ -APACHE_VHOST ?= $(PACKAGE) -APACHE_CONF_DIR ?= /var/www/vhosts/$(APACHE_VHOST)/conf -APACHE_GRACEFUL ?= sudo /usr/sbin/apache2ctl graceful -CONF_FILES_IN = $(shell ls -1 apache/*.conf.in 2> /dev/null) -CONF_FILES_MAKO = $(shell ls -1 apache/*.conf.mako 2> /dev/null) -CONF_FILES_JINJA = $(shell ls -1 apache/*.conf.jinja 2> /dev/null) -CONF_FILES = $(shell ls -1 apache/*.conf 2> /dev/null) $(CONF_FILES_IN:.in=) $(CONF_FILES_MAKO:.mako=) $(CONF_FILES_JINJA:.jinja=) -PY_FILES = $(shell find $(PACKAGE) -type f -name '*.py' -print) -TEMPLATES_FILES = $(shell find $(PACKAGE)/templates -type f -print) - -# Templates -TEMPLATE_EXCLUDE += .build print/templates \ - CONST_alembic/main/script.py.mako \ - CONST_alembic/static/script.py.mako \ - node_modules \ - $(PACKAGE)/static/lib -FIND_OPTS = $(foreach ELEM, $(TEMPLATE_EXCLUDE),-path ./$(ELEM) -prune -o) -type f -TEMPLATE_FILES = $(shell find $(FIND_OPTS) -name "*.in" -print) -MAKO_FILES = $(shell find $(FIND_OPTS) -name "*.mako" -print) -JINJA_FILES = $(shell find $(FIND_OPTS) -name "*.jinja" -print) -VARS_FILES += CONST_vars.yaml $(VARS_FILE) -VARS_DEPENDS += $(VARS_FILES) .build/node_modules.timestamp -CONFIG_VARS += sqlalchemy.url schema parentschema enable_admin_interface pyramid_closure \ - node_modules_path closure_library_path default_locale_name servers layers \ - available_locale_names cache admin_interface functionalities external_themes_url \ - raster shortener hide_capabilities use_security_metadata mapserverproxy \ - tinyowsproxy print_url tiles_url checker check_collector default_max_age jsbuild package srid \ - reset_password -ENVIRONMENT_VARS += INSTANCE_ID=${INSTANCE_ID} \ - APACHE_ENTRY_POINT=$(APACHE_ENTRY_POINT) \ - DEVELOPMENT=${DEVELOPMENT} \ - PACKAGE=${PACKAGE} -C2C_TEMPLATE_CMD = $(ENVIRONMENT_VARS) $(VENV_BIN)/c2c-template --vars $(VARS_FILE) -MAKE_FILES = $(shell ls -1 *.mk) CONST_Makefile - -# Disabling Make built-in rules to speed up execution time -.SUFFIXES: - -.PHONY: help -help: - @echo "Usage: make " - @echo - @echo "Main targets:" - @echo - @echo "- build Build and configure the project" - @echo "- checks Perform a number of checks on the code" - @echo "- serve Run the development server (Pserve)" - @echo "- clean Remove generated files" - @echo "- cleanall Remove all the build artefacts" - @echo - @echo "Utility targets:" - @echo - @echo "- update Update and clean the project (Git, Node, Pip)" - @echo "- update-git-submodules Update and clean the Git submodules" - @echo "- update-node-modules Update node modules (using --force)" - @echo "- upgrade Launch the upgrade process" -ifdef UTILITY_HELP - @echo $(UTILITY_HELP) -endif - @echo - @echo "Secondary targets:" - @echo - @echo "- build-cgxp Build the javascript and the css for cgxp" - @echo "- build-ngeo Build the javascript and the css for ngeo" - @echo "- build-server Build the files required by the server" - @echo "- compile-js-catalog Compile the Angular translation catalog" - @echo "- compile-py-catalog Compile the Python translation catalog" - @echo "- flake8 Run Flake8 checker on the Python code" - @echo "- lint-ngeo Check the JavaScript code with linters for ngeo" - @echo "- template-clean Clean the template file" - @echo "- template-generate Generate the template file" -ifdef SECONDARY_HELP - @echo $(SECONDARY_HELP) -endif - @echo - -.PHONY: build -build: $(BUILD_RULES) - -.PHONY: checks -checks: flake8 $(CLIENT_CHECK_RULE) $(WEB_RULE) - -.PHONY: clean -clean: template-clean - rm -f .build/*.timestamp - rm -rf $(OUTPUT_DIR)/ - rm -f $(JSBUILD_MOBILE_OUTPUT_FILES) - rm -rf $(PACKAGE)/static/mobile/build - rm -rf $(PACKAGE)/static/mobile/archive - $(TOMCAT_OUTPUT_CMD_PREFIX) rm -f $(PRINT_OUTPUT)/$(PRINT_WAR) - $(TOMCAT_OUTPUT_CMD_PREFIX) rm -rf $(PRINT_OUTPUT)/$(PRINT_WAR:.war=) - rm -f $(APACHE_CONF_DIR)/$(INSTANCE_ID).conf - -.PHONY: cleanall -cleanall: clean - rm -rf .build - rm -rf node_modules - -.PHONY: flake8 -flake8: $(VENV_BIN)/flake8 - $(VENV_BIN)/flake8 $(PACKAGE) - -.PHONY: build-server -build-server: template-generate compile-py-catalog $(SERVER_LOCALISATION_FILES) $(CLIENT_LOCALISATION_FILES) - -.PHONY: build-cgxp -build-cgxp: $(JSBUILD_MAIN_OUTPUT_FILES) $(CSS_BASE_OUTPUT) $(CSS_API_OUTPUT) $(CSS_XAPI_OUTPUT) - -.PHONY: lint-ngeo -lint-ngeo: ./node_modules/.bin/eslint .build/node_modules.timestamp .build/eslint.timestamp - -.PHONY: serve -serve: build development.ini - $(VENV_BIN)/pserve --reload --monitor-restart development.ini - -.PHONY: update-node-modules -update-node-modules: - npm install --force - scripts/ensure_own_closure_util.sh - touch .build/node_modules.timestamp - -# Templates - -.PHONY: template-clean -template-clean: - rm -f $(TEMPLATE_FILES:.in=) - rm -f $(MAKO_FILES:.mako=) - rm -f $(JINJA_FILES:.jinja=) - rm -f .build/config-*.timestamp - rm -f .build/config.yaml - -.PHONY: template-generate -template-generate: $(TEMPLATE_FILES:.in=) $(MAKO_FILES:.mako=) $(JINJA_FILES:.jinja=) .build/config-$(INSTANCE_ID).timestamp - -$(TEMPLATE_FILES:.in=) $(MAKO_FILES:.mako=) $(JINJA_FILES:.jinja=): $(VENV_BIN)/c2c-template $(VARS_DEPENDS) - -%: %.in -ifeq ($(origin VARS_FILE), undefined) - @echo "Error: the variable VARS_FILE is required." - exit 1 -endif - $(C2C_TEMPLATE_CMD) --engine template --files $< - -%: %.mako -ifeq ($(origin VARS_FILE), undefined) - @echo "Error: the variable VARS_FILE is required." - exit 1 -endif - $(C2C_TEMPLATE_CMD) --engine mako --files $< - -%: %.jinja -ifeq ($(origin VARS_FILE), undefined) - @echo "Error: the variable VARS_FILE is required." - exit 1 -endif - $(C2C_TEMPLATE_CMD) --engine jinja --files $< - -$(VENV_BIN)/c2c-template: .build/dev-requirements.timestamp - -.build/config-$(INSTANCE_ID).timestamp: $(VENV_BIN)/c2c-template $(VARS_DEPENDS) $(MAKE_FILES) - rm -f .build/config-*.timestamp | true - $(C2C_TEMPLATE_CMD) --get-config .build/config.yaml $(CONFIG_VARS) - touch $@ - -# server localisation - -$(VENV_BIN)/pot-create: .build/requirements.timestamp - -.PHONY: compile-py-catalog -compile-py-catalog: $(SERVER_LOCALISATION_FILES) - -# to don't delete them -.SECONDARY: $(SERVER_LOCALISATION_FILES:.mo=.po) - -$(PACKAGE)/locale/$(PACKAGE)-server.pot: $(SERVER_LOCALISATION_SOURCES_FILES) $(VENV_BIN)/pot-create lingua.cfg - $(VENV_BIN)/pot-create -c lingua.cfg -o $@ $(SERVER_LOCALISATION_SOURCES_FILES) - # removes the allways changed date line - sed -i '/^"POT-Creation-Date: /d' $@ - sed -i '/^"PO-Revision-Date: /d' $@ - -$(PACKAGE)/locale/%/LC_MESSAGES/$(PACKAGE)-server.po: $(PACKAGE)/locale/$(PACKAGE)-server.pot .build/dev-requirements.timestamp - mkdir -p $(dir $@) - touch $@ - msgmerge --update $@ $< - -%.mo: %.po - msgfmt -o $@ $< - touch -c $@ - -# ngeo - -.PHONY: build-ngeo -build-ngeo: \ - $(OUTPUT_DIR)/build.js \ - $(OUTPUT_DIR)/build.css \ - $(OUTPUT_DIR)/build.min.css \ - compile-js-catalog - -.PHONY: compile-js-catalog -compile-js-catalog: $(JSON_CLIENT_LOCALISATION_FILES) - -$(VENV_BIN)/db2pot: .build/requirements.timestamp - -$(PACKAGE)/closure/%.py: $(CLOSURE_LIBRARY_PATH)/closure/bin/build/%.py - cp $< $@ - -$(PACKAGE)/locale/$(PACKAGE)-js.pot: $(APP_HTML_FILES) $(GCC_JS_FILES) $(APP_PARTIALS_FILES) .build/node_modules.timestamp - node tools/extract-messages.js $(APP_HTML_FILES) $(GCC_JS_FILES) $(APP_PARTIALS_FILES) > $@ - -.INTERMEDIATE:$(PACKAGE)/locale/$(PACKAGE)-db.pot -$(PACKAGE)/locale/$(PACKAGE)-db.pot: $(VENV_BIN)/db2pot development.ini .build/config-$(INSTANCE_ID).timestamp - mkdir -p $(dir $@) - $(VENV_BIN)/db2pot - msguniq $@ -o $@ - -$(PACKAGE)/locale/$(PACKAGE)-client.pot: $(PACKAGE)/locale/$(PACKAGE)-js.pot $(PACKAGE)/locale/$(PACKAGE)-db.pot - msgcat $^ > $@ - -$(JSON_CLIENT_LOCALISATION_FILES): .build/node_modules.timestamp - -$(OUTPUT_DIR)/locale/%/$(PACKAGE).json: $(PACKAGE)/locale/%/LC_MESSAGES/$(PACKAGE)-client-tooltips.po .build/node_modules.timestamp - mkdir -p $(dir $@) - node tools/compile-catalog $< > $@ - -.INTERMEDIATE:$(PACKAGE)/locale/%/LC_MESSAGES/$(PACKAGE)-client-tooltips.po -$(PACKAGE)/locale/%/LC_MESSAGES/$(PACKAGE)-client-tooltips.po: $(PACKAGE)/locale/%/LC_MESSAGES/$(PACKAGE)-client.po $(PACKAGE)/locale/%/LC_MESSAGES/$(PACKAGE)-tooltips.po - msgcat $^ > $@ - -$(PACKAGE)/locale/%/LC_MESSAGES/%/$(PACKAGE)-client.po: $(PACKAGE)/locale/$(PACKAGE)-client.pot - mkdir -p $(dir $@) - touch $@ - msgmerge --update $@ $< - - -$(OUTPUT_DIR)/build.js: .build/node_modules.timestamp .build/build.js $(NGEO_LIBS_JS_FILES) $(NGEO_PROJECT_LIBS_JS_FILES) - mkdir -p $(dir $@) - awk 'FNR==1{print ""}1' $(NGEO_LIBS_JS_FILES) $(NGEO_PROJECT_LIBS_JS_FILES) .build/build.js > $@ - sed -i '/^\/\/# sourceMappingURL=.*\.map$$/d' $@ - -$(OUTPUT_DIR)/build.min.css: $(LESS_FILES) .build/node_modules.timestamp - mkdir -p $(dir $@) - ./node_modules/.bin/lessc --clean-css $(PACKAGE)/static/less/$(PACKAGE).less $@ - -$(OUTPUT_DIR)/build.css: $(LESS_FILES) .build/node_modules.timestamp - mkdir -p $(dir $@) - ./node_modules/.bin/lessc $(PACKAGE)/static/less/$(PACKAGE).less $@ - -.build/build.js: build.json $(GCC_JS_FILES) \ - $(OUTPUT_DIR)/templatecache.js \ - .build/externs/angular-1.6.js \ - .build/externs/angular-1.6-q_templated.js \ - .build/externs/angular-1.6-http-promise_templated.js \ - .build/externs/jquery-1.9.js \ - .build/node_modules.timestamp - node node_modules/ngeo/buildtools/build.js $< $@ - -$(OUTPUT_DIR)/templatecache.js: templatecache.mako.js $(APP_PARTIALS_FILES) .build/dev-requirements.timestamp - mkdir -p $(dir $@) - PYTHONIOENCODING=UTF-8 $(VENV_BIN)/mako-render --var "partials=$(APP_PARTIALS_FILES)" $< > $@ - -.build/externs/angular-1.6.js: - mkdir -p $(dir $@) - wget -O $@ https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/angular-1.6.js - touch $@ - -.build/externs/angular-1.6-q_templated.js: - mkdir -p $(dir $@) - wget -O $@ https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/angular-1.6-q_templated.js - touch $@ - -.build/externs/angular-1.6-http-promise_templated.js: - mkdir -p $(dir $@) - wget -O $@ https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/angular-1.6-http-promise_templated.js - touch $@ - -.build/externs/jquery-1.9.js: - mkdir -p $(dir $@) - wget -O $@ https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-1.9.js - touch $@ - -package.json: -ifeq ($(NGEO), TRUE) - @echo Missing $@ required file by ngeo - exit 1 -else - touch $@ -endif - -.build/node_modules.timestamp: package.json - mkdir -p $(dir $@) -ifeq ($(NGEO), TRUE) - npm install - scripts/ensure_own_closure_util.sh -endif - touch $@ - -.build/eslint.timestamp: $(GCC_JS_FILES) - mkdir -p $(dir $@) - ./node_modules/.bin/eslint $(filter-out .build/node_modules.timestamp, $^) - touch $@ - - -# Git - -$(VENV_BIN)/jsbuild: .build/dev-requirements.timestamp - -.PHONY: update -update: - git pull --rebase $(GIT_REMOTE) $(GIT_BRANCH) - git clean -fd - git submodule sync - git submodule update - git submodule foreach git submodule sync - git submodule foreach git submodule update --init - git submodule foreach git clean -fd - git submodule foreach git submodule foreach git clean -fd -ifeq ($(NGEO), TRUE) - npm install --force - scripts/ensure_own_closure_util.sh - touch .build/node_modules.timestamp -endif - -.PHONY: update-git-submodules -update-git-submodules: - git submodule sync - git submodule update - git submodule foreach git submodule sync - git submodule foreach git submodule update --init - git submodule foreach git clean -fd - git submodule foreach git submodule foreach git clean -fd - -$(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/modules/%/HEAD: $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/HEAD - if [ -e $@ ]; then touch $@; else git submodule foreach git submodule update --init; fi - -$(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/HEAD: - git submodule update --init - - -# CGXP build - -$(VENV_BIN)/cssmin: .build/dev-requirements.timestamp - -$(VENV_BIN)/jsbuild: .build/dev-requirements.timestamp - -$(JSBUILD_MAIN_OUTPUT_FILES): $(JSBUILD_MAIN_FILES) $(JSBUILD_MAIN_CONFIG) \ - $(VENV_BIN)/jsbuild \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/modules/openlayers/HEAD \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/HEAD - mkdir -p $(dir $@) - $(VENV_BIN)/jsbuild $(JSBUILD_MAIN_CONFIG) $(JSBUILD_ARGS) -j $(notdir $@) -o $(OUTPUT_DIR) - -$(CSS_BASE_OUTPUT): $(VENV_BIN)/cssmin \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/modules/openlayers/HEAD \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/HEAD \ - $(CSS_BASE_FILES) - $(VENV_BIN)/c2c-cssmin $(CSSMIN_ARGS) $@ $(CSS_BASE_FILES) - -$(CSS_API_OUTPUT): $(VENV_BIN)/cssmin \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/modules/openlayers/HEAD \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/HEAD \ - $(CSS_API_FILES) - $(VENV_BIN)/c2c-cssmin $(CSSMIN_ARGS) $@ $(CSS_API_FILES) - -$(CSS_XAPI_OUTPUT): $(VENV_BIN)/cssmin \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/modules/openlayers/HEAD \ - $(GIT_MODULES_FOLDER)$(PACKAGE)/static/lib/cgxp/HEAD \ - $(CSS_XAPI_FILES) - $(VENV_BIN)/c2c-cssmin $(CSSMIN_ARGS) $@ $(CSS_XAPI_FILES) - -# Sencha touch - -.PHONY: sencha-touch -sencha-touch: $(PACKAGE)/static/mobile/build/production/App/app.js - -$(JSBUILD_MOBILE_OUTPUT_FILES): $(JSBUILD_MOBILE_CONFIG) $(VENV_BIN)/jsbuild - $(VENV_BIN)/jsbuild $(JSBUILD_MOBILE_CONFIG) $(JSBUILD_ARGS) -j $(notdir $@) -o $(JSBUILD_MOBILE_OUTPUT_DIR) - -$(PACKAGE)/static/mobile/build/production/App/app.js: $(JSBUILD_MOBILE_OUTPUT_FILES) \ - $(PACKAGE)/static/mobile/custom.scss $(MOBILE_APP_JS_FILES) - rm -rf $(PACKAGE)/static/mobile/build - rm -rf $(PACKAGE)/static/mobile/archive - cd $(PACKAGE)/static/mobile && $(SENCHA_CMD) app build production - -# Check packages - -$(VENV_BIN)/c2c-versions: .build/dev-requirements.timestamp - -.PHONY: test-packages -test-packages: .build/test-packages.timestamp - -.build/test-packages.timestamp: $(VENV_BIN)/c2c-versions CONST_packages.yaml - $(VENV_BIN)/c2c-versions CONST_packages.yaml main - touch $@ - -.PHONY: test-packages-mobile -test-packages-mobile: .build/test-packages-mobile.timestamp - -.build/test-packages-mobile.timestamp: $(VENV_BIN)/c2c-versions CONST_packages.yaml - $(VENV_BIN)/c2c-versions CONST_packages.yaml mobile - touch $@ - -.PHONY: test-packages-tilecloud-chain -test-packages-tilecloud-chain: .build/test-packages-tilecloud-chain.timestamp - -.build/test-packages-tilecloud-chain.timestamp: $(VENV_BIN)/c2c-versions CONST_packages.yaml - $(VENV_BIN)/c2c-versions CONST_packages.yaml tilecloud-chain - touch $@ - -.PHONY: test-packages-ngeo -test-packages-ngeo: .build/test-packages-ngeo.timestamp - -.build/test-packages-ngeo.timestamp: $(VENV_BIN)/c2c-versions CONST_packages.yaml - $(VENV_BIN)/c2c-versions CONST_packages.yaml ngeo - touch $@ - -# Check - -./node_modules/.bin/eslint: .build/dev-requirements.timestamp - -$(VENV_BIN)/flake8: .build/dev-requirements.timestamp - -# Venv - -.build/dev-requirements.timestamp: .build/venv.timestamp-noclean CONST_dev-requirements.txt - $(PIP_CMD) $(PIP_INSTALL_ARGS) pycparser==2.14 - $(PIP_CMD) $(PIP_INSTALL_ARGS) $(DEV_REQUIREMENTS) $(PIP_REDIRECT) - touch $@ - -.build/venv.timestamp-noclean: - mkdir -p $(dir $@) - virtualenv --setuptools --no-site-packages .build/venv - $(PIP_CMD) install \ - 'pip==7.1.2' 'setuptools==21.0.0' - touch $@ - -.build/requirements.timestamp: $(EGGS_DEPENDENCIES) - $(PIP_CMD) $(PIP_INSTALL_ARGS) pycparser==2.14 - $(PIP_CMD) $(PIP_INSTALL_ARGS) $(REQUIREMENTS) $(PIP_REDIRECT) - touch $@ - -# Print - -.PHONY: print -print: $(PRINT_OUTPUT)/$(PRINT_WAR) - -$(PRINT_OUTPUT)/$(PRINT_WAR): $(PRINT_REQUIREMENT) -# If Linux else windows -ifeq ($(VENV_BIN), .build/venv/bin) - cp $(PRINT_BASE_DIR)/$(PRINT_BASE_WAR) $(PRINT_TMP)/$(PRINT_WAR) - cd $(PRINT_BASE_DIR) && jar -uf $(PRINT_TMP)/$(PRINT_WAR) $(PRINT_INPUT) - chmod g+r,o+r $(PRINT_TMP)/$(PRINT_WAR) -else - mkdir -p $(PRINT_BASE_DIR)/$(PRINT_TMP) - cp $(PRINT_BASE_DIR)/$(PRINT_BASE_WAR) $(PRINT_BASE_DIR)/$(PRINT_TMP)/$(PRINT_WAR) - cd $(PRINT_BASE_DIR) && jar -uf $(PRINT_TMP)/$(PRINT_WAR) $(PRINT_INPUT) -endif - -ifneq ($(TOMCAT_STOP_COMMAND),) - $(TOMCAT_STOP_COMMAND) -endif - $(TOMCAT_OUTPUT_CMD_PREFIX) rm -f $(PRINT_OUTPUT)/$(PRINT_WAR) - $(TOMCAT_OUTPUT_CMD_PREFIX) rm -rf $(PRINT_OUTPUT)/$(PRINT_WAR:.war=) -# If Linux else windows -ifeq ($(VENV_BIN), .build/venv/bin) - $(TOMCAT_OUTPUT_CMD_PREFIX) cp $(PRINT_TMP)/$(PRINT_WAR) $(PRINT_OUTPUT) - rm -f $(PRINT_TMP)/$(PRINT_WAR) -else - mv $(PRINT_BASE_DIR)/$(PRINT_TMP)/$(PRINT_WAR) $(PRINT_OUTPUT) - cd $(PRINT_BASE_DIR) && rm -fd $(PRINT_TMP) -endif -ifneq ($(TOMCAT_START_COMMAND),) - $(TOMCAT_START_COMMAND) -endif - -print/WEB-INF/lib/jasperreports-functions-5.5.0.jar: - mkdir -p $(dir $@) - wget http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.5.0/jasperreports-functions-5.5.0.jar/download -O $@ - touch $@ - -print/WEB-INF/lib/joda-time-1.6.jar: - mkdir -p $(dir $@) - wget http://mirrors.ibiblio.org/pub/mirrors/maven2/joda-time/joda-time/1.6/joda-time-1.6.jar -O $@ - touch $@ - -print/WEB-INF/lib/jasperreports-fonts-5.5.0.jar: - mkdir -p $(dir $@) - wget http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.5.0/jasperreports-fonts-5.5.0.jar/download -O $@ - touch $@ - -print/WEB-INF/lib/postgresql-9.3-1102.jdbc41.jar: - mkdir -p $(dir $@) - wget http://jdbc.postgresql.org/download/postgresql-9.3-1102.jdbc41.jar -O $@ - touch $@ - -# Apache config -.PHONY: apache -apache: .build/apache.timestamp - -$(APACHE_CONF_DIR)/$(INSTANCE_ID).conf: - echo "Include $(shell pwd)/apache/*.conf" > $@ - -.build/apache.timestamp: \ - .build/config-$(INSTANCE_ID).timestamp \ - $(CONF_FILES) \ - apache/application.wsgi \ - $(PY_FILES) \ - $(TEMPLATES_FILES) \ - $(APACHE_CONF_DIR)/$(INSTANCE_ID).conf \ - .build/requirements.timestamp \ - $(PRINT_OUTPUT)/$(PRINT_WAR) \ - development.ini production.ini - $(APACHE_GRACEFUL) - touch $@ - -UPGRADE_MAKE_FILE ?= $(INSTANCE_ID).mk -UPGRADE_ARGS ?= - -.PHONY: upgrade -upgrade: .build/requirements.timestamp project.yaml - $(VENV_BIN)/c2ctool upgrade $(UPGRADE_MAKE_FILE) ${UPGRADE_ARGS} ${VERSION} - -.PHONY: upgrade1 -upgrade1: .build/requirements.timestamp project.yaml - $(VENV_BIN)/c2ctool upgrade $(UPGRADE_MAKE_FILE) ${UPGRADE_ARGS} ${VERSION} --step 1 - -.PHONY: upgrade2 -upgrade2: .build/requirements.timestamp project.yaml - $(VENV_BIN)/c2ctool upgrade $(UPGRADE_MAKE_FILE) ${UPGRADE_ARGS} ${VERSION} --step 2 - -.PHONY: upgrade3 -upgrade3: .build/requirements.timestamp project.yaml - $(VENV_BIN)/c2ctool upgrade $(UPGRADE_MAKE_FILE) ${UPGRADE_ARGS} ${VERSION} --step 3 - -.PHONY: upgrade4 -upgrade4: .build/requirements.timestamp project.yaml - $(VENV_BIN)/c2ctool upgrade $(UPGRADE_MAKE_FILE) ${UPGRADE_ARGS} ${VERSION} --step 4 diff --git a/CONST_alembic/main/env.py b/CONST_alembic/main/env.py deleted file mode 100644 index 674b927cb..000000000 --- a/CONST_alembic/main/env.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -from __future__ import with_statement -from alembic import context -from sqlalchemy import engine_from_config, pool -from logging.config import fileConfig - -# this is the Alembic Config object, which provides -# access to the values within the .ini file in use. -config = context.config - -# Interpret the config file for Python logging. -# This line sets up loggers basically. -fileConfig(config.config_file_name) - -# add your model's MetaData object here -# for 'autogenerate' support -# from myapp import mymodel -# target_metadata = mymodel.Base.metadata -target_metadata = None - -# other values from the config, defined by the needs of env.py, -# can be acquired: -# my_important_option = config.get_main_option("my_important_option") -# ... etc. - - -def run_migrations_offline(): # pragma: nocover - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - url = config.get_main_option("sqlalchemy.url") - context.configure( - url=url, - target_metadata=target_metadata, - version_table_schema=config.get_main_option("version_table_schema"), - ) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - engine = engine_from_config( - config.get_section(config.config_ini_section), - prefix="sqlalchemy.", - poolclass=pool.NullPool) - - connection = engine.connect() - context.configure( - connection=connection, - target_metadata=target_metadata, - version_table_schema=config.get_main_option("version_table_schema"), - ) - - try: - with context.begin_transaction(): - context.run_migrations() - finally: - connection.close() - -if context.is_offline_mode(): # pragma: nocover - run_migrations_offline() -else: - run_migrations_online() diff --git a/CONST_alembic/main/versions/164ac0819a61_add_image_format_to_wmts_layer.py b/CONST_alembic/main/versions/164ac0819a61_add_image_format_to_wmts_layer.py deleted file mode 100644 index 353218a85..000000000 --- a/CONST_alembic/main/versions/164ac0819a61_add_image_format_to_wmts_layer.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""Add image format to WMTS layer - -Revision ID: 164ac0819a61 -Revises: 20137477bd02 -Create Date: 2015-03-06 09:08:05.754746 -""" - -from alembic import op, context -from sqlalchemy import Column, Unicode - -# revision identifiers, used by Alembic. -revision = "164ac0819a61" -down_revision = "20137477bd02" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - - op.add_column("layer_wmts", Column("image_type", Unicode(10)), schema=schema) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - - op.drop_column("layer_wmts", "image_type", schema=schema) diff --git a/CONST_alembic/main/versions/166ff2dcc48d_create_database.py b/CONST_alembic/main/versions/166ff2dcc48d_create_database.py deleted file mode 100644 index 4c51053c3..000000000 --- a/CONST_alembic/main/versions/166ff2dcc48d_create_database.py +++ /dev/null @@ -1,344 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""create database - -Revision ID: 166ff2dcc48d -Revises: -Create Date: 2014-10-24 11:43:23.886123 -""" - -try: - from hashlib import sha1 - sha1 # suppress pyflakes warning -except ImportError: # pragma: nocover - from sha import new as sha1 - -from alembic import op, context -from sqlalchemy import ForeignKey, Column, Table, MetaData -from sqlalchemy.types import Integer, Boolean, Unicode, String, Float, \ - UserDefinedType, DateTime - -# revision identifiers, used by Alembic. -revision = "166ff2dcc48d" -down_revision = None - - -class TsVector(UserDefinedType): - """ A custom type for PostgreSQL's tsvector type. """ - def get_col_spec(self): - return "TSVECTOR" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - parentschema = context.get_context().config.get_main_option("parentschema") - srid = context.get_context().config.get_main_option("srid") - - engine = op.get_bind().engine - if op.get_context().dialect.has_table( - engine, "functionality", schema=schema - ): # pragma: nocover - return - - op.create_table( - "functionality", - Column("id", Integer, primary_key=True), - Column("name", Unicode, nullable=False), - Column("value", Unicode, nullable=False), - Column("description", Unicode), - schema=schema, - ) - op.create_table( - "treeitem", - Column("type", String(10), nullable=False), - Column("id", Integer, primary_key=True), - Column("name", Unicode), - Column("order", Integer, nullable=False), - Column("metadataURL", Unicode), - schema=schema, - ) - op.create_table( - "restrictionarea", - Column("id", Integer, primary_key=True), - Column("name", Unicode), - Column("description", Unicode), - Column("readwrite", Boolean, default=False), - schema=schema, - ) - op.execute( - "SELECT AddGeometryColumn('%(schema)s', 'restrictionarea', " - "'area', %(srid)s, 'POLYGON', 2)" % { - "schema": schema, "srid": srid - } - ) - op.create_table( - "shorturl", - Column("id", Integer, primary_key=True), - Column("url", Unicode(1000)), - Column("ref", String(20), index=True, unique=True, nullable=False), - Column("creator_email", Unicode(200)), - Column("creation", DateTime), - Column("last_hit", DateTime), - Column("nb_hits", Integer), - schema=schema + "_static", - ) - - op.create_table( - "role", - Column("id", Integer, primary_key=True), - Column("name", Unicode, unique=True, nullable=False), - Column("description", Unicode), - schema=schema, - ) - op.execute( - "SELECT AddGeometryColumn('%(schema)s', 'role', " - "'extent', %(srid)s, 'POLYGON', 2)" % { - "schema": schema, "srid": srid - } - ) - role = Table( - "role", MetaData(), - Column("name", Unicode, unique=True, nullable=False), - schema=schema, - ) - op.bulk_insert(role, [ - {"name": "role_admin"} - ]) - - op.create_table( - "layer", - Column( - "id", Integer, - ForeignKey(schema + ".treeitem.id"), primary_key=True - ), - Column("public", Boolean, default=True), - Column("inMobileViewer", Boolean, default=True), - Column("inDesktopViewer", Boolean, default=True), - Column("isChecked", Boolean, default=True), - Column("icon", Unicode), - Column("layerType", Unicode(12)), - Column("url", Unicode), - Column("imageType", Unicode(10)), - Column("style", Unicode), - Column("dimensions", Unicode), - Column("matrixSet", Unicode), - Column("wmsUrl", Unicode), - Column("wmsLayers", Unicode), - Column("queryLayers", Unicode), - Column("kml", Unicode), - Column("isSingleTile", Boolean), - Column("legend", Boolean, default=True), - Column("legendImage", Unicode), - Column("legendRule", Unicode), - Column("isLegendExpanded", Boolean, default=False), - Column("minResolution", Float), - Column("maxResolution", Float), - Column("disclaimer", Unicode), - Column("identifierAttributeField", Unicode), - Column("geoTable", Unicode), - Column("excludeProperties", Unicode), - Column("timeMode", Unicode(8)), - schema=schema, - ) - op.create_table( - "role_restrictionarea", - Column( - "role_id", Integer, - ForeignKey(schema + ".role.id"), primary_key=True - ), - Column( - "restrictionarea_id", Integer, - ForeignKey(schema + ".restrictionarea.id"), - primary_key=True - ), - schema=schema, - ) - op.create_table( - "tsearch", - Column("id", Integer, primary_key=True), - Column("label", Unicode), - Column("layer_name", Unicode), - Column("role_id", Integer, ForeignKey(schema + ".role.id"), nullable=True), - Column("public", Boolean, server_default="true"), - Column("ts", TsVector), - Column("params", Unicode, nullable=True), - schema=schema, - ) - op.execute( - "SELECT AddGeometryColumn('%(schema)s', 'tsearch', 'the_geom', " - "%(srid)s, 'GEOMETRY', 2)" % { - "schema": schema, "srid": srid - } - ) - op.create_index( - "tsearch_ts_idx", "tsearch", ["ts"], - schema=schema, postgresql_using="gin" - ) - op.create_table( - "treegroup", - Column( - "id", Integer, - ForeignKey(schema + ".treeitem.id"), primary_key=True - ), - schema=schema, - ) - - op.create_table( - "user", - Column("type", String(10), nullable=False), - Column("id", Integer, primary_key=True), - Column("username", Unicode, unique=True, nullable=False), - Column("password", Unicode, nullable=False), - Column("email", Unicode, nullable=False), - Column("is_password_changed", Boolean, default=False), - Column("role_id", Integer, ForeignKey(schema + ".role.id"), nullable=False), - schema=schema, - ) - if parentschema is not None and parentschema is not "": # pragma: nocover - op.add_column( - "user", - Column("parent_role_id", Integer, ForeignKey(parentschema + ".role.id")), - schema=schema - ) - op.execute( - "INSERT INTO %(schema)s.user (type, username, email, password, role_id) " - "(SELECT 'user', 'admin', 'info@example.com', '%(pass)s', r.id " - "FROM %(schema)s.role AS r " - "WHERE r.name = 'role_admin')" % { - "schema": schema, - "pass": sha1("admin").hexdigest() - } - ) - - op.create_table( - "role_functionality", - Column( - "role_id", Integer, - ForeignKey(schema + ".role.id"), primary_key=True - ), - Column( - "functionality_id", Integer, - ForeignKey(schema + ".functionality.id"), primary_key=True - ), - schema=schema, - ) - op.create_table( - "user_functionality", - Column( - "user_id", Integer, - ForeignKey(schema + ".user.id"), primary_key=True - ), - Column( - "functionality_id", Integer, - ForeignKey(schema + ".functionality.id"), primary_key=True - ), - schema=schema, - ) - op.create_table( - "layergroup", - Column( - "id", Integer, - ForeignKey(schema + ".treegroup.id"), primary_key=True - ), - Column("isExpanded", Boolean), - Column("isInternalWMS", Boolean), - # children have radio button instance of check box - Column("isBaseLayer", Boolean), - schema=schema, - ) - op.create_table( - "layer_restrictionarea", - Column( - "layer_id", Integer, - ForeignKey(schema + ".layer.id"), primary_key=True - ), - Column( - "restrictionarea_id", Integer, - ForeignKey(schema + ".restrictionarea.id"), primary_key=True - ), - schema=schema, - ) - op.create_table( - "layergroup_treeitem", - Column( - "treegroup_id", Integer, - ForeignKey(schema + ".treegroup.id"), primary_key=True - ), - Column( - "treeitem_id", Integer, - ForeignKey(schema + ".treeitem.id"), primary_key=True - ), - schema=schema, - ) - op.create_table( - "theme", - Column( - "id", Integer, - ForeignKey(schema + ".treegroup.id"), primary_key=True - ), - Column("icon", Unicode), - Column("inMobileViewer", Boolean, default=False), - Column("inDesktopViewer", Boolean, default=True), - schema=schema, - ) - op.create_table( - "theme_functionality", - Column( - "theme_id", Integer, - ForeignKey(schema + ".theme.id"), primary_key=True - ), - Column( - "functionality_id", Integer, - ForeignKey(schema + ".functionality.id"), primary_key=True - ), - schema=schema, - ) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - - op.drop_table("theme_functionality", schema=schema) - op.drop_table("theme", schema=schema) - op.drop_table("layergroup_treeitem", schema=schema) - op.drop_table("layer_restrictionarea", schema=schema) - op.drop_table("layergroup", schema=schema) - op.drop_table("user_functionality", schema=schema) - op.drop_table("role_functionality", schema=schema) - op.drop_table("user", schema=schema) - op.drop_table("treegroup", schema=schema) - op.drop_table("tsearch", schema=schema) - op.drop_table("role_restrictionarea", schema=schema) - op.drop_table("layer", schema=schema) - op.drop_table("role", schema=schema) - op.drop_table("shorturl", schema=schema + "_static") - op.drop_table("restrictionarea", schema=schema) - op.drop_table("treeitem", schema=schema) - op.drop_table("functionality", schema=schema) diff --git a/CONST_alembic/main/versions/1d5d4abfebd1_add_restricted_theme.py b/CONST_alembic/main/versions/1d5d4abfebd1_add_restricted_theme.py deleted file mode 100644 index 565d0aa3a..000000000 --- a/CONST_alembic/main/versions/1d5d4abfebd1_add_restricted_theme.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""Add restricted theme - -Revision ID: 1d5d4abfebd1 -Revises: 54645a535ad6 -Create Date: 2014-11-25 16:51:51.567026 -""" - -from alembic import op, context -from sqlalchemy import Column, ForeignKey -from sqlalchemy.types import Integer, Boolean - -# revision identifiers, used by Alembic. -revision = "1d5d4abfebd1" -down_revision = "54645a535ad6" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - - engine = op.get_bind().engine - if op.get_context().dialect.has_table( - engine, "restricted_role_theme", schema=schema - ): # pragma: nocover - return - - op.add_column("theme", Column( - "public", Boolean, server_default="t", nullable=False - ), schema=schema) - op.create_table( - "restricted_role_theme", - Column( - "role_id", Integer, ForeignKey(schema + ".role.id"), primary_key=True - ), - Column( - "theme_id", Integer, ForeignKey(schema + ".theme.id"), primary_key=True - ), - schema=schema - ) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - - op.drop_table("restricted_role_theme", schema=schema) - op.drop_column("theme", "public", schema=schema) diff --git a/CONST_alembic/main/versions/20137477bd02_update_icons_url.py b/CONST_alembic/main/versions/20137477bd02_update_icons_url.py deleted file mode 100644 index 4c3c34b4a..000000000 --- a/CONST_alembic/main/versions/20137477bd02_update_icons_url.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""Update icons url - -Revision ID: 20137477bd02 -Revises: 415746eb9f6 -Create Date: 2014-12-10 17:50:36.176587 -""" - -from alembic import op, context - -# revision identifiers, used by Alembic. -revision = "20137477bd02" -down_revision = "1d5d4abfebd1" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - - updates = [ - "UPDATE %(schema)s.%(table)s SET %(column)s = 'static:///' || %(column)s " - "WHERE (%(column)s IS NOT NULL) AND (NOT %(column)s = '') " - "AND NOT (%(column)s LIKE 'http%%') ""AND NOT (%(column)s LIKE '/%%')", - "UPDATE %(schema)s.%(table)s SET %(column)s = 'static://' || %(column)s " - "WHERE (%(column)s IS NOT NULL) AND (NOT %(column)s = '') " - "AND NOT (%(column)s LIKE 'http%%') AND NOT (%(column)s LIKE 'static://%%')", - ] - for update in updates: - op.execute(update % { - "schema": schema, "table": "theme", "column": "icon" - }) - op.execute(update % { - "schema": schema, "table": "layerv1", "column": "icon" - }) - op.execute(update % { - "schema": schema, "table": "layerv1", "column": "kml" - }) - op.execute(update % { - "schema": schema, "table": "layerv1", "column": "legend_image" - }) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - - updates = [ - "UPDATE %(schema)s.%(table)s SET %(column)s = substring(%(column)s from 11) " - "WHERE %(column)s LIKE 'static:///%%'", - "UPDATE %(schema)s.%(table)s SET %(column)s = substring(%(column)s from 10) " - "WHERE %(column)s LIKE 'static://%%'", - ] - for update in updates: - op.execute(update % { - "schema": schema, "table": "theme", "column": "icon" - }) - op.execute(update % { - "schema": schema, "table": "layerv1", "column": "icon" - }) - op.execute(update % { - "schema": schema, "table": "layerv1", "column": "kml" - }) - op.execute(update % { - "schema": schema, "table": "layerv1", "column": "legend_image" - }) diff --git a/CONST_alembic/main/versions/415746eb9f6_changes_for_v2.py b/CONST_alembic/main/versions/415746eb9f6_changes_for_v2.py deleted file mode 100644 index 412afed9e..000000000 --- a/CONST_alembic/main/versions/415746eb9f6_changes_for_v2.py +++ /dev/null @@ -1,404 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""Changes to start the implementation of the version 2 - -Revision ID: 415746eb9f6 -Revises: None -Create Date: 2014-10-23 16:00:47.940216 -""" - -from alembic import op, context -from sqlalchemy import Column, ForeignKey, Table, MetaData -from sqlalchemy.types import Integer, Boolean, Unicode, Float - -# revision identifiers, used by Alembic. -revision = "415746eb9f6" -down_revision = "166ff2dcc48d" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - - engine = op.get_bind().engine - if op.get_context().dialect.has_table( - engine, "interface", schema=schema - ): # pragma: nocover - return - - op.drop_table("user_functionality", schema=schema) - - op.create_table( - "interface", - Column( - "id", Integer, primary_key=True - ), - Column("name", Unicode), - Column("description", Unicode), - schema=schema, - ) - - op.create_table( - "interface_layer", - Column( - "interface_id", Integer, ForeignKey(schema + ".interface.id"), primary_key=True - ), - Column( - "layer_id", Integer, ForeignKey(schema + ".layer.id"), primary_key=True - ), - schema=schema, - ) - - op.create_table( - "interface_theme", - Column( - "interface_id", Integer, ForeignKey(schema + ".interface.id"), primary_key=True - ), - Column( - "theme_id", Integer, ForeignKey(schema + ".theme.id"), primary_key=True - ), - schema=schema, - ) - - op.create_table( - "layerv1", - Column( - "id", Integer, ForeignKey(schema + ".layer.id"), primary_key=True - ), - Column("is_checked", Boolean, default=True), - Column("icon", Unicode), - Column("layer_type", Unicode(12)), - Column("url", Unicode), - Column("image_type", Unicode(10)), - Column("style", Unicode), - Column("dimensions", Unicode), - Column("matrix_set", Unicode), - Column("wms_url", Unicode), - Column("wms_layers", Unicode), - Column("query_layers", Unicode), - Column("kml", Unicode), - Column("is_single_tile", Boolean), - Column("legend", Boolean, default=True), - Column("legend_image", Unicode), - Column("legend_rule", Unicode), - Column("is_legend_expanded", Boolean, default=False), - Column("min_resolution", Float), - Column("max_resolution", Float), - Column("disclaimer", Unicode), - Column("identifier_attribute_field", Unicode), - Column("exclude_properties", Unicode), - Column("time_mode", Unicode(8)), - schema=schema, - ) - - op.execute( - "UPDATE ONLY %(schema)s.treeitem SET type = 'layerv1' " - "WHERE type='layer'" % {"schema": schema} - ) - - op.execute( - 'INSERT INTO %(schema)s.layerv1 (' - 'id, is_checked, icon, layer_type, url, image_type, style, dimensions, matrix_set, ' - 'wms_url, wms_layers, query_layers, kml, is_single_tile, legend, ' - 'legend_image, legend_rule, is_legend_expanded, min_resolution, max_resolution, ' - 'disclaimer, identifier_attribute_field, exclude_properties, time_mode) ' - '(SELECT ' - 'id, "isChecked" AS is_checked, icon, "layerType" AS layer_type, url, ' - '"imageType" AS image_type, style, dimensions, "matrixSet" AS matrix_set, ' - '"wmsUrl" AS wms_url, "wmsLayers" AS wms_layers, "queryLayers" AS query_layers, kml, ' - '"isSingleTile" AS is_single_tile, legend, "legendImage" AS legend_image, ' - '"legendRule" AS legend_rule, "isLegendExpanded" AS is_legend_expanded, ' - '"minResolution" AS min_resolution, "maxResolution" AS max_resolution, disclaimer, ' - '"identifierAttributeField" AS identifier_attribute_field, ' - '"excludeProperties" AS exclude_properties, "timeMode" AS time_mode ' - 'FROM %(schema)s.layer)' % {"schema": schema} - ) - - op.drop_column("layer", "isChecked", schema=schema) - op.drop_column("layer", "icon", schema=schema) - op.drop_column("layer", "layerType", schema=schema) - op.drop_column("layer", "url", schema=schema) - op.drop_column("layer", "imageType", schema=schema) - op.drop_column("layer", "style", schema=schema) - op.drop_column("layer", "dimensions", schema=schema) - op.drop_column("layer", "matrixSet", schema=schema) - op.drop_column("layer", "wmsUrl", schema=schema) - op.drop_column("layer", "wmsLayers", schema=schema) - op.drop_column("layer", "queryLayers", schema=schema) - op.drop_column("layer", "kml", schema=schema) - op.drop_column("layer", "isSingleTile", schema=schema) - op.drop_column("layer", "legend", schema=schema) - op.drop_column("layer", "legendImage", schema=schema) - op.drop_column("layer", "legendRule", schema=schema) - op.drop_column("layer", "isLegendExpanded", schema=schema) - op.drop_column("layer", "minResolution", schema=schema) - op.drop_column("layer", "maxResolution", schema=schema) - op.drop_column("layer", "disclaimer", schema=schema) - op.drop_column("layer", "identifierAttributeField", schema=schema) - op.drop_column("layer", "excludeProperties", schema=schema) - op.drop_column("layer", "timeMode", schema=schema) - - interface = Table( - "interface", MetaData(), - Column("name", Unicode), - schema=schema, - ) - op.bulk_insert(interface, [ - {"name": "main"}, - {"name": "mobile"}, - {"name": "edit"}, - {"name": "routing"}, - ]) - - op.execute( - 'INSERT INTO %(schema)s.interface_layer (layer_id, interface_id) ' - '(SELECT l.id AS layer_id, i.id AS interface_id ' - 'FROM %(schema)s.layer AS l, %(schema)s.interface AS i ' - 'WHERE i.name in (\'main\', \'edit\', \'routing\') AND l."inDesktopViewer")' % { - "schema": schema - } - ) - op.execute( - 'INSERT INTO %(schema)s.interface_layer (layer_id, interface_id) ' - '(SELECT l.id AS layer_id, i.id AS interface_id ' - 'FROM %(schema)s.layer AS l, %(schema)s.interface AS i ' - 'WHERE i.name = \'mobile\' AND l."inMobileViewer")' % {"schema": schema} - ) - - op.execute( - 'INSERT INTO %(schema)s.interface_theme (theme_id, interface_id) ' - '(SELECT l.id AS theme_id, i.id AS interface_id ' - 'FROM %(schema)s.theme AS l, %(schema)s.interface AS i ' - 'WHERE i.name in (\'main\', \'edit\', \'routing\') AND l."inDesktopViewer")' % { - "schema": schema - } - ) - op.execute( - 'INSERT INTO %(schema)s.interface_theme (theme_id, interface_id) ' - '(SELECT l.id AS theme_id, i.id AS interface_id ' - 'FROM %(schema)s.theme AS l, %(schema)s.interface AS i ' - 'WHERE i.name = \'mobile\' AND l."inMobileViewer")' % {"schema": schema} - ) - - op.drop_column("layer", "inMobileViewer", schema=schema) - op.drop_column("layer", "inDesktopViewer", schema=schema) - - op.alter_column("layer", "geoTable", new_column_name="geo_table", schema=schema) - - op.drop_column("theme", "inMobileViewer", schema=schema) - op.drop_column("theme", "inDesktopViewer", schema=schema) - - op.alter_column("treeitem", "metadataURL", new_column_name="metadata_url", schema=schema) - op.alter_column("layergroup", "isExpanded", new_column_name="is_expanded", schema=schema) - op.alter_column("layergroup", "isInternalWMS", new_column_name="is_internal_wms", schema=schema) - op.alter_column("layergroup", "isBaseLayer", new_column_name="is_base_layer", schema=schema) - - op.create_table( - "layer_internal_wms", - Column( - "id", Integer, ForeignKey(schema + ".layer.id"), primary_key=True - ), - Column("layer", Unicode), - Column("image_type", Unicode(10)), - Column("style", Unicode), - Column("time_mode", Unicode(8)), - schema=schema, - ) - - op.create_table( - "layer_external_wms", - Column( - "id", Integer, ForeignKey(schema + ".layer.id"), primary_key=True - ), - Column("url", Unicode), - Column("layer", Unicode), - Column("image_type", Unicode(10)), - Column("style", Unicode), - Column("is_single_tile", Boolean), - Column("time_mode", Unicode(8)), - schema=schema, - ) - - op.create_table( - "layer_wmts", - Column( - "id", Integer, ForeignKey(schema + ".layer.id"), primary_key=True, - ), - Column("url", Unicode), - Column("layer", Unicode), - Column("style", Unicode), - Column("matrix_set", Unicode), - schema=schema, - ) - - op.create_table( - "ui_metadata", - Column( - "id", Integer, primary_key=True - ), - Column("name", Unicode), - Column("value", Unicode), - Column("description", Unicode), - Column("item_id", Integer, ForeignKey(schema + ".treeitem.id"), nullable=False), - schema=schema, - ) - - op.create_table( - "wmts_dimension", - Column( - "id", Integer, primary_key=True - ), - Column("name", Unicode), - Column("value", Unicode), - Column("description", Unicode), - Column("layer_id", Integer, ForeignKey(schema + ".layer_wmts.id"), nullable=False), - schema=schema, - ) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - - op.drop_table("wmts_dimension", schema=schema) - op.drop_table("ui_metadata", schema=schema) - op.drop_table("layer_wmts", schema=schema) - op.drop_table("layer_external_wms", schema=schema) - op.drop_table("layer_internal_wms", schema=schema) - - op.add_column("layer", Column("inMobileViewer", Boolean, default=False), schema=schema) - op.add_column("layer", Column("inDesktopViewer", Boolean, default=True), schema=schema) - - op.alter_column("layer", "geo_table", new_column_name="geoTable", schema=schema) - - op.add_column("theme", Column("inMobileViewer", Boolean, default=False), schema=schema) - op.add_column("theme", Column("inDesktopViewer", Boolean, default=True), schema=schema) - - op.alter_column("treeitem", "metadata_url", new_column_name="metadataURL", schema=schema) - op.alter_column("layergroup", "is_expanded", new_column_name="isExpanded", schema=schema) - op.alter_column("layergroup", "is_internal_wms", new_column_name="isInternalWMS", schema=schema) - op.alter_column("layergroup", "is_base_layer", new_column_name="isBaseLayer", schema=schema) - - op.execute( - 'UPDATE ONLY %(schema)s.theme AS t ' - 'SET "inDesktopViewer" = FALSE' % {"schema": schema} - ) - op.execute( - 'UPDATE ONLY %(schema)s.layer AS t ' - 'SET "inDesktopViewer" = FALSE' % {"schema": schema} - ) - - op.execute( - 'UPDATE ONLY %(schema)s.theme AS t ' - 'SET "inMobileViewer" = TRUE ' - 'FROM %(schema)s.interface AS i, %(schema)s.interface_theme AS it ' - 'WHERE i.name = \'mobile\' AND i.id = it.interface_id AND it.theme_id = t.id' % { - "schema": schema - } - ) - op.execute( - 'UPDATE ONLY %(schema)s.theme AS t ' - 'SET "inDesktopViewer" = TRUE ' - 'FROM %(schema)s.interface AS i, %(schema)s.interface_theme AS it ' - 'WHERE i.name = \'main\' AND i.id = it.interface_id AND it.theme_id = t.id' % { - "schema": schema - } - ) - op.execute( - 'UPDATE ONLY %(schema)s.layer AS l ' - 'SET "inMobileViewer" = TRUE ' - 'FROM %(schema)s.interface AS i, %(schema)s.interface_layer AS il ' - 'WHERE i.name = \'mobile\' AND i.id = il.interface_id AND il.layer_id = l.id' % { - "schema": schema - } - ) - op.execute( - 'UPDATE ONLY %(schema)s.layer AS l ' - 'SET "inDesktopViewer" = TRUE ' - 'FROM %(schema)s.interface AS i, %(schema)s.interface_layer AS il ' - 'WHERE i.name = \'main\' AND i.id = il.interface_id AND il.layer_id = l.id' % { - "schema": schema - } - ) - - op.add_column("layer", Column("timeMode", Unicode(8)), schema=schema) - op.add_column("layer", Column("excludeProperties", Unicode), schema=schema) - op.add_column("layer", Column("identifierAttributeField", Unicode), schema=schema) - op.add_column("layer", Column("disclaimer", Unicode), schema=schema) - op.add_column("layer", Column("maxResolution", Float), schema=schema) - op.add_column("layer", Column("minResolution", Float), schema=schema) - op.add_column("layer", Column("isLegendExpanded", Boolean, default=False), schema=schema) - op.add_column("layer", Column("legendRule", Unicode), schema=schema) - op.add_column("layer", Column("legendImage", Unicode), schema=schema) - op.add_column("layer", Column("legend", Boolean, default=True), schema=schema) - op.add_column("layer", Column("isSingleTile", Boolean, default=False), schema=schema) - op.add_column("layer", Column("kml", Unicode), schema=schema) - op.add_column("layer", Column("queryLayers", Unicode), schema=schema) - op.add_column("layer", Column("wmsLayers", Unicode), schema=schema) - op.add_column("layer", Column("wmsUrl", Unicode), schema=schema) - op.add_column("layer", Column("matrixSet", Unicode), schema=schema) - op.add_column("layer", Column("dimensions", Unicode), schema=schema) - op.add_column("layer", Column("style", Unicode), schema=schema) - op.add_column("layer", Column("imageType", Unicode(10)), schema=schema) - op.add_column("layer", Column("url", Unicode), schema=schema) - op.add_column("layer", Column("layerType", Unicode(12)), schema=schema) - op.add_column("layer", Column("icon", Unicode), schema=schema) - op.add_column("layer", Column("isChecked", Boolean, default=True), schema=schema) - - op.execute( - 'UPDATE %(schema)s.layer AS l SET (' - 'id, "isChecked", icon, "layerType", url, "imageType", style, dimensions, "matrixSet", ' - '"wmsUrl", "wmsLayers", "queryLayers", kml, "isSingleTile", legend, "legendImage", ' - '"legendRule", "isLegendExpanded", "minResolution", "maxResolution", disclaimer, ' - '"identifierAttributeField", "excludeProperties", "timeMode"' - ') = (' - 'o.id, o.is_checked, o.icon, o.layer_type, o.url, o.image_type, o.style, o.dimensions, ' - 'o.matrix_set, o.wms_url, o.wms_layers, o.query_layers, o.kml, o.is_single_tile, ' - 'o.legend, o.legend_image, o.legend_rule, o.is_legend_expanded, o.min_resolution, ' - 'o.max_resolution, o.disclaimer, o.identifier_attribute_field, o.exclude_properties, ' - 'o.time_mode ' - ') FROM %(schema)s.layerv1 AS o WHERE o.id = l.id' % {"schema": schema} - ) - - op.drop_table("layerv1", schema=schema) - op.drop_table("interface_theme", schema=schema) - op.drop_table("interface_layer", schema=schema) - op.drop_table("interface", schema=schema) - - op.create_table( - "user_functionality", - Column( - "user_id", Integer, - ForeignKey(schema + ".user.id"), primary_key=True - ), - Column( - "functionality_id", Integer, - ForeignKey(schema + ".functionality.id"), primary_key=True - ), - schema=schema, - ) diff --git a/CONST_alembic/main/versions/5109242131ce_add_column_time_widget.py b/CONST_alembic/main/versions/5109242131ce_add_column_time_widget.py deleted file mode 100644 index dedf27425..000000000 --- a/CONST_alembic/main/versions/5109242131ce_add_column_time_widget.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""add column time_widget - -Revision ID: 5109242131ce -Revises: 164ac0819a61 -Create Date: 2015-04-27 17:31:41.760977 -""" - -from alembic import op, context -from sqlalchemy import Column -from sqlalchemy.types import Unicode - -# revision identifiers, used by Alembic. -revision = "5109242131ce" -down_revision = "164ac0819a61" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - - # Instructions - for table in ["layerv1", "layer_internal_wms", "layer_external_wms"]: - op.add_column(table, Column("time_widget", Unicode(10), default=u"slider"), schema=schema) - op.execute("UPDATE %(schema)s.%(table)s SET time_widget = 'slider'" % { - "schema": schema, "table": table - }) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - - # Instructions - for table in ["layerv1", "layer_internal_wms", "layer_external_wms"]: - op.drop_column(table, "time_widget", schema=schema) diff --git a/CONST_alembic/main/versions/54645a535ad6_add_ordering_in_relation.py b/CONST_alembic/main/versions/54645a535ad6_add_ordering_in_relation.py deleted file mode 100644 index 982ce1259..000000000 --- a/CONST_alembic/main/versions/54645a535ad6_add_ordering_in_relation.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""Add ordering in relation - -Revision ID: 54645a535ad6 -Revises: 415746eb9f6 -Create Date: 2014-11-25 14:39:05.110315 -""" - -from alembic import op, context -from sqlalchemy import Column -from sqlalchemy.types import Integer - -# revision identifiers, used by Alembic. -revision = "54645a535ad6" -down_revision = "415746eb9f6" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - - op.drop_constraint("layergroup_treeitem_pkey", "layergroup_treeitem", schema=schema) - op.add_column("layergroup_treeitem", Column("id", Integer, primary_key=True), schema=schema) - op.add_column("layergroup_treeitem", Column("ordering", Integer), schema=schema) - op.execute( - 'UPDATE ONLY %(schema)s.layergroup_treeitem AS lt SET ordering = ti."order" ' - 'FROM %(schema)s.treeitem AS ti WHERE ti.id = lt.treeitem_id ' % {"schema": schema} - ) - op.add_column("theme", Column("ordering", Integer), schema=schema) - op.execute( - 'UPDATE ONLY %(schema)s.theme AS t SET ordering = ti."order" ' - 'FROM %(schema)s.treeitem AS ti WHERE ti.id = t.id ' % {"schema": schema} - ) - op.drop_column("treeitem", "order", schema=schema) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - op.add_column("treeitem", Column("order", Integer), schema=schema) - op.execute( - 'UPDATE ONLY %(schema)s.treeitem AS ti SET "order" = lt.ordering ' - 'FROM %(schema)s.layergroup_treeitem AS lt WHERE ti.id = lt.treeitem_id ' % { - "schema": schema - } - ) - op.execute( - 'UPDATE ONLY %(schema)s.treeitem AS ti SET "order" = t.ordering ' - 'FROM %(schema)s.theme AS t WHERE ti.id = t.id ' % {"schema": schema} - ) - op.drop_column("theme", "ordering", schema=schema) - op.drop_column("layergroup_treeitem", "ordering", schema=schema) - op.drop_column("layergroup_treeitem", "id", schema=schema) - op.create_primary_key( - "layergroup_treeitem_pkey", "layergroup_treeitem", - ["treegroup_id", "treeitem_id"], schema=schema - ) diff --git a/CONST_alembic/static/env.py b/CONST_alembic/static/env.py deleted file mode 100644 index 50b716039..000000000 --- a/CONST_alembic/static/env.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -from __future__ import with_statement -from alembic import context -from sqlalchemy import engine_from_config, pool -from logging.config import fileConfig - -# this is the Alembic Config object, which provides -# access to the values within the .ini file in use. -config = context.config - -# Interpret the config file for Python logging. -# This line sets up loggers basically. -fileConfig(config.config_file_name) - -# add your model's MetaData object here -# for 'autogenerate' support -# from myapp import mymodel -# target_metadata = mymodel.Base.metadata -target_metadata = None - -# other values from the config, defined by the needs of env.py, -# can be acquired: -# my_important_option = config.get_main_option("my_important_option") -# ... etc. - - -def run_migrations_offline(): # pragma: nocover - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - url = config.get_main_option("sqlalchemy.url") - context.configure( - url=url, - target_metadata=target_metadata, - version_table_schema=config.get_main_option("version_table_schema"), - ) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - engine = engine_from_config( - config.get_section(config.config_ini_section), - prefix="sqlalchemy.", - poolclass=pool.NullPool) - - connection = engine.connect() - context.configure( - connection=connection, - target_metadata=target_metadata, - version_table_schema=config.get_main_option("version_table_schema"), - ) - - try: - with context.begin_transaction(): - context.run_migrations() - finally: - connection.close() - -if context.is_offline_mode(): # pragma: nocover - run_migrations_offline() -else: - run_migrations_online() diff --git a/CONST_alembic/static/script.py.mako b/CONST_alembic/static/script.py.mako deleted file mode 100644 index a83fd1ed2..000000000 --- a/CONST_alembic/static/script.py.mako +++ /dev/null @@ -1,58 +0,0 @@ -# -*- coding: utf-8 -*- -# -*- coding: utf-8 -*- - -# Copyright (c) 2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""${message} - -Revision ID: ${up_revision} -Revises: ${down_revision} -Create Date: ${create_date} -""" - -from alembic import op, context - -# revision identifiers, used by Alembic. -revision = "${up_revision}" -down_revision = "${down_revision}" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - staticschema = schema + "_static" - parentschema = context.get_context().config.get_main_option("parentschema") - - ${upgrades if upgrades else "# Instructions"} - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - staticschema = schema + "_static" - parentschema = context.get_context().config.get_main_option("parentschema") - - ${downgrades if downgrades else "# Instructions"} diff --git a/CONST_alembic/static/versions/1da396a88908_move_user_table_to_static_schema.py b/CONST_alembic/static/versions/1da396a88908_move_user_table_to_static_schema.py deleted file mode 100644 index 00ea121bc..000000000 --- a/CONST_alembic/static/versions/1da396a88908_move_user_table_to_static_schema.py +++ /dev/null @@ -1,153 +0,0 @@ - -# Copyright (c) 2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - - -"""Move user table to static schema - -Revision ID: 1da396a88908 -Revises: 3f89a7d71a5e -Create Date: 2015-02-20 14:09:04.875390 -""" - -from alembic import op, context -from sqlalchemy import Column, ForeignKey -from sqlalchemy.types import Integer, String, Unicode, Boolean - -# revision identifiers, used by Alembic. -revision = "1da396a88908" -down_revision = "3f89a7d71a5e" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - staticschema = schema + "_static" - parentschema = context.get_context().config.get_main_option("parentschema") - - engine = op.get_bind().engine - if op.get_context().dialect.has_table( - engine, "user", schema=staticschema - ): # pragma: nocover - return - - op.create_table( - "user", - Column("type", String(10), nullable=False), - Column("id", Integer, primary_key=True), - Column("username", Unicode, unique=True, nullable=False), - Column("password", Unicode, nullable=False), - Column("email", Unicode, nullable=False), - Column("is_password_changed", Boolean, default=False), - Column("role_name", String), - schema=staticschema, - ) - parent_column = "" - parent_select = "" - parent_join = "" - if parentschema is not None and parentschema is not "": # pragma: nocover - op.add_column( - "user", - Column("parent_role_name", String), - schema=staticschema - ) - parent_column = ", parent_role_name" - parent_select = ", pr.name" - parent_join = ( - "LEFT OUTER JOIN %(parentschema)s.role AS pr ON (pr.id = u.parent_role_id)" % { - "parentschema": parentschema, - } - ) - - op.execute( - "INSERT INTO %(staticschema)s.user " - "(type, username, password, email, is_password_changed, role_name%(parent_column)s) (" - "SELECT u.type, u.username, u.password, u.email, " - "u.is_password_changed, r.name%(parent_select)s " - "FROM %(schema)s.user AS u " - "LEFT OUTER JOIN %(schema)s.role AS r ON (r.id = u.role_id) %(parent_join)s" - ")" % { - "staticschema": staticschema, - "schema": schema, - "parent_select": parent_select, - "parent_column": parent_column, - "parent_join": parent_join, - } - ) - - op.drop_table("user", schema=schema) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - staticschema = schema + "_static" - parentschema = context.get_context().config.get_main_option("parentschema") - - op.create_table( - "user", - Column("type", String(10), nullable=False), - Column("id", Integer, primary_key=True), - Column("username", Unicode, unique=True, nullable=False), - Column("password", Unicode, nullable=False), - Column("email", Unicode, nullable=False), - Column("is_password_changed", Boolean, default=False), - Column("role_id", Integer, ForeignKey(schema + ".role.id"), nullable=False), - schema=schema, - ) - parent_column = "" - parent_select = "" - parent_join = "" - if parentschema is not None and parentschema is not "": # pragma: nocover - op.add_column( - "user", - Column("parent_role_id", Integer, ForeignKey(parentschema + ".role.id")), - schema=schema - ) - parent_column = ", parent_role_id" - parent_select = ", pr.id" - parent_join = ( - "LEFT OUTER JOIN %(parentschema)s.role AS pr ON (pr.name = u.parent_role_name)" % { - "parentschema": parentschema, - } - ) - - op.execute( - "INSERT INTO %(schema)s.user " - "(type, username, password, email, is_password_changed, role_id%(parent_column)s) (" - "SELECT u.type, u.username, u.password, u.email, " - "u.is_password_changed, r.id%(parent_select)s " - "FROM %(staticschema)s.user AS u " - "LEFT OUTER JOIN %(schema)s.role AS r ON (r.name = u.role_name) %(parent_join)s" - ")" % { - "staticschema": staticschema, - "schema": schema, - "parent_select": parent_select, - "parent_column": parent_column, - "parent_join": parent_join, - } - ) - - op.drop_table("user", schema=staticschema) diff --git a/CONST_alembic/static/versions/3f89a7d71a5e_alter_column_url_to_remove_limitation.py b/CONST_alembic/static/versions/3f89a7d71a5e_alter_column_url_to_remove_limitation.py deleted file mode 100644 index 8d60109f3..000000000 --- a/CONST_alembic/static/versions/3f89a7d71a5e_alter_column_url_to_remove_limitation.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2014-2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - - -"""Alter_column_url_to_remove_limitation - -Revision ID: 3f89a7d71a5e -Revises: -Create Date: 2014-12-18 10:27:52.263992 -""" - -from alembic import op, context -from sqlalchemy import types - -# revision identifiers, used by Alembic. -revision = "3f89a7d71a5e" -down_revision = None - - -def upgrade(): - schema = "%s_static" % context.get_context().config.get_main_option("schema") - op.alter_column("shorturl", "url", type_=types.Unicode, schema=schema) - - -def downgrade(): - pass diff --git a/CONST_alembic/static/versions/5472fbc19f39_add_temp_password_column.py b/CONST_alembic/static/versions/5472fbc19f39_add_temp_password_column.py deleted file mode 100644 index 77393feff..000000000 --- a/CONST_alembic/static/versions/5472fbc19f39_add_temp_password_column.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2015, Camptocamp SA -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. - -"""Add temp_password column - -Revision ID: 5472fbc19f39 -Revises: 1da396a88908 -Create Date: 2015-04-20 14:51:30.595467 -""" - -from alembic import op, context -from sqlalchemy import Column, Unicode - - -# revision identifiers, used by Alembic. -revision = "5472fbc19f39" -down_revision = "1da396a88908" - - -def upgrade(): - schema = context.get_context().config.get_main_option("schema") - staticschema = schema + "_static" - - # Instructions - op.add_column("user", Column("temp_password", Unicode), schema=staticschema) - - -def downgrade(): - schema = context.get_context().config.get_main_option("schema") - staticschema = schema + "_static" - - # Instructions - op.drop_column("user", "temp_password", schema=staticschema) diff --git a/CONST_dev-requirements.txt b/CONST_dev-requirements.txt deleted file mode 100644 index b7c7f0c96..000000000 --- a/CONST_dev-requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -flake8==3.4.1 -pep8-naming -c2c.template==1.2.dev2 -c2c.versions==1.0.0 -https://github.com/Pylons/pyramid/archive/1e02bbfc0df09259bf207112acf019c8dba44a90.zip#egg=pyramid>=1.6.dev -pyramid_debugtoolbar -htmlmin==0.1.10 diff --git a/CONST_packages.yaml b/CONST_packages.yaml deleted file mode 100644 index db2b37849..000000000 --- a/CONST_packages.yaml +++ /dev/null @@ -1,59 +0,0 @@ -default_cmd: dpkg -l {package} | grep ^ii | awk '{{print $3}}' - -main: - mapserver: - cmd: /usr/lib/cgi-bin/mapserv -v | awk '{{print $3}}' - version: 7.0 - python: - cmd: /usr/bin/python --version 2>&1 | awk '{{print $2}}' - version: 2.7 - python-dev: 2.7 - postgres: - cmd: psql --version | awk '{{print $3}}' - version: 9.1 - postgis: - cmd: sudo -u postgres psql template_postgis -c "select PostGIS_lib_version();" -At - #cmd: dpkg -l | grep postgis | grep ^ii | awk '{{print $3}}' | head -n 1 - version: 2.0 - deploy: 0.4 - java: - cmd: java -version 2>&1 | grep 'java version' | awk '{{print $3}}' | sed 's/"//g' | sed 's/_/./g' - version: 1.7.0 - tomcat: - cmd: /usr/share/tomcat*/bin/version.sh | grep 'Server number' | awk '{{print $3}}' - version: 6.0 - libproj0: 4.7 - virtualenv: - cmd: virtualenv --version - version: 1.7 - httpd: - cmd: /usr/sbin/apache2ctl -v 2> /dev/null | head -n 1 | awk '{{print $3}}' | awk -F / '{{print $2}}' - version: 2.2 - libapache2-mod-wsgi: 3.3 - libpq-dev: 9.1 - gcc: - cmd: gcc --version | head -n 1 | awk '{{print $4}}' - version: 4.6 - gettext: - cmd: gettext -V | head -n1 | awk '{{print $4}}' - version: 0.18 - -mobile: - sencha: - cmd: sencha help 2> /dev/null | grep 'Sencha Cmd' | head -n 1 | awk '{{print $3}}' | sed 's/^v//' - version: 4.0 - ruby-compass: 0 # just present - -tilecloud-chain: - libapache2-mod-mapcache: 1.0.0 - memcached: - cmd: memcached -h | head -n 1 | awk '{{print $2}}' - version: 1.4 - -ngeo: - node: - cmd: node --version | sed s/^v//g - version: 0.10 - npm: - cmd: npm --version - version: 1.3 diff --git a/CONST_requirements.txt b/CONST_requirements.txt deleted file mode 100644 index c4abf4932..000000000 --- a/CONST_requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ ---find-links http://pypi.camptocamp.net/internal-pypi/index/c2cgeoportal --r CONST_versions.txt -psycopg2==2.7.3.2 -Shapely==1.5.6 -Pillow==2.7.0 -https://github.com/Pylons/pyramid/archive/1e02bbfc0df09259bf207112acf019c8dba44a90.zip#egg=pyramid>=1.6.dev -pyramid_closure==1.1.0 -c2cgeoportal==1.6.4 --e . diff --git a/CONST_requirements_windows.txt b/CONST_requirements_windows.txt deleted file mode 100644 index a61520681..000000000 --- a/CONST_requirements_windows.txt +++ /dev/null @@ -1,10 +0,0 @@ ---index-url http://pypi.camptocamp.net/pypi ---find-links http://pypi.camptocamp.net/internal-pypi/index/c2cgeoportal-win --r CONST_versions.txt -wheels/psycopg2-2.5.5-cp27-none-win32.whl -wheels/Shapely-1.5.7-cp27-none-win32.whl -wheels/Pillow-2.8.1-cp27-none-win32.whl -https://github.com/Pylons/pyramid/archive/1e02bbfc0df09259bf207112acf019c8dba44a90.zip#egg=pyramid>=1.6.dev -https://github.com/camptocamp/pyramid_closure/archive/819bc43420b3cd924d8698c5a9606592c19dbb15.zip#egg=pyramid_closure -c2cgeoportal-win==1.6.4 --e . diff --git a/CONST_vars.yaml b/CONST_vars.yaml deleted file mode 100644 index 353199010..000000000 --- a/CONST_vars.yaml +++ /dev/null @@ -1,311 +0,0 @@ -vars: - # project instance id - instanceid: INSTANCE_ID - # is in developement mode - development: DEVELOPMENT - # the package name - package: geoportailv3 - - # the Unix user under which the modwsgi daemon processes are executed. - modwsgi_user: www-data - # url-path where the instance must respond. - apache_entry_point: APACHE_ENTRY_POINT - # database user - dbuser: www-data - # database password - dbpassword: www-data - # database host - dbhost: localhost - # database port - dbport: 5432 - # database name - db: override_me - # sqlalchemy schema - schema: main - # database parent schema - parentschema: "" - # apache/mapserver.conf "Allow" statement - mapserv_allow: Allow from 127.0.0.1 ::1 - # mapserver connexion string - mapserver_connection: user={dbuser} password={dbpassword} dbname={db} host={dbhost} - # mapserver join tables - mapserver_join_tables: '{schema}.restrictionarea AS ra, {schema}.role_restrictionarea AS rra, {schema}.layer_restrictionarea AS lra, {schema}.treeitem AS la' - # mapserver visible area - mapserver_join_area: ra.area - # mapserver join close - mapserver_join_where: 'rra.role_id = %role_id% AND rra.restrictionarea_id = ra.id AND lra.restrictionarea_id = ra.id AND lra.layer_id = la.id AND la.name = ' - # mapserver metadata for validation - mapserver_layer_metadata: "" - mapserver_layer_validation: - '"default_role_id" "-1" - "role_id" "^-?[0-9]*$"' - # mapfile data subselect - mapfile_data_subselect: 'SELECT ST_Collect(ra.area) FROM main.restrictionarea AS ra, main.role_restrictionarea AS rra, main.layer_restrictionarea AS lra, main.treeitem AS la WHERE rra.role_id = %role_id% AND rra.restrictionarea_id = ra.id AND lra.restrictionarea_id = ra.id AND lra.layer_id = la.id AND la.name = ' - # mapserver filter on role id only - mapfile_data_noarea_subselect: 'SELECT rra.role_id FROM {mapserver_join_tables} WHERE rra.restrictionarea_id = ra.id AND lra.restrictionarea_id = ra.id AND lra.layer_id = la.id AND la.name = ' - # port for the waitress web server - waitress_port: 5000 - enable_admin_interface: True - - directory: __import__('os').getcwd() - python_path: __import__('distutils').sysconfig.get_python_lib() - - # Authentication settings - authtkt: - # Cookie session secret - secret: __import__('uuid').uuid4().hex - cookie_name: auth_tkt_{instanceid} - # Database informations - sqlalchemy: - url: postgresql://{dbuser}:{dbpassword}@{dbhost}:{dbport}/{db} - - # 10 days of default cache - default_max_age: 864000 - - # For debug mode - jsbuild: - config: "{directory}/jsbuild/app.cfg" - root_dir: "{directory}" - - # used for the "node_modules" and "closure" static views - closure_library_path: 'process.stdout.write(require("@camptocamp/closure-util").getLibraryPath())' - node_modules_path: "{directory}/node_modules" - - layers: {} - reset_password: {} - - # pyramid_closure configuration - # Each item in the roots_with_prefix array is an array with two elements. The - # first element is the path pyramid_closure passed to request.static_url. The - # second element is the file system path where js source files are searched. - # For this to work window.CLOSURE_BASE_PATH being set to the empty string in - # the HTML page. - pyramid_closure: - roots_with_prefix: - - ["{closure_library_path}/closure/goog", "{closure_library_path}/closure/goog"] - - ["{package}:static/js", "{directory}/{package}/static/js"] - - ["{node_modules_path}/openlayers/src", "{node_modules_path}/openlayers/src"] - - ["{node_modules_path}/openlayers/build", "{node_modules_path}/openlayers/build"] - - ["{node_modules_path}/ngeo/src", "{node_modules_path}/ngeo/src"] - - ["{node_modules_path}/ol-cesium/src", "{node_modules_path}/ol-cesium/src"] - - # The application's default language. This is the language used by - # the application if no specific language is specified in the URLs. - # This also defines the language used for the text search. - default_locale_name: fr - - # The set of languages supported by the applications. - available_locale_names: - - en - - fr - - de - - # The dogpile.cache configuration. - # - # Do not touch if unsure. - # - # The cache section below takes three properties: - # - # - backend: the name of the cache backend (ex: dogpile.cache.memory, - # dogpile.cache.memcached, etc.). Mandatory. - # - expiration_time: the cache expiration time. Optional (infinite if not - # specified). - # - arguments: backend-specific arguments. Optional. - # - # Here is a dogpile.cache configuration example for the memcached backend - # (equivalent of http://dogpilecache.readthedocs.org/en/latest/api.html#dogpile.cache.backends.memcached.MemcachedBackend) - # cache: - # backend: dogpile.cache.memcached - # expiration_time: 3600 - # arguments: - # url: 127.0.0.1:11211 - cache: - backend: dogpile.cache.memory - - admin_interface: - # Default values for the admin interface's maps. - map_x: 740000 - map_y: 5860000 - map_zoom: 10 - - # The list of available variable names for the `UI metadatas` form. - available_metadata: - - copy_to - - # The list of functionalities that can be configured - # through the admin interface. - available_functionalities: - - default_basemap - - print_template - - mapserver_substitution - - functionalities: - # Functionalities that are accessible to anonymous - # users. - anonymous: - print_template: - - 1 A4 portrait - - 2 A3 landscape - default_basemap: plan - - # The name of the theme to use as the default theme for the - # mobile app. The default theme is the theme loaded when no - # theme name is specified in the mobile app URL. If unset - # then there's no default theme, and no theme information - # will be passed to the config.js template. - mobile_default_theme: - - # Functionalities that are accessible to authenticated - # users with no associated functionalities in the - # database. - registered: - - # Functionalities that are made available to Mako templates. - available_in_templates: - - default_basemap - - # Define URLs to the parent application. Only useful if - # this application is a child application in a parent/child - # architecture. - external_themes_url: - - mapserverproxy: - # URL to internal MapServer instance - mapserv_url: http://localhost/{instanceid}/mapserv - # If the WFS service is different from the WMS service, uncomment and set the - # mapserv_wfs_url parameter - #mapserv_wfs_url: - - external_mapserv_url: - # If the WFS service is different from the WMS service, uncomment and set the - # external_mapserv_wfs_url parameter - #external_mapserv_wfs_url: - - tinyowsproxy: - # URL to internal TinyOWS instance - tinyows_url: http://localhost/{instanceid}/tinyows - - # If the `online_resource` url in the TinyOWS configuration is not set - # to the TinyOWS proxy url (e.g. when the service is also used without - # the proxy), the proxy can replace the original `online_resource` - # url with the proxy url. - # proxy_online_resource: http://{host}/{instanceid}/tinyows_proxy - # online_resource: http://localhost/{instanceid}/tinyows - - # When running a c2cgeoportal appl. in debug mode (with `make serve`) - # the host has to be set explicitly in a vhost environment. - # tinyows_host: {host} - - servers: - - # The "raster web services" configuration. See the "raster" - # chapter in the integrator documentation. - raster: - - # The shortner base configuration - shortener: - # The base of created URL - base_url: http://{host}{apache_entry_point}s/ - - # Define whether the MapServer proxy should hide the OGC capabilities. - hide_capabilities: false - - # Enable or disable the filtering of the layers using Mapserver runtime - # substitution variables in METADATA to hide protected layers from the - # GetCapabilities. - # Be careful as too many protected layers will cause an error because Apache has a - # 8190 characters hard limit for GET query length. - use_security_metadata: false - - # For print proxy - print_url: http://localhost:8080/print-{instanceid}/print/{package} - - # For base layers - tiles_url: - - http://a.tiles.{host}/{instanceid}/tiles - - http://b.tiles.{host}/{instanceid}/tiles - - http://c.tiles.{host}/{instanceid}/tiles - - http://d.tiles.{host}/{instanceid}/tiles - - # The URL template used to generate the sub domain URL - # %(sub)s will be replaced by the sub domain value. - #subdomain_url_template: http://%(sub)s.{host} - # The used sub domain for the static resources - #subdomains: [s1, s2, s3, s4] - - #proxies: - # http: http://someproxy - - - # Checker configuration - checker: - fulltextsearch: text to search - lang_files: [cgxp, cgxp-api] - themes: - default: - params: - version: 2 - - # Check collector configuration - check_collector: - disabled: [checker_printcapabilities, checker_pdf] - check_type: - all: - - name: checker_main - display: Main page - - name: checker_viewer - display: Viewer script - - name: checker_edit - display: Edit page - - name: checker_edit_js - display: Edit script - - name: checker_theme_errors - display: Errors in the themes - - name: checker_api - display: API - - name: checker_xapi - display: Extended API - - name: checker_lang_files - display: Language files - - name: checker_printcapabilities - display: Print capabilities - - name: checker_pdf - display: Print PDF - - name: checker_print3capabilities - display: Print capabilities - - name: checker_pdf3 - display: Print PDF - - name: checker_fts - display: FullTextSearch - - name: checker_wmscapabilities - display: WMS capabilities - - name: checker_wfscapabilities - display: WFS capabilities - main: - - name: checker_main - display: Main page - - name: checker_viewer - display: Viewer script - - name: checker_api - display: API - - name: checker_print3capabilities - display: Print capabilities - - name: checker_fts - display: FullTextSearch - default: # for children - - name: checker_viewer - display: Viewer script - hosts: - - display: geoportailv3 - url: http://{host}/{instanceid}/wsgi - type: main - -interpreted: - python: - - authtkt.secret - - python_path - - directory - environment: - - instanceid - - apache_entry_point - - development diff --git a/CONST_versions.txt b/CONST_versions.txt deleted file mode 100644 index dd9e7d812..000000000 --- a/CONST_versions.txt +++ /dev/null @@ -1,76 +0,0 @@ -alembic==0.7.4 -Babel==1.3 -boto==2.36.0 -bottle==0.12.8 -Chameleon==2.22 -couchdbkit==0.6.5 -dogpile.cache==0.5.6 -dogpile.core==0.4.1 -fa.jquery==0.9.5 -fanstatic==0.16 -https://github.com/camptocamp/formalchemy/archive/1da70d8a906af08d49d6a0fd858cfea6c20afacb.zip#egg=FormAlchemy -GeoAlchemy2==0.2.4 -GeoFormAlchemy2==2.0.dev3 -geojson==1.0.9 -http-parser==0.8.3 -httplib2==0.9 -isodate==0.5.1 -Jinja2==2.7.3 -js.jqgrid==4.1.0 -js.jquery==1.7.1 -js.jquery-form==3.9 -js.jquery-jgrowl==1.2.5.post1 -js.jquery-markitup==1.1.10.post1 -js.jqueryui==1.8.24 -js.jqueryui-selectmenu==0.1 -js.jqueryui-syronex-colorpicker==1.0.0 -js.tinymce==4.1.5 -JSTools==0.6 -lingua==3.8 -Mako==1.0.1 -Markdown==2.5.2 -MarkupSafe==0.23 -OWSLib==0.8.13 -papyrus==2.0.dev3 -papyrus-ogcproxy==0.2.dev1 -Paste==1.7.5.1 -PasteDeploy==1.5.2 -PasteScript==1.7.5 -polib==1.0.6 -postmarkup==1.2.2 -Pygments==2.0.2 -pyproj==1.9.4 -pyramid-chameleon==0.3 -pyramid-formalchemy==0.4.4 -pyramid-mako==1.0.2 -pyramid-multiauth==0.4.0 -pyramid-tm==0.11 -python-dateutil==2.4.0 -pytz==2014.10 -PyYAML==3.11 -repoze.lru==0.6 -requests==2.5.1 -restkit==4.2.2 -simplejson==3.6.5 -six==1.9.0 -socketpool==0.5.3 -SQLAHelper==1.0 -SQLAlchemy==0.9.8 -Tempita==0.5.2 -textile==2.2.2 -tilecloud==0.2.dev20150115 -tilecloud-chain==1.0.0.dev1 -transaction==1.4.3 -transifex-client==0.12.4 -translationstring==1.3 -urllib3==1.21.1 -venusian==1.0 -waitress==0.8.9 -WebError==0.10.3 -WebHelpers==1.3 -WebOb==1.4 -zope.component==4.2.1 -zope.deprecation==4.1.2 -zope.event==4.0.3 -zope.interface==4.1.2 -zope.sqlalchemy==0.7.5 diff --git a/LUX_alembic/README b/LUX_alembic/README deleted file mode 100644 index 2500aa1bc..000000000 --- a/LUX_alembic/README +++ /dev/null @@ -1 +0,0 @@ -Generic single-database configuration. diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..461e1c5ea --- /dev/null +++ b/Makefile @@ -0,0 +1,202 @@ + +DOCKER_BASE ?= camptocamp/geoportailv3 +DOCKER_TAG ?= latest +GIT_HASH ?= $(shell git rev-parse HEAD) +PACKAGE ?= geoportailv3 + + +UTILITY_HELP = -e "- update-translations Synchronize the translations with Transifex (host)" \ + "\n- pull-translations Pull the translation (host)" \ + "\n- recreate-search-poi Recreate the ElasticSearch POI Index (docker)" \ + "\n- recreate-search-layers Recreate the ElasticSearch Layers Index (docker)" \ + "\n- update-search-layers Update the ElasticSearch Layers Index (docker)" \ + "\n- update-pots Update client, server and tooltips pots (docker, to be run from internal network)" + +SERVER_LOCALISATION_SOURCES_FILES = \ + geoportal/$(PACKAGE)_geoportal/models.py \ + $(shell find geoportal/$(PACKAGE)_geoportal/templates -type f -name '*.html') \ + $(shell find geoportal/$(PACKAGE)_geoportal/views -type f -name '*.py') \ + geoportal/$(PACKAGE)_geoportal/views/pag.py \ + geoportal/$(PACKAGE)_geoportal/views/luxprintproxy.py + +TOOLTIPS_LOCALISATION_FILES = $(addprefix $(PACKAGE)/locale/, $(addsuffix /LC_MESSAGES/$(PACKAGE)-tooltips.mo, $(LANGUAGES))) + +# Add JS API target to "help" target +SECONDARY_HELP = -e "" +SECONDARY_HELP += "\n" +SECONDARY_HELP += "JS API targets:\n" +SECONDARY_HELP += "\n" +SECONDARY_HELP += "- build-api Build CSS & JS for the API.\n" +SECONDARY_HELP += "- build-js-api Build the JS API project.\n" +SECONDARY_HELP += "- build-css-api Build the CSS API project.\n" +SECONDARY_HELP += "- lint-js-api Run the linter on the JS API code.\n" +SECONDARY_HELP += "- clean-js-api Remove generated files of the JS API project.\n" +SECONDARY_HELP += "- serve-js-api Start a development server for the JS API project." + +.PHONY: help +help: + @echo "Usage: make " + @echo + @echo "Main targets:" + @echo + @echo "- build Build the project" + @echo "- run Run the project" + @echo + @echo "Utility targets:" + @echo + @echo $(UTILITY_HELP) + + +.PHONY: build +build: docker-build-geoportal docker-build-config docker-build-ldap + +.PHONY: docker-build-geoportal +docker-build-geoportal: + docker build --tag=$(DOCKER_BASE)-geoportal:$(DOCKER_TAG) --build-arg=GIT_HASH=$(GIT_HASH) --build-arg=HTTP_PROXY_URL=$(http_proxy) --build-arg=HTTPS_PROXY_URL=$(https_proxy) geoportal + +.PHONY: docker-build-config +docker-build-config: + cd config && docker build --tag=$(DOCKER_BASE)-config:$(DOCKER_TAG) --build-arg=HTTP_PROXY_URL=$(http_proxy) --build-arg=HTTPS_PROXY_URL=$(https_proxy) . + +.PHONY: docker-build-ldap +docker-build-ldap: + cd ldap && docker build --tag=lux-dev-ldap --build-arg=HTTP_PROXY_URL=$(http_proxy) --build-arg=HTTPS_PROXY_URL=$(https_proxy) . + +DOCKER_COMPOSE_PROJECT ?= luxembourg +DOCKER_CONTAINER = $(DOCKER_COMPOSE_PROJECT)_geoportal_1 +APP_JS_FILES = $(shell find geoportal/$(PACKAGE)_geoportal/static-ngeo/js -type f -name '*.js' 2> /dev/null) +APP_HTML_FILES += $(shell find geoportal/$(PACKAGE)_geoportal/static-ngeo/js -type f -name '*.html' 2> /dev/null) +APP_HTML_FILES += geoportal/$(PACKAGE)_geoportal/static-ngeo/js/apps/main.html.ejs +PRINT_CONFIG_FILE ?= print/print-apps/$(PACKAGE)/config.yaml.tmpl + +I18N_SOURCE_FILES += \ + geoportal/development.ini \ + geoportal/print-config.yaml.tmpl \ + $(APP_HTML_FILES) \ + $(APP_JS_FILES) + + +.PHONY: update-pots +update-pots: + echo "This target must be run inside Luxembourg internal network" + # Handle client.pot + docker cp ./config/print/print-apps/geoportailv3/config.yaml.tmpl $(DOCKER_CONTAINER):/app/geoportal/print-config.yaml.tmpl + docker exec -e IGNORE_I18N_ERRORS=TRUE $(DOCKER_CONTAINER) pot-create --config lingua-client.cfg --output /tmp/client.pot $(I18N_SOURCE_FILES) + docker cp $(DOCKER_CONTAINER):/tmp/client.pot geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-client.pot + # Handle server.pot + docker exec -e IGNORE_I18N_ERRORS=TRUE $(DOCKER_CONTAINER) pot-create --config lingua-server.cfg --output /tmp/server.pot $(SERVER_LOCALISATION_SOURCES_FILES) + docker cp $(DOCKER_CONTAINER):/tmp/server.pot geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-server.pot + # Handle tooltips.pot + docker exec $(DOCKER_CONTAINER) tooltips2pot + docker exec $(DOCKER_CONTAINER) msguniq /tmp/tooltips.pot -o /tmp/tooltips.pot + docker cp $(DOCKER_CONTAINER):/tmp/tooltips.pot geoportal/geoportailv3_geoportal/locale/geoportailv3_geoportal-tooltips.pot + +# Targets related to the JS API +OUTPUT_DIR = geoportal/geoportailv3_geoportal/static/build +API_OUTPUT_DIR = $(OUTPUT_DIR) +API_DIR = jsapi +API_TOOLS_DIR = $(API_DIR)/tools +API_SRC_JS_FILES := $(shell find jsapi -type f -name '*.js') + +.PHONY: update-translations +update-translations: + tx push --source + tx pull --force + +.PHONY: pull-translations +pull-translations: + tx pull --force + +.PHONY: update-search-layers +update-search-layers: + docker exec $(DOCKER_CONTAINER) layers2es --interfaces main --no-themes --no-blocks --no-folders + +.PHONY: recreate-search-layers +recreate-search-layers: + docker exec $(DOCKER_CONTAINER) layers2es --interfaces main --no-themes --no-blocks --no-folders --recreate-index + +.PHONY: recreate-search-poi +recreate-search-poi: + docker exec $(DOCKER_CONTAINER) db2es --reset --index + +.PHONY: build-api +build-api: \ + # lint-js-api \ + # build-js-api \ + # build-css-api \ + # build-js-apidoc \ + # create-xx-lang + +.PHONY: create-xx-lang +create-xx-lang: + mkdir -p $(OUTPUT_DIR)/locale/xx + cp -rf $(OUTPUT_DIR)/locale/fr/$(PACKAGE).json $(OUTPUT_DIR)/locale/xx/$(PACKAGE).json + +.PHONY: build-js-api +build-js-api: \ + $(API_OUTPUT_DIR)/apiv3.js + +.PHONY: build-css-api +build-css-api: \ + $(API_OUTPUT_DIR)/apiv3.css + +$(API_OUTPUT_DIR)/apiv3.css: $(API_LESS_FILES) .build/node_modules.timestamp + mkdir -p $(dir $@) + ./node_modules/.bin/lessc --clean-css $(PACKAGE)/static/less/$(PACKAGE).api.less $@ + +$(API_OUTPUT_DIR)/apiv3.js: $(API_DIR)/config.json \ + $(API_SRC_JS_FILES) \ + .build/node_modules.timestamp + mkdir -p $(dir $@) + node node_modules/openlayers/tasks/build.js $< $@ + cat node_modules/proj4/dist/proj4.js node_modules/whatwg-fetch/fetch.js node_modules/d3/build/d3.min.js \ + node_modules/js-autocomplete/auto-complete.min.js \ + node_modules/promise-polyfill/promise.min.js \ + node_modules/url-polyfill/url-polyfill.min.js \ + $@ > concatenated.js + mv concatenated.js $@ + +.build/jsdocOl3.js: jsapi/jsdoc/get-ol3-doc-ref.js + node $< > $@.tmp + mv $@.tmp $@ + +.PHONY: serve-js-api +serve-js-api: .build/node_modules.timestamp + node $(API_TOOLS_DIR)/serve.js + +.PHONY: lint-js-api +lint-js-api: ./node_modules/.bin/eslint .build/node_modules.timestamp .build/api.eslint.timestamp + +.build/api.eslint.timestamp: $(API_JS_FILES) + mkdir -p $(dir $@) + ./node_modules/.bin/eslint $(filter-out .build/node_modules.timestamp, $?) + touch $@ + +# Add new dependency to clean target +clean: clean-js-api + +.PHONY: clean-js-api +clean-js-api: + rm -rf $(API_OUTPUT_DIR)/apiv3.* + +.PHONY: run +run: build + docker-compose down; docker-compose up + +.PHONY: dev +dev: build + echo "Once the composition is up open the following URL:" + echo "browse http://localhost:8080/dev/main.html" + docker-compose down; docker-compose -f docker-compose.yaml -f docker-compose-dev.yaml up + +.PHONY: attach +attach: + docker-compose exec geoportal bash + +.PHONY: fix-db +fix-db: + docker-compose exec geoportal finalize23DataAdaptations + +.PHONY: reload +reload: + docker-compose exec geoportal pkill --signal HUP gunicorn diff --git a/README.md b/README.md index 87dda7599..0e2134f4a 100644 --- a/README.md +++ b/README.md @@ -13,26 +13,8 @@ System-level dependencies The following must be installed on the system: * ``git`` -* ``python-virtualenv`` -* ``httpd`` -* ``mod_wsgi`` -* ``postgresql-devel`` (or ``libpq-dev`` on Debian) -* ``python-devel`` -* ``gcc`` * ``npm`` -* ``openldap-devel`` (or ``libldap2-dev`` and ``libsasl2-dev`` on Debian) -* ``libjpeg-devel`` - -For the print to work, you will need -* ``jdk`` (java-1.7.0-openjdk-devel) -* ``tomcat`` - -For the legend, we will need -* ``libffl-devel`` -* ``libxml2-devel`` -* ``libxslt-devel`` - -Make sure ``pg_config`` (from the ``postgresql-devel``) is in your ``PATH``. +* ``gettext`` Checkout -------- @@ -46,21 +28,75 @@ Build ```bash cd geoportailv3 -make -f .mk build +# Create symlink to the env you want to use +# You can create a custom env if you need to +ln -s env-localdev .env +make build ``` -Local run ---------- +Local run and development +------------------------- To some extent, it is possible to simulate the services needed by the application using git@github.com:camptocamp/luxembourg_dev_db.git +Clone that repository and there run: `make`. +In order to work with a database dump, simply put the sql file there before running `make`. +To start the composition use: `make run` and open http://localhost:8080. +Alternatively, to start the dev composition use: `make dev` and open http://localhost:8080/dev/main.html. -Automatic deployement ---------------------- +Until the migration is finished, the database must be fixed by doing: `make fix-db`. + +The local ldap contains a single user: c2c/test1234 with admin rights. +See docker-compose exec geoportal ldapsearch -x -H ldap://ldap -b ou=portail,dc=act,dc=lu -D "login=c2c,ou=portail,dc=act,dc=lu" -w test1234 -LL '\*' + +The print service is available directly at http://localhost:28080/. + +Ldap configuration +------------------ + +User management is handled by the LDAP, both in production and on the local machine during developments. +The LDAP access is configured with the LDAP\_\* environment variables. See .env, docker-compose.yaml and geoportal/config.yaml. + + +Debug c2cgeoportal +------------------ -3D demo: https://3d-demo.geoportail.lu/ -3D dev: https://3d-test.geoportail.lu/ +Checkout or copy `c2cgeoportal` in `geoportal/c2cgeoportal` and checkout the right branch. +Then `cd geoportal/c2cgeoportal` and build it: `make docker-build` as specified +on the c2cgeoportal server-side development page. +In the `geoportal/Dockerfile` file just before the application pip install add: +``` +RUN \ + pip install --disable-pip-version-check --no-cache-dir --editable=/app/c2cgeoportal/commons && \ + pip install --disable-pip-version-check --no-cache-dir --editable=/app/c2cgeoportal/geoportal && \ + pip install --disable-pip-version-check --no-cache-dir --editable=/app/c2cgeoportal/admin +``` + +In the `geoportal/.dockerignore` file add: +``` +!c2cgeoportal/commons +!c2cgeoportal/geoportal +!c2cgeoportal/admin +``` + +Translations +------------ + +The translation worflow is as follows: +- make update-pots # Replace pot files with new ones using a running composition +- make update-translations # push new pots to transifex +- make pull-translations # retrieve pos from transifex +- # commit updated po files +- make build # build image using updated po files + + +Updating c2cgeoportal +--------------------- - +Update version in: +- geoportal/luxembourg_requirements.txt +- replace geoportal/upstrean_requirements.txt using the corresponding version + https://github.com/camptocamp/c2cgeoportal/blob/_C2C_GEOPORTAL_VERSION_/geoportal/requirements.txt +- check the docs / adapt the code diff --git a/aabt.mk b/aabt.mk deleted file mode 100644 index 6ca5189ad..000000000 --- a/aabt.mk +++ /dev/null @@ -1,26 +0,0 @@ -INSTANCE_ID = aabt -VARS_FILE = vars_${INSTANCE_ID}.yaml -PRINT_OUTPUT = /tmp -DISABLE_BUILD_RULES = apache print - -include geoportailv3.mk - -.PHONY: dbtunnel -dbtunnel: - @echo "Opening tunnel…" - ssh -N -L 9999:localhost:5432 luxembourg-geomapfish.infra.internal - -.PHONY: watchless -watchless: - @echo "Watching changes to less files…" - watchmedo shell-command --patterns="*.less" --recursive --command="make -f aabt.mk geoportailv3/static/build/build.css" - -.PHONY: watchapiless -watchapiless: - @echo "Watching changes to API less files…" - watchmedo shell-command --patterns="*.api.less" --recursive --command="make -f aabt.mk build-css-api" - -.PHONY: watchtemplates -watchtemplates: - @echo "Watching changes to template files…" - watchmedo shell-command --patterns="*.html" --recursive --command="make -f aabt.mk geoportailv3/static/build/templatecache.js" diff --git a/alembic.ini.mako b/alembic.ini.mako deleted file mode 100644 index 744da0028..000000000 --- a/alembic.ini.mako +++ /dev/null @@ -1,62 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts -script_location = CONST_alembic/main - -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s - -# max length of characters to apply to the -# "slug" field -#truncate_slug_length = 40 - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - -# set to 'true' to allow .pyc and .pyo files without -# a source .py file to be detected as revisions in the -# versions/ directory -# sourceless = false - -sqlalchemy.url = ${sqlalchemy["url"]} -version_table_schema = ${schema} -schema = ${schema} -parentschema = ${parentschema} -srid = 2169 - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/alembic_static.ini.mako b/alembic_static.ini.mako deleted file mode 100644 index f44581908..000000000 --- a/alembic_static.ini.mako +++ /dev/null @@ -1,63 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts -script_location = CONST_alembic/static - -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s - -# max length of characters to apply to the -# "slug" field -#truncate_slug_length = 40 - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - -# set to 'true' to allow .pyc and .pyo files without -# a source .py file to be detected as revisions in the -# versions/ directory -# sourceless = false - -sqlalchemy.url = ${sqlalchemy["url"]} -version_table = c2cgeoportal_version -version_table_schema = ${schema}_static -schema = ${schema} -parentschema = ${parentschema} -srid = 2169 - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/apache/README.txt.mako b/apache/README.txt.mako deleted file mode 100644 index 652f48504..000000000 --- a/apache/README.txt.mako +++ /dev/null @@ -1,3 +0,0 @@ -add the following to your Apache config: - -Include ${directory}/apache/*.conf diff --git a/apache/application.wsgi.mako b/apache/application.wsgi.mako deleted file mode 100644 index 817a86261..000000000 --- a/apache/application.wsgi.mako +++ /dev/null @@ -1,23 +0,0 @@ -import site -import sys -import re -import os - -site.addsitedir("${python_path}") - -# Remove site packages -regex = re.compile("^/usr/lib/python.\../dist-packages$") -sys.path = [p for p in sys.path if regex.match(p) is None] - -from pyramid.paster import get_app, setup_logging - -%if http_proxy: -os.environ['http_proxy'] = '${http_proxy}' -os.environ['https_proxy'] = '${http_proxy}' -% endif -%if no_proxy: -os.environ['no_proxy'] = '${no_proxy}' -% endif -configfile = "${directory}/${'development' if development == 'TRUE' else 'production'}.ini" -setup_logging(configfile) -application = get_app(configfile, 'main') diff --git a/apache/frontend.conf.mako b/apache/frontend.conf.mako deleted file mode 100644 index 9705779b5..000000000 --- a/apache/frontend.conf.mako +++ /dev/null @@ -1,16 +0,0 @@ - - # Zip resources - AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json application/vnd.ogc.wms_xml application/vnd.ogc.gml application/vnd.ogc.se_xml - - - - # Instruct proxys that these files are cacheable. - Header merge Cache-Control "public" - - - - AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/xml - Header add Access-Control-Allow-Origin "*" - Header add Access-Control-Allow-Headers "X-Requested-With, Content-Type" - Header merge Cache-Control "public" - diff --git a/apache/wsgi.conf.mako b/apache/wsgi.conf.mako deleted file mode 100644 index a386257b5..000000000 --- a/apache/wsgi.conf.mako +++ /dev/null @@ -1,53 +0,0 @@ -# -# The Apache mod_wsgi configuration file. -# -# We use mod_wsgi's daemon mode. And we assign a specific process -# group to the WSGI application. -# -# Note: once we use mod_wsgi 3 we'll be able to get rid of the -# Location block by passing process-group and application-group -# options to the WSGIScriptAlias directive. -# - -RewriteEngine on - -# uncomment this if you need HTTP authentication/authorization to work (with -# repoze.who or any other security toolkit), see the Apache mod_wsgi FAQ to -# understand why mod_wsgi doesn't pass the user credentials to the WSGI -# application by default. -# http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions#Access_Control_Mechanisms -WSGIPassAuthorization On - -RewriteRule ^${apache_entry_point}?$ /${instanceid}/wsgi/ [PT] -RewriteRule ^${apache_entry_point}api.js$ /${instanceid}/wsgi/api.js [PT] -RewriteRule ^${apache_entry_point}xapi.js$ /${instanceid}/wsgi/xapi.js [PT] -RewriteRule ^${apache_entry_point}apihelp.html$ /${instanceid}/wsgi/apihelp.html [PT] -RewriteRule ^${apache_entry_point}xapihelp.html$ /${instanceid}/wsgi/xapihelp.html [PT] -RewriteRule ^${apache_entry_point}theme/(.+)$ /${instanceid}/wsgi/theme/$1 [PT] -RewriteRule ^${apache_entry_point}routing/?$ /${instanceid}/wsgi/routing [PT] -RewriteRule ^${apache_entry_point}edit/?$ /${instanceid}/wsgi/edit [PT] -RewriteRule ^${apache_entry_point}mobile$ ${apache_entry_point}mobile/ [R] -RewriteRule ^${apache_entry_point}mobile/(.*)$ /${instanceid}/wsgi/mobile/$1 [PT] -RewriteRule ^${apache_entry_point}admin/?$ /${instanceid}/wsgi/admin/ [PT] -RewriteRule ^${apache_entry_point}fulltextsearch$ /${instanceid}/wsgi/fulltextsearch [PT] -RewriteRule ^${apache_entry_point}layersearch$ /${instanceid}/wsgi/layersearch [PT] -RewriteRule ^${apache_entry_point}pag/report/$ /${instanceid}/wsgi/pag/report/ [PT] -RewriteRule ^${apache_entry_point}pag/files/$ /${instanceid}/wsgi/pag/files/ [PT] -RewriteRule ^${apache_entry_point}s/(.*)$ /${instanceid}/wsgi/short/$1 [PT] - -# define a process group -# WSGIDaemonProcess must be commented/removed when running the project on windows -WSGIDaemonProcess c2cgeoportal:${instanceid} display-name=%{GROUP} user=${modwsgi_user} python-path=${python_path} - -# define the path to the WSGI app -WSGIScriptAlias /${instanceid}/wsgi ${directory}/apache/application.wsgi - -# assign the WSGI app instance the process group defined aboven, we put the WSGI -# app instance in the global application group so it is always executed within -# the main interpreter - - # WSGIProcessGroup must be commented/removed when running the project on windows - WSGIProcessGroup c2cgeoportal:${instanceid} - WSGIApplicationGroup %{GLOBAL} - SetEnvIf X-Https on HTTPS=1 - diff --git a/build.json b/build.json deleted file mode 100644 index 3f830a15f..000000000 --- a/build.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "exports": [], - "cwd": ".", - "src": [ - "node_modules/openlayers/src/*.js", - "node_modules/openlayers/src/**/*.js", - "node_modules/openlayers/build/ol.ext/*.js", - "node_modules/openlayers/build/ol.ext/**/*.js", - "node_modules/ngeo/src/*.js", - "node_modules/ngeo/src/**/*.js", - "node_modules/ol-cesium/src/**/*.js", - "geoportailv3/static/js/*.js", - "geoportailv3/static/js/**/*.js", - "geoportailv3/static/build/templatecache.js" - ], - "compile": { - "entry_point": "app.main", - "externs": [ - "node_modules/openlayers/externs/bingmaps.js", - "node_modules/openlayers/externs/cartodb.js", - "node_modules/openlayers/externs/closure-compiler.js", - "node_modules/openlayers/externs/esrijson.js", - "node_modules/openlayers/externs/geojson.js", - "node_modules/openlayers/externs/proj4js.js", - "node_modules/openlayers/externs/tilejson.js", - "node_modules/openlayers/externs/topojson.js", - "node_modules/ol-cesium/Cesium.externs.js", - "node_modules/ol-cesium/externs/olcsx.js", - "node_modules/ngeo/externs/angular-gettext.js", - "node_modules/ngeo/externs/d3.js", - "node_modules/ngeo/externs/mapfish-print-v3.js", - "node_modules/ngeo/externs/twbootstrap.js", - "node_modules/ngeo/externs/closure-compiler.js", - "node_modules/ngeo/externs/typeahead.js", - "node_modules/ngeo/externs/jqueryui.js", - "node_modules/ngeo/externs/angular-dynamic-locale.js", - "node_modules/ngeo/externs/file-saver.js", - "node_modules/ngeo/externs/moment.js", - "node_modules/ngeo/externs/geo-admin-api.js", - "node_modules/ngeo/externs/google_maps_api_v3_27.js", - ".build/externs/angular-1.6.js", - ".build/externs/angular-1.6-q_templated.js", - ".build/externs/angular-1.6-http-promise_templated.js", - "geoportailv3/externs/piwik.js", - "geoportailv3/externs/fuse.js", - "geoportailv3/externs/mapfish-print.js", - "geoportailv3/externs/jszip.js", - ".build/externs/jquery-1.9.js" - ], - "define": [ - "goog.array.ASSUME_NATIVE_FUNCTIONS=true", - "goog.DEBUG=false", - "ol.ENABLE_RASTER_REPROJECTION=true", - "ol.ENABLE_WEBGL=false" - ], - "js": [ - "node_modules/ngeo/options/ngeox.js", - "node_modules/openlayers/externs/olx.js", - "node_modules/openlayers/externs/oli.js" - ], - "jscomp_error": [ - "*" - ], - "jscomp_off": [ - "useOfGoogBase", - "extraRequire", - "strictMissingRequire", - "lintChecks", - "analyzerChecks" - ], - "extra_annotation_name": [ - "api", "observable", "ngdoc", "ngname", "htmlAttribute" - ], - "angular_pass": true, - "compilation_level": "ADVANCED", - "export_local_property_definitions": true, - "warning_level": "VERBOSE", - "generate_exports": true, - "language_in": "ECMASCRIPT6_STRICT", - "language_out": "ECMASCRIPT5_STRICT", - "dependency_mode": "LOOSE", - "output_wrapper": "(function(){%output%}).call(window);", - "hide_warnings_for": "node_modules/@camptocamp/closure-util", - "use_types_for_optimization": true - } -} diff --git a/config/.dockerignore b/config/.dockerignore new file mode 100644 index 000000000..709f6722f --- /dev/null +++ b/config/.dockerignore @@ -0,0 +1,3 @@ +* +!bin/ +!print/print-apps/ diff --git a/config/Dockerfile b/config/Dockerfile new file mode 100644 index 000000000..5058adff9 --- /dev/null +++ b/config/Dockerfile @@ -0,0 +1,25 @@ +FROM debian:stretch +LABEL maintainer Camptocamp "info@camptocamp.com" +ARG HTTP_PROXY_URL +ENV http_proxy $HTTP_PROXY_URL +ARG HTTPS_PROXY_URL +ENV https_proxy $HTTPS_PROXY_URL + +RUN \ + apt-get update && \ + apt-get install --assume-yes --no-install-recommends gettext-base python3 && \ + apt-get clean && \ + rm --recursive --force /var/lib/apt/lists/* + +COPY . /tmp/config/ + +RUN mv /tmp/config/bin/* /usr/bin/ && \ + mkdir --parent /usr/local/tomcat/webapps/ROOT/ && \ + if [ -e /tmp/config/print ]; then mv /tmp/config/print/print-apps /usr/local/tomcat/webapps/ROOT/; fi && \ + chmod g+w -R /etc /usr/local/tomcat/webapps && \ + adduser www-data root + +VOLUME \ + /usr/local/tomcat/webapps/ROOT/print-apps + +ENTRYPOINT [ "/usr/bin/entrypoint" ] diff --git a/config/bin/entrypoint b/config/bin/entrypoint new file mode 100755 index 000000000..f9216ff86 --- /dev/null +++ b/config/bin/entrypoint @@ -0,0 +1,5 @@ +#!/bin/bash -e + +eval-templates + +exec "$@" diff --git a/config/bin/eval-templates b/config/bin/eval-templates new file mode 100755 index 000000000..095b8a530 --- /dev/null +++ b/config/bin/eval-templates @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 + +import glob +import os +import re +import urllib.parse +import subprocess + +os.environ["VISIBLE_WEB_HOST_RE_ESCAPED"] = re.escape(os.environ.get('VISIBLE_WEB_HOST')) +os.environ["VISIBLE_ENTRY_POINT_RE_ESCAPED"] = re.escape(os.environ.get('VISIBLE_ENTRY_POINT')) + +SCHEME_PORT = { + "http": 80, + "https": 443, +} +for name in ("GEOPORTAL", "TILECLOUDCHAIN"): + if name + "_INTERNAL_URL" in os.environ: + url = urllib.parse.urlparse(os.environ[name + "_INTERNAL_URL"]) + os.environ[name + "_INTERNAL_HOST"] = url.hostname + os.environ[name + "_INTERNAL_PORT"] = str(url.port or SCHEME_PORT.get(url.scheme, "NULL")) + + +def evaluate(filename): + print("Evaluate: " + filename) + with open(filename) as in_: + with open(filename[:-5], "w") as out: + subprocess.check_call(["envsubst"], stdin=in_, stdout=out) + + +for filename in glob.glob("/etc/**/*.tmpl", recursive=True): + evaluate(filename) + +for filename in glob.glob("/usr/local/tomcat/webapps/**/*.tmpl", recursive=True): + evaluate(filename) diff --git a/config/elasticsearch-config/elasticsearch.yml b/config/elasticsearch-config/elasticsearch.yml new file mode 100644 index 000000000..19dd36812 --- /dev/null +++ b/config/elasticsearch-config/elasticsearch.yml @@ -0,0 +1,7 @@ +# hack to allow a low vm.max_map_count (default on a developer machine) +network.host: 127.0.0.1 +http.bind_host: 0.0.0.0 + +# this value is required because we set "network.host" +# be sure to modify it appropriately for a production cluster deployment +discovery.zen.minimum_master_nodes: 1 diff --git a/config/elasticsearch-config/log4j2.properties b/config/elasticsearch-config/log4j2.properties new file mode 100644 index 000000000..46877d0de --- /dev/null +++ b/config/elasticsearch-config/log4j2.properties @@ -0,0 +1,9 @@ +status = error + +appender.console.type = Console +appender.console.name = console +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n + +rootLogger.level = info +rootLogger.appenderRef.console.ref = console diff --git a/config/elasticsearch-config/scripts/README b/config/elasticsearch-config/scripts/README new file mode 100644 index 000000000..8c06c0276 --- /dev/null +++ b/config/elasticsearch-config/scripts/README @@ -0,0 +1 @@ +Just here to have the directory. diff --git a/print/WEB-INF/classes/logback.xml.mako b/config/print/WEB-INF/classes/logback.xml similarity index 100% rename from print/WEB-INF/classes/logback.xml.mako rename to config/print/WEB-INF/classes/logback.xml diff --git a/geoportailv3/tests/LOGO_ACT.png b/config/print/print-apps/geoportailv3/LOGO_ACT.png similarity index 100% rename from geoportailv3/tests/LOGO_ACT.png rename to config/print/print-apps/geoportailv3/LOGO_ACT.png diff --git a/print/print-apps/geoportailv3/a0_landscape.jrxml b/config/print/print-apps/geoportailv3/a0_landscape.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a0_landscape.jrxml rename to config/print/print-apps/geoportailv3/a0_landscape.jrxml diff --git a/print/print-apps/geoportailv3/a0_portrait.jrxml b/config/print/print-apps/geoportailv3/a0_portrait.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a0_portrait.jrxml rename to config/print/print-apps/geoportailv3/a0_portrait.jrxml diff --git a/print/print-apps/geoportailv3/a1_landscape.jrxml b/config/print/print-apps/geoportailv3/a1_landscape.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a1_landscape.jrxml rename to config/print/print-apps/geoportailv3/a1_landscape.jrxml diff --git a/print/print-apps/geoportailv3/a1_portrait.jrxml b/config/print/print-apps/geoportailv3/a1_portrait.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a1_portrait.jrxml rename to config/print/print-apps/geoportailv3/a1_portrait.jrxml diff --git a/print/print-apps/geoportailv3/a2_landscape.jrxml b/config/print/print-apps/geoportailv3/a2_landscape.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a2_landscape.jrxml rename to config/print/print-apps/geoportailv3/a2_landscape.jrxml diff --git a/print/print-apps/geoportailv3/a2_portrait.jrxml b/config/print/print-apps/geoportailv3/a2_portrait.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a2_portrait.jrxml rename to config/print/print-apps/geoportailv3/a2_portrait.jrxml diff --git a/print/print-apps/geoportailv3/a3_landscape.jrxml b/config/print/print-apps/geoportailv3/a3_landscape.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a3_landscape.jrxml rename to config/print/print-apps/geoportailv3/a3_landscape.jrxml diff --git a/print/print-apps/geoportailv3/a3_portrait.jrxml b/config/print/print-apps/geoportailv3/a3_portrait.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a3_portrait.jrxml rename to config/print/print-apps/geoportailv3/a3_portrait.jrxml diff --git a/print/print-apps/geoportailv3/a4_landscape.jrxml b/config/print/print-apps/geoportailv3/a4_landscape.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a4_landscape.jrxml rename to config/print/print-apps/geoportailv3/a4_landscape.jrxml diff --git a/print/print-apps/geoportailv3/a4_portrait.jrxml b/config/print/print-apps/geoportailv3/a4_portrait.jrxml similarity index 100% rename from print/print-apps/geoportailv3/a4_portrait.jrxml rename to config/print/print-apps/geoportailv3/a4_portrait.jrxml diff --git a/config/print/print-apps/geoportailv3/config.yaml.tmpl b/config/print/print-apps/geoportailv3/config.yaml.tmpl new file mode 100644 index 000000000..7fe9c8fa8 --- /dev/null +++ b/config/print/print-apps/geoportailv3/config.yaml.tmpl @@ -0,0 +1,206 @@ +--- +pdfConfig: !pdfConfig + compressed: false + author: "Jeff Konnen" + subject: "map.geoportail.lu Print" + creator: "Mapfish Print" + +throwErrorOnExtraParameters: true + + +templates: + A4 portrait: !template + pdfConfig: !pdfConfig + title: "A4 Portrait by geoportail.lu" + keywords: ["map"] + reportTemplate: a4_portrait.jrxml + attributes: &attributes + name: !string {} + scale: !string {} + url: !string {} + qrimage: !string {} + dataOwner: !string + default: "" + queryResults: !string + default: "" + disclaimer: !string + default: "" + dateText: !string + default: "" + scaleTitle: !string + default: "" + appTitle: !string + default: "" + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 470 + height: 650 + lang: !string {} + legend: !datasource + attributes: + name: !string {} + default: [] + scalebar: !scalebar + width: 150 + height: 30 + processors: &processors + - !reportBuilder # compile all reports in current directory + directory: '.' + - !configureHttpRequests + httpProcessors: + - !mapUri # Rule to rewrite the local dev queries + mapping: + http://localhost:8080/(.*): "http://geoportal:8080/$1" + - !forwardHeaders # Rule to forward the referer + headers: + - Referer + - X-Request-ID + - !createMap + inputMapper: {map: map} + outputMapper: {mapSubReport: mapSubReport} + - !createScalebar {} + A4 landscape: !template + pdfConfig: !pdfConfig + title: "A4 Landscape by geoportail.lu" + keywords: ["map"] + reportTemplate: a4_landscape.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 715 + height: 395 + scalebar: !scalebar + width: 150 + height: 30 + processors: *processors + A3 portrait: !template + pdfConfig: !pdfConfig + title: "A3 Portrait by geoportail.lu" + keywords: ["map"] + reportTemplate: a3_portrait.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 715 + height: 975 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A3 landscape: !template + pdfConfig: !pdfConfig + title: "A3 Landscape by geoportail.lu" + keywords: ["map"] + reportTemplate: a3_landscape.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 1064 + height: 640 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A2 portrait: !template + pdfConfig: !pdfConfig + title: "A2 Portrait by geoportail.lu" + keywords: ["map"] + reportTemplate: a2_portrait.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 1064 + height: 1475 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A2 landscape: !template + pdfConfig: !pdfConfig + title: "A2 Landscape by geoportail.lu" + keywords: ["map"] + reportTemplate: a2_landscape.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 1558 + height: 985 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A1 portrait: !template + pdfConfig: !pdfConfig + title: "A1 Portrait by geoportail.lu" + keywords: ["map"] + reportTemplate: a1_portrait.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 1558 + height: 2175 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A1 landscape: !template + pdfConfig: !pdfConfig + title: "A1 Landscape by geoportail.lu" + keywords: ["map"] + reportTemplate: a1_landscape.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 2255 + height: 1482 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A0 portrait: !template + pdfConfig: !pdfConfig + title: "A0 Portrait by geoportail.lu" + keywords: ["map"] + reportTemplate: a0_portrait.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 2254 + height: 3155 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors + A0 landscape: !template + pdfConfig: !pdfConfig + title: "A0 Landscape by geoportail.lu" + keywords: ["map"] + reportTemplate: a0_landscape.jrxml + attributes: + <<: *attributes + map: !map + maxDpi: 400 + dpiSuggestions: [72, 91, 128, 254, 300, 400] + width: 3241 + height: 2173 + scalebar: !scalebar + width: 230 + height: 40 + processors: *processors diff --git a/print/print-apps/geoportailv3/requestData.json b/config/print/print-apps/geoportailv3/requestData.json similarity index 100% rename from print/print-apps/geoportailv3/requestData.json rename to config/print/print-apps/geoportailv3/requestData.json diff --git a/data/README.md b/data/README.md new file mode 100644 index 000000000..9d0a204f9 --- /dev/null +++ b/data/README.md @@ -0,0 +1,5 @@ +Get a simple DEM +---------------- + +Get TIF from https://data.public.lu/fr/datasets/bd-l-mnt5/ +gdalwarp -tr 500 500 dhmtc0121.tif dem500.tif diff --git a/data/dem500.tif b/data/dem500.tif new file mode 100644 index 000000000..d85a14146 Binary files /dev/null and b/data/dem500.tif differ diff --git a/demo-c2c.mk b/demo-c2c.mk deleted file mode 100644 index f434bf5b5..000000000 --- a/demo-c2c.mk +++ /dev/null @@ -1,5 +0,0 @@ -VARS_FILE = vars_c2cdev.yaml -INSTANCE_ID = main -APACHE_ENTRY_POINT = / - -include geoportailv3.mk diff --git a/development.ini.mako b/development.ini.mako deleted file mode 100644 index 33ace32bd..000000000 --- a/development.ini.mako +++ /dev/null @@ -1,87 +0,0 @@ -[app:app] -use = egg:geoportailv3 -project = geoportailv3 -reload_templates = true -debug_authorization = false -debug_notfound = false -debug_routematch = false -debug_templates = true -mako.directories = geoportailv3:templates - c2cgeoportal:templates - -authtkt_secret = ${authtkt["secret"]} -authtkt_cookie_name = ${authtkt["cookie_name"]} -% if "timeout" in authtkt: -authtkt_timeout = ${authtkt["timeout"]} -% endif - -app.cfg = %(here)s/.build/config.yaml - -elastic.servers = ${search_host} -elastic.index = ${search_index} - -feedback.support_email = ${support_email_address} - -[filter:fanstatic] -use = egg:fanstatic#fanstatic -publisher_signature = fanstatic -base_url = /${instanceid}/wsgi -recompute_hashes = false -versioning = false -bottom = true -minified = true - -[pipeline:main] -pipeline = - egg:WebError#evalerror - fanstatic - app - -[server:main] -use = egg:waitress#main -host = 0.0.0.0 -port = ${waitress_port} - -# Begin logging configuration - -[loggers] -keys = root, c2cgeoportal, geoportailv3 - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console - -[logger_c2cgeoportal] -level = WARN -handlers = -qualname = c2cgeoportal - -[logger_geoportailv3] -level = WARN -handlers = -qualname = geoportailv3 - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine -# "level = INFO" logs SQL queries. -# "level = DEBUG" logs SQL queries and results. -# "level = WARN" logs neither. (Recommended for production systems.) - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s - -# End logging configuration diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml new file mode 100644 index 000000000..341fda2d9 --- /dev/null +++ b/docker-compose-dev.yaml @@ -0,0 +1,27 @@ +--- + +# The project Docker compose file for development. + +version: '2' + +services: + + webpack-dev-server: + image: camptocamp/geoportailv3-geoportal:latest + volumes: + - ./geoportal/geoportailv3_geoportal/static-ngeo:/app/geoportailv3_geoportal/static-ngeo:ro + command: + - node_modules/.bin/webpack-dev-server + - --mode=development + - --host=webpack-dev-server + - --port=8080 + - --debug + - --watch + - --progress + environment: + - VISIBLE_ENTRY_POINT + - VISIBLE_WEB_HOST + - VISIBLE_WEB_PROTOCOL + - DEVSERVER_HOST + - C2C_REDIS_URL + - INTERFACE=main diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 000000000..e0967b0f4 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,142 @@ +--- + +# The project Docker compose file for development. + +version: '2' + +services: + config: + image: camptocamp/geoportailv3-config:${DOCKER_TAG} +# user: www-data + environment: + - VISIBLE_WEB_HOST + - VISIBLE_WEB_PROTOCOL + - VISIBLE_ENTRY_POINT + - GEOPORTAL_INTERNAL_URL + + print: + image: camptocamp/mapfish_print:3.18.4 + user: www-data + volumes_from: + - config:ro + ports: + - 28080:8080 + environment: + - CATALINA_OPTS=-Xmx1024m + - PGOPTIONS=-c statement_timeout=30000 +# - DEFAULT_LOG_LEVEL=DEBUG +# - TOMCAT_LOG_LEVEL=DEBUG +# - LOG_LEVEL=DEBUG +# - SPRING_LOG_LEVEL=DEBUG +# - JASPER_LOG_LEVEL=DEBUG +# - APACHE_LOG_LEVEL=DEBUG +# - SQL_LOG_LEVEL=DEBUG + + geoportal: + image: camptocamp/geoportailv3-geoportal:${DOCKER_TAG} +# user: www-data + volumes: + - /var/sig:/var/sig:ro + - ./data:/var/luxdata:ro + - ./geoportal/geoportailv3_geoportal/views:/app/geoportailv3_geoportal/views:ro + - ./geoportal/geoportailv3_geoportal/routing:/app/geoportailv3_geoportal/routing:ro + - ./geoportal/c2cgeoportal/geoportal/c2cgeoportal_geoportal/routing:/app/c2cgeoportal/geoportal/c2cgeoportal_geoportal/routing:ro + - ./geoportal/c2cgeoportal/geoportal/c2cgeoportal_geoportal/templates:/app/c2cgeoportal/geoportal/c2cgeoportal_geoportal/templates:ro + - ./geoportal/geoportailv3_geoportal/templates:/app/geoportailv3_geoportal/templates:ro + - ./geoportal/geoportailv3_geoportal/scripts:/app/geoportailv3_geoportal/scripts:ro + - ./geoportal/geoportailv3_geoportal/static-ngeo/js:/app/geoportailv3_geoportal/static-ngeo/js:ro + - ./geoportal/geoportailv3_geoportal/static-ngeo/less:/app/geoportailv3_geoportal/static-ngeo/less:ro +# entrypoint: ['/usr/local/bin/alembic', '--config', '/app/alembic.ini', '--name', 'main', 'heads'] + environment: + - DEBUG_TOOLBAR=1 + - DB_MYMAPS + - DB_PGROUTE + - DB_ECADASTRE + - VISIBLE_ENTRY_POINT + - VISIBLE_WEB_HOST + - VISIBLE_WEB_PROTOCOL + - PGHOST + - PGHOST_SLAVE + - PGPORT + - PGUSER + - PGPASSWORD + - PGDATABASE + - PGSCHEMA + - PGSCHEMA_STATIC + - PGOPTIONS + - PRINT_URL + - GUNICORN_PARAMS=--bind=:8080 --threads=10 --timeout=60 --reload --forwarded-allow-ips=* + - LOG_LEVEL=INFO + - C2CGEOPORTAL_LOG_LEVEL=INFO + - C2CWSGIUTILS_CONFIG=/app/development.ini + - SQL_LOG_LEVEL=INFO + - GUNICORN_LOG_LEVEL=INFO + - GUNICORN_ACCESS_LOG_LEVEL=INFO + - OTHER_LOG_LEVEL=WARN + - DEVSERVER_HOST + - REDIS_HOST + - REDIS_PORT + - C2C_REDIS_URL + - LDAP_BASE_DN + - LDAP_BIND + - LDAP_PASSWD + - LDAP_URL + - LDAP_FILTER_TMPL + - DEFAULT_MYMAPS_ROLE + - DHM_DEM_FILE=/var/luxdata/dem500.tif + - DHM_DEM_TYPE=gdal + - FAKE_REVERSE_GEOCODING=1 + - FAKE_FULLTEXT_SEARCH=1 + - FAKE_LAYERSEARCH=0 + - FAKE_CMSSEARCH=1 + - FAKE_PRINT_URLS=http://print:8080/print/geoportailv3,http://print:8080/print/geoportailv3 + - SHORTENER_BASE_URL + - SHORTENER_ALLOWED_HOST + - ELASTIC_SERVERS + - ELASTIC_INDEX + - ROUTING_GRAPHHOPPER_API_KEY + - ROUTING_MAPQUEST_API_KEY + ports: + - 8080:8080 + + redis: + image: redis:3.2 + user: www-data + restart: unless-stopped + command: + - redis-server + - --save + - '' + - --appendonly + - 'no' + - --maxmemory + - 512mb + - --maxmemory-policy + - allkeys-lru + + ldap: + image: lux-dev-ldap + + elasticsearch: + image: elasticsearch:5.0 + environment: + ES_JAVA_OPTS: -Xmx512m -Xms512m + volumes: + - ./config/elasticsearch-config:/usr/share/elasticsearch/config:ro + ports: + - 9200:9200 + + alembic: + image: camptocamp/geoportailv3-geoportal:${DOCKER_TAG} +# user: www-data + command: ./bin/alembic_upgrade_all.sh + environment: + - PGHOST + - PGHOST_SLAVE + - PGPORT + - PGUSER + - PGPASSWORD + - PGDATABASE + - PGSCHEMA + - PGSCHEMA_STATIC + - PGOPTIONS diff --git a/docker-run b/docker-run new file mode 100755 index 000000000..eddbfbd34 --- /dev/null +++ b/docker-run @@ -0,0 +1,176 @@ +#!/usr/bin/env python3 + +import argparse +import configparser +import netifaces +import os +import subprocess +import sys + + +def main(): + is_windows = os.name == "nt" + + config_parser = configparser.ConfigParser() + if os.path.exists(".config"): + config_parser.read(".config") + if "docker-run" not in config_parser: + config_parser["docker-run"] = {} + config = config_parser["docker-run"] + + parser = argparse.ArgumentParser(description="Run docker build.") + parser.add_argument("--root", action="store_true", help="Be root in the container") + parser.add_argument("--home", action="store_true", help="Mount the home directory") + parser.add_argument("-ti", action="store_true", help="Use -ti docker run option") + parser.add_argument("--env", action='append', default=[], help="A variable environment to pass or set") + parser.add_argument("--share", action='append', default=[], help="A folder to share as a volume") + parser.add_argument( + "--mount", action='append', default=[], help="Attach a filesystem mount to the container") + parser.add_argument( + "-v", "--volume", action='append', default=[], help="Bind mount a volume (default [])") + parser.add_argument( + "--image", default=config.get("image", "camptocamp/geomapfish-build-dev"), + help="The docker image to use" + ) + parser.add_argument( + "--version", default=config.get("version", "2.3"), + help="The docker image version to use" + ) + parser.add_argument("--hash", metavar="hash", help="The docker image hash to run") + parser.add_argument("cmd", metavar="CMD", help="The command to run") + parser.add_argument("args", metavar="...", nargs=argparse.REMAINDER, help="The command arguments") + options = parser.parse_args() + + docker_cmd = ['docker', 'run'] + + if options.ti or options.hash: + docker_cmd.append("-ti") + + for share in options.share: + docker_cmd.append("--volume={}:{}".format(share, share)) + + dir_path = os.path.dirname(os.path.realpath(__file__)) + build_volume_name = dir_path.replace(":", "-").replace("\\", "-") \ + if is_windows else dir_path[1:].replace("/", "-") + + try: + git_branch = \ + os.environ['TRAVIS_BRANCH'] if 'TRAVIS_BRANCH' in os.environ else \ + subprocess.check_output([ + "git", "rev-parse", "--abbrev-ref", "HEAD" + ]).decode("utf-8").strip() + git_hash = subprocess.check_output([ + "git", "rev-parse", "HEAD" + ]).decode("utf-8").strip() + except subprocess.CalledProcessError as e: + git_branch = "unknown" + git_hash = "unknown" + + try: + login = os.getlogin() + except FileNotFoundError: + # workaround on strange error + import pwd + login = pwd.getpwuid(os.getuid())[0] + except OSError: + # workaround on strange error + import pwd + login = pwd.getpwuid(os.getuid())[0] + + docker_cmd.extend([ + "--rm", + "--volume={socket}:{socket}".format( + socket="//./pipe/docker_engine" if is_windows else "/var/run/docker.sock" + ), + "--volume={}:/build".format(build_volume_name), + "--volume={pwd}:/src".format(pwd=os.getcwd()), + "--env=USER_NAME={}".format(login), + "--env=USER_ID={}".format(os.getuid() if os.name == "posix" else 1000), + "--env=GROUP_ID={}".format(os.getgid() if os.name == "posix" else 1000), + "--env=GIT_BRANCH={}".format(git_branch), + "--env=GIT_HASH={}".format(git_hash), + ]) + + if options.home: + internal_home = "/home/{login}".format(login=login) if is_windows else os.environ["HOME"] + external_home = os.environ["USERPROFILE"] if is_windows else os.environ["HOME"] + + if options.root: + docker_cmd.append("--volume={}:/root".format(external_home)) + docker_cmd.append("--volume={}:{}".format(internal_home, external_home)) + else: + docker_cmd.append("--volume={}:/home".format(build_volume_name + "-home")) + + if "SSH_AUTH_SOCK" in os.environ: + docker_cmd.extend([ + "--volume={ssh}:{ssh}".format(ssh=os.environ["SSH_AUTH_SOCK"]), + "--env=SSH_AUTH_SOCK", + ]) + + for env in ["CI"] + options.env: + docker_cmd.append("--env={}".format(env)) + + for mount in options.mount: + docker_cmd.append("--mount={}".format(mount)) + + for volume in options.volume: + docker_cmd.append("--volume={}".format(volume)) + + if is_windows: + import winreg + + def get_connection_name_from_guid(iface_guid): + reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) + reg_key = winreg.OpenKey( + reg, r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}' + ) + try: + reg_subkey = winreg.OpenKey(reg_key, iface_guid + r'\Connection') + return winreg.QueryValueEx(reg_subkey, 'Name')[0] + except FileNotFoundError: + return None + + for x in netifaces.interfaces(): + if get_connection_name_from_guid(x) == 'Ethernet': + docker_adrs = netifaces.ifaddresses(x)[2][0]['addr'] + break + elif 'docker0' in netifaces.interfaces(): + docker_adrs = netifaces.ifaddresses('docker0')[2][0]['addr'] + else: + # For Jenkins slave in Docker + docker_adrs = netifaces.gateways()[netifaces.AF_INET][0][0] + # We needs the user HOME directory to correctly create the user in Docker + docker_cmd.append("--env=HOME_DIR={}".format( + "/home/" + login if is_windows else os.environ["HOME"])) + docker_cmd.append("--env=DOCKER_HOST_={}".format(docker_adrs)) + docker_cmd.append("--env=BUILD_VOLUME_NAME={}".format(build_volume_name)) + docker_cmd.append("--env=PROJECT_DIRECTORY={}".format(os.getcwd())) + ifaddresses = [netifaces.ifaddresses(iface) for iface in netifaces.interfaces()] + # IP v4 + adrs = [e[2][0]['addr'] for e in ifaddresses if 2 in e] + # IP v6 + adrs += [e[10][0]['addr'].split('%')[0] for e in ifaddresses if 10 in e] + docker_cmd.append("--env=ADDRESSES={}".format(' '.join(adrs))) + docker_cmd.append("--env=EXTERNAL_PYTHON_VERSION_MAJOR={}".format(sys.version_info.major)) + docker_cmd.append("--env=EXTERNAL_PYTHON_VERSION_MINOR={}".format(sys.version_info.minor)) + + if options.root: + docker_cmd.extend(["--entrypoint", options.cmd]) + + if options.hash: + docker_cmd.append(options.hash) + else: + docker_cmd.append("{}:{}".format(options.image, options.version)) + + if not options.root: + docker_cmd.append(options.cmd) + + docker_cmd.extend(options.args) + try: + subprocess.check_call(docker_cmd) + except subprocess.CalledProcessError: + exit(2) + + +if __name__ == "__main__": + main() diff --git a/env-internaldev b/env-internaldev new file mode 100644 index 000000000..a350745d6 --- /dev/null +++ b/env-internaldev @@ -0,0 +1,25 @@ +DB_ECADASTRE=postgresql://172.17.0.1:5433/dummy +DB_MYMAPS=postgresql://172.17.0.1:5433/lux +DB_PGROUTE=postgresql://172.17.0.1:5433/dummy +DOCKER_TAG=latest +VISIBLE_WEB_HOST=localhost:8080 +VISIBLE_WEB_PROTOCOL=http +VISIBLE_ENTRY_POINT=/ +PGHOST=172.17.0.1 +PGHOST_SLAVE=172.17.0.1 +PGPORT=5433 +PGUSER=www-data +PGPASSWORD=www-data +PGDATABASE=lux +PGSCHEMA=geov3 +PGSCHEMA_STATIC=geov3_static +PGOPTIONS=-c statement_timeout=30000 +GEOPORTAL_INTERNAL_URL=http://geoportal:8080 +PRINT_URL=http://print:8080/print/ +DEVSERVER_HOST=webpack-dev-server:8080 +REDIS_HOST=redis +REDIS_PORT=6379 +C2C_REDIS_URL=redis://redis:6379 +LDAP_FILTER_TMPL=(login=%(login)s) +SHORTENER_BASE_URL=http://localhost:8080/s/ +SHORTENER_ALLOWED_HOST=localhost diff --git a/env-localdev b/env-localdev new file mode 100644 index 000000000..632a6f361 --- /dev/null +++ b/env-localdev @@ -0,0 +1,34 @@ +DB_ECADASTRE=postgresql://172.17.0.1:5433/dummy +DB_MYMAPS=postgresql://172.17.0.1:5433/lux +DB_PGROUTE=postgresql://172.17.0.1:5433/dummy +DOCKER_TAG=latest +VISIBLE_WEB_HOST=localhost:8080 +VISIBLE_WEB_PROTOCOL=http +VISIBLE_ENTRY_POINT=/ +PGHOST=172.17.0.1 +PGHOST_SLAVE=172.17.0.1 +PGPORT=5433 +PGUSER=www-data +PGPASSWORD=www-data +PGDATABASE=lux +PGSCHEMA=geov3 +PGSCHEMA_STATIC=geov3_static +PGOPTIONS=-c statement_timeout=30000 +GEOPORTAL_INTERNAL_URL=http://geoportal:8080 +PRINT_URL=http://print:8080/print/ +DEVSERVER_HOST=webpack-dev-server:8080 +REDIS_HOST=redis +REDIS_PORT=6379 +C2C_REDIS_URL=redis://redis:6379 +LDAP_PASSWD=test1234 +LDAP_URL=ldap://ldap:389 +LDAP_BIND=login=c2c,ou=portail,dc=act,dc=lu +LDAP_FILTER_TMPL=(login=%%(login)s) +SHORTENER_BASE_URL=http://localhost:8080/s/ +SHORTENER_ALLOWED_HOST=localhost +ELASTIC_SERVERS=elasticsearch:9200 +ELASTIC_INDEX=index +# Guillaume's routing keys +# Use them only for local dev +ROUTING_GRAPHHOPPER_API_KEY=239fa42d-e0ef-482a-b1ca-68e84df1660b +ROUTING_MAPQUEST_API_KEY=74Thu9D5G9eT1v8qEa9WBnx5zPcBejje diff --git a/fredj.mk b/fredj.mk deleted file mode 100644 index a0517e6f2..000000000 --- a/fredj.mk +++ /dev/null @@ -1,5 +0,0 @@ -INSTANCE_ID = fredj -VARS_FILE = vars_c2cdev.yaml -DISABLE_BUILD_RULES += print apache - -include geoportailv3.mk diff --git a/gberaudo.mk b/gberaudo.mk deleted file mode 100644 index 6065dd64c..000000000 --- a/gberaudo.mk +++ /dev/null @@ -1,5 +0,0 @@ -INSTANCE_ID = gberaudo -VARS_FILE = vars_c2cdev.yaml -DISABLE_BUILD_RULES += print apache - -include geoportailv3.mk diff --git a/geoportailv3.mk b/geoportailv3.mk deleted file mode 100644 index 9379c9efa..000000000 --- a/geoportailv3.mk +++ /dev/null @@ -1,194 +0,0 @@ -ifdef VARS_FILE -VARS_FILES += ${VARS_FILE} vars_geoportailv3.yaml -else -VARS_FILE = vars_geoportailv3.yaml -VARS_FILES += ${VARS_FILE} -endif -API_LESS_FILES = $(shell find $(PACKAGE)/static/less -type f -name '*.api.less' 2> /dev/null) -API_JS_FILES = $(shell find jsapi/src/ -type f -name '*.js') - -TEMPLATE_EXCLUDE += LUX_alembic/script.py.mako node_modules - -LANGUAGES = en fr de lb -CGXP = FALSE -MOBILE = FALSE -NGEO = TRUE -TILECLOUD_CHAIN = FALSE - -DISABLE_BUILD_RULES += test-packages test-packages-ngeo - -CONFIG_VARS += ldap -CONFIG_VARS += sqlalchemy_engines -CONFIG_VARS += proxy_wms_url -CONFIG_VARS += turbomail -CONFIG_VARS += authorized_ips -CONFIG_VARS += pag -CONFIG_VARS += casipo -CONFIG_VARS += exclude_theme_layer_search -CONFIG_VARS += overview_map -CONFIG_VARS += modify_notification -CONFIG_VARS += https_proxy -CONFIG_VARS += print_urls -CONFIG_VARS += no_proxy -CONFIG_VARS += lidar -CONFIG_VARS += routing -CONFIG_VARS += referrer -CONFIG_VARS += excluded_themes_from_search -APACHE_VHOST ?= luxembourg-geomapfish - -NGEO_LIBS_JS_FILES += node_modules/fuse.js/src/fuse.min.js -NGEO_LIBS_JS_FILES += node_modules/jszip/dist/jszip.min.js -NGEO_LIBS_JS_FILES += node_modules/babel-polyfill/dist/polyfill.min.js -NGEO_LIBS_JS_FILES += node_modules/url-polyfill/url-polyfill.min.js - -UTILITY_HELP = -e "- update-translations Synchronize the translations with Transifex" \ - "\n- recreate-search-poi Recreate the ElasticSearch POI Index" \ - "\n- recreate-search-layers Recreate the ElasticSearch Layers Index" \ - "\n- update-search-layers Update the ElasticSearch Layers Index" \ - "\n- update-tooltips Update the automatic generated tooltips fields" \ - "\n- pull-translations Pull the translation" \ -# Add rule that copies the font-awesome fonts to the static/build directory. -POST_RULES = .build/fonts.timestamp - -SERVER_LOCALISATION_SOURCES_FILES += $(PACKAGE)/views/pag.py $(PACKAGE)/views/luxprintproxy.py - -TOOLTIPS_LOCALISATION_FILES = $(addprefix $(PACKAGE)/locale/, $(addsuffix /LC_MESSAGES/$(PACKAGE)-tooltips.mo, $(LANGUAGES))) - -# Add JS API target to "help" target -SECONDARY_HELP = -e "" -SECONDARY_HELP += "\n" -SECONDARY_HELP += "JS API targets:\n" -SECONDARY_HELP += "\n" -SECONDARY_HELP += "- build-api Build CSS & JS for the API.\n" -SECONDARY_HELP += "- build-js-api Build the JS API project.\n" -SECONDARY_HELP += "- build-css-api Build the CSS API project.\n" -SECONDARY_HELP += "- lint-js-api Run the linter on the JS API code.\n" -SECONDARY_HELP += "- clean-js-api Remove generated files of the JS API project.\n" -SECONDARY_HELP += "- serve-js-api Start a development server for the JS API project." - -include CONST_Makefile - -build-server: template-generate compile-py-catalog $(SERVER_LOCALISATION_FILES) $(CLIENT_LOCALISATION_FILES) $(TOOLTIPS_LOCALISATION_FILES) - -# targets related to the JS API -API_OUTPUT_DIR = $(OUTPUT_DIR) -API_DIR = jsapi -API_TOOLS_DIR = $(API_DIR)/tools -API_SRC_JS_FILES := $(shell find jsapi -type f -name '*.js') - -REQUIREMENTS += "suds>=0.4" -REQUIREMENTS += "ipaddr==2.1.11" -REQUIREMENTS += "pyocclient==0.2" -# DEV_REQUIREMENTS += git+https://github.com/transifex/transifex-client.git@fix-proxies#egg=transifex-client-proxies -# DEV_REQUIREMENTS += git+https://github.com/petzlux/transifex-client.git -PRINT_VERSION = NONE - -.PHONY: update-translations -update-translations: $(PACKAGE)/locale/$(PACKAGE)-server.pot $(PACKAGE)/locale/$(PACKAGE)-client.pot $(PACKAGE)/locale/$(PACKAGE)-tooltips.pot - $(VENV_BIN)/tx push -s - $(VENV_BIN)/tx pull -f - -.PHONY: pull-translations -pull-translations: - $(VENV_BIN)/tx pull -f - -.build/fonts.timestamp: .build/node_modules.timestamp - mkdir -p $(PACKAGE)/static/build/fonts - cp node_modules/font-awesome/fonts/* $(PACKAGE)/static/build/fonts/ - touch $@ - -.PHONY: update-search-layers -update-search-layers: - $(VENV_BIN)/layers2es --interfaces desktop --no-themes --no-blocks --no-folders - -.PHONY: recreate-search-layers -recreate-search-layers: - $(VENV_BIN)/layers2es --interfaces desktop --no-themes --no-blocks --no-folders --recreate-index - -.PHONY: recreate-search-poi -recreate-search-poi: - $(VENV_BIN)/db2es --reset --index - -update-tooltips: - $(VENV_BIN)/tooltips2pot - -.PHONY: $(PACKAGE)/locale/$(PACKAGE)-tooltips.pot -$(PACKAGE)/locale/$(PACKAGE)-tooltips.pot: - mkdir -p $(dir $@) - $(VENV_BIN)/tooltips2pot - msguniq $@ -o $@ - -.PHONY: build-api -build-api: \ - lint-js-api \ - build-js-api \ - build-css-api \ - build-js-apidoc \ - create-xx-lang - -.PHONY: create-xx-lang -create-xx-lang: - mkdir -p $(OUTPUT_DIR)/locale/xx - cp -rf $(OUTPUT_DIR)/locale/fr/$(PACKAGE).json $(OUTPUT_DIR)/locale/xx/$(PACKAGE).json - -# Add new dependency to build target -build: build-api - -.PHONY: build-js-api -build-js-api: \ - $(API_OUTPUT_DIR)/apiv3.js - -.PHONY: build-css-api -build-css-api: \ - $(API_OUTPUT_DIR)/apiv3.css - -$(API_OUTPUT_DIR)/apiv3.css: $(API_LESS_FILES) .build/node_modules.timestamp - mkdir -p $(dir $@) - ./node_modules/.bin/lessc --clean-css $(PACKAGE)/static/less/$(PACKAGE).api.less $@ - -$(API_OUTPUT_DIR)/apiv3.js: $(API_DIR)/config.json \ - $(API_SRC_JS_FILES) \ - .build/node_modules.timestamp - mkdir -p $(dir $@) - node node_modules/openlayers/tasks/build.js $< $@ - cat node_modules/proj4/dist/proj4.js node_modules/whatwg-fetch/fetch.js node_modules/d3/build/d3.min.js \ - node_modules/js-autocomplete/auto-complete.min.js \ - node_modules/promise-polyfill/promise.min.js \ - node_modules/url-polyfill/url-polyfill.min.js \ - $@ > concatenated.js - mv concatenated.js $@ - -.build/jsdocOl3.js: jsapi/jsdoc/get-ol3-doc-ref.js - node $< > $@.tmp - mv $@.tmp $@ - -.PHONY: build-js-apidoc -build-js-apidoc: node_modules/openlayers/config/jsdoc/api/index.md \ - jsapi/jsdoc/api/conf.json $(API_SRC_JS_FILES) \ - $(shell find node_modules/openlayers/config/jsdoc/api/template -type f) \ - .build/node_modules.timestamp \ - .build/jsdocOl3.js \ - jsapi/examples/index.html - @mkdir -p $(@D) - @rm -rf $(API_OUTPUT_DIR)/apidoc - node_modules/.bin/jsdoc jsapi/jsdoc/api/index.md -c jsapi/jsdoc/api/conf.json -d $(API_OUTPUT_DIR)/apidoc - cp -rf jsapi/examples $(API_OUTPUT_DIR)/apidoc - -.PHONY: serve-js-api -serve-js-api: .build/node_modules.timestamp - node $(API_TOOLS_DIR)/serve.js - -.PHONY: lint-js-api -lint-js-api: ./node_modules/.bin/eslint .build/node_modules.timestamp .build/api.eslint.timestamp - -.build/api.eslint.timestamp: $(API_JS_FILES) - mkdir -p $(dir $@) - ./node_modules/.bin/eslint $(filter-out .build/node_modules.timestamp, $?) - touch $@ - -# Add new dependency to clean target -clean: clean-js-api - -.PHONY: clean-js-api -clean-js-api: - rm -rf $(API_OUTPUT_DIR)/apiv3.* diff --git a/geoportailv3/forms.py b/geoportailv3/forms.py deleted file mode 100644 index e6dbe929f..000000000 --- a/geoportailv3/forms.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging - -from pyramid.i18n import TranslationStringFactory - -from formalchemy import FieldSet, Grid # noqa - -from c2cgeoportal.forms import * # noqa - -_ = TranslationStringFactory("geoportailv3-server") -log = logging.getLogger(__name__) diff --git a/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-tooltips.po b/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-tooltips.po deleted file mode 100644 index d3538d72d..000000000 --- a/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-tooltips.po +++ /dev/null @@ -1,891 +0,0 @@ -# -# Translators: -# Andrea Donno , 2015-2016 -# Francis Kaell , 2015 -# Jeff Konnen , 2015 -# Jeff Konnen , 2015-2016 -# Patrick Weber , 2015 -# Patrick Weber , 2015 -msgid "" -msgstr "" -"Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:16+0000\n" -"Last-Translator: Jeff Konnen \n" -"Language-Team: German (http://www.transifex.com/geoportail/geoportailv3-lu/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Profil" -msgstr "" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Nom de la station" -msgstr "" - -#: engineecadastre Layer:682 RoleNone -msgid "f_localisation" -msgstr "Lage" - -#: engineecadastre Layer:682 RoleNone -msgid "f_parkup" -msgstr "Doppelstockparker" - -#: engineecadastre Layer:682 RoleNone -msgid "f_capacity_inside" -msgstr "Kapazität" - -#: engineecadastre Layer:682 RoleNone -msgid "f_name" -msgstr "Name" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Tronçon" -msgstr "Abschnitt" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Numéro" -msgstr "Site-ID" - -#: engineecadastre Layer:713 RoleNone -msgid "f_YEAR" -msgstr "" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITENAME" -msgstr "Name" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITECODE" -msgstr "Code" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Nom" -msgstr "Name" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Name" -msgstr "Name" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Fr" -msgstr "Kürzel in französicher Sprache: \"ZT\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Gr" -msgstr "Kürzel der Pufferzone in Deutscher Sprache: \"PZ\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Buffer_Id" -msgstr "Eindeutiger Code der Pufferzone" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKGemeinde" -msgstr "Gemeindename während des Kartierungsjahres" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Code" -msgstr "Code des ersten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_Shape_ares" -msgstr "Fläche in Ar (100m²) aufgerundet zum Quadratmeter" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEOCODE" -msgstr "Eindeutiger Code des Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Nom" -msgstr "Französicher Name des dritten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Code" -msgstr "Code des zweiten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKJahr" -msgstr "Kartierungsjahr" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Nom" -msgstr "Französicher Name des zweiten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Name" -msgstr "Deutscher Name des ersten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Code" -msgstr "Code des dritten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG3" -msgstr "Gesamtbewertung des dritten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG2" -msgstr "Gesamtbewertung des zweiten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG1" -msgstr "Gesamtbewertung des ersten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Name" -msgstr "Deutscher Name des dritten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Nom" -msgstr "Französicher Name des ersten Biotops" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEMEINDE" -msgstr "Aktueller Name der Gemeinde, welche den grössten Teil des Biotops beherbergt" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Name" -msgstr "Deutscher Name des zweiten Biotops" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Legende" -msgstr "Typ des Gebiets" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Kategorie" -msgstr "Beschreibung" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Site" -msgstr "Standort" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_c" -msgstr "Verbot Zone C" - -#: engineecadastre Layer:430 RoleNone -msgid "f_nom" -msgstr "name" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_a" -msgstr "Verbot Zone A" - -#: engineecadastre Layer:430 RoleNone -msgid "f_date_classement" -msgstr "DATUM_SORTIERUNG" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_b" -msgstr "Verbot Zone B" - -#: engineecadastre Layer:430 RoleNone -msgid "f_commentaire" -msgstr "Kommentar" - -#: engineecadastre Layer:430 RoleNone -msgid "f_sous_zone" -msgstr "Unterzone" - -#: engineecadastre Layer:430 RoleNone -msgid "f_link" -msgstr "Link" - -#: engineecadastre Layer:430 RoleNone -msgid "f_code_national" -msgstr "CODE_NATIONAL" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Nom_Site" -msgstr "Name des Standortes" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Commune" -msgstr "Gemeinde" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Remarque" -msgstr "Bemerkung" - -#: engineecadastre Layer:401 RoleNone -msgid "f_FID" -msgstr "FID" - -#: engineecadastre Layer:401 RoleNone -msgid "f_SurfaceHa" -msgstr "Fläche in ha" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Superficie" -msgstr "Fläche" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Type" -msgstr "Typ" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Perimetre" -msgstr "Perimeter" - -#: engineecadastre Layer:577 RoleNone -msgid "f_Hochwasserintensität" -msgstr "" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Partie numéro" -msgstr "Teilnummer" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Loi" -msgstr "" - -#: engineecadastre Layer:493 RoleNone -msgid "f_Nom de l'écosystème" -msgstr "" - -#: engineecadastre Layer:515 RoleNone -msgid "f_Überschwemmungsgebietstyp" -msgstr "" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Fiche station" -msgstr "Datenblatt" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Photo station" -msgstr "Bild" - -#: engineecadastre Layer:568 RoleNone -msgid "f_Hazard" -msgstr "" - -#: engineecadastre Layer:396 RoleNone -msgid "f_Length" -msgstr "Länge" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_y" -msgstr "Y" - -#: engineecadastre Layer:419 RoleNone -msgid "f_arbre_baum" -msgstr "Baum" - -#: engineecadastre Layer:419 RoleNone -msgid "f_type" -msgstr "Typ" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_x" -msgstr "X" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_name" -msgstr "Name" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_description" -msgstr "Beschreibung" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_line" -msgstr "LABEL_LINE" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_section" -msgstr "LABEL_SECTION" - -#: engineecadastre Layer:678 RoleNone -msgid "f_station_biologique" -msgstr "Biologische Station" - -#: engineecadastre Layer:572 RoleNone -msgid "f_CODE_DC" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Exploitant" -msgstr "Betreiber" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Code" -msgstr "Code" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Publication du règlement grand-duca" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Nom(s) du/des capages(s) concerné(s)" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Classifica" -msgstr "" - -#: engineecadastre Layer:581 RoleNone -msgid "f_Qualité" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profiltyp" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Shape.len" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Cours d'eau" -msgstr "Wasserläufe" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profil en travers" -msgstr "" - -#: engineecadastre Layer:157 RoleNone -msgid "f_LDEN" -msgstr "dB" - -#: engineecadastre Layer:301 RoleNone -msgid "f_klar_vers" -msgstr "Typ" - -#: engineecadastre Layer:607 RoleNone -msgid "f_LAWA" -msgstr "" - -#: engineecadastre Layer:749 RoleNone -msgid "f_sentier" -msgstr "" - -#: engineecadastre Layer:669 RoleNone -msgid "f_UHD2" -msgstr "Abdeckung ≥ 100 Mbit/s & < 1 Gbit/s" - -#: engineecadastre Layer:671 RoleNone -msgid "f_UHD1" -msgstr "Abdeckung 1 Gbit/s" - -#: engineecadastre Layer:601 RoleNone -msgid "f_Code masse d'eau" -msgstr "Wasserkörpercode" - -#: engineecadastre Layer:627 RoleNone -msgid "f_Station" -msgstr "Station" - -#: engineecadastre Layer:724 RoleNone -msgid "f_Specifique" -msgstr "Bemerkung" - -#: engineecadastre Layer:724 RoleNone -msgid "f_NomRGD" -msgstr "Name des Gebiets" - -#: engineecadastre Layer:644 RoleNone -msgid "f_BETR_RAUM" -msgstr "" - -#: engineecadastre Layer:647 RoleNone -msgid "f_OBJECTTYPE" -msgstr "" - -#: engineecadastre Layer:648 RoleNone -msgid "f_code" -msgstr "Code" - -#: engineecadastre Layer:722 RoleNone -msgid "f_NomZone" -msgstr "Zonenname" - -#: engineecadastre Layer:691 RoleNone -msgid "f_lot_numero" -msgstr "NUMMER" - -#: engineecadastre Layer:153 RoleNone -msgid "f_district" -msgstr "Bezirk" - -#: engineecadastre Layer:153 RoleNone -msgid "f_canton" -msgstr "Kanton" - -#: engineecadastre Layer:153 RoleNone -msgid "f_commune_admin" -msgstr "Gemeinde" - -#: engineecadastre Layer:389 RoleNone -msgid "f_essence" -msgstr "Essenz" - -#: engineecadastre Layer:389 RoleNone -msgid "f_propriete" -msgstr "BESITZ" - -#: engineecadastre Layer:389 RoleNone -msgid "f_numero" -msgstr "Nummer" - -#: engineecadastre Layer:690 RoleNone -msgid "f_secteur" -msgstr "SEKTOR" - -#: engineecadastre Layer:690 RoleNone -msgid "f_region" -msgstr "REGION" - -#: engineecadastre Layer:167 RoleNone -msgid "f_CodeDesc" -msgstr "Typ" - -#: engineecadastre Layer:255 RoleNone -msgid "f_LNGT" -msgstr "dB" - -#: engineecadastre Layer:355 RoleNone -msgid "f_commune_cad" -msgstr "Katastergemeinde" - -#: engineecadastre Layer:367 RoleNone -msgid "f_flurname" -msgstr "Lieu-dit" - -#: engineecadastre Layer:367 RoleNone -msgid "f_vendeur" -msgstr "Vendeur" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem_p" -msgstr "Remarque Bail" - -#: engineecadastre Layer:367 RoleNone -msgid "f_datum" -msgstr "Date d''achat" - -#: engineecadastre Layer:367 RoleNone -msgid "f_notar" -msgstr "Notaire" - -#: engineecadastre Layer:367 RoleNone -msgid "f_paechter" -msgstr "Betreiber" - -#: engineecadastre Layer:367 RoleNone -msgid "f_id" -msgstr "PF" - -#: engineecadastre Layer:367 RoleNone -msgid "f_jagdlos" -msgstr "Lot de chasse" - -#: engineecadastre Layer:367 RoleNone -msgid "f_sektion" -msgstr "Section" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fischereil" -msgstr "Lot de peche" - -#: engineecadastre Layer:367 RoleNone -msgid "f_num_flik" -msgstr "Num. FLIK" - -#: engineecadastre Layer:367 RoleNone -msgid "f_aff" -msgstr "Affectation" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fl_che" -msgstr "Surface cadastrale" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem" -msgstr "Bemerkung" - -#: engineecadastre Layer:367 RoleNone -msgid "f_gemeinde" -msgstr "Gemeinde" - -#: engineecadastre Layer:367 RoleNone -msgid "f_kadasternu" -msgstr "Num. cadastral" - -#: engineecadastre Layer:378 RoleNone -msgid "f_voiture_emprises" -msgstr "Anschlüsse Auto" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection1" -msgstr "Verbindung Fahrrad" - -#: engineecadastre Layer:378 RoleNone -msgid "f_cout" -msgstr "Kosten" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_emprises" -msgstr "Anschlüsse Fahrrad" - -#: engineecadastre Layer:378 RoleNone -msgid "f_rue" -msgstr "Strasse" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection" -msgstr "Verbindung Auto" - -#: engineecadastre Layer:378 RoleNone -msgid "f_station" -msgstr "Station" - -#: engineecadastre Layer:378 RoleNone -msgid "f_operateur" -msgstr "Anbieter" - -#: engineecadastre Layer:378 RoleNone -msgid "f_open" -msgstr "Erreichbar" - -#: engineecadastre Layer:368 RoleNone -msgid "f_systeme" -msgstr "Dienst" - -#: engineecadastre Layer:368 RoleNone -msgid "f_adress" -msgstr "Adresse" - -#: engineecadastre Layer:368 RoleNone -msgid "f_reservation" -msgstr "Buchung" - -#: engineecadastre Layer:368 RoleNone -msgid "f_bornes" -msgstr "Abstellplätze" - -#: engineecadastre Layer:368 RoleNone -msgid "f_ouvert" -msgstr "Erreichbar" - -#: engineecadastre Layer:664 RoleNone -msgid "f_Projet de Règlement grand-ducal" -msgstr "" - -#: engineecadastre Layer:407 RoleNone -msgid "f_Categorie" -msgstr "Kategorie" - -#: engineecadastre Layer:670 RoleNone -msgid "f_UHD3" -msgstr "Abdeckung ≥ 30 Mbit/s & < 100 Mbit/s" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Projet" -msgstr "Projekt" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Nr_Projet" -msgstr "Projekt-Nr." - -#: engineecadastre Layer:410 RoleNone -msgid "f_Priorite" -msgstr "Priorität" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Photo" -msgstr "Foto" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Code station" -msgstr "Code Station" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Analyses" -msgstr "" - -#: engineecadastre Layer:645 RoleNone -msgid "f_CAPA" -msgstr "Ausbaugröße" - -#: engineecadastre Layer:163 RoleNone -msgid "f_LEG_FR" -msgstr "Typ" - -#: engineecadastre Layer:643 RoleNone -msgid "f_Syndicat" -msgstr "Syndikat" - -#: engineecadastre Layer:402 RoleNone -msgid "f_ExtNouv" -msgstr "Neues Gebiet / Erweiterung ?" - -#: engineecadastre Layer:403 RoleNone -msgid "f_Reclassement en" -msgstr "Umwidmung in " - -#: engineecadastre Layer:650 RoleNone -msgid "f_Code national" -msgstr "Nationaler Code" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Well_Depth" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Located" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Reservoir" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Op_State" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Water_Operator" -msgstr "" - -#: engineecadastre Layer:657 RoleNone -msgid "f_Etat général" -msgstr "" - -#: engineecadastre Layer:660 RoleNone -msgid "f_RISK_QUAL_STAT_2021" -msgstr "" - -#: engineecadastre Layer:661 RoleNone -msgid "f_RISK_QUANT_STAT_2021" -msgstr "" - -#: engineecadastre Layer:659 RoleNone -msgid "f_NAME" -msgstr "" - -#: engineecadastre Layer:662 RoleNone -msgid "f_Phytobenthos_Makrophyten" -msgstr "" - -#: engineecadastre Layer:481 RoleNone -msgid "f_commune" -msgstr "Gemeinde" - -#: engineecadastre Layer:481 RoleNone -msgid "f_site de la commune" -msgstr "" - -#: engineecadastre Layer:663 RoleNone -msgid "f_Ökologisches_Potenzial" -msgstr "" - -#: engineecadastre Layer:441 RoleNone -msgid "f_Cause mauvais etat" -msgstr "Grund schlechter Zustand" - -#: engineecadastre Layer:441 RoleNone -msgid "f_QUAL_STAT" -msgstr "" - -#: engineecadastre Layer:583 RoleNone -msgid "f_Allgemeine_Physiko_Chemie_gesamt" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_ges" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_Code cours d'eau" -msgstr "Gewässercode" - -#: engineecadastre Layer:586 RoleNone -msgid "f_chem" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_LEGENDE" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_Typologie" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Fiche descriptive" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Hydromorphologie_gesamt" -msgstr "" - -#: engineecadastre Layer:593 RoleNone -msgid "f_hydro_09" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_EP_SP" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_BEW_GEF" -msgstr "" - -#: engineecadastre Layer:605 RoleNone -msgid "f_QUANT_STAT" -msgstr "" - -#: engineecadastre Layer:600 RoleNone -msgid "f_Makrozoobenthos" -msgstr "" - -#: engineecadastre Layer:614 RoleNone -msgid "f_oeko" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_CodeOWK" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_Chemischer_Zustand_2008_105_EG_mit_ubiquitaeren_Stoffen" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_wasserrahmenrichtlinie.GISADMIN.OWK_2014.Type" -msgstr "" - -#: engineecadastre Layer:622 RoleNone -msgid "f_Ökologischer_Zustand" -msgstr "" - -#: engineecadastre Layer:639 RoleNone -msgid "f_Maß_geplan" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_Cause mauvais état" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_QUAL_STAT_2015" -msgstr "" - -#: engineecadastre Layer:646 RoleNone -msgid "f_Fische" -msgstr "" - -#: engineecadastre Layer:582 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.TypePoint" -msgstr "" - -#: engineecadastre Layer:592 RoleNone -msgid "f_QUANT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:591 RoleNone -msgid "f_TOT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:626 RoleNone -msgid "f_lot" -msgstr "" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_la" -msgstr "Art (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_de" -msgstr "Name (de)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_la" -msgstr "Name (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_fr" -msgstr "Art (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_abreviation" -msgstr "Abkürzung" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_fr" -msgstr "Name (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_de" -msgstr "Art (de)" - -#: engineecadastre Layer:680 RoleNone -msgid "f_No" -msgstr "No" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Adresse" -msgstr "Adresse" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Niveau d'assainissement" -msgstr "Niveau d'assainissement" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Contamination résiduelle" -msgstr "Contamination résiduelle" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Ancien No" -msgstr "Ancien No" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Description" -msgstr "Description" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Nom du site" -msgstr "Nom du site" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Année de saisie" -msgstr "Année de saisie" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Commentaire" -msgstr "Commentaire" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Identifiant surface" -msgstr "Identifiant surface" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Méthode" -msgstr "Méthode" - -#: engineecadastre Layer:726 RoleNone -msgid "f_code_dossier" -msgstr "Code" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_fin" -msgstr "Enddatum" - -#: engineecadastre Layer:726 RoleNone -msgid "f_annexe" -msgstr "Anhang" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_debut" -msgstr "Startdatum" - -#: engineecadastre Layer:726 RoleNone -msgid "f_etat_libelle" -msgstr "Status" - -#: engineecadastre Layer:726 RoleNone -msgid "f_aide" -msgstr "Hilfe" diff --git a/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-tooltips.po b/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-tooltips.po deleted file mode 100644 index 5a2515ca4..000000000 --- a/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-tooltips.po +++ /dev/null @@ -1,895 +0,0 @@ -# -# Translators: -# Andrea Donno , 2015-2016 -# Andrea Donno , 2015 -# Andrea Donno , 2015-2016 -# Andrea Donno , 2016 -# eRenaud Michaëlis , 2015 -# Francis Kaell , 2015 -# Jeff Konnen , 2015 -# Jeff Konnen , 2015-2016 -# Patrick Weber , 2015 -# Patrick Weber , 2015 -msgid "" -msgstr "" -"Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:16+0000\n" -"Last-Translator: Jeff Konnen \n" -"Language-Team: English (http://www.transifex.com/geoportail/geoportailv3-lu/language/en/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: en\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Profil" -msgstr "" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Nom de la station" -msgstr "" - -#: engineecadastre Layer:682 RoleNone -msgid "f_localisation" -msgstr "Location" - -#: engineecadastre Layer:682 RoleNone -msgid "f_parkup" -msgstr "Double deck cycle parking" - -#: engineecadastre Layer:682 RoleNone -msgid "f_capacity_inside" -msgstr "Capacity" - -#: engineecadastre Layer:682 RoleNone -msgid "f_name" -msgstr "Name" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Tronçon" -msgstr "Section" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Numéro" -msgstr "Site ID" - -#: engineecadastre Layer:713 RoleNone -msgid "f_YEAR" -msgstr "" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITENAME" -msgstr "Name" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITECODE" -msgstr "Code" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Nom" -msgstr "Name" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Name" -msgstr "Name" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Fr" -msgstr "French Legend of the buffer: \"PZ\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Gr" -msgstr "German Legend of the buffer: \"PZ\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Buffer_Id" -msgstr "Unique code of the buffer" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKGemeinde" -msgstr "Commune name of the inventory year" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Code" -msgstr "Code of the first biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_Shape_ares" -msgstr "Surface in ares (100m²) rounded to the square meter" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEOCODE" -msgstr "Unique code of the biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Nom" -msgstr "French name of the third biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Code" -msgstr "Code of the second biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKJahr" -msgstr "Year of the field inventory" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Nom" -msgstr "French name of the second biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Name" -msgstr "German name of the first biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Code" -msgstr "Code of the third biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG3" -msgstr "Evaluation of the third biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG2" -msgstr "Evaluation of the second biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG1" -msgstr "Evaluation of the first biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Name" -msgstr "German name of the third biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Nom" -msgstr "French name of the first biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEMEINDE" -msgstr "Actual name of the commune holding the biggest part of the biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Name" -msgstr "German name of the second biotop" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Legende" -msgstr "Zone type" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Kategorie" -msgstr "Description" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Site" -msgstr "Site" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_c" -msgstr "Prohibition zone C" - -#: engineecadastre Layer:430 RoleNone -msgid "f_nom" -msgstr "name" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_a" -msgstr "Prohibition zone A" - -#: engineecadastre Layer:430 RoleNone -msgid "f_date_classement" -msgstr "DATE_CLASSEMENT" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_b" -msgstr "Prohibition zone B" - -#: engineecadastre Layer:430 RoleNone -msgid "f_commentaire" -msgstr "Comment" - -#: engineecadastre Layer:430 RoleNone -msgid "f_sous_zone" -msgstr "Subzone" - -#: engineecadastre Layer:430 RoleNone -msgid "f_link" -msgstr "Link" - -#: engineecadastre Layer:430 RoleNone -msgid "f_code_national" -msgstr "NATIONAL_CODE" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Nom_Site" -msgstr "Site name" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Commune" -msgstr "Municipality" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Remarque" -msgstr "Remark" - -#: engineecadastre Layer:401 RoleNone -msgid "f_FID" -msgstr "FID" - -#: engineecadastre Layer:401 RoleNone -msgid "f_SurfaceHa" -msgstr "Area in ha" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Superficie" -msgstr "Area" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Type" -msgstr "Type" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Perimetre" -msgstr "Perimeter" - -#: engineecadastre Layer:577 RoleNone -msgid "f_Hochwasserintensität" -msgstr "" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Partie numéro" -msgstr "Deelnummer" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Loi" -msgstr "" - -#: engineecadastre Layer:493 RoleNone -msgid "f_Nom de l'écosystème" -msgstr "" - -#: engineecadastre Layer:515 RoleNone -msgid "f_Überschwemmungsgebietstyp" -msgstr "" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Fiche station" -msgstr "Datasheet" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Photo station" -msgstr "Picture" - -#: engineecadastre Layer:568 RoleNone -msgid "f_Hazard" -msgstr "" - -#: engineecadastre Layer:396 RoleNone -msgid "f_Length" -msgstr "Length" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_y" -msgstr "Y" - -#: engineecadastre Layer:419 RoleNone -msgid "f_arbre_baum" -msgstr "Tree" - -#: engineecadastre Layer:419 RoleNone -msgid "f_type" -msgstr "Type" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_x" -msgstr "X" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_name" -msgstr "Name" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_description" -msgstr "Description" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_line" -msgstr "LABEL_LINE" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_section" -msgstr "LABEL_SECTION" - -#: engineecadastre Layer:678 RoleNone -msgid "f_station_biologique" -msgstr "BIOLOGIQUE_STATION" - -#: engineecadastre Layer:572 RoleNone -msgid "f_CODE_DC" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Exploitant" -msgstr "Operator" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Code" -msgstr "Code" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Publication du règlement grand-duca" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Nom(s) du/des capages(s) concerné(s)" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Classifica" -msgstr "" - -#: engineecadastre Layer:581 RoleNone -msgid "f_Qualité" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profiltyp" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Shape.len" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Cours d'eau" -msgstr "Watercourses" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profil en travers" -msgstr "" - -#: engineecadastre Layer:157 RoleNone -msgid "f_LDEN" -msgstr "dB" - -#: engineecadastre Layer:301 RoleNone -msgid "f_klar_vers" -msgstr "Type" - -#: engineecadastre Layer:607 RoleNone -msgid "f_LAWA" -msgstr "" - -#: engineecadastre Layer:749 RoleNone -msgid "f_sentier" -msgstr "" - -#: engineecadastre Layer:669 RoleNone -msgid "f_UHD2" -msgstr "Coverage ≥ 100 Mbit/s & < 1 Gbit/s" - -#: engineecadastre Layer:671 RoleNone -msgid "f_UHD1" -msgstr "Coverage 1 Gbit/s" - -#: engineecadastre Layer:601 RoleNone -msgid "f_Code masse d'eau" -msgstr "Code Waasserkierper" - -#: engineecadastre Layer:627 RoleNone -msgid "f_Station" -msgstr "Station" - -#: engineecadastre Layer:724 RoleNone -msgid "f_Specifique" -msgstr "Remark" - -#: engineecadastre Layer:724 RoleNone -msgid "f_NomRGD" -msgstr "Zone name" - -#: engineecadastre Layer:644 RoleNone -msgid "f_BETR_RAUM" -msgstr "" - -#: engineecadastre Layer:647 RoleNone -msgid "f_OBJECTTYPE" -msgstr "" - -#: engineecadastre Layer:648 RoleNone -msgid "f_code" -msgstr "Code" - -#: engineecadastre Layer:722 RoleNone -msgid "f_NomZone" -msgstr "Zone name" - -#: engineecadastre Layer:691 RoleNone -msgid "f_lot_numero" -msgstr "Number" - -#: engineecadastre Layer:153 RoleNone -msgid "f_district" -msgstr "District" - -#: engineecadastre Layer:153 RoleNone -msgid "f_canton" -msgstr "Canton" - -#: engineecadastre Layer:153 RoleNone -msgid "f_commune_admin" -msgstr "Municipality" - -#: engineecadastre Layer:389 RoleNone -msgid "f_essence" -msgstr "Type" - -#: engineecadastre Layer:389 RoleNone -msgid "f_propriete" -msgstr "PROPRIETE" - -#: engineecadastre Layer:389 RoleNone -msgid "f_numero" -msgstr "Number" - -#: engineecadastre Layer:690 RoleNone -msgid "f_secteur" -msgstr "SECTEUR" - -#: engineecadastre Layer:690 RoleNone -msgid "f_region" -msgstr "REGION" - -#: engineecadastre Layer:167 RoleNone -msgid "f_CodeDesc" -msgstr "Type" - -#: engineecadastre Layer:255 RoleNone -msgid "f_LNGT" -msgstr "dB" - -#: engineecadastre Layer:355 RoleNone -msgid "f_commune_cad" -msgstr "Cadastral municipality" - -#: engineecadastre Layer:367 RoleNone -msgid "f_flurname" -msgstr "Lieu-dit" - -#: engineecadastre Layer:367 RoleNone -msgid "f_vendeur" -msgstr "Vendeur" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem_p" -msgstr "Remarque Bail" - -#: engineecadastre Layer:367 RoleNone -msgid "f_datum" -msgstr "Date d''achat" - -#: engineecadastre Layer:367 RoleNone -msgid "f_notar" -msgstr "Notaire" - -#: engineecadastre Layer:367 RoleNone -msgid "f_paechter" -msgstr "Bedreiwer" - -#: engineecadastre Layer:367 RoleNone -msgid "f_id" -msgstr "PF" - -#: engineecadastre Layer:367 RoleNone -msgid "f_jagdlos" -msgstr "Lot de chasse" - -#: engineecadastre Layer:367 RoleNone -msgid "f_sektion" -msgstr "Section" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fischereil" -msgstr "Lot de peche" - -#: engineecadastre Layer:367 RoleNone -msgid "f_num_flik" -msgstr "Num. FLIK" - -#: engineecadastre Layer:367 RoleNone -msgid "f_aff" -msgstr "Affectation" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fl_che" -msgstr "Surface cadastrale" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem" -msgstr "Remark" - -#: engineecadastre Layer:367 RoleNone -msgid "f_gemeinde" -msgstr "Municipality" - -#: engineecadastre Layer:367 RoleNone -msgid "f_kadasternu" -msgstr "Num. cadastral" - -#: engineecadastre Layer:378 RoleNone -msgid "f_voiture_emprises" -msgstr "Car terminals" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection1" -msgstr "Bike connection" - -#: engineecadastre Layer:378 RoleNone -msgid "f_cout" -msgstr "Cost" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_emprises" -msgstr "Bike terminals" - -#: engineecadastre Layer:378 RoleNone -msgid "f_rue" -msgstr "road" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection" -msgstr "Car connection" - -#: engineecadastre Layer:378 RoleNone -msgid "f_station" -msgstr "Station" - -#: engineecadastre Layer:378 RoleNone -msgid "f_operateur" -msgstr "Operator" - -#: engineecadastre Layer:378 RoleNone -msgid "f_open" -msgstr "Open" - -#: engineecadastre Layer:368 RoleNone -msgid "f_systeme" -msgstr "Service" - -#: engineecadastre Layer:368 RoleNone -msgid "f_adress" -msgstr "Address" - -#: engineecadastre Layer:368 RoleNone -msgid "f_reservation" -msgstr "Booking" - -#: engineecadastre Layer:368 RoleNone -msgid "f_bornes" -msgstr "Racks" - -#: engineecadastre Layer:368 RoleNone -msgid "f_ouvert" -msgstr "Open" - -#: engineecadastre Layer:664 RoleNone -msgid "f_Projet de Règlement grand-ducal" -msgstr "" - -#: engineecadastre Layer:407 RoleNone -msgid "f_Categorie" -msgstr "Category" - -#: engineecadastre Layer:670 RoleNone -msgid "f_UHD3" -msgstr "Coverage ≥ 30 Mbit/s & < 100 Mbit/s" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Projet" -msgstr "Project" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Nr_Projet" -msgstr "Project-No." - -#: engineecadastre Layer:410 RoleNone -msgid "f_Priorite" -msgstr "Priority" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Photo" -msgstr "Picture" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Code station" -msgstr "Code Statioun" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Analyses" -msgstr "" - -#: engineecadastre Layer:645 RoleNone -msgid "f_CAPA" -msgstr "treatment capacity" - -#: engineecadastre Layer:163 RoleNone -msgid "f_LEG_FR" -msgstr "Type" - -#: engineecadastre Layer:643 RoleNone -msgid "f_Syndicat" -msgstr "Syndikat" - -#: engineecadastre Layer:402 RoleNone -msgid "f_ExtNouv" -msgstr "New zone / extension ?" - -#: engineecadastre Layer:403 RoleNone -msgid "f_Reclassement en" -msgstr "Reclassification in" - -#: engineecadastre Layer:650 RoleNone -msgid "f_Code national" -msgstr "Nationale Code" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Well_Depth" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Located" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Reservoir" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Op_State" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Water_Operator" -msgstr "" - -#: engineecadastre Layer:657 RoleNone -msgid "f_Etat général" -msgstr "" - -#: engineecadastre Layer:660 RoleNone -msgid "f_RISK_QUAL_STAT_2021" -msgstr "" - -#: engineecadastre Layer:661 RoleNone -msgid "f_RISK_QUANT_STAT_2021" -msgstr "" - -#: engineecadastre Layer:659 RoleNone -msgid "f_NAME" -msgstr "" - -#: engineecadastre Layer:662 RoleNone -msgid "f_Phytobenthos_Makrophyten" -msgstr "" - -#: engineecadastre Layer:481 RoleNone -msgid "f_commune" -msgstr "Gemeng" - -#: engineecadastre Layer:481 RoleNone -msgid "f_site de la commune" -msgstr "" - -#: engineecadastre Layer:663 RoleNone -msgid "f_Ökologisches_Potenzial" -msgstr "" - -#: engineecadastre Layer:441 RoleNone -msgid "f_Cause mauvais etat" -msgstr "Grond schlechten Zoustand" - -#: engineecadastre Layer:441 RoleNone -msgid "f_QUAL_STAT" -msgstr "" - -#: engineecadastre Layer:583 RoleNone -msgid "f_Allgemeine_Physiko_Chemie_gesamt" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_ges" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_Code cours d'eau" -msgstr "Code Gewässer" - -#: engineecadastre Layer:586 RoleNone -msgid "f_chem" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_LEGENDE" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_Typologie" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Fiche descriptive" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Hydromorphologie_gesamt" -msgstr "" - -#: engineecadastre Layer:593 RoleNone -msgid "f_hydro_09" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_EP_SP" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_BEW_GEF" -msgstr "" - -#: engineecadastre Layer:605 RoleNone -msgid "f_QUANT_STAT" -msgstr "" - -#: engineecadastre Layer:600 RoleNone -msgid "f_Makrozoobenthos" -msgstr "" - -#: engineecadastre Layer:614 RoleNone -msgid "f_oeko" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_CodeOWK" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_Chemischer_Zustand_2008_105_EG_mit_ubiquitaeren_Stoffen" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_wasserrahmenrichtlinie.GISADMIN.OWK_2014.Type" -msgstr "" - -#: engineecadastre Layer:622 RoleNone -msgid "f_Ökologischer_Zustand" -msgstr "" - -#: engineecadastre Layer:639 RoleNone -msgid "f_Maß_geplan" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_Cause mauvais état" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_QUAL_STAT_2015" -msgstr "" - -#: engineecadastre Layer:646 RoleNone -msgid "f_Fische" -msgstr "" - -#: engineecadastre Layer:582 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.TypePoint" -msgstr "" - -#: engineecadastre Layer:592 RoleNone -msgid "f_QUANT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:591 RoleNone -msgid "f_TOT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:626 RoleNone -msgid "f_lot" -msgstr "" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_la" -msgstr "Type (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_de" -msgstr "Name (de)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_la" -msgstr "Name (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_fr" -msgstr "Type (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_abreviation" -msgstr "Abbreviation" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_fr" -msgstr "Name (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_de" -msgstr "Type (de)" - -#: engineecadastre Layer:680 RoleNone -msgid "f_No" -msgstr "No" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Adresse" -msgstr "Address" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Niveau d'assainissement" -msgstr "Niveau d'assainissement" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Contamination résiduelle" -msgstr "Contamination résiduelle" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Ancien No" -msgstr "Ancien numéro" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Description" -msgstr "Description" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Nom du site" -msgstr "Nom du site" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Année de saisie" -msgstr "Année de saisie" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Commentaire" -msgstr "Commentaire" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Identifiant surface" -msgstr "Identifiant de surface" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Méthode" -msgstr "Méthode" - -#: engineecadastre Layer:726 RoleNone -msgid "f_code_dossier" -msgstr "Code" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_fin" -msgstr "End date" - -#: engineecadastre Layer:726 RoleNone -msgid "f_annexe" -msgstr "Annex" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_debut" -msgstr "Start date" - -#: engineecadastre Layer:726 RoleNone -msgid "f_etat_libelle" -msgstr "Status" - -#: engineecadastre Layer:726 RoleNone -msgid "f_aide" -msgstr "Help" diff --git a/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-tooltips.po b/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-tooltips.po deleted file mode 100644 index cc6a9e3b7..000000000 --- a/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-tooltips.po +++ /dev/null @@ -1,891 +0,0 @@ -# -# Translators: -# Andrea Donno , 2015-2016 -# Jeff Konnen , 2015 -# Jeff Konnen , 2015-2016 -# Jeff Konnen , 2015 -# Patrick Weber , 2015 -# Patrick Weber , 2015-2016 -msgid "" -msgstr "" -"Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:16+0000\n" -"Last-Translator: Jeff Konnen \n" -"Language-Team: French (http://www.transifex.com/geoportail/geoportailv3-lu/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Profil" -msgstr "" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Nom de la station" -msgstr "" - -#: engineecadastre Layer:682 RoleNone -msgid "f_localisation" -msgstr "Localisation" - -#: engineecadastre Layer:682 RoleNone -msgid "f_parkup" -msgstr "Parking vélo double étage" - -#: engineecadastre Layer:682 RoleNone -msgid "f_capacity_inside" -msgstr "Capacité" - -#: engineecadastre Layer:682 RoleNone -msgid "f_name" -msgstr "Label" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Tronçon" -msgstr "Tronçon" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Numéro" -msgstr "ID Site" - -#: engineecadastre Layer:713 RoleNone -msgid "f_YEAR" -msgstr "" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITENAME" -msgstr "Nom" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITECODE" -msgstr "Code" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Nom" -msgstr "Nom" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Name" -msgstr "Nom" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Fr" -msgstr "Code de la zone tampon en français : \"ZT\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Gr" -msgstr "Code de la zone tampon en allemand : \"PZ\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Buffer_Id" -msgstr "Code unique de la zone tampon" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKGemeinde" -msgstr "Nom de la commune de l’année de l'inventaire" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Code" -msgstr "Code du premier biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_Shape_ares" -msgstr "Surface en ares (100m²) arrondie au mètre-carré" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEOCODE" -msgstr "Code unique du biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Nom" -msgstr "Nom français du troisième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Code" -msgstr "Code du deuxième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKJahr" -msgstr "Année de l'inventaire" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Nom" -msgstr "Nom français du deuxième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Name" -msgstr "Nom allemand du premier biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Code" -msgstr "Code du troisième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG3" -msgstr "Évaluation totale du troisième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG2" -msgstr "Évaluation totale du deuxième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG1" -msgstr "Évaluation totale du premier biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Name" -msgstr "Nom allemand du troisième biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Nom" -msgstr "Nom français du premier biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEMEINDE" -msgstr "Nom actuel de la commune abritant la plus grande partie du biotope" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Name" -msgstr "Nom allemand du deuxième biotope" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Legende" -msgstr "Type Zone" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Kategorie" -msgstr "Description" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Site" -msgstr "Site" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_c" -msgstr "Interdiction Zone C" - -#: engineecadastre Layer:430 RoleNone -msgid "f_nom" -msgstr "nom" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_a" -msgstr "Interdiction Zone A" - -#: engineecadastre Layer:430 RoleNone -msgid "f_date_classement" -msgstr "DATE_CLASSEMENT" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_b" -msgstr "Interdiction Zone B" - -#: engineecadastre Layer:430 RoleNone -msgid "f_commentaire" -msgstr "Commentaire" - -#: engineecadastre Layer:430 RoleNone -msgid "f_sous_zone" -msgstr "Sous-Zone" - -#: engineecadastre Layer:430 RoleNone -msgid "f_link" -msgstr "Link" - -#: engineecadastre Layer:430 RoleNone -msgid "f_code_national" -msgstr "CODE_NATIONAL" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Nom_Site" -msgstr "Nom Site" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Commune" -msgstr "Commune" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Remarque" -msgstr "Remarque" - -#: engineecadastre Layer:401 RoleNone -msgid "f_FID" -msgstr "FID" - -#: engineecadastre Layer:401 RoleNone -msgid "f_SurfaceHa" -msgstr "Surface en ha" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Superficie" -msgstr "Superficie" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Type" -msgstr "Type" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Perimetre" -msgstr "Périmètre" - -#: engineecadastre Layer:577 RoleNone -msgid "f_Hochwasserintensität" -msgstr "" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Partie numéro" -msgstr "Partie numéro" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Loi" -msgstr "" - -#: engineecadastre Layer:493 RoleNone -msgid "f_Nom de l'écosystème" -msgstr "" - -#: engineecadastre Layer:515 RoleNone -msgid "f_Überschwemmungsgebietstyp" -msgstr "" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Fiche station" -msgstr "Fiche station" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Photo station" -msgstr "Photo station" - -#: engineecadastre Layer:568 RoleNone -msgid "f_Hazard" -msgstr "" - -#: engineecadastre Layer:396 RoleNone -msgid "f_Length" -msgstr "Longueur" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_y" -msgstr "Y" - -#: engineecadastre Layer:419 RoleNone -msgid "f_arbre_baum" -msgstr "Arbre" - -#: engineecadastre Layer:419 RoleNone -msgid "f_type" -msgstr "Type" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_x" -msgstr "X" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_name" -msgstr "Nom" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_description" -msgstr "Description" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_line" -msgstr "LABEL_LINE" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_section" -msgstr "LABEL_SECTION" - -#: engineecadastre Layer:678 RoleNone -msgid "f_station_biologique" -msgstr "STATION_BIOLOGIQUE" - -#: engineecadastre Layer:572 RoleNone -msgid "f_CODE_DC" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Exploitant" -msgstr "Exploitant" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Code" -msgstr "Code" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Publication du règlement grand-duca" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Nom(s) du/des capages(s) concerné(s)" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Classifica" -msgstr "" - -#: engineecadastre Layer:581 RoleNone -msgid "f_Qualité" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profiltyp" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Shape.len" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Cours d'eau" -msgstr "Cours d'eau" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profil en travers" -msgstr "" - -#: engineecadastre Layer:157 RoleNone -msgid "f_LDEN" -msgstr "dB" - -#: engineecadastre Layer:301 RoleNone -msgid "f_klar_vers" -msgstr "Type" - -#: engineecadastre Layer:607 RoleNone -msgid "f_LAWA" -msgstr "" - -#: engineecadastre Layer:749 RoleNone -msgid "f_sentier" -msgstr "" - -#: engineecadastre Layer:669 RoleNone -msgid "f_UHD2" -msgstr "Couverture ≥ 100 Mbit/s & < 1 Gbit/s" - -#: engineecadastre Layer:671 RoleNone -msgid "f_UHD1" -msgstr "Couverture 1 Gbit/s" - -#: engineecadastre Layer:601 RoleNone -msgid "f_Code masse d'eau" -msgstr "Code masse d'eau" - -#: engineecadastre Layer:627 RoleNone -msgid "f_Station" -msgstr "Station" - -#: engineecadastre Layer:724 RoleNone -msgid "f_Specifique" -msgstr "Remarque" - -#: engineecadastre Layer:724 RoleNone -msgid "f_NomRGD" -msgstr "Nom Zone" - -#: engineecadastre Layer:644 RoleNone -msgid "f_BETR_RAUM" -msgstr "" - -#: engineecadastre Layer:647 RoleNone -msgid "f_OBJECTTYPE" -msgstr "" - -#: engineecadastre Layer:648 RoleNone -msgid "f_code" -msgstr "Code" - -#: engineecadastre Layer:722 RoleNone -msgid "f_NomZone" -msgstr "Nom Zone" - -#: engineecadastre Layer:691 RoleNone -msgid "f_lot_numero" -msgstr "NUMERO" - -#: engineecadastre Layer:153 RoleNone -msgid "f_district" -msgstr "District" - -#: engineecadastre Layer:153 RoleNone -msgid "f_canton" -msgstr "Canton" - -#: engineecadastre Layer:153 RoleNone -msgid "f_commune_admin" -msgstr "Commune" - -#: engineecadastre Layer:389 RoleNone -msgid "f_essence" -msgstr "Essence" - -#: engineecadastre Layer:389 RoleNone -msgid "f_propriete" -msgstr "PROPRIETE" - -#: engineecadastre Layer:389 RoleNone -msgid "f_numero" -msgstr "Numéro" - -#: engineecadastre Layer:690 RoleNone -msgid "f_secteur" -msgstr "SECTEUR" - -#: engineecadastre Layer:690 RoleNone -msgid "f_region" -msgstr "REGION" - -#: engineecadastre Layer:167 RoleNone -msgid "f_CodeDesc" -msgstr "Type" - -#: engineecadastre Layer:255 RoleNone -msgid "f_LNGT" -msgstr "dB" - -#: engineecadastre Layer:355 RoleNone -msgid "f_commune_cad" -msgstr "Commune cadastrale" - -#: engineecadastre Layer:367 RoleNone -msgid "f_flurname" -msgstr "Lieu-dit" - -#: engineecadastre Layer:367 RoleNone -msgid "f_vendeur" -msgstr "Vendeur" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem_p" -msgstr "Remarque Bail" - -#: engineecadastre Layer:367 RoleNone -msgid "f_datum" -msgstr "Date d''achat" - -#: engineecadastre Layer:367 RoleNone -msgid "f_notar" -msgstr "Notaire" - -#: engineecadastre Layer:367 RoleNone -msgid "f_paechter" -msgstr "Exploitant" - -#: engineecadastre Layer:367 RoleNone -msgid "f_id" -msgstr "PF" - -#: engineecadastre Layer:367 RoleNone -msgid "f_jagdlos" -msgstr "Lot de chasse" - -#: engineecadastre Layer:367 RoleNone -msgid "f_sektion" -msgstr "Section" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fischereil" -msgstr "Lot de peche" - -#: engineecadastre Layer:367 RoleNone -msgid "f_num_flik" -msgstr "Num. FLIK" - -#: engineecadastre Layer:367 RoleNone -msgid "f_aff" -msgstr "Affectation" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fl_che" -msgstr "Surface cadastrale" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem" -msgstr "Remarque" - -#: engineecadastre Layer:367 RoleNone -msgid "f_gemeinde" -msgstr "Commune" - -#: engineecadastre Layer:367 RoleNone -msgid "f_kadasternu" -msgstr "Num. cadastral" - -#: engineecadastre Layer:378 RoleNone -msgid "f_voiture_emprises" -msgstr "Emprises Voiture" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection1" -msgstr "Connection Vélo" - -#: engineecadastre Layer:378 RoleNone -msgid "f_cout" -msgstr "Coût" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_emprises" -msgstr "Emprises Vélo" - -#: engineecadastre Layer:378 RoleNone -msgid "f_rue" -msgstr "rue" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection" -msgstr "Connection Voiture" - -#: engineecadastre Layer:378 RoleNone -msgid "f_station" -msgstr "Station" - -#: engineecadastre Layer:378 RoleNone -msgid "f_operateur" -msgstr "Opérateur" - -#: engineecadastre Layer:378 RoleNone -msgid "f_open" -msgstr "Disponible" - -#: engineecadastre Layer:368 RoleNone -msgid "f_systeme" -msgstr "Service" - -#: engineecadastre Layer:368 RoleNone -msgid "f_adress" -msgstr "Adresse" - -#: engineecadastre Layer:368 RoleNone -msgid "f_reservation" -msgstr "Réservation" - -#: engineecadastre Layer:368 RoleNone -msgid "f_bornes" -msgstr "Bornes" - -#: engineecadastre Layer:368 RoleNone -msgid "f_ouvert" -msgstr "Disponible" - -#: engineecadastre Layer:664 RoleNone -msgid "f_Projet de Règlement grand-ducal" -msgstr "" - -#: engineecadastre Layer:407 RoleNone -msgid "f_Categorie" -msgstr "Catégorie" - -#: engineecadastre Layer:670 RoleNone -msgid "f_UHD3" -msgstr "Couverture ≥ 30 Mbit/s & < 100 Mbit/s" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Projet" -msgstr "Projet" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Nr_Projet" -msgstr "N° Projet" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Priorite" -msgstr "Priorité" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Photo" -msgstr "Photo" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Code station" -msgstr "Code station" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Analyses" -msgstr "" - -#: engineecadastre Layer:645 RoleNone -msgid "f_CAPA" -msgstr "Capacité épuratoire" - -#: engineecadastre Layer:163 RoleNone -msgid "f_LEG_FR" -msgstr "Type" - -#: engineecadastre Layer:643 RoleNone -msgid "f_Syndicat" -msgstr "Syndicat" - -#: engineecadastre Layer:402 RoleNone -msgid "f_ExtNouv" -msgstr "Nouvelle Zone / extension ?" - -#: engineecadastre Layer:403 RoleNone -msgid "f_Reclassement en" -msgstr "Reclassement en" - -#: engineecadastre Layer:650 RoleNone -msgid "f_Code national" -msgstr "Code national" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Well_Depth" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Located" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Reservoir" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Op_State" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Water_Operator" -msgstr "" - -#: engineecadastre Layer:657 RoleNone -msgid "f_Etat général" -msgstr "" - -#: engineecadastre Layer:660 RoleNone -msgid "f_RISK_QUAL_STAT_2021" -msgstr "" - -#: engineecadastre Layer:661 RoleNone -msgid "f_RISK_QUANT_STAT_2021" -msgstr "" - -#: engineecadastre Layer:659 RoleNone -msgid "f_NAME" -msgstr "" - -#: engineecadastre Layer:662 RoleNone -msgid "f_Phytobenthos_Makrophyten" -msgstr "" - -#: engineecadastre Layer:481 RoleNone -msgid "f_commune" -msgstr "commune" - -#: engineecadastre Layer:481 RoleNone -msgid "f_site de la commune" -msgstr "" - -#: engineecadastre Layer:663 RoleNone -msgid "f_Ökologisches_Potenzial" -msgstr "" - -#: engineecadastre Layer:441 RoleNone -msgid "f_Cause mauvais etat" -msgstr "Cause mauvais état" - -#: engineecadastre Layer:441 RoleNone -msgid "f_QUAL_STAT" -msgstr "" - -#: engineecadastre Layer:583 RoleNone -msgid "f_Allgemeine_Physiko_Chemie_gesamt" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_ges" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_Code cours d'eau" -msgstr "Code cours d'eau" - -#: engineecadastre Layer:586 RoleNone -msgid "f_chem" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_LEGENDE" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_Typologie" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Fiche descriptive" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Hydromorphologie_gesamt" -msgstr "" - -#: engineecadastre Layer:593 RoleNone -msgid "f_hydro_09" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_EP_SP" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_BEW_GEF" -msgstr "" - -#: engineecadastre Layer:605 RoleNone -msgid "f_QUANT_STAT" -msgstr "" - -#: engineecadastre Layer:600 RoleNone -msgid "f_Makrozoobenthos" -msgstr "" - -#: engineecadastre Layer:614 RoleNone -msgid "f_oeko" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_CodeOWK" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_Chemischer_Zustand_2008_105_EG_mit_ubiquitaeren_Stoffen" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_wasserrahmenrichtlinie.GISADMIN.OWK_2014.Type" -msgstr "" - -#: engineecadastre Layer:622 RoleNone -msgid "f_Ökologischer_Zustand" -msgstr "" - -#: engineecadastre Layer:639 RoleNone -msgid "f_Maß_geplan" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_Cause mauvais état" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_QUAL_STAT_2015" -msgstr "" - -#: engineecadastre Layer:646 RoleNone -msgid "f_Fische" -msgstr "" - -#: engineecadastre Layer:582 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.TypePoint" -msgstr "" - -#: engineecadastre Layer:592 RoleNone -msgid "f_QUANT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:591 RoleNone -msgid "f_TOT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:626 RoleNone -msgid "f_lot" -msgstr "" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_la" -msgstr "Essence (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_de" -msgstr "Nom (all)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_la" -msgstr "Nom (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_fr" -msgstr "Essence (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_abreviation" -msgstr "Abbréviation" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_fr" -msgstr "Nom (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_de" -msgstr "Essence (all)" - -#: engineecadastre Layer:680 RoleNone -msgid "f_No" -msgstr "Numéro" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Adresse" -msgstr "Adresse" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Niveau d'assainissement" -msgstr "Niveau d'assainissement" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Contamination résiduelle" -msgstr "Contamination résiduelle" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Ancien No" -msgstr "Ancien numéro" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Description" -msgstr "Description" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Nom du site" -msgstr "Nom du site" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Année de saisie" -msgstr "Année de saisie" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Commentaire" -msgstr "Commentaire" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Identifiant surface" -msgstr "Identifiant de surface" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Méthode" -msgstr "Méthode" - -#: engineecadastre Layer:726 RoleNone -msgid "f_code_dossier" -msgstr "Code dossier" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_fin" -msgstr "Date fin" - -#: engineecadastre Layer:726 RoleNone -msgid "f_annexe" -msgstr "Annexe" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_debut" -msgstr "Date début" - -#: engineecadastre Layer:726 RoleNone -msgid "f_etat_libelle" -msgstr "ETat" - -#: engineecadastre Layer:726 RoleNone -msgid "f_aide" -msgstr "Aide" diff --git a/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-tooltips.po b/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-tooltips.po deleted file mode 100644 index cf50332ee..000000000 --- a/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-tooltips.po +++ /dev/null @@ -1,891 +0,0 @@ -# -# Translators: -# Andrea Donno , 2015-2016 -# Francis Kaell , 2015 -# Jeff Konnen , 2015 -# Jeff Konnen , 2015-2016 -# Patrick Weber , 2015 -# Patrick Weber , 2015 -msgid "" -msgstr "" -"Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:16+0000\n" -"Last-Translator: Jeff Konnen \n" -"Language-Team: Luxembourgish (http://www.transifex.com/geoportail/geoportailv3-lu/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Profil" -msgstr "" - -#: engineecadastre Layer:656 RoleNone -msgid "f_Nom de la station" -msgstr "" - -#: engineecadastre Layer:682 RoleNone -msgid "f_localisation" -msgstr "Standuert" - -#: engineecadastre Layer:682 RoleNone -msgid "f_parkup" -msgstr "Etagenparking" - -#: engineecadastre Layer:682 RoleNone -msgid "f_capacity_inside" -msgstr "Kapazitéit" - -#: engineecadastre Layer:682 RoleNone -msgid "f_name" -msgstr "Numm" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Tronçon" -msgstr "Sektioun" - -#: engineecadastre Layer:713 RoleNone -msgid "f_Numéro" -msgstr "ID Site" - -#: engineecadastre Layer:713 RoleNone -msgid "f_YEAR" -msgstr "" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITENAME" -msgstr "Numm" - -#: engineecadastre Layer:533 RoleNone -msgid "f_SITECODE" -msgstr "Code" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Nom" -msgstr "Numm" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Name" -msgstr "Numm" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Fr" -msgstr "Franséisch Legende vun der Pufferzone: \"PZ\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Leg_Gr" -msgstr "Däitsch Legende vun der Pufferzone: \"PZ\"" - -#: engineecadastre Layer:365 RoleNone -msgid "f_Buffer_Id" -msgstr "Eendeitege Code vun der Pufferzone" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKGemeinde" -msgstr "Gemengennumm während dem Kartéierungsjoer" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Code" -msgstr "Code vum éischte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_Shape_ares" -msgstr "Fläech an Ar (100m²) opgeronnt op de Meter-Carré" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEOCODE" -msgstr "Eendeitege Code vum Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Nom" -msgstr "Franséischen Numm vum drëtte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Code" -msgstr "Code vum zweete Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BKJahr" -msgstr "Kartéierungsjoer" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Nom" -msgstr "Franséischen Numm vum zweete Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Name" -msgstr "Däitschen Numm vum éischte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Code" -msgstr "Code vum drëtte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG3" -msgstr "Bewäertung vum drëtte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG2" -msgstr "Bewäertung vum zweete Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BEWERTUNG1" -msgstr "Bewäertung vum éischte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP3_Name" -msgstr "Däitschen Numm vum drëtte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP1_Nom" -msgstr "Franséischen Numm vum éischte Biotop" - -#: engineecadastre Layer:364 RoleNone -msgid "f_GEMEINDE" -msgstr "Aktuellen Numm vun der Gemeng, di de gréissten Deel vum Biotop ophëllt" - -#: engineecadastre Layer:364 RoleNone -msgid "f_BTYP2_Name" -msgstr "Däitschen Numm vum zweete Biotop" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Legende" -msgstr "Typ vun der Zone" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Kategorie" -msgstr "Beschreiwung" - -#: engineecadastre Layer:406 RoleNone -msgid "f_Site" -msgstr "Site" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_c" -msgstr "Interdiction Zone C" - -#: engineecadastre Layer:430 RoleNone -msgid "f_nom" -msgstr "name" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_a" -msgstr "Interdiction Zone A" - -#: engineecadastre Layer:430 RoleNone -msgid "f_date_classement" -msgstr "DATUM_SORTIERUNG" - -#: engineecadastre Layer:430 RoleNone -msgid "f_interdiction_zone_b" -msgstr "Interdiction Zone B" - -#: engineecadastre Layer:430 RoleNone -msgid "f_commentaire" -msgstr "Kommentar" - -#: engineecadastre Layer:430 RoleNone -msgid "f_sous_zone" -msgstr "Ënner-zon" - -#: engineecadastre Layer:430 RoleNone -msgid "f_link" -msgstr "Link" - -#: engineecadastre Layer:430 RoleNone -msgid "f_code_national" -msgstr "CODE_NATIONAL" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Nom_Site" -msgstr "Numm vum Site" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Commune" -msgstr "Gemeng" - -#: engineecadastre Layer:401 RoleNone -msgid "f_Remarque" -msgstr "Remarque" - -#: engineecadastre Layer:401 RoleNone -msgid "f_FID" -msgstr "FID" - -#: engineecadastre Layer:401 RoleNone -msgid "f_SurfaceHa" -msgstr "Surface an ha" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Superficie" -msgstr "Surface" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Type" -msgstr "Typ" - -#: engineecadastre Layer:409 RoleNone -msgid "f_Perimetre" -msgstr "Perimeter" - -#: engineecadastre Layer:577 RoleNone -msgid "f_Hochwasserintensität" -msgstr "" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Partie numéro" -msgstr "Partial number" - -#: engineecadastre Layer:490 RoleNone -msgid "f_Loi" -msgstr "" - -#: engineecadastre Layer:493 RoleNone -msgid "f_Nom de l'écosystème" -msgstr "" - -#: engineecadastre Layer:515 RoleNone -msgid "f_Überschwemmungsgebietstyp" -msgstr "" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Fiche station" -msgstr "Fiche" - -#: engineecadastre Layer:563 RoleNone -msgid "f_Photo station" -msgstr "Bild" - -#: engineecadastre Layer:568 RoleNone -msgid "f_Hazard" -msgstr "" - -#: engineecadastre Layer:396 RoleNone -msgid "f_Length" -msgstr "Längt" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_y" -msgstr "Y" - -#: engineecadastre Layer:419 RoleNone -msgid "f_arbre_baum" -msgstr "Bam" - -#: engineecadastre Layer:419 RoleNone -msgid "f_type" -msgstr "Typ" - -#: engineecadastre Layer:419 RoleNone -msgid "f_coord_x" -msgstr "X" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_name" -msgstr "Numm" - -#: engineecadastre Layer:685 RoleNone -msgid "f_kml_description" -msgstr "Beschreiwung" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_line" -msgstr "LABEL_LINE" - -#: engineecadastre Layer:444 RoleNone -msgid "f_label_section" -msgstr "LABEL_SECTION" - -#: engineecadastre Layer:678 RoleNone -msgid "f_station_biologique" -msgstr "Biologesch Statioun" - -#: engineecadastre Layer:572 RoleNone -msgid "f_CODE_DC" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Exploitant" -msgstr "Bedreiwer" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Code" -msgstr "Code" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Publication du règlement grand-duca" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Nom(s) du/des capages(s) concerné(s)" -msgstr "" - -#: engineecadastre Layer:573 RoleNone -msgid "f_Classifica" -msgstr "" - -#: engineecadastre Layer:581 RoleNone -msgid "f_Qualité" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profiltyp" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Shape.len" -msgstr "" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Cours d'eau" -msgstr "Waasserleef" - -#: engineecadastre Layer:584 RoleNone -msgid "f_Profil en travers" -msgstr "" - -#: engineecadastre Layer:157 RoleNone -msgid "f_LDEN" -msgstr "dB" - -#: engineecadastre Layer:301 RoleNone -msgid "f_klar_vers" -msgstr "Typ" - -#: engineecadastre Layer:607 RoleNone -msgid "f_LAWA" -msgstr "" - -#: engineecadastre Layer:749 RoleNone -msgid "f_sentier" -msgstr "" - -#: engineecadastre Layer:669 RoleNone -msgid "f_UHD2" -msgstr "Ofdeckung ≥ 100 Mbit/s & < 1 Gbit/s" - -#: engineecadastre Layer:671 RoleNone -msgid "f_UHD1" -msgstr "Ofdeckung 1 Gbit/s" - -#: engineecadastre Layer:601 RoleNone -msgid "f_Code masse d'eau" -msgstr "Code water body" - -#: engineecadastre Layer:627 RoleNone -msgid "f_Station" -msgstr "Statioun" - -#: engineecadastre Layer:724 RoleNone -msgid "f_Specifique" -msgstr "Remarque" - -#: engineecadastre Layer:724 RoleNone -msgid "f_NomRGD" -msgstr "Numm vun der Zone" - -#: engineecadastre Layer:644 RoleNone -msgid "f_BETR_RAUM" -msgstr "" - -#: engineecadastre Layer:647 RoleNone -msgid "f_OBJECTTYPE" -msgstr "" - -#: engineecadastre Layer:648 RoleNone -msgid "f_code" -msgstr "Code" - -#: engineecadastre Layer:722 RoleNone -msgid "f_NomZone" -msgstr "Zonen-Numm" - -#: engineecadastre Layer:691 RoleNone -msgid "f_lot_numero" -msgstr "NUMMER" - -#: engineecadastre Layer:153 RoleNone -msgid "f_district" -msgstr "Distrikt" - -#: engineecadastre Layer:153 RoleNone -msgid "f_canton" -msgstr "Kanton" - -#: engineecadastre Layer:153 RoleNone -msgid "f_commune_admin" -msgstr "Gemeng" - -#: engineecadastre Layer:389 RoleNone -msgid "f_essence" -msgstr "Art" - -#: engineecadastre Layer:389 RoleNone -msgid "f_propriete" -msgstr "BESITZ" - -#: engineecadastre Layer:389 RoleNone -msgid "f_numero" -msgstr "Nummer" - -#: engineecadastre Layer:690 RoleNone -msgid "f_secteur" -msgstr "SEKTOR" - -#: engineecadastre Layer:690 RoleNone -msgid "f_region" -msgstr "REGION" - -#: engineecadastre Layer:167 RoleNone -msgid "f_CodeDesc" -msgstr "Typ" - -#: engineecadastre Layer:255 RoleNone -msgid "f_LNGT" -msgstr "dB" - -#: engineecadastre Layer:355 RoleNone -msgid "f_commune_cad" -msgstr "Kadastergemeng" - -#: engineecadastre Layer:367 RoleNone -msgid "f_flurname" -msgstr "Lieu-dit" - -#: engineecadastre Layer:367 RoleNone -msgid "f_vendeur" -msgstr "Vendeur" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem_p" -msgstr "Remarque Bail" - -#: engineecadastre Layer:367 RoleNone -msgid "f_datum" -msgstr "Date d''achat" - -#: engineecadastre Layer:367 RoleNone -msgid "f_notar" -msgstr "Notaire" - -#: engineecadastre Layer:367 RoleNone -msgid "f_paechter" -msgstr "Operator" - -#: engineecadastre Layer:367 RoleNone -msgid "f_id" -msgstr "PF" - -#: engineecadastre Layer:367 RoleNone -msgid "f_jagdlos" -msgstr "Lot de chasse" - -#: engineecadastre Layer:367 RoleNone -msgid "f_sektion" -msgstr "Section" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fischereil" -msgstr "Lot de peche" - -#: engineecadastre Layer:367 RoleNone -msgid "f_num_flik" -msgstr "Num. FLIK" - -#: engineecadastre Layer:367 RoleNone -msgid "f_aff" -msgstr "Affectation" - -#: engineecadastre Layer:367 RoleNone -msgid "f_fl_che" -msgstr "Surface cadastrale" - -#: engineecadastre Layer:367 RoleNone -msgid "f_rem" -msgstr "Remarque" - -#: engineecadastre Layer:367 RoleNone -msgid "f_gemeinde" -msgstr "Gemeng" - -#: engineecadastre Layer:367 RoleNone -msgid "f_kadasternu" -msgstr "Num. cadastral" - -#: engineecadastre Layer:378 RoleNone -msgid "f_voiture_emprises" -msgstr "Uschlëss Auto" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection1" -msgstr "Ubannung Vëlo" - -#: engineecadastre Layer:378 RoleNone -msgid "f_cout" -msgstr "Präis" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_emprises" -msgstr "Uschlëss Vëlo" - -#: engineecadastre Layer:378 RoleNone -msgid "f_rue" -msgstr "Strooss" - -#: engineecadastre Layer:378 RoleNone -msgid "f_velo_connection" -msgstr "Ubannung Auto" - -#: engineecadastre Layer:378 RoleNone -msgid "f_station" -msgstr "Statioun" - -#: engineecadastre Layer:378 RoleNone -msgid "f_operateur" -msgstr "Bedreiwer" - -#: engineecadastre Layer:378 RoleNone -msgid "f_open" -msgstr "Erreechbar" - -#: engineecadastre Layer:368 RoleNone -msgid "f_systeme" -msgstr "Service" - -#: engineecadastre Layer:368 RoleNone -msgid "f_adress" -msgstr "Adress" - -#: engineecadastre Layer:368 RoleNone -msgid "f_reservation" -msgstr "Reservatioun" - -#: engineecadastre Layer:368 RoleNone -msgid "f_bornes" -msgstr "Bornen" - -#: engineecadastre Layer:368 RoleNone -msgid "f_ouvert" -msgstr "Erreechbar" - -#: engineecadastre Layer:664 RoleNone -msgid "f_Projet de Règlement grand-ducal" -msgstr "" - -#: engineecadastre Layer:407 RoleNone -msgid "f_Categorie" -msgstr "Kategorie" - -#: engineecadastre Layer:670 RoleNone -msgid "f_UHD3" -msgstr "Ofdeckung ≥ 30 Mbit/s & < 100 Mbit/s\t" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Projet" -msgstr "Projet" - -#: engineecadastre Layer:410 RoleNone -msgid "f_Nr_Projet" -msgstr "Projets-Nr." - -#: engineecadastre Layer:410 RoleNone -msgid "f_Priorite" -msgstr "Prioritéit" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Photo" -msgstr "Photo" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Code station" -msgstr "Station code" - -#: engineecadastre Layer:645 RoleNone -msgid "f_Analyses" -msgstr "" - -#: engineecadastre Layer:645 RoleNone -msgid "f_CAPA" -msgstr "Ausbaugréisst" - -#: engineecadastre Layer:163 RoleNone -msgid "f_LEG_FR" -msgstr "Typ" - -#: engineecadastre Layer:643 RoleNone -msgid "f_Syndicat" -msgstr "Syndicate" - -#: engineecadastre Layer:402 RoleNone -msgid "f_ExtNouv" -msgstr "Nei Zone / Erweiderung ?" - -#: engineecadastre Layer:403 RoleNone -msgid "f_Reclassement en" -msgstr "Emklasséierung an" - -#: engineecadastre Layer:650 RoleNone -msgid "f_Code national" -msgstr "National code" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Well_Depth" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Located" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Reservoir" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Op_State" -msgstr "" - -#: engineecadastre Layer:650 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Water_Operator" -msgstr "" - -#: engineecadastre Layer:657 RoleNone -msgid "f_Etat général" -msgstr "" - -#: engineecadastre Layer:660 RoleNone -msgid "f_RISK_QUAL_STAT_2021" -msgstr "" - -#: engineecadastre Layer:661 RoleNone -msgid "f_RISK_QUANT_STAT_2021" -msgstr "" - -#: engineecadastre Layer:659 RoleNone -msgid "f_NAME" -msgstr "" - -#: engineecadastre Layer:662 RoleNone -msgid "f_Phytobenthos_Makrophyten" -msgstr "" - -#: engineecadastre Layer:481 RoleNone -msgid "f_commune" -msgstr "Municipality" - -#: engineecadastre Layer:481 RoleNone -msgid "f_site de la commune" -msgstr "" - -#: engineecadastre Layer:663 RoleNone -msgid "f_Ökologisches_Potenzial" -msgstr "" - -#: engineecadastre Layer:441 RoleNone -msgid "f_Cause mauvais etat" -msgstr "Raison bad status" - -#: engineecadastre Layer:441 RoleNone -msgid "f_QUAL_STAT" -msgstr "" - -#: engineecadastre Layer:583 RoleNone -msgid "f_Allgemeine_Physiko_Chemie_gesamt" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_ges" -msgstr "" - -#: engineecadastre Layer:585 RoleNone -msgid "f_Code cours d'eau" -msgstr "Code watercourse" - -#: engineecadastre Layer:586 RoleNone -msgid "f_chem" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_LEGENDE" -msgstr "" - -#: engineecadastre Layer:588 RoleNone -msgid "f_Typologie" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Fiche descriptive" -msgstr "" - -#: engineecadastre Layer:590 RoleNone -msgid "f_Hydromorphologie_gesamt" -msgstr "" - -#: engineecadastre Layer:593 RoleNone -msgid "f_hydro_09" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_EP_SP" -msgstr "" - -#: engineecadastre Layer:602 RoleNone -msgid "f_BEW_GEF" -msgstr "" - -#: engineecadastre Layer:605 RoleNone -msgid "f_QUANT_STAT" -msgstr "" - -#: engineecadastre Layer:600 RoleNone -msgid "f_Makrozoobenthos" -msgstr "" - -#: engineecadastre Layer:614 RoleNone -msgid "f_oeko" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_CodeOWK" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_Chemischer_Zustand_2008_105_EG_mit_ubiquitaeren_Stoffen" -msgstr "" - -#: engineecadastre Layer:621 RoleNone -msgid "f_wasserrahmenrichtlinie.GISADMIN.OWK_2014.Type" -msgstr "" - -#: engineecadastre Layer:622 RoleNone -msgid "f_Ökologischer_Zustand" -msgstr "" - -#: engineecadastre Layer:639 RoleNone -msgid "f_Maß_geplan" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_Cause mauvais état" -msgstr "" - -#: engineecadastre Layer:632 RoleNone -msgid "f_QUAL_STAT_2015" -msgstr "" - -#: engineecadastre Layer:646 RoleNone -msgid "f_Fische" -msgstr "" - -#: engineecadastre Layer:582 RoleNone -msgid "f_grundwasser.GISADMIN.OuvragesWISKI.TypePoint" -msgstr "" - -#: engineecadastre Layer:592 RoleNone -msgid "f_QUANT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:591 RoleNone -msgid "f_TOT_STAT_2015" -msgstr "" - -#: engineecadastre Layer:626 RoleNone -msgid "f_lot" -msgstr "" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_la" -msgstr "Art (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_de" -msgstr "Numm (de)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_la" -msgstr "Numm (lat)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_fr" -msgstr "Art (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_abreviation" -msgstr "Ofkierzung" - -#: engineecadastre Layer:524 RoleNone -msgid "f_nom_fr" -msgstr "Numm (fr)" - -#: engineecadastre Layer:524 RoleNone -msgid "f_essence_de" -msgstr "Art (de)" - -#: engineecadastre Layer:680 RoleNone -msgid "f_No" -msgstr "No" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Adresse" -msgstr "Adress" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Niveau d'assainissement" -msgstr "Niveau d'assainissement" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Contamination résiduelle" -msgstr "Contamination résiduelle" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Ancien No" -msgstr "Ancien No" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Description" -msgstr "Description" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Nom du site" -msgstr "Nom du site" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Année de saisie" -msgstr "Année de saisie" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Commentaire" -msgstr "Commentaire" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Identifiant surface" -msgstr "Identifiant surface" - -#: engineecadastre Layer:680 RoleNone -msgid "f_Méthode" -msgstr "Méthode" - -#: engineecadastre Layer:726 RoleNone -msgid "f_code_dossier" -msgstr "Code vum Dossier" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_fin" -msgstr "End-Datum" - -#: engineecadastre Layer:726 RoleNone -msgid "f_annexe" -msgstr "Annex" - -#: engineecadastre Layer:726 RoleNone -msgid "f_date_debut" -msgstr "Start-Datum" - -#: engineecadastre Layer:726 RoleNone -msgid "f_etat_libelle" -msgstr "Status" - -#: engineecadastre Layer:726 RoleNone -msgid "f_aide" -msgstr "Hëllef" diff --git a/geoportailv3/models.py b/geoportailv3/models.py deleted file mode 100644 index 707fb8562..000000000 --- a/geoportailv3/models.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging -import sqlahelper - -from pyramid.i18n import TranslationStringFactory - -from c2cgeoportal.models import * # noqa -from c2cgeoportal.models import LayerInternalWMS, LayerExternalWMS -from c2cgeoportal.models import DBSession # noqa -from pyramid.security import Allow, ALL_PERMISSIONS, DENY_ALL -from formalchemy import Column -from sqlalchemy import ForeignKey -from sqlalchemy.types import Integer, Boolean, Unicode, String, DateTime -from c2cgeoportal.models import AUTHORIZED_ROLE, _schema - -_ = TranslationStringFactory("geoportailv3-server") -log = logging.getLogger(__name__) -Base = sqlahelper.get_base() -Sessions = {} - -LayerInternalWMS.__acl__ = [DENY_ALL] -LayerExternalWMS.__acl__ = [DENY_ALL] - - -class LuxDownloadUrl(Base): - __label__ = _(u"Base url for download") - __tablename__ = "lux_download_url" - __table_args__ = {"schema": _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - id = Column( - Integer, - primary_key=True - ) - url = Column(Unicode, label=_(u"Url")) - protected = Column(Boolean, label=_(u"Only connected user can download")) - - -class LuxMeasurementLoginCommune(Base): - __label__ = _(u"Allowed surveying for a user") - __tablename__ = "lux_measurement_login_commune" - __table_args__ = {"schema": _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - - login = Column(String, primary_key=True) - num_commune = Column(String, primary_key=True) - - -class LuxMeasurementDirectory(Base): - __label__ = _(u"Surveying file config") - __tablename__ = "lux_measurement_directory" - __table_args__ = {"schema": _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - id = Column(Integer, primary_key=True) - name = Column(String) - path = Column(String) - town_code = Column(Integer) - - -class LuxLayerInternalWMS(LayerInternalWMS): - __label__ = _(u"Internal WMS layer") - __plural__ = _(u"Internal WMS layers") - __tablename__ = "lux_layer_internal_wms" - __table_args__ = {"schema": _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - __mapper_args__ = {"polymorphic_identity": "lu_int_wms"} - - id = Column( - Integer, - ForeignKey(_schema + ".layer_internal_wms.id"), - primary_key=True - ) - url = Column(Unicode, label=_(u"Url")) - layers = Column(Unicode, label=_(u"Layers")) - is_poi = Column(Boolean, label=_(u"Is a POI")) - collection_id = Column(Integer, label=_(u"Collection ID")) - rest_url = Column(Unicode, label=_(u"REST url")) - - -class LuxLayerExternalWMS(LayerExternalWMS): - __label__ = _(u"External WMS layer") - __plural__ = _(u"External WMS layers") - __tablename__ = "lux_layer_external_wms" - __table_args__ = {"schema": _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - __mapper_args__ = {"polymorphic_identity": "lu_ext_wms"} - - id = Column( - Integer, - ForeignKey(_schema + ".layer_external_wms.id"), - primary_key=True - ) - category_id = Column(Integer, label=_(u'Category ID')) - - -class LuxGetfeatureDefinition(Base): - __tablename__ = 'lux_getfeature_definition' - __table_args__ = {'schema': _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - id = Column( - Integer, - primary_key=True - ) - query = Column(Unicode, label=_(u'Table name')) - rest_url = Column(Unicode, label=_(u'URL Rest')) - engine_gfi = Column('engine', Unicode, label=_(u'Engine')) - layer = Column(Unicode, label=_(u'Layer')) - template = Column(Unicode, label=_(u'Template file name')) - remote_template = Column(Boolean, - label=_(u"Is the template local or remote")) - additional_info_function = Column(Unicode, label=_(u'Python function')) - role = Column(Integer, label=_(u'Role')) - attributes_to_remove = Column(Unicode, label=_(u'Attributes to remove')) - poi_id_collection = Column(Integer, label=_(u'Id of the poi collection')) - geometry_column = Column(Unicode, label=_(u'Geometry column name')) - columns_order = Column(Unicode, label=_(u'Order of columns')) - id_column = Column(Unicode, label=_(u'ID column name')) - has_profile = Column(Boolean, - label=_(u"Is a profile displayed in template ?")) - - -class LuxPrintJob(Base): - __tablename__ = 'lux_print_job' - __table_args__ = {'schema': _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - id = Column(String, primary_key=True) - spec = Column(Unicode) - creation = Column(DateTime) - print_url = Column(Unicode) - is_error = Column(Boolean, default=False) - - -class LuxPrintServers(Base): - __tablename__ = 'lux_print_servers' - __table_args__ = {'schema': _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - id = Column(String, primary_key=True) - url = Column(Unicode) - creation = Column(DateTime) - - -class LuxPredefinedWms(Base): - __tablename__ = 'lux_predefined_wms' - __table_args__ = {'schema': _schema} - __acl__ = [ - (Allow, AUTHORIZED_ROLE, ALL_PERMISSIONS), - ] - id = Column(String, primary_key=True) - url = Column(Unicode, unique=True, label=_(u"Url")) - label = Column(Unicode) diff --git a/geoportailv3/resources.py b/geoportailv3/resources.py deleted file mode 100644 index 8334ec464..000000000 --- a/geoportailv3/resources.py +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- - - -class Root(object): - def __init__(self, request): - self.request = request diff --git a/geoportailv3/scripts/__init__.py b/geoportailv3/scripts/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/geoportailv3/static/js/appmodule.js b/geoportailv3/static/js/appmodule.js deleted file mode 100644 index 87bce5636..000000000 --- a/geoportailv3/static/js/appmodule.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @fileoverview This file provides the "app" namespace, which is the - * application's main namespace. And it defines the application's Angular - * module. - */ -goog.provide('app'); - -goog.require('goog.dom.classlist'); -goog.require('ngeo'); -goog.require('ngeo.misc.sortableComponent'); -goog.require('ngeo.statemanager.module'); -goog.require('ngeo.search.module'); -goog.require('ol.has'); - -goog.require('ngeo.olcs.olcsModule'); -goog.require('ngeo.search.module'); - - -/** - * @type {!angular.Module} - */ -app.module = angular.module('app', [ - ngeo.module.name, 'gettext', - ngeo.olcs.olcsModule.name, - ngeo.search.module.name -]).run(function() { - if (!ol.has.TOUCH) { - goog.dom.classlist.add(document.body, 'no-touch'); - } -}); - - -// Use ngeo's mockLocationProvider to work around a problem in Angular -// and avoid problems when using both ngeoLocation and ng-include in -// the application. -app.module.config(ngeo.statemanager.Location.MockProvider); - - -// activate pre-assigning bindings -// See https://toddmotto.com/angular-1-6-is-here#component-and-oninit -app.module.config(['$compileProvider', function($compileProvider) { - $compileProvider.preAssignBindingsEnabled(true); -}]); - - -// Strict Contextual Escaping (SCE) configuration -app.module.config(['$sceDelegateProvider', function($sceDelegateProvider) { - $sceDelegateProvider.resourceUrlWhitelist([ - // Allow same origin resource loads. - 'self', - // trust data from shop.geoportail.lu - 'http*://shop.geoportail.lu/Portail/inspire/webservices/**' - ]); -}]); - - -/** - * @param {string} name The string to sanitize. - * @return {string} The sanitized string. - */ -app.sanitizeFilename = function(name) { - name = name.replace(/\s+/g, '_'); // Replace white space with _. - return name.replace(/[^a-z0-9\-\_]/gi, ''); // Strip any special character. -}; - -app.module.config(['$httpProvider', function($httpProvider) { - $httpProvider.interceptors.push('noCacheInterceptor'); -}]).factory('noCacheInterceptor', function() { - return { - request: function(config) { - if (config.method == 'GET' && config.url.indexOf('.html') === -1) { - var separator = config.url.indexOf('?') === -1 ? '?' : '&'; - config.url = config.url + separator + 'noCache=' + new Date().getTime(); - } - return config; - }}; -}); - -/** - * The OpenLayers extent used in 3D to restrict the area rendered by Cesium. - * @type {ol.Extent} - */ -app.olcsExtent = ol.proj.transformExtent([5.31, 49.38, 6.64, 50.21], 'EPSG:4326', 'EPSG:3857'); diff --git a/geoportailv3/static/js/askredirect/askredirect.js b/geoportailv3/static/js/askredirect/askredirect.js deleted file mode 100644 index 950f82afa..000000000 --- a/geoportailv3/static/js/askredirect/askredirect.js +++ /dev/null @@ -1,68 +0,0 @@ -goog.provide('app.AskredirectController'); -goog.provide('app.askredirectDirective'); - -goog.require('app'); -goog.require('ngeo.message.modalComponent'); -goog.require('ngeo.statemanager.module'); - -/** - * @param {string} appAskredirectTemplateUrl URL to directive template. - * @return {angular.Directive} The Directive Definition Object. - * @ngInject - */ -app.askredirectDirective = function(appAskredirectTemplateUrl) { - return { - restrict: 'E', - scope: { - 'showRedirect': '=appAskredirectShow' - }, - controller: 'AppAskredirectController', - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appAskredirectTemplateUrl - }; -}; -app.module.directive('appAskredirect', app.askredirectDirective); - - -/** - * @constructor - * @param {angular.$window} $window Window. - * @param {ngeo.statemanager.Location} ngeoLocation ngeo location service. - * @export - * @ngInject - */ -app.AskredirectController = function($window, ngeoLocation) { - /** - * @type {angular.$window} - * @private - */ - this.$window_ = $window; - - /** - * @type {ngeo.statemanager.Location} - * @private - */ - this.ngeoLocation_ = ngeoLocation; -}; - - -/** - * Redirect the map to the https version. - * @export - */ -app.AskredirectController.prototype.redirect = function() { - if (this.$window_.location.protocol !== 'https:') { - var separator = '?'; - if (this.$window_.location.href.indexOf('?') >= 0) { - separator = '&'; - } - this.$window_.location.href = - this.$window_.location.href.replace(/http:/g, 'https:') + - separator + 'tracking=true'; - } -}; - - -app.module.controller('AppAskredirectController', - app.AskredirectController); diff --git a/geoportailv3/static/js/authentication/authenticationdirective.js b/geoportailv3/static/js/authentication/authenticationdirective.js deleted file mode 100644 index d7b2481c7..000000000 --- a/geoportailv3/static/js/authentication/authenticationdirective.js +++ /dev/null @@ -1,116 +0,0 @@ -goog.provide('app.AuthenticationController'); -goog.provide('app.authenticationDirective'); - -goog.require('app'); -goog.require('app.UserManager'); - - -/** - * @param {string} appAuthenticationTemplateUrl URL to directive template. - * @return {angular.Directive} The Directive Definition Object. - * @ngInject - */ -app.authenticationDirective = function(appAuthenticationTemplateUrl) { - return { - restrict: 'E', - scope: { - 'lang': '=appAuthenticationLang', - 'userOpen': '=appAuthenticationUseropen' - }, - controller: 'AppAuthenticationController', - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appAuthenticationTemplateUrl - }; -}; - -app.module.directive('appAuthentication', app.authenticationDirective); - - -/** - * @param {app.UserManager} appUserManager The usermanager service. - * @constructor - * @export - * @ngInject - */ -app.AuthenticationController = function(appUserManager) { - - /** - * @type {app.UserManager} - * @private - */ - this.appUserManager_ = appUserManager; - - /** - * @type {string} - * @export - */ - this.username = ''; - - /** - * @type {string} - * @export - */ - this.password = ''; - -}; - - -/** - * @export - */ -app.AuthenticationController.prototype.authenticate = function() { - this.appUserManager_.authenticate(this.username, this.password).then( - goog.bind(function(response) { - if (response.status == 200) { - this['userOpen'] = false; - } - }, this)); -}; - - -/** - * @export - */ -app.AuthenticationController.prototype.logout = function() { - this.appUserManager_.logout(); -}; - - -/** - * @export - */ -app.AuthenticationController.prototype.getUserInfo = function() { - this.appUserManager_.getUserInfo(); -}; - - -/** - * @return {boolean} True if is authenticated. - * @export - */ -app.AuthenticationController.prototype.isAuthenticated = function() { - return this.appUserManager_.isAuthenticated(); -}; - - -/** - * @return {string|undefined} The email. - * @export - */ -app.AuthenticationController.prototype.getEmail = function() { - return this.appUserManager_.getEmail(); -}; - - -/** - * @return {string|undefined} The username. - * @export - */ -app.AuthenticationController.prototype.getUsername = function() { - return this.appUserManager_.getUsername(); -}; - - -app.module.controller('AppAuthenticationController', - app.AuthenticationController); diff --git a/geoportailv3/static/js/draw/routecontrol.js b/geoportailv3/static/js/draw/routecontrol.js deleted file mode 100644 index 25ec0b2e7..000000000 --- a/geoportailv3/static/js/draw/routecontrol.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @fileoverview This file defines the geolocation control. - * - */ -goog.provide('app.RouteControl'); - -goog.require('goog.dom'); -goog.require('goog.dom.TagName'); -goog.require('goog.dom.classlist'); -goog.require('ol.Object'); -goog.require('ol.control.Control'); -goog.require('ol.events'); - - -/** - * @typedef {{className: (string|undefined), - * label: (string|undefined), - * tipLabel: (string|undefined), - * target: (Element|undefined), - * drawLineInteraction: app.interaction.DrawRoute - * }} - */ -app.RouteControlOptions; - - -/** - * @constructor - * @extends {ol.control.Control} - * @param {app.RouteControlOptions} options Location Control - * options. - * @ngInject - */ -app.RouteControl = function(options) { - var className = goog.isDef(options.className) ? options.className : - 'route-button'; - /** - * @type {angular.$window} - * @private - */ - this.window_ = options.window; - - /** - * @type {app.interaction.DrawRoute} - * @private - */ - this.drawLineInteraction_ = options.drawLineInteraction; - - var label = goog.isDef(options.label) ? options.label : 'L'; - var tipLabel = goog.isDef(options.tipLabel) ? - options.tipLabel : 'Route'; - var button = goog.dom.createDom(goog.dom.TagName.BUTTON, { - 'type': 'button', - 'title': tipLabel - }, label); - - var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' + - ol.css.CLASS_CONTROL + ' ' + - (this.drawLineInteraction_.getMapMatching() ? 'route-on' : ''); - - /** - * @type {!Element} - */ - this.element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, button); - - ol.events.listen(button, ol.events.EventType.CLICK, - this.handleClick_, this); - - ol.events.listen(button, ol.events.EventType.MOUSEOUT, function() { - this.blur(); - }); - - goog.base(this, { - element: this.element, - target: options.target - }); - -}; -goog.inherits(app.RouteControl, ol.control.Control); - - -/** - * @param {ol.MapBrowserEvent} event The event to handle - * @private - */ -app.RouteControl.prototype.handleClick_ = function(event) { - event.preventDefault(); - this.drawLineInteraction_.toggleMapMatching(); - this.element.classList.toggle('route-on'); -}; diff --git a/geoportailv3/static/js/draw/selectedfeaturesservice.js b/geoportailv3/static/js/draw/selectedfeaturesservice.js deleted file mode 100644 index 9157fef6f..000000000 --- a/geoportailv3/static/js/draw/selectedfeaturesservice.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @fileoverview Provides a drawn features service. - */ - -goog.provide('app.SelectedFeatures'); - -goog.require('app'); -goog.require('ol.Collection'); - - -/** - * @typedef {ol.Collection} - */ -app.SelectedFeatures; - - -/** - * The selected features collection. - * @private - */ -app.selectedFeatures_ = new ol.Collection(); - -app.module.value('appSelectedFeatures', app.selectedFeatures_); diff --git a/geoportailv3/static/js/infobar/elevationdirective.js b/geoportailv3/static/js/infobar/elevationdirective.js deleted file mode 100644 index 5e9198c05..000000000 --- a/geoportailv3/static/js/infobar/elevationdirective.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @fileoverview This file provides a "elevation" directive. This directive is - * used to insert Elevation information into the HTML page. - * Example: - * - * - * - * Note the use of the one-time binding operator (::) in the map expression. - * One-time binding is used because we know the map is not going to change - * during the lifetime of the application. - * - */ -goog.provide('app.ElevationDirectiveController'); -goog.provide('app.elevationDirective'); - -goog.require('app'); -goog.require('app.GetElevation'); -goog.require('app.projections'); -goog.require('ngeo.misc.debounce'); - - -/** - * @return {angular.Directive} The Directive Object Definition. - * @ngInject - */ -app.elevationDirective = function() { - return { - restrict: 'E', - scope: { - 'map': '=appElevationMap', - 'active': '=appElevationActive' - }, - controller: 'AppElevationController', - controllerAs: 'ctrl', - bindToController: true, - template: '' + - 'Elevation: {{ctrl.elevation}}' - }; -}; - - -app.module.directive('appElevation', app.elevationDirective); - - -/** - * @ngInject - * @constructor - * @param {angular.$http} $http The angular http service. - * @param {ngeox.miscDebounce} ngeoDebounce ngeoDebounce service. - * @param {app.GetElevation} appGetElevation Elevation service. - */ -app.ElevationDirectiveController = - function($http, ngeoDebounce, appGetElevation) { - var map = this['map']; - - /** - * @type {app.GetElevation} - * @private - */ - this.getElevation_ = appGetElevation; - - /** - * @type {string} - */ - this['elevation'] = ''; - - // 2D - map.on('pointermove', ngeoDebounce(function(e) { - if (!this['active'] || !e.coordinate) { - return; - } - this.getElevation_(e.coordinate).then( - (elevation) => (this['elevation'] = elevation['formattedElevation']) - ); - }, 300, true), this); - }; - - -app.module.controller('AppElevationController', - app.ElevationDirectiveController); diff --git a/geoportailv3/static/js/infobar/projectionDefs.js b/geoportailv3/static/js/infobar/projectionDefs.js deleted file mode 100644 index 0fa9a0aa8..000000000 --- a/geoportailv3/static/js/infobar/projectionDefs.js +++ /dev/null @@ -1,17 +0,0 @@ -goog.provide('app.projections'); - -goog.require('ol.Map'); -goog.require('ol.proj'); - -proj4.defs('EPSG:32632', '+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs'); -ol.proj.get('EPSG:32632').setExtent([166021.44, 0.00, 833978.55, 9329005.18]); - -proj4.defs('EPSG:32631', '+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs'); -ol.proj.get('EPSG:32631').setExtent([166021.44, 0.00, 833978.55, 9329005.18]); - -proj4.defs('EPSG:2169', - '+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 ' + - '+k=1 +x_0=80000 +y_0=100000 +ellps=intl ' + - '+towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 ' + - '+units=m +no_defs"'); -ol.proj.get('EPSG:2169').setExtent([48225.17, 56225.60, 105842.04, 139616.40]); diff --git a/geoportailv3/static/js/infobar/projectionselectordirective.js b/geoportailv3/static/js/infobar/projectionselectordirective.js deleted file mode 100644 index 747710ac6..000000000 --- a/geoportailv3/static/js/infobar/projectionselectordirective.js +++ /dev/null @@ -1,121 +0,0 @@ -/** - * @fileoverview This file provides a "projectionselector" directive - * This directive is used to insert an Projection Selector and - * Coordinate Display into the HTML page. - * Example: - * - * - * - * - * Note the use of the one-time binding operator (::) in the map expression. - * One-time binding is used because we know the map is not going to change - * during the lifetime of the application. - * - */ -goog.provide('app.ProjectionselectorDirectiveController'); -goog.provide('app.projectionselectorDirective'); - -goog.require('app'); -goog.require('app.CoordinateString'); -goog.require('app.projections'); -goog.require('goog.array'); -goog.require('ngeo.misc.controlComponent'); -goog.require('ol.control.MousePosition'); - - -/** - * @return {angular.Directive} The Directive Object Definition. - * @param {string} appProjectionselectorTemplateUrl The template url. - * @ngInject - */ -app.projectionselectorDirective = function(appProjectionselectorTemplateUrl) { - return { - restrict: 'E', - scope: { - 'map': '=appProjectionselectorMap' - }, - controller: 'AppProjectionselectorController', - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appProjectionselectorTemplateUrl - }; -}; - - -app.module.directive('appProjectionselector', app.projectionselectorDirective); - - -/** - * @ngInject - * @export - * @constructor - * @param {Object} $document The document service. - * @param {angular.$sce} $sce Angular sce service. - * @param {app.CoordinateString} appCoordinateString The coordinate string. - */ -app.ProjectionselectorDirectiveController = - function($document, $sce, appCoordinateString) { - /** - * @type {app.CoordinateString} - * @private - */ - this.coordinateString_ = appCoordinateString; - - /** - * @type {Array.} - */ - this['projectionOptions'] = [ - {'label': $sce.trustAsHtml('LUREF'), 'value': 'EPSG:2169'}, - {'label': $sce.trustAsHtml('Lon/Lat WGS84'), 'value': 'EPSG:4326'}, - {'label': $sce.trustAsHtml('Lon/Lat WGS84 DMS'), 'value': 'EPSG:4326:DMS'}, - {'label': $sce.trustAsHtml('Lon/Lat WGS84 DM'), 'value': 'EPSG:4326:DMm'}, - {'label': $sce.trustAsHtml('WGS84 UTM 32|31'), 'value': 'EPSG:3263*'} - ]; - this['projection'] = this['projectionOptions'][0]; - /** @type {ol.control.MousePostion} */ - this['mousePositionControl'] = new ol.control.MousePosition({ - className: 'custom-mouse-coordinates', - coordinateFormat: /** @type {ol.CoordinateFormatType} */ - (goog.bind(this.mouseCoordinateFormat_, this)) - }); - }; - - -/** - * @param {ol.Coordinate} coord The coordinate. - * @return {string} The mouse coordinate format. - * @private - */ -app.ProjectionselectorDirectiveController.prototype.mouseCoordinateFormat_ = - function(coord) { - var mapEpsgCode = - this['map'].getView().getProjection().getCode(); - if (this['projection']['value'] === 'EPSG:4326:DMS') { - return this.coordinateString_(coord, mapEpsgCode, 'EPSG:4326', true, false); - } else if (this['projection']['value'] === 'EPSG:4326:DMm') { - return this.coordinateString_(coord, mapEpsgCode, 'EPSG:4326', false, true); - } else { - return this.coordinateString_( - coord, mapEpsgCode, this['projection']['value'], false, false); - } - }; - - -/** - * @export - * @param {string} epsgCode The epsg code. - */ -app.ProjectionselectorDirectiveController.prototype.switchProjection = - function(epsgCode) { - this['projection'] = goog.array.find(this['projectionOptions'], - function(obj) { - return obj['value'] == epsgCode; - }); - this['mousePositionControl'].setCoordinateFormat( - /** @type {ol.CoordinateFormatType} */ - (goog.bind(this.mouseCoordinateFormat_, this)) - ); - }; - -app.module.controller('AppProjectionselectorController', - app.ProjectionselectorDirectiveController); diff --git a/geoportailv3/static/js/infobar/scaleselectordirective.js b/geoportailv3/static/js/infobar/scaleselectordirective.js deleted file mode 100644 index e9c4c76d1..000000000 --- a/geoportailv3/static/js/infobar/scaleselectordirective.js +++ /dev/null @@ -1,61 +0,0 @@ -goog.provide('app.ScaleselectorController'); -goog.provide('app.scaleselectorDirective'); - -goog.require('app'); -goog.require('app.ScalesService'); - - -// Use the default "scale selector" template. -//app.module.value('ngeoScaleselectorTemplateUrl', -// '../src/directives/partials/scaleselector.html'); - - -/** - * The application-specific scale selector directive, based on the - * ngeo-scaleselector directive. - * - * @return {angular.Directive} Directive Definition Object. - */ -app.scaleselectorDirective = function() { - return { - restrict: 'E', - scope: { - 'map': '=appScaleselectorMap' - }, - template: '
', - controllerAs: 'ctrl', - bindToController: true, - controller: 'AppScaleselectorController' - }; -}; - - -app.module.directive('appScaleselector', app.scaleselectorDirective); - - -/** - * @constructor - * @param {app.ScalesService} appScalesService Service returning scales. - * @ngInject - */ -app.ScaleselectorController = function(appScalesService) { - - /** - * @type {app.ScalesService} - * @export - */ - this.scalesService = appScalesService; - - /** - * Use the "dropup" variation of the Bootstrap dropdown. - * @type {ngeox.ScaleselectorOptions} - */ - this['options'] = { - 'dropup': true - }; -}; - -app.module.controller('AppScaleselectorController', - app.ScaleselectorController); diff --git a/geoportailv3/static/js/layerfactoryservice.js b/geoportailv3/static/js/layerfactoryservice.js deleted file mode 100644 index d5b2ddffb..000000000 --- a/geoportailv3/static/js/layerfactoryservice.js +++ /dev/null @@ -1,245 +0,0 @@ -/** - * @fileoverview This file defines Angular services to use to get OpenLayers - * layers for the application. - */ -goog.provide('app.GetLayerForCatalogNode'); -goog.provide('app.GetWmsLayer'); -goog.provide('app.GetWmtsLayer'); - -goog.require('app'); -goog.require('goog.asserts'); -goog.require('goog.object'); -goog.require('ngeo.misc.decorate'); -goog.require('ol.extent'); -goog.require('ol.proj'); -goog.require('ol.layer.Image'); -goog.require('ol.layer.Tile'); -goog.require('ol.source.ImageWMS'); -goog.require('ol.source.WMTS'); -goog.require('ol.tilegrid.WMTS'); - - -/** - * @typedef {function(string, string, boolean):ol.layer.Tile} - */ -app.GetWmtsLayer; - - -/** - * @typedef {function(string, string, string, string=):ol.layer.Image} - */ -app.GetWmsLayer; - - -/** - * @typedef {function(Object):ol.layer.Layer} - */ -app.GetLayerForCatalogNode; - - -/** - * @const - * @type {Object.} - * @private - */ -app.layerCache_ = {}; - - -/** - * @param {string} imageType Image type (e.g. "image/png"). - * @return {string} Image extensino (e.g. "png"). - * @private - */ -app.getImageExtension_ = function(imageType) { - goog.asserts.assert(imageType.indexOf('/')); - var imageExt = imageType.split('/')[1]; - goog.asserts.assert(imageExt == 'png' || imageExt == 'jpeg'); - return imageExt; -}; - - -/** - * @param {string} requestScheme The scheme. - * @return {app.GetWmtsLayer} The getWmtsLayer function. - * @private - * @ngInject - */ -app.getWmtsLayer_ = function(requestScheme) { - return getWmtsLayer; - - /** - * @param {string} name WMTS layer name. - * @param {string} imageType Image type (e.g. "image/png"). - * @param {boolean} retina If there is a retina layer. - * @return {ol.layer.Tile} The layer. - */ - function getWmtsLayer(name, imageType, retina) { - - var imageExt = app.getImageExtension_(imageType); - var retinaExtension = (retina ? '_hd' : ''); - var url = '//wmts{1-2}.geoportail.lu/mapproxy_4_v3/wmts/{Layer}' + - retinaExtension + - '/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.' + imageExt; - - if (requestScheme === 'https') { - url = '//wmts{3-4}.geoportail.lu/mapproxy_4_v3/wmts/{Layer}' + - retinaExtension + - '/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.' + imageExt; - } - var projection = ol.proj.get('EPSG:3857'); - var extent = projection.getExtent(); - var layer = new ol.layer.Tile({ - 'olcs.extent': app.olcsExtent, - source: new ol.source.WMTS({ - url: url, - tilePixelRatio: (retina ? 2 : 1), - layer: name, - matrixSet: 'GLOBAL_WEBMERCATOR_4_V3' + (retina ? '_HD' : ''), - format: imageType, - requestEncoding: ol.source.WMTSRequestEncoding.REST, - projection: projection, - tileGrid: new ol.tilegrid.WMTS({ - origin: ol.extent.getTopLeft(extent), - extent: extent, - resolutions: [156543.033928, 78271.516964, - 39135.758482, 19567.879241, 9783.9396205, - 4891.96981025, 2445.98490513, 1222.99245256, - 611.496226281, 305.748113141, 152.87405657, - 76.4370282852, 38.2185141426, 19.1092570713, - 9.55462853565, 4.77731426782, 2.38865713391, - 1.19432856696, 0.597164283478, 0.298582141739, - 0.1492910708695, 0.07464553543475], - matrixIds: [ - '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', - '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', - '21' - ] - }), - style: 'default', - crossOrigin: 'anonymous' - }) - }); - - layer.set('label', name); - ngeo.misc.decorate.layer(layer); - - return layer; - } -}; - - -app.module.factory('appGetWmtsLayer', app.getWmtsLayer_); - - -/** - * @param {string} proxyWmsUrl URL to the proxy wms. - * @param {boolean} remoteProxyWms is the proxy wms remote or local. - * @param {app.GetDevice} appGetDevice The device service. - * @return {app.GetWmsLayer} The getWmsLayer function. - * @private - * @ngInject - */ -app.getWmsLayer_ = function(proxyWmsUrl, remoteProxyWms, - appGetDevice) { - return getWmsLayer; - - /** - * @param {string} name WMS layer name. - * @param {string} layers Comma-separated list of layer names for that WMS - * layer. - * @param {string} imageType Image type (e.g. "image/png"). - * @param {string=} opt_url WMS URL. - * @return {ol.layer.Image} The layer. - */ - function getWmsLayer(name, layers, imageType, opt_url) { - var url = goog.isDef(opt_url) ? - opt_url : proxyWmsUrl; - var optSource = { - url: url, - hidpi: appGetDevice.isHiDpi(), - serverType: 'mapserver', - params: { - 'FORMAT': imageType, - 'LAYERS': layers - } - }; - - if (goog.isDef(opt_url) || remoteProxyWms) { - optSource.crossOrigin = 'anonymous'; - } - var layer = new ol.layer.Image({ - 'olcs.extent': app.olcsExtent, - source: new ol.source.ImageWMS(optSource) - }); - - layer.set('label', name); - ngeo.misc.decorate.layer(layer); - - return layer; - } -}; - - -app.module.factory('appGetWmsLayer', app.getWmsLayer_); - - -/** - * Function returning a function used to get the layer object for a catalog - * tree node. - * - * @param {app.GetWmtsLayer} appGetWmtsLayer The getWmtsLayer function. - * @param {app.GetWmsLayer} appGetWmsLayer The getWmsLayer function. - * @return {app.GetLayerForCatalogNode} The getLayerForCatalogNode function. - * @param {app.GetDevice} appGetDevice The device service. - * @private - * @ngInject - */ -app.getLayerForCatalogNode_ = function(appGetWmtsLayer, appGetWmsLayer, - appGetDevice) { - return getLayerForCatalogNode; - - /** - * @param {Object} node Catalog tree node. - * @return {ol.layer.Layer} OpenLayers layer. - */ - function getLayerForCatalogNode(node) { - var layer, layerCacheKey, type; - if (!('type' in node)) { - return null; - } - type = node['type']; - layerCacheKey = type + '_' + node['name']; - if (layerCacheKey in app.layerCache_) { - return app.layerCache_[layerCacheKey]; - } - if (type.indexOf('WMS') != -1) { - goog.asserts.assert('name' in node); - goog.asserts.assert('layers' in node); - goog.asserts.assert('imageType' in node); - layer = appGetWmsLayer(node['name'], node['layers'], node['imageType'], - node['url']); - } else if (type == 'WMTS') { - goog.asserts.assert('name' in node); - goog.asserts.assert('imageType' in node); - var hasRetina = (node['metadata']['hasRetina'] === 'true' && - appGetDevice.isHiDpi()); - layer = appGetWmtsLayer(node['name'], node['imageType'], hasRetina); - } else { - return null; - } - goog.asserts.assert(goog.isDefAndNotNull(layer)); - app.layerCache_[layerCacheKey] = layer; - layer.set('metadata', node['metadata']); - layer.set('queryable_id', node['id']); - if (goog.object.containsKey(node['metadata'], 'attribution')) { - var source = layer.getSource(); - source.setAttributions( - node['metadata']['attribution'] - ); - } - return layer; - } -}; - - -app.module.factory('appGetLayerForCatalogNode', app.getLayerForCatalogNode_); diff --git a/geoportailv3/static/js/layerinfo/layerinfodirective.js b/geoportailv3/static/js/layerinfo/layerinfodirective.js deleted file mode 100644 index e27594273..000000000 --- a/geoportailv3/static/js/layerinfo/layerinfodirective.js +++ /dev/null @@ -1,51 +0,0 @@ -goog.provide('app.LayerinfoController'); -goog.provide('app.layerinfoDirective'); - -goog.require('app'); -goog.require('app.ShowLayerinfo'); - - -/** - * @param {string} appLayerinfoTemplateUrl URL to directive template. - * @return {angular.Directive} The Directive Definition Object. - * @ngInject - */ -app.layerinfoDirective = function(appLayerinfoTemplateUrl) { - return { - restrict: 'E', - scope: { - 'layer': '=appLayerinfoLayer' - }, - controller: 'AppLayerinfoController', - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appLayerinfoTemplateUrl - }; -}; - -app.module.directive('appLayerinfo', app.layerinfoDirective); - - -/** - * @constructor - * @param {app.ShowLayerinfo} appShowLayerinfo app.ShowLayerinfo service. - * @ngInject - * @export - */ -app.LayerinfoController = function(appShowLayerinfo) { - /** - * @private - */ - this.showLayerInfo_ = appShowLayerinfo; -}; - - -/** - * @export - */ -app.LayerinfoController.prototype.getInfo = function() { - this.showLayerInfo_(this['layer']); -}; - - -app.module.controller('AppLayerinfoController', app.LayerinfoController); diff --git a/geoportailv3/static/js/main.js b/geoportailv3/static/js/main.js deleted file mode 100644 index 921787f99..000000000 --- a/geoportailv3/static/js/main.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @fileoverview Application entry point. - * - * This file defines the "app_main" Closure namespace, which is be used as the - * Closure entry point (see "entry_point" in the "build.json" file). - * - * This file includes `goog.require`'s for all the components/directives used - * by the HTML page. - */ -goog.provide('app.main'); - -goog.require('app.ImguploadDirective'); -goog.require('app.MainController'); -goog.require('app.askredirectDirective'); -goog.require('app.authenticationDirective'); -goog.require('app.backgroundlayerDirective'); -goog.require('app.catalogDirective'); -goog.require('app.drawDirective'); -goog.require('app.elevationDirective'); -goog.require('app.externalDataDirective'); -goog.require('app.feedbackDirective'); -goog.require('app.filereaderDirective'); -goog.require('app.layerinfoDirective'); -goog.require('app.layermanagerDirective'); -goog.require('app.layerlegendsDirective'); -goog.require('app.locationinfoDirective'); -goog.require('app.mapDirective'); -goog.require('app.measureDirective'); -goog.require('app.mymapsDirective'); -goog.require('app.pagreportDirective'); -goog.require('app.printDirective'); -goog.require('app.projections'); -goog.require('app.projectionselectorDirective'); -goog.require('app.queryDirective'); -goog.require('app.resizemapDirective'); -goog.require('app.routingDirective'); -goog.require('app.scalelineDirective'); -goog.require('app.scaleselectorDirective'); -goog.require('app.searchDirective'); -goog.require('app.shareDirective'); -goog.require('app.shorturlDirective'); -goog.require('app.streetviewDirective'); -goog.require('app.symbolSelectorDirective'); -goog.require('app.sliderDirective'); -goog.require('app.themeswitcherDirective'); diff --git a/geoportailv3/static/js/print/printservice.js b/geoportailv3/static/js/print/printservice.js deleted file mode 100644 index 9721d76b2..000000000 --- a/geoportailv3/static/js/print/printservice.js +++ /dev/null @@ -1,86 +0,0 @@ -goog.provide('app.Printservice'); - -goog.require('app'); -goog.require('app'); -goog.require('ngeo.print.Service'); -goog.require('ol.array'); - - -app.Printservice = class extends ngeo.print.Service { - /** - * @param {string} url URL to MapFish print web service. - * @param {angular.$http} $http Angular $http service. - * @param {ngeo.map.LayerHelper} ngeoLayerHelper Ngeo Layer Helper service. - */ - constructor(url, $http, ngeoLayerHelper) { - super(url, $http, ngeoLayerHelper); - /** - * @type {ngeo.map.LayerHelper} - * @private - */ - this.ngeoLayerHelper2_ = ngeoLayerHelper; - - } - /** - * @override - */ - createSpec(map, scale, dpi, layout, format, customAttributes) { - - const specMap = /** @type {MapFishPrintMap} */ ({ - dpi: dpi, - rotation: /** number */ (customAttributes['rotation']) - }); - - this.encodeMap2_(map, scale, specMap); - - const attributes = /** @type {!MapFishPrintAttributes} */ ({ - map: specMap - }); - ol.obj.assign(attributes, customAttributes); - - const spec = /** @type {MapFishPrintSpec} */ ({ - attributes, - format, - layout - }); - - return spec; - } - - /** - * @param {ol.Map} map Map. - * @param {number} scale Scale. - * @param {MapFishPrintMap} object Object. - * @private - */ - encodeMap2_(map, scale, object) { - const view = map.getView(); - const viewCenter = view.getCenter(); - const viewProjection = view.getProjection(); - const viewResolution = view.getResolution(); - const viewRotation = object.rotation || ol.math.toDegrees(view.getRotation()); - - goog.asserts.assert(viewCenter !== undefined); - goog.asserts.assert(viewProjection !== undefined); - - object.center = viewCenter; - object.projection = viewProjection.getCode(); - object.rotation = viewRotation; - object.scale = scale; - object.layers = []; - - const mapLayerGroup = map.getLayerGroup(); - goog.asserts.assert(mapLayerGroup); - - let layers = this.ngeoLayerHelper2_.getFlatLayers(mapLayerGroup); - ol.array.stableSort(layers, (layer_a, layer_b) => layer_a.getZIndex() - layer_b.getZIndex()); - layers = layers.slice().reverse(); - - layers.forEach((layer) => { - if (layer.getVisible()) { - goog.asserts.assert(viewResolution !== undefined); - this.encodeLayer(object.layers, layer, viewResolution); - } - }); - } -}; diff --git a/geoportailv3/static/js/query/info.html b/geoportailv3/static/js/query/info.html deleted file mode 100644 index 1466eced1..000000000 --- a/geoportailv3/static/js/query/info.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
- -
-
diff --git a/geoportailv3/static/js/query/reportdirective.js b/geoportailv3/static/js/query/reportdirective.js deleted file mode 100644 index 1fd2cdc4e..000000000 --- a/geoportailv3/static/js/query/reportdirective.js +++ /dev/null @@ -1,288 +0,0 @@ -goog.provide('app.PagreportController'); -goog.provide('app.pagreportDirective'); -goog.provide('app.CasiporeportController'); -goog.provide('app.casiporeportDirective'); - -goog.require('app.Notify'); - - -/** - * @param {string} appPagreportTemplateUrl URL to directive template. - * @return {angular.Directive} The Directive Definition Object. - * @ngInject - */ -app.pagreportDirective = function(appPagreportTemplateUrl) { - return { - restrict: 'E', - scope: { - 'ids': '=appPagreportIds', - 'staging': '=appPagreportStaging' - }, - controller: 'AppPagreportController', - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appPagreportTemplateUrl - }; -}; -app.module.directive('appPagreport', app.pagreportDirective); - - -/** - * @constructor - * @param {angular.$http} $http The angular http service. - * @param {app.Notify} appNotify Notify service. - * @param {angularGettext.Catalog} gettextCatalog Gettext service. - * @param {app.UserManager} appUserManager The usermanager service. - * @param {string} pagUrl Url to Pag Report Controller. - * @export - * @ngInject - */ -app.PagreportController = function($http, appNotify, gettextCatalog, - appUserManager, pagUrl) { - /** - * @type {app.UserManager} - * @private - */ - this.appUserManager_ = appUserManager; - - /** - * @type {angular.$http} - * @private - */ - this.$http_ = $http; - - /** - * @type {angularGettext.Catalog} - */ - this.gettextCatalog = gettextCatalog; - - /** - * @type {app.Notify} - * @private - */ - this.notify_ = appNotify; - - /** - * @export - * @type {ol.Feature} - */ - this.featue = this['feature']; - - /** - * @type {boolean} - * @private - */ - this.tac_ = false; - - /** - * @type {string} - * @private - */ - this.mail_ = ''; - if (this.appUserManager_.isAuthenticated()) { - this.mail_ = /** @type {string} */ (this.appUserManager_.getEmail()); - } - - /** - * @type {string} - * @private - */ - this.pagUrl_ = pagUrl; - -}; - -/** - * @param {boolean} tac True to accept the terms and conditions. - * @return {*} True if terms and conditions are accepted. - * @export - */ -app.PagreportController.prototype.getSetTAC = function(tac) { - if (arguments.length) { - this.tac_ = tac; - } else { - return this.tac_; - } -}; - - -/** - * @param {string} mail Set the email. - * @return {*} The email. - * @export - */ -app.PagreportController.prototype.getSetMail = function(mail) { - if (arguments.length) { - this.mail_ = mail; - } else { - return this.mail_; - } -}; - - -/** - * Generate and send the repport. - * @export - */ -app.PagreportController.prototype.generateRepport = function() { - - var msg = this.gettextCatalog.getString('Veuillez saisir une adresse email valide'); - var re = /^\S+@\S+\.\S+$/; - if (this.mail_.length === 0 || !re.test(this.mail_)) { - this.notify_(msg, app.NotifyNotificationType.WARNING); - } else if (this.tac_ < 1) { - msg = this.gettextCatalog.getString('Veuillez accepter les termes du rapport'); - this.notify_(msg, app.NotifyNotificationType.WARNING); - } else { - this.$http_.post( - this.pagUrl_ + '/report/' + this['ids'] + '.pdf?email=' + this.mail_ + '&staging=' + this['staging'], - {} - ); - msg = this.gettextCatalog.getString('Votre rapport est en train d\'être généré. Un email vous sera envoyé à l\'adresse {{email}} dès qu\'il sera disponible', - {'email': this.mail_}); - this.notify_(msg, app.NotifyNotificationType.INFO); - } -}; - -app.module.controller('AppPagreportController', - app.PagreportController); - -/** - * @param {string} appCasiporeportTemplateUrl URL to directive template. - * @return {angular.Directive} The Directive Definition Object. - * @ngInject - */ -app.casiporeportDirective = function(appCasiporeportTemplateUrl) { - return { - restrict: 'E', - scope: { - 'ids': '=appCasiporeportIds', - 'staging': '=appCasiporeportStaging' - }, - controller: 'AppCasiporeportController', - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appCasiporeportTemplateUrl - }; -}; -app.module.directive('appCasiporeport', app.casiporeportDirective); - - -/** - * @constructor - * @param {angular.$http} $http The angular http service. - * @param {app.Notify} appNotify Notify service. - * @param {angularGettext.Catalog} gettextCatalog Gettext service. - * @param {app.UserManager} appUserManager The usermanager service. - * @param {string} casipoUrl Url to Casipo Report Controller. - * @export - * @ngInject - */ -app.CasiporeportController = function($http, appNotify, gettextCatalog, - appUserManager, casipoUrl) { - /** - * @type {app.UserManager} - * @private - */ - this.appUserManager_ = appUserManager; - - /** - * @type {angular.$http} - * @private - */ - this.$http_ = $http; - - /** - * @type {angularGettext.Catalog} - */ - this.gettextCatalog = gettextCatalog; - - /** - * @type {app.Notify} - * @private - */ - this.notify_ = appNotify; - - /** - * @export - * @type {ol.Feature} - */ - this.featue = this['feature']; - - /** - * @type {boolean} - * @private - */ - this.tac_ = false; - - /** - * @type {string} - * @private - */ - this.mail_ = ''; - if (this.appUserManager_.isAuthenticated()) { - this.mail_ = /** @type {string} */ (this.appUserManager_.getEmail()); - } - - /** - * @type {string} - * @private - */ - this.casipoUrl_ = casipoUrl; - -}; - -/** - * @param {boolean} tac True to accept the terms and conditions. - * @return {*} True if terms and conditions are accepted. - * @export - */ -app.CasiporeportController.prototype.getSetTAC = function(tac) { - if (arguments.length) { - this.tac_ = tac; - } else { - return this.tac_; - } -}; - - -/** - * @param {string} mail Set the email. - * @return {*} The email. - * @export - */ -app.CasiporeportController.prototype.getSetMail = function(mail) { - if (arguments.length) { - this.mail_ = mail; - } else { - return this.mail_; - } -}; - - -/** - * Generate and send the repport. - * @export - */ -app.CasiporeportController.prototype.generateRepport = function() { - - var msg = this.gettextCatalog.getString('Veuillez saisir une adresse email valide'); - var re = /^\S+@\S+\.\S+$/; - if (this.mail_.length === 0 || !re.test(this.mail_)) { - this.notify_(msg, app.NotifyNotificationType.WARNING); - } else if (this.tac_ < 1) { - msg = this.gettextCatalog.getString('Veuillez accepter les termes du rapport'); - this.notify_(msg, app.NotifyNotificationType.WARNING); - } else { - this.$http_.post( - this.casipoUrl_ + '/report/' + this['ids'] + '.pdf?email=' + this.mail_ + '&staging=' + this['staging'], - {} - ); - msg = this.gettextCatalog.getString('Votre rapport est en train d\'être généré. Un email vous sera envoyé à l\'adresse {{email}} dès qu\'il sera disponible', - {'email': this.mail_}); - this.notify_(msg, app.NotifyNotificationType.INFO); - } -}; - -app.module.controller('AppCasiporeportController', - app.CasiporeportController); - diff --git a/geoportailv3/static/js/themeswitcher/themeswitcherdirective.js b/geoportailv3/static/js/themeswitcher/themeswitcherdirective.js deleted file mode 100644 index 8144bf81e..000000000 --- a/geoportailv3/static/js/themeswitcher/themeswitcherdirective.js +++ /dev/null @@ -1,178 +0,0 @@ -/** - * @fileoverview This file provides the "themeswitcher" directive. - * That directive is used to create the theme switcher in the page. - * - */ -goog.provide('app.ThemeswitcherController'); -goog.provide('app.themeswitcherDirective'); - -goog.require('app'); -goog.require('app.Notify'); -goog.require('app.Theme'); -goog.require('app.Themes'); -goog.require('app.ThemesEventType'); -goog.require('goog.array'); -goog.require('ngeo.statemanager.Location'); -goog.require('ol.events'); - - -/** - * @param {string} appThemeswitcherTemplateUrl Url to themes template - * @return {angular.Directive} The Directive Definition Object. - * @ngInject - */ -app.themeswitcherDirective = function(appThemeswitcherTemplateUrl) { - return { - restrict: 'E', - controller: 'AppThemeswitcherController', - scope: { - 'userOpen': '=appThemeswitcherUseropen', - 'map': '=appThemeswitcherMap' - }, - controllerAs: 'ctrl', - bindToController: true, - templateUrl: appThemeswitcherTemplateUrl - }; -}; - - -app.module.directive('appThemeswitcher', app.themeswitcherDirective); - - -/** - * @constructor - * @param {angularGettext.Catalog} gettextCatalog Gettext catalog. - * @param {ngeo.statemanager.Location} ngeoLocation ngeo Location service. - * @param {app.Themes} appThemes Themes service. - * @param {app.Theme} appTheme current theme service. - * @param {app.Notify} appNotify Notify service. - * @param {gettext} gettext Gettext service. - * @export - * @ngInject - */ -app.ThemeswitcherController = function(gettextCatalog, ngeoLocation, - appThemes, appTheme, appNotify, gettext) { - - /** - * @type {app.Theme} - * @private - */ - this.appTheme_ = appTheme; - - /** - * @type {angularGettext.Catalog} - * @private - */ - this.translate_ = gettextCatalog; - - /** - * @type {string} - * @private - */ - this.privateThemeMsg_ = gettext( - 'Ce thème est protégé. Veuillez vous connecter.'); - - /** - * @type {app.Themes} - * @private - */ - this.appThemes_ = appThemes; - - /** - * @type {app.Notify} - * @private - */ - this.appNotify_ = appNotify; - - ol.events.listen(appThemes, app.ThemesEventType.LOAD, - /** - * @param {ol.events.Event} evt Event. - */ - function(evt) { - this.setThemes_(); - }, this); - - // Get the theme from the URL if specified, otherwise we use the default - // theme and add it to the URL. - var pathElements = ngeoLocation.getPath().split('/'); - if (this.appTheme_.themeInUrl(pathElements)) { - this.switchTheme(decodeURIComponent(pathElements[pathElements.length - 1])); - } else { - this.switchTheme(this.appTheme_.getDefaultTheme()); - } -}; - - -/** - * Get the current theme. - * @return {string} The current theme. - * @export - */ -app.ThemeswitcherController.prototype.getCurrentTheme = function() { - return this.appTheme_.getCurrentTheme(); -}; - - -/** - * Encode the theme name. - * @param {string} theme The theme to encode. - * @return {string} The theme. - * @export - */ -app.ThemeswitcherController.prototype.encodeThemeName = function(theme) { - return this.appTheme_.encodeThemeName(theme); -}; - - -/** - * @private - */ -app.ThemeswitcherController.prototype.setThemes_ = function() { - this.appThemes_.getThemesObject().then(goog.bind( - /** - * Keep only the themes dedicated to the theme switcher - * @param {Array.} themes Array of theme objects. - */ - function(themes) { - this['themes'] = goog.array.filter(themes, function(object) { - return 'true' == object['metadata']['display_in_switcher']; - }); - // Check whether the current theme is valid or is protected; - // and if it's not, use the default theme. - // A theme is valid if it is present in the list of themes. - // A theme is protected if the related WS returns true - var themeIndex = goog.array.findIndex(themes, function(theme) { - return theme['name'] == this.appTheme_.getCurrentTheme(); - }, this); - if (themeIndex < 0) { - this.appThemes_.isThemePrivate(this.appTheme_.getCurrentTheme()) - .then(goog.bind( - /** - * @param {angular.$http.Response} resp Ajax response. - */ - function(resp) { - if (resp.data['is_private'] === true) { - this.appNotify_(this.translate_. - getString(this.privateThemeMsg_, {}), - app.NotifyNotificationType.WARNING); - this['userOpen'] = true; - } else { - this.switchTheme(this.appTheme_.getDefaultTheme()); - } - }, this)); - } - }, this)); -}; - - -/** - * @param {string} themeId The id of the theme. - * @export - */ -app.ThemeswitcherController.prototype.switchTheme = function(themeId) { - this.appTheme_.setCurrentTheme(themeId); -}; - - -app.module.controller('AppThemeswitcherController', - app.ThemeswitcherController); diff --git a/geoportailv3/subscribers.py b/geoportailv3/subscribers.py deleted file mode 100644 index 2bfa374ed..000000000 --- a/geoportailv3/subscribers.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- - -from pyramid.i18n import get_localizer, TranslationStringFactory -from pyramid.events import subscriber, BeforeRender, NewRequest - - -@subscriber(BeforeRender) -def add_renderer_globals(event): - request = event.get("request") - if request: - event["_"] = request.translate - event["localizer"] = request.localizer - - -# use two translator to tranlate each strings in Make -tsf1 = TranslationStringFactory("geoportailv3-server") -tsf2 = TranslationStringFactory("c2cgeoportal") - - -@subscriber(NewRequest) -def add_localizer(event): - request = event.request - localizer = get_localizer(request) - - def auto_translate(string): - result = localizer.translate(tsf1(string)) - return ( - localizer.translate(tsf2(string)) - if result == string else result - ) - request.localizer = localizer - request.translate = auto_translate diff --git a/geoportal/.dockerignore b/geoportal/.dockerignore new file mode 100644 index 000000000..fe791c6df --- /dev/null +++ b/geoportal/.dockerignore @@ -0,0 +1,28 @@ +* +!*_requirements.txt +!package.json +!alembic.ini +!webpack.apps.js +!webpack.config.js +!config.yaml +!CONST_config-schema.yaml +!alembic.yaml +!production.ini +!ng_locale_downloader.sh +!generate_i18n.sh +!development.ini +!setup.cfg +!setup.py +!geoportailv3_geoportal +!LUX_alembic +!c2cgeoportal/commons +!c2cgeoportal/geoportal +!c2cgeoportal/admin +!.tx +!lingua-client.cfg +!lingua-server.cfg +!print-config.yaml.tmpl +!fix-db.sh +!tools +!bin/* +!alembic_upgrade_heads.sh diff --git a/geoportal/CONST_config-schema.yaml b/geoportal/CONST_config-schema.yaml new file mode 100644 index 000000000..b27a575f7 --- /dev/null +++ b/geoportal/CONST_config-schema.yaml @@ -0,0 +1,634 @@ +--- +type: map +mapping: + no_interpreted: + type: seq + required: true + sequence: + - type: str + environment: + type: seq + required: true + sequence: + - type: map + mapping: + name: + type: str + required: true + default: + type: str + interpreted: + type: map + required: true + mapping: + regex;(.+): + type: any + postprocess: + type: seq + required: true + sequence: + - type: map + mapping: + expression: + type: str + required: true + vars: + type: seq + required: true + sequence: + - type: str + vars: + type: map + required: true + mapping: + package: + type: str + required: true + host: + type: str + required: true + enable_admin_interface: + type: bool + required: true + ogcproxy_enable: + type: bool + required: true + c2c.base_path: + type: str + required: true + sqlalchemy.url: + type: str + required: true + sqlalchemy.pool_recycle: + type: int + sqlalchemy.pool_size: + type: int + sqlalchemy.pool_overflow: + type: int + sqlalchemy.use_batch_mode: + type: bool + sqlalchemy_slave.url: + type: str + required: true + sqlalchemy_slave.pool_recycle: + type: int + sqlalchemy_slave.pool_size: + type: int + sqlalchemy_slave.pool_overflow: + type: int + sqlalchemy_slave.use_batch_mode: + type: bool + default_max_age: + type: int + required: true + srid: + type: int + required: true + schema: + type: str + required: true + + dbsessions: + type: map + required: true + mapping: + regex;([a-z0-9-]+): + type: map + mapping: + url: + type: str + required: true + + jsbuild: + type: map + mapping: + config: + type: str + required: true + root_dir: + type: str + required: true + default_locale_name: + type: str + pattern: '[a-z][a-z]' + required: true + available_locale_names: + type: seq + required: true + sequence: + - type: str + pattern: '[a-z][a-z]' + interfaces: + required: true + type: seq + sequence: + - type: str + default_interface: + required: true + type: str + interfaces_config: + required: true + type: map + mapping: + regex;.+: + type: map + mapping: + constants: + required: true + type: map + mapping: + regex;.+: + type: any + routes: + required: true + type: map + mapping: + regex;.+: + type: str + static: + type: map + mapping: + regex;.+: + type: str + fulltextsearch_params: + required: true + type: map + mapping: + regex;.+: + type: scalar + tree_params: + type: map + mapping: + regex;.+: + type: scalar + wfs_permalink: + type: map + mapping: + regex;.+: + type: any + redirect_interface: + type: str + do_redirect: + type: bool + authorized_referers: + type: seq + sequence: + - type: str + global_headers: + type: seq + sequence: + - type: map + mapping: + pattern: + type: str + required: true + headers: + type: map + required: true + mapping: + regex;.+: + type: str + headers: + type: map + required: true + mapping: + login: &header + type: map + required: true + mapping: + access_control_allow_origin: + type: seq + sequence: + - type: str + access_control_max_age: + required: true + type: int + cache_control_max_age: + required: true + type: int + index: *header + config: *header + api: *header + themes: *header + fulltextsearch: *header + mapserver: *header + tinyows: *header + layers: *header + print: *header + profile: *header + raster: *header + shortener: *header + echo: *header + csvecho: *header + exportgpxkml: *header + error: *header + + urllogin: + type: map + required: true + mapping: + aes_key: + type: str + + cache: + type: map + required: true + mapping: + backend: + required: true + type: str + arguments: + type: map + mapping: + regex;.+: + type: any + admin_interface: + type: map + required: true + mapping: + layer_tree_max_nodes: + type: int + map_base_layer: + type: str + map_x: + type: int + required: true + map_y: + type: int + required: true + map_zoom: + type: int + required: true + map_fit_max_zoom: + type: int + available_metadata: + type: seq + required: true + sequence: &types + - type: map + mapping: + name: + type: str + required: true + type: + type: str + regex: + type: str + error_message: + type: str + translate: + type: bool + available_functionalities: + type: seq + required: true + sequence: + - type: str + layers: + type: map + required: true + mapping: + geometry_validation: + type: bool + required: true + enum: + type: map + mapping: + defaults: &free_dict + type: map + mapping: + regex;(.+): + type: any + regex;(.+): + type: map + mapping: + defaults: *free_dict + dbsession: + type: str + attributes: + type: map + required: true + mapping: + regex;(.+): + type: map + mapping: + table: + type: str + required: true + column_name: + type: str + separator: + type: str + functionalities: + type: map + required: true + mapping: + anonymous: + <<: *free_dict + required: true + registered: + <<: *free_dict + required: true + available_in_templates: + type: seq + required: true + sequence: + - type: str + mapserverproxy: + type: map + required: true + mapping: + default_ogc_server: + type: str + required: true + default_external_ogc_server: + type: str + tinyowsproxy: + type: map + required: true + mapping: + tinyows_url: + type: str + required: true + proxy_online_resource: + type: str + online_resource: + type: str + tinyows_host: + type: str + fulltextsearch: + type: map + required: true + mapping: + defaultlimit: + type: int + required: true + maxlimit: + type: int + required: true + languages: + type: map + required: true + mapping: + regex;([a-z][a-z]): + type: str + reset_password: + type: map + required: true + mapping: &send_email + email_from: + required: true + type: str + email_body: + required: true + type: str + email_subject: + required: true + type: str + welcome_email: + type: map + required: true + mapping: *send_email + smtp: + type: map + mapping: + host: + type: str + required: true + ssl: + type: bool + user: + type: str + password: + type: str + starttls: + type: bool + + servers: + <<: *free_dict + required: true + host_forward_host: + type: seq + sequence: + - type: str + raster: + <<: *free_dict + required: true + shortener: + type: map + required: true + mapping: + <<: *send_email + base_url: + type: str + required: true + allowed_hosts: + type: seq + sequence: + - type: str + length: + type: int + hide_capabilities: + type: bool + required: true + resourceproxy: + type: map + required: true + mapping: + targets: + type: map + required: true + mapping: + regex;(.+): + type: str + allowed_headers: + type: seq + sequence: + - type: str + unique: true + print_url: + type: str + required: true + pdfreport: + type: map + mapping: + print_url: + type: str + layer-defaults: *free_dict + map-defaults: *free_dict + layers: + type: map + mapping: + regex;(.+): + type: map + mapping: + check_credentials: + type: bool + required: true + srs: + type: int + required: true + spec: + type: any + map: &map + type: map + mapping: + backgroundlayers: + type: seq + required: true + sequence: + - type: str + imageformat: + type: str + required: true + pattern: '[a-z]+/[a-z]+' + zoomType: + type: str + required: true + minScale: + type: int + required: true + style: + type: any + required: true + maps: + type: seq + sequence: + - *map + subdomain_url_template: + type: str + subdomains: + type: seq + sequence: + - type: str + + lingua_extractor: + type: map + mapping: + host_map: + type: map + mapping: + regex;(.+): + type: map + mapping: + netloc: + type: str + scheme: + type: str + verify: + type: any + headers: + type: map + mapping: + regex;(.+): + type: str + + checker: + type: map + required: true + mapping: + fulltextsearch: + type: map + required: true + mapping: + level: + type: int + required: true + search: + type: str + required: true + lang: + type: map + required: true + mapping: + level: + type: int + required: true + files: + type: seq + required: true + sequence: + - type: str + print: + type: map + required: true + mapping: + level: + type: int + required: true + spec: + type: any + required: true + routes: &routes + type: map + required: true + mapping: + disable: + type: seq + required: true + seq: + - type: str + routes: + type: seq + required: true + seq: + - type: map + mapping: + level: + type: int + required: true + name: + type: str + required: true + display_name: + type: str + params: ¶ms + type: map + mapping: + regex;([a-zA-Z0-9_\-~\.]+): + type: str + pattern: |- + [a-zA-Z0-9_\-~\.]+ + phantomjs: *routes + themes: + type: map + required: true + mapping: + level: + type: int + required: true + params: *params + interfaces: + type: map + mapping: + regex;([a-z]+): + type: map + mapping: + params: *params + regex;(.+): + type: any + check_collector: + type: map + required: true + mapping: + hosts: + type: seq + required: true + sequence: + - type: map + mapping: + display: + type: str + required: true + url: + type: str + required: true + level: + type: int + max_level: + type: int + required: true + level: + type: int + required: true + regex;(.+): + type: any diff --git a/geoportal/CONST_vars.yaml b/geoportal/CONST_vars.yaml new file mode 100644 index 000000000..cf9315581 --- /dev/null +++ b/geoportal/CONST_vars.yaml @@ -0,0 +1,499 @@ +--- + +vars: + # the package name + package: geoportailv3 + + srid: -1 + + host: '{VISIBLE_WEB_HOST}' + web_protocol: '{VISIBLE_WEB_PROTOCOL}' + entry_point: '{VISIBLE_ENTRY_POINT}' + + # Docker base image name (comes from the makefile). + docker_global_front: false + + dbsessions: {} + + # mapserver connexion string + mapserver_connection: user={dbuser} password={dbpassword} dbname={db} host={dbhost} + # mapserver join tables + mapserver_join_tables: "{schema}.restrictionarea AS ra, {schema}.role_restrictionarea AS rra, \ + {schema}.layer_restrictionarea AS lra, {schema}.treeitem AS la" + # mapserver visible area + mapserver_join_area: ra.area + # mapserver join close + mapserver_join_where: "rra.role_id = %role_id% AND rra.restrictionarea_id = ra.id AND \ + lra.restrictionarea_id = ra.id AND lra.layer_id = la.id AND la.name = " + # mapserver metadata for validation + mapserver_layer_metadata: "" + mapserver_layer_validation: | + "default_role_id" "-1" + "role_id" "^-?[0-9]*$" + # mapfile data subselect + mapfile_data_subselect: "SELECT ST_Collect(ra.area) FROM main.restrictionarea AS ra, \ + main.role_restrictionarea AS rra, main.layer_restrictionarea AS lra, main.treeitem AS la \ + WHERE rra.role_id = %role_id% AND rra.restrictionarea_id = ra.id AND lra.restrictionarea_id = ra.id \ + AND lra.layer_id = la.id AND la.name = " + # mapserver filter on role id only + mapfile_data_noarea_subselect: "SELECT rra.role_id FROM {mapserver_join_tables} \ + WHERE rra.restrictionarea_id = ra.id AND lra.restrictionarea_id = ra.id \ + AND lra.layer_id = la.id AND la.name = " + enable_admin_interface: true + + ps: __import__('os').path.sep + + # Database information + sqlalchemy: + url: postgresql://{dbuser}:{dbpassword}@{dbhost}:{dbport}/{db} + pool_recycle: 30 + pool_size: 5 + max_overflow: 25 + use_batch_mode: true + sqlalchemy_slave: + url: postgresql://{dbuser}:{dbpassword}@{dbhost_slave}:{dbport}/{db} + pool_recycle: 30 + pool_size: 5 + max_overflow: 25 + use_batch_mode: true + + # 10 days of default cache + default_max_age: 864000 + + # For debug mode + jsbuild: + config: /src/jsbuild/app.cfg + root_dir: /src + + # The application's default language. This is the language used by + # the application if no specific language is specified in the URLs. + # This also defines the language used for the text search. + default_locale_name: fr + + # The set of languages supported by the applications. + available_locale_names: + - en + - fr + - de + + # All the application interfaces used to create the apache rewrite rules + interfaces: __import__('os').environ.get("INTERFACES").split(" ") + + default_interface: desktop + + interfaces_theme: + desktop: desktop + desktop_alt: desktop + mobile: mobile + mobile_alt: mobile + oeview: desktop + oeedit: desktop + + # The dogpile.cache configuration. + # + # Do not touch if unsure. + # + # The cache section below takes three properties: + # + # - backend: the name of the cache backend (ex: dogpile.cache.memory, + # dogpile.cache.memcached, etc.). Mandatory. + # - expiration_time: the cache expiration time. Optional (infinite if not + # specified). + # - arguments: backend-specific arguments. Optional. + # + # Here is a dogpile.cache configuration example for the memcached backend + # (equivalent of + # http://dogpilecache.readthedocs.org/en/latest/api.html#dogpile.cache.backends.memcached.MemcachedBackend) + # cache: + # backend: dogpile.cache.memcached + # expiration_time: 3600 + # arguments: + # url: 127.0.0.1:11211 + cache: + backend: dogpile.cache.redis + arguments: + host: '{REDIS_HOST}' + port: '{REDIS_PORT}' + db: 0 + redis_expiration_time: 86400 # One day + distributed_lock: true + + admin_interface: + # Default values for the admin interface's maps. + map_x: 740000 + map_y: 5860000 + map_zoom: 10 + + layer_tree_max_nodes: 1000 + + # The list of available variable names for the `Metadatas` form. + available_metadata: + # Layers group + - name: isExpanded + type: boolean + - name: printNativeAngle + type: boolean + # Layer + - name: copyTo # V1 + - name: copyable + type: boolean + - name: legend + type: boolean + - name: isLegendExpanded + type: boolean + - name: legendRule + - name: legendImage + type: url + - name: iconUrl + type: url + - name: metadataUrl + type: url + - name: disclaimer + translate: true + - name: isChecked + type: boolean + - name: identifierAttributeField + - name: maxResolution + type: float + - name: minResolution + type: float + - name: opacity + type: float + - name: thumbnail + type: url + - name: timeAttribute + - name: lastUpdateDateColumn + - name: lastUpdateUserColumn + - name: snappingConfig + type: json + - name: geometryValidation # V1 + type: boolean + - name: excludeProperties # not yet used + - name: customOpenLayersOptions + type: json + # WMS + - name: directedFilterAttributes + type: list + - name: enumeratedAttributes + type: list + # WMTS layers + - name: ogcServer + - name: wmsLayers + - name: queryLayers + - name: printLayers + + # The list of functionalities that can be configured + # through the admin interface. + available_functionalities: + - default_basemap + - default_theme + - print_template + - mapserver_substitution + - filterable_layers + - preset_layer_filter + - open_panel + + functionalities: + # Functionalities that are accessible to anonymous + # users. + anonymous: + print_template: + - 1 A4 portrait + - 2 A3 landscape + default_basemap: plan + + # The name of the theme to use as the default theme. + # The default theme is the theme loaded when no + # theme name is specified in the mobile app URL. If unset + # then there is no default theme, and no theme information + # will be passed to the config.js template. + default_theme: + + # Functionalities that are accessible to authenticated + # users with no associated functionalities in the + # database. + registered: {} + + # Functionalities that are made available to Mako templates and loginuser. + available_in_templates: + - default_basemap + - default_theme + - filterable_layers + - print_template + - preset_layer_filter + - open_panel + + urllogin: {} + + resourceproxy: + # List of urls from which it is safe to load content + targets: {} + # exempletargetname: http://www.camptocamp.com/?param1=%s¶m2=%s + + # List of allowed headers + allowed_headers: + - Cache-Control + - Content-Encoding + - Content-Language + - Content-Type + - Date + - ETag + - Vary + + fulltextsearch: + defaultlimit: 30 + maxlimit: 200 + languages: + fr: french + en: english + de: german + + servers: + internal: http://localhost/ + local: '{web_protocol}://{host}{entry_point}' + mapserver: '{MAPSERVER_URL}' + + host_forward_host: [] + + # The "raster web services" configuration. See the "raster" + # chapter in the integrator documentation. + raster: {} + + # Used by enumeration in the query builder + layers: + geometry_validation: true + + # Used by reset_password and shortener to send emails + smtp: {} + + # Used to send an email on password reset + reset_password: {} + + # The shortener base configuration + shortener: + # The base of created URL + base_url: '{web_protocol}://{host}{entry_point}s/' + allowed_hosts: + - '{host}' + + # Define whether the MapServer proxy should hide the OGC capabilities. + hide_capabilities: false + + # For print proxy + print_url: '{PRINT_URL}' + + mapserver_url: '{MAPSERVER_URL}' + mapcache_url: '{MAPCACHE_URL}' + devserver_url: http://{DEVSERVER_HOST}{entry_point} + memcached_host: '{MEMCACHED_HOST}' + memcached_port: '{MEMCACHED_PORT}' + tilegeneration_sqs_queue: '{TILEGENERATION_SQS_QUEUE}' + tilegeneration_redis: 'redis://{REDIS_HOST}:{REDIS_PORT}' + + pdfreport: + print_url: '{print_url}' + + ogcproxy_enable: false + + lingua_extractor: {} + + global_headers: + - pattern: '.*' + headers: + X-Frame-Options: SAMEORIGIN + X-Xss-Protection: 1; mode=block + X-Content-Type-Options: nosniff + Referrer-Policy: origin + Strict-Transport-Security: max-age=31536000; includeSubDomains + Content-Security-Policy: "default-src 'self' https://*; \ + script-src 'self' 'unsafe-inline' https://cdn.polyfill.io/ https://maps.googleapis.com/; \ + style-src 'self' 'unsafe-inline'; \ + img-src * data:; \ + connect-src *" + - pattern: '^/apihelp.html' + headers: + Content-Security-Policy: "default-src 'self'; \ + script-src 'self' 'unsafe-inline' 'unsafe-eval'; \ + style-src 'self' 'unsafe-inline'; \ + img-src *;" + - pattern: '^/admin/.*' + headers: + Referrer-Policy: same-origin + Content-Security-Policy: "default-src 'self'; \ + script-src 'self' 'unsafe-inline'; \ + style-src 'self' 'unsafe-inline'; \ + img-src * data:; \ + worker-src 'self' blob:" + + # Control the HTTP headers + headers: + index: &header + cache_control_max_age: 600 # 10 minutes + access_control_max_age: 600 # 10 minutes + access_control_allow_origin: + - "*" + api: *header + profile: *header + raster: *header + echo: *header + csvecho: *header + exportgpxkml: *header + error: *header + themes: &auth_header + cache_control_max_age: 600 # 10 minutes + access_control_max_age: 600 # 10 minutes + access_control_allow_origin: + - "{web_protocol}://{host}" + - "*" + config: *auth_header + print: *auth_header + fulltextsearch: *auth_header + mapserver: *auth_header + tinyows: *auth_header + layers: *auth_header + shortener: *auth_header + login: + cache_control_max_age: 600 # 10 minutes + access_control_max_age: 600 # 10 minutes + access_control_allow_origin: + - "{web_protocol}://{host}" + + # Checker configuration + checker: + fulltextsearch: + level: 1 + search: text to search + lang: + level: 1 + files: [ngeo, cgxp-api] + phantomjs: + disable: [] + routes: + - name: desktop + params: + no_redirect: "true" + level: 3 + - name: mobile + params: + no_redirect: "true" + level: 3 + routes: + disable: [] + routes: + - name: apijs + level: 3 + - name: xapijs + level: 3 + - name: printproxy_capabilities + level: 3 + - name: mapserverproxy + display_name: mapserverproxy_wms + params: + SERVICE: WMS + VERSION: 1.1.1 + REQUEST: GetCapabilities + level: 3 + - name: mapserverproxy + display_name: mapserverproxy_wfs + params: + SERVICE: WFS + VERSION: 1.1.0 + REQUEST: GetCapabilities + level: 3 + themes: + params: + version: "2" + level: 1 + interfaces: {} + print: + spec: {} + level: 3 + + # Check collector configuration + check_collector: + hosts: + - display: Main + url: '{web_protocol}://{host}{entry_point}' + max_level: 1 + level: 10 + + # What web page is authorized to use the API + authorized_referers: + - '{web_protocol}://{host}/' + + # Hooks that can be called at different moments in the life of the + # application. The value is the full python name + # (full.module.path.function_name) of the function to call + hooks: {} + # after_settings: geoportailv3.after_settings_hook + # Called just after the settings have been loaded. Allows to modify + # the settings at runtime (they are constructed at build time). + # The function receives one parameter: the settings object. + + # Statistics are disabled by default + stats: {} + + # The c2cwsgiutils base path + c2c: + base_path: /c2c + + db_chooser: + # List of {method path} regexes to force the usage of the master, even for GET and OPTIONS + # This supersedes the slave list. + master: + - GET /short/.* # The shortener updates the last_hit column on GET + # List of {method path} regexes to force the usage of the slave + slave: + - \w+ /printproxy/.* # The print proxy is never writing to the DB + + +interpreted: + python: + - authtkt.secret + - ps + - interfaces + +runtime_environment: + - name: VISIBLE_WEB_HOST + default: localhost + - name: VISIBLE_WEB_PROTOCOL + default: https + - name: VISIBLE_ENTRY_POINT + default: / + - PGHOST + - PGHOST_SLAVE + - name: PGPORT + default: '5432' + - PGUSER + - PGPASSWORD + - name: PGDATABASE + default: geomapfish + - name: PGSCHEMA + default: main + - name: PGSCHEMA_STATIC + default: main_static + - name: TINYOWS_URL + default: http://tinyows:8080/ + - name: MAPSERVER_URL + default: http://mapserver:8080/ + - name: PRINT_URL + default: http://print:8080/print/ + - name: MAPCACHE_URL + default: http://mapcache:8080/ + - name: DEVSERVER_HOST + default: webpack-dev-server:8080 + - name: REDIS_HOST + default: redis + - name: REDIS_PORT + default: '6372' + - name: MEMCACHED_HOST + default: memcached + - name: MEMCACHED_PORT + default: '11211' + - name: TILEGENERATION_SQS_QUEUE + default: queue_name + +runtime_postprocess: + - expression: int({}) + vars: + - cache.arguments.port diff --git a/geoportal/Dockerfile b/geoportal/Dockerfile new file mode 100644 index 000000000..500451f46 --- /dev/null +++ b/geoportal/Dockerfile @@ -0,0 +1,107 @@ +FROM camptocamp/c2cwsgiutils:2 +LABEL maintainer Camptocamp "info@camptocamp.com" +ARG HTTP_PROXY_URL +ENV http_proxy $HTTP_PROXY_URL +ARG HTTPS_PROXY_URL +ENV https_proxy $HTTPS_PROXY_URL + +# Install Debian packages +RUN \ + . /etc/os-release && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --assume-yes --no-install-recommends \ + slapd ldap-utils \ + gettext libxml2-utils \ + && \ + apt-get purge python3-pip python3-setuptools python3-wheel --assume-yes && \ + echo "deb https://deb.nodesource.com/node_10.x ${VERSION_CODENAME} main" > /etc/apt/sources.list.d/nodesource.list && \ + curl --silent https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --assume-yes --no-install-recommends \ + nodejs && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + +WORKDIR /app + +# Install python dependencies +RUN \ + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \ + python3 get-pip.py pip==19.0.3 wheel==0.33.1 setuptools==40.8.0 + +COPY upstream_requirements.txt /app/ +RUN pip install --disable-pip-version-check --no-cache-dir --requirement upstream_requirements.txt + +COPY luxembourg_requirements.txt /app/ +RUN pip install --disable-pip-version-check --no-cache-dir --requirement luxembourg_requirements.txt + +COPY setup.py /app/ +RUN \ + python3 setup.py install && \ + # for mypy + touch /usr/local/lib/python3.6/dist-packages/zope/__init__.py && \ + touch /usr/local/lib/python3.6/dist-packages/c2c/__init__.py && \ + rm --recursive --force /tmp/* /var/tmp/* /root/.cache/* + + +COPY bin/* /usr/bin/ + +RUN mkdir -p /app/geoportailv3_geoportal/admin +COPY geoportailv3_geoportal/admin/package.json /app/geoportailv3_geoportal/admin +RUN cd /app/geoportailv3_geoportal/admin && npm install --global && npm cache clear --force + +COPY package.json /app +RUN npm install --no-optional && \ + npm cache clear --force + +RUN \ + node_modules/.bin/svg2ttf node_modules/ngeo/contribs/gmf/fonts/gmf-icons.svg \ + node_modules/ngeo/contribs/gmf/fonts/gmf-icons.ttf && \ + node_modules/.bin/ttf2eot node_modules/ngeo/contribs/gmf/fonts/gmf-icons.ttf \ + node_modules/ngeo/contribs/gmf/fonts/gmf-icons.eot && \ + node_modules/.bin/ttf2woff node_modules/ngeo/contribs/gmf/fonts/gmf-icons.ttf \ + node_modules/ngeo/contribs/gmf/fonts/gmf-icons.woff + +COPY ./ng_locale_downloader.sh /app +RUN \ + mkdir --parents /opt/angular-locale && \ + for LANG in en de fr lb; \ + do \ + ./ng_locale_downloader.sh $LANG; \ + done && \ + adduser www-data root + + +RUN mkdir -p /app/geoportailv3_geoportal +COPY ./geoportailv3_geoportal/static-ngeo/ /app/geoportailv3_geoportal/static-ngeo/ +COPY ./webpack.apps.js ./webpack.config.js /app/ +#RUN INTERFACE=main NODE_ENV=development node_modules/.bin/webpack --mode=development --debug +RUN INTERFACE=main NODE_ENV=production node_modules/.bin/webpack --mode=production --debug + +COPY . /app + +RUN cd /app/geoportailv3_geoportal/static-ngeo && ln -s ../../node_modules + +RUN ./generate_i18n.sh + +RUN pykwalify --data-file config.yaml --schema-file CONST_config-schema.yaml + +RUN \ + ls -1 geoportailv3_geoportal/static-ngeo/build/*.html|while read file; do mv ${file} ${file}.tmpl; done && \ + ls -1 geoportailv3_geoportal/static-ngeo/build/*.css|while read file; do mv ${file} ${file}.tmpl; done + +# For webpack-dev server +RUN mv webpack.apps.js webpack.apps.js.tmpl + +ARG GIT_HASH + +RUN pip install --disable-pip-version-check --no-cache-dir --editable=/app/ && \ + python -m compileall -q /app/geoportailv3_geoportal -x /app/geoportailv3_geoportal/static.* && \ + c2cwsgiutils_genversion.py $GIT_HASH + +COPY ./tools/ /app/tools +RUN ln -s . geoportal + +ENTRYPOINT [ "/usr/bin/eval-templates" ] +CMD ["c2cwsgiutils_run"] diff --git a/geoportal/LUX_alembic/README b/geoportal/LUX_alembic/README new file mode 100644 index 000000000..29260a885 --- /dev/null +++ b/geoportal/LUX_alembic/README @@ -0,0 +1,2 @@ +Generic single-database configuration. +alembic -c lux_alembic.ini revision -m "query_limit in getfeatureinfo" diff --git a/LUX_alembic/env.py b/geoportal/LUX_alembic/env.py similarity index 100% rename from LUX_alembic/env.py rename to geoportal/LUX_alembic/env.py diff --git a/LUX_alembic/script.py.mako b/geoportal/LUX_alembic/script.py.mako.toto similarity index 100% rename from LUX_alembic/script.py.mako rename to geoportal/LUX_alembic/script.py.mako.toto diff --git a/LUX_alembic/versions/17fb1559a5cd_create_table_for_hierarchy_of_accounts.py b/geoportal/LUX_alembic/versions/17fb1559a5cd_create_table_for_hierarchy_of_accounts.py similarity index 100% rename from LUX_alembic/versions/17fb1559a5cd_create_table_for_hierarchy_of_accounts.py rename to geoportal/LUX_alembic/versions/17fb1559a5cd_create_table_for_hierarchy_of_accounts.py diff --git a/LUX_alembic/versions/1b9b2d6fb6e_add_luxembourg_tables.py b/geoportal/LUX_alembic/versions/1b9b2d6fb6e_add_luxembourg_tables.py similarity index 100% rename from LUX_alembic/versions/1b9b2d6fb6e_add_luxembourg_tables.py rename to geoportal/LUX_alembic/versions/1b9b2d6fb6e_add_luxembourg_tables.py diff --git a/CONST_alembic/main/script.py.mako b/geoportal/LUX_alembic/versions/1cb8168b89d8_finalize_c2c_23_upgrade.py similarity index 67% rename from CONST_alembic/main/script.py.mako rename to geoportal/LUX_alembic/versions/1cb8168b89d8_finalize_c2c_23_upgrade.py index cc16b3786..cb17d7953 100644 --- a/CONST_alembic/main/script.py.mako +++ b/geoportal/LUX_alembic/versions/1cb8168b89d8_finalize_c2c_23_upgrade.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- -# -*- coding: utf-8 -*- -# Copyright (c) 2015, Camptocamp SA +# Copyright (c) 2017-2018, Camptocamp SA # All rights reserved. # Redistribution and use in source and binary forms, with or without @@ -28,27 +27,38 @@ # of the authors and should not be interpreted as representing official policies, # either expressed or implied, of the FreeBSD Project. -"""${message} +"""finalize_c2c_23_upgrade -Revision ID: ${up_revision} -Revises: ${down_revision} -Create Date: ${create_date} +Revision ID: 1cb8168b89d8 +Revises: 84b558deac2 +Create Date: 2018-10-18 09:48:12.655466 """ from alembic import op +from c2cgeoportal_commons.config import config # revision identifiers, used by Alembic. -revision = "${up_revision}" -down_revision = "${down_revision}" - +revision = '1cb8168b89d8' +down_revision = '84b558deac2' +branch_labels = None +depends_on = None def upgrade(): - schema = context.get_context().config.get_main_option("schema") - ${upgrades if upgrades else "# Instructions"} + op.execute(""" + UPDATE geov3.treeitem SET name = 'background' WHERE name = 'bglayers'; + UPDATE geov3.interface SET name='main' WHERE name = 'desktop'; + ALTER TABLE geov3.lux_print_job ALTER COLUMN id TYPE VARCHAR(120); + """) + + # Auth is now an enum. + op.execute( + "UPDATE geov3.ogc_server SET auth = 'No auth' WHERE auth = 'none';" + ) def downgrade(): - schema = context.get_context().config.get_main_option("schema") - ${downgrades if downgrades else "# Instructions"} + # We are not planning to come back from 2.3 et 1.6. + # Please do some backups and restore these if needed. + pass diff --git a/LUX_alembic/versions/34e77893d2fa_add_print_spec_table.py b/geoportal/LUX_alembic/versions/34e77893d2fa_add_print_spec_table.py similarity index 100% rename from LUX_alembic/versions/34e77893d2fa_add_print_spec_table.py rename to geoportal/LUX_alembic/versions/34e77893d2fa_add_print_spec_table.py diff --git a/LUX_alembic/versions/3852cd2f413d_added_print_server_table.py b/geoportal/LUX_alembic/versions/3852cd2f413d_added_print_server_table.py similarity index 100% rename from LUX_alembic/versions/3852cd2f413d_added_print_server_table.py rename to geoportal/LUX_alembic/versions/3852cd2f413d_added_print_server_table.py diff --git a/LUX_alembic/versions/3b7de32aebed_create_measurement_restriction_table.py b/geoportal/LUX_alembic/versions/3b7de32aebed_create_measurement_restriction_table.py similarity index 100% rename from LUX_alembic/versions/3b7de32aebed_create_measurement_restriction_table.py rename to geoportal/LUX_alembic/versions/3b7de32aebed_create_measurement_restriction_table.py diff --git a/LUX_alembic/versions/3e50ad660e39_missing_table_definition.py b/geoportal/LUX_alembic/versions/3e50ad660e39_missing_table_definition.py similarity index 100% rename from LUX_alembic/versions/3e50ad660e39_missing_table_definition.py rename to geoportal/LUX_alembic/versions/3e50ad660e39_missing_table_definition.py diff --git a/LUX_alembic/versions/42b291c446cd_survey_config.py b/geoportal/LUX_alembic/versions/42b291c446cd_survey_config.py similarity index 100% rename from LUX_alembic/versions/42b291c446cd_survey_config.py rename to geoportal/LUX_alembic/versions/42b291c446cd_survey_config.py diff --git a/LUX_alembic/versions/44d0e2c403b0_routing_stats.py b/geoportal/LUX_alembic/versions/44d0e2c403b0_routing_stats.py similarity index 100% rename from LUX_alembic/versions/44d0e2c403b0_routing_stats.py rename to geoportal/LUX_alembic/versions/44d0e2c403b0_routing_stats.py diff --git a/LUX_alembic/versions/46cb4ef6fd45_rest_url_has_to_be_hidden_move_it_from_.py b/geoportal/LUX_alembic/versions/46cb4ef6fd45_rest_url_has_to_be_hidden_move_it_from_.py similarity index 100% rename from LUX_alembic/versions/46cb4ef6fd45_rest_url_has_to_be_hidden_move_it_from_.py rename to geoportal/LUX_alembic/versions/46cb4ef6fd45_rest_url_has_to_be_hidden_move_it_from_.py diff --git a/LUX_alembic/versions/47b7c7fcc245_create_generic_proxy_config_table.py b/geoportal/LUX_alembic/versions/47b7c7fcc245_create_generic_proxy_config_table.py similarity index 100% rename from LUX_alembic/versions/47b7c7fcc245_create_generic_proxy_config_table.py rename to geoportal/LUX_alembic/versions/47b7c7fcc245_create_generic_proxy_config_table.py diff --git a/geoportal/LUX_alembic/versions/84b558deac2_query_limit_in_getfeatureinfo.py b/geoportal/LUX_alembic/versions/84b558deac2_query_limit_in_getfeatureinfo.py new file mode 100644 index 000000000..ab8bd0e4f --- /dev/null +++ b/geoportal/LUX_alembic/versions/84b558deac2_query_limit_in_getfeatureinfo.py @@ -0,0 +1,41 @@ +"""survey config + +Revision ID: 84b558deac2 +Revises: 84b558deac2 +Create Date: 2017-12-21 15:45:00.575759 +""" +import sqlalchemy as sa +from alembic import op, context + +# revision identifiers, used by Alembic. +revision = '84b558deac2' +down_revision = '42b291c446cd' +branch_labels = None +depends_on = None + +import datetime +from alembic import op, context +import sqlalchemy as sa +from sqlalchemy import Column +from sqlalchemy.types import Unicode, Integer + +def upgrade(): + schema = context.get_context().config.get_main_option('schema') + + op.add_column('lux_getfeature_definition', + sa.Column('query_limit', + sa.INTEGER(), + autoincrement=False, + nullable=True + ), + schema=schema + ) + + +def downgrade(): + schema = context.get_context().config.get_main_option('schema') + + op.drop_column('lux_getfeature_definition', + 'query_limit', + schema=schema + ) \ No newline at end of file diff --git a/LUX_alembic/versions/8764d58e895_getfeatureinfo_definition_table.py b/geoportal/LUX_alembic/versions/8764d58e895_getfeatureinfo_definition_table.py similarity index 100% rename from LUX_alembic/versions/8764d58e895_getfeatureinfo_definition_table.py rename to geoportal/LUX_alembic/versions/8764d58e895_getfeatureinfo_definition_table.py diff --git a/geoportal/alembic.ini b/geoportal/alembic.ini new file mode 100644 index 000000000..7779ca3be --- /dev/null +++ b/geoportal/alembic.ini @@ -0,0 +1,52 @@ +[DEFAULT] +app.cfg = %(here)s/alembic.yaml +script_location = c2cgeoportal_commons:alembic +version_table = alembic_version + +[main] +type = main +version_locations = c2cgeoportal_commons:alembic/main/ + +[static] +type = static +version_locations = c2cgeoportal_commons:alembic/static/ + +[lux] +type = main +version_locations = %(here)s/LUX_alembic/versions/ +version_table = lux_version + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/geoportal/alembic.yaml b/geoportal/alembic.yaml new file mode 100644 index 000000000..975574f7c --- /dev/null +++ b/geoportal/alembic.yaml @@ -0,0 +1,36 @@ +environment: +- {default: localhost, name: VISIBLE_WEB_HOST} +- {default: https, name: VISIBLE_WEB_PROTOCOL} +- {default: /, name: VISIBLE_ENTRY_POINT} +- {name: PGHOST} +- {name: PGHOST_SLAVE} +- {default: '5432', name: PGPORT} +- {name: PGUSER} +- {name: PGPASSWORD} +- {default: geomapfish, name: PGDATABASE} +- {default: main, name: PGSCHEMA} +- {default: main_static, name: PGSCHEMA_STATIC} +- {default: 'http://tinyows:8080/', name: TINYOWS_URL} +- {default: 'http://mapserver:8080/', name: MAPSERVER_URL} +- {default: 'http://print:8080/print/', name: PRINT_URL} +- {default: 'http://mapcache:8080/', name: MAPCACHE_URL} +- {default: 'webpack-dev-server:8080', name: DEVSERVER_HOST} +- {default: redis, name: REDIS_HOST} +- {default: '6372', name: REDIS_PORT} +- {default: memcached, name: MEMCACHED_HOST} +- {default: '11211', name: MEMCACHED_PORT} +- {default: queue_name, name: TILEGENERATION_SQS_QUEUE} +interpreted: {} +no_interpreted: [] +postprocess: +- expression: int({}) + vars: [cache.arguments.port] +vars: + cache: + arguments: {db: 0, distributed_lock: true, host: '{REDIS_HOST}', port: '{REDIS_PORT}', + redis_expiration_time: 86400} + backend: dogpile.cache.redis + schema: geov3 + schema_static: '{PGSCHEMA_STATIC}' + sqlalchemy.url: postgresql://{PGUSER}:{PGPASSWORD}@{PGHOST}:{PGPORT}/{PGDATABASE} + srid: 2169 diff --git a/geoportal/bin/alembic_upgrade_all.sh b/geoportal/bin/alembic_upgrade_all.sh new file mode 100755 index 000000000..8c6c3890d --- /dev/null +++ b/geoportal/bin/alembic_upgrade_all.sh @@ -0,0 +1,4 @@ +#!/bin/bash -ex +alembic --name=main upgrade head; +alembic --name=static upgrade head; +alembic --name=lux upgrade head; diff --git a/geoportal/bin/eval-templates b/geoportal/bin/eval-templates new file mode 100755 index 000000000..f41280e3e --- /dev/null +++ b/geoportal/bin/eval-templates @@ -0,0 +1,11 @@ +#!/bin/bash -e + +export DOLLAR=$ + +find /app/ -name '*.tmpl' -print | while read file +do + echo "Evaluate: ${file}" + envsubst < ${file} > ${file%.tmpl} +done + +exec "$@" diff --git a/geoportal/config.yaml b/geoportal/config.yaml new file mode 100644 index 000000000..2bf2d2028 --- /dev/null +++ b/geoportal/config.yaml @@ -0,0 +1,436 @@ +environment: +- {default: 'ou=portail,dc=act,dc=lu', name: LDAP_BASE_DN} +- {default: 'cn=system,dc=act,dc=lu', name: LDAP_BIND} +- {default: to_be_defined, name: LDAP_PASSWD} +- {default: 'ldap://willie.geoportal.lu:3890', name: LDAP_URL} +- {name: LDAP_FILTER_TMPL} +- {default: localhost, name: VISIBLE_WEB_HOST} +- {default: https, name: VISIBLE_WEB_PROTOCOL} +- {default: /, name: VISIBLE_ENTRY_POINT} +- {default: '999', name: DEFAULT_MYMAPS_ROLE} +- {name: DB_MYMAPS} +- {name: DB_PGROUTE} +- {name: DB_ECADASTRE} +- {name: PGHOST} +- {name: PGHOST_SLAVE} +- {default: '5432', name: PGPORT} +- {name: PGUSER} +- {name: PGPASSWORD} +- {default: geomapfish, name: PGDATABASE} +- {default: main, name: PGSCHEMA} +- {default: main_static, name: PGSCHEMA_STATIC} +- {default: 'http://tinyows:8080/', name: TINYOWS_URL} +- {default: 'http://mapserver:8080/', name: MAPSERVER_URL} +- {default: 'http://print:8080/print/', name: PRINT_URL} +- {default: 'http://mapcache:8080/', name: MAPCACHE_URL} +- {default: 'webpack-dev-server:8080', name: DEVSERVER_HOST} +- {default: redis, name: REDIS_HOST} +- {default: '6372', name: REDIS_PORT} +- {default: memcached, name: MEMCACHED_HOST} +- {default: '11211', name: MEMCACHED_PORT} +- {default: queue_name, name: TILEGENERATION_SQS_QUEUE} +- {default: /var/sig/bt.shp, name: DHM_DEM_FILE} +- {default: shp_index, name: DHM_DEM_TYPE} +- {name: SHORTENER_ALLOWED_HOST} +- {name: SHORTENER_BASE_URL} +- {name: ELASTIC_SERVERS} +- {name: ELASTIC_INDEX} +- {default: null, name: ROUTING_GRAPHHOPPER_API_KEY} +- {default: null, name: ROUTING_MAPQUEST_API_KEY} +interpreted: {} +no_interpreted: [] +postprocess: +- expression: int({}) + vars: [cache.arguments.port] +vars: + admin_interface: + available_functionalities: [default_basemap, default_theme, print_template, mapserver_substitution, + filterable_layers, preset_layer_filter, open_panel] + available_metadata: + - {name: isExpanded, type: boolean} + - {name: printNativeAngle, type: boolean} + - {name: copyTo} + - {name: copyable, type: boolean} + - {name: legend, type: boolean} + - {name: isLegendExpanded, type: boolean} + - {name: legendRule} + - {name: legendImage, type: url} + - {name: iconUrl, type: url} + - {name: metadataUrl, type: url} + - {name: disclaimer, translate: true} + - {name: isChecked, type: boolean} + - {name: identifierAttributeField} + - {name: maxResolution, type: float} + - {name: minResolution, type: float} + - {name: opacity, type: float} + - {name: thumbnail, type: url} + - {name: timeAttribute} + - {name: lastUpdateDateColumn} + - {name: lastUpdateUserColumn} + - {name: snappingConfig, type: json} + - {name: geometryValidation, type: boolean} + - {name: excludeProperties} + - {name: customOpenLayersOptions, type: json} + - {name: directedFilterAttributes, type: list} + - {name: enumeratedAttributes, type: list} + - {name: ogcServer} + - {name: wmsLayers} + - {name: queryLayers} + - {name: printLayers} + - {name: attribution} + - {name: bg_layer} + - {name: bg_opacity, type: float} + - {name: css} + - {name: display_in_switcher, type: boolean} + - {name: exclusion} + - {name: fake_scales, type: list} + - {name: hasRetina, type: boolean} + - {name: is_queryable, type: boolean} + - {name: legend_name} + - {name: link, type: url} + - {name: link_title} + - {name: max_dpi, type: float} + - {name: metadata_id} + - {name: page_title} + - {name: print_img} + - {name: print_long_txt_de} + - {name: print_long_txt_en} + - {name: print_long_txt_fr} + - {name: print_long_txt_lu} + - {name: print_scales, type: list} + - {name: print_short_txt_de} + - {name: print_short_txt_en} + - {name: print_short_txt_fr} + - {name: print_short_txt_lu} + - {name: resolutions, type: list} + - {name: show_in_mobile, type: boolean} + - {name: start_layers, type: list} + - {name: start_opacity, type: float} + - {name: start_x, type: float} + - {name: start_y, type: float} + - {name: start_zoom, type: float} + layer_tree_max_nodes: 1000 + map_x: 740000 + map_y: 5860000 + map_zoom: 10 + authorized_ips: null + authorized_referers: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}/'] + available_locale_names: [en, de, fr, lb] + c2c.base_path: /c2c + cache: + arguments: {db: 0, distributed_lock: true, host: '{REDIS_HOST}', port: '{REDIS_PORT}', + redis_expiration_time: 86400} + backend: dogpile.cache.redis + casipo: {bcc_address: null, fme_token: null, owncloud_external_url: null, owncloud_internal_url: null, + owncloud_password: null, owncloud_user: null, prod_url: null, smtp_server: null, + staging_url: null} + check_collector: + hosts: + - {display: Main, url: '{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}{VISIBLE_ENTRY_POINT}'} + level: 10 + max_level: 1 + checker: + fulltextsearch: {level: 1, search: bat} + lang: + files: [ngeo, cgxp-api] + level: 1 + phantomjs: + disable: [] + routes: + - level: 3 + name: desktop + params: {no_redirect: 'true'} + - level: 3 + name: mobile + params: {no_redirect: 'true'} + print: + level: 3 + spec: + attributes: + description: Carte exemple + legend: {} + map: + bbox: [668126, 6368118, 689717, 6389761] + dpi: 128 + layers: [] + projection: EPSG:3857 + rotation: 0 + name: Exemple + qrimage: http://dev.geoportail.lu/shorten/qr?url=http://g-o.lu/0mf4r + scale: 60000 + scalebar: {projection: 'EPSG:2169'} + url: http://g-o.lu/0mf4r + layout: A4 portrait + outputFormat: pdf + routes: + disable: [] + routes: + - {level: 3, name: apijs} + - {level: 3, name: xapijs} + - {level: 3, name: printproxy_capabilities} + - display_name: mapserverproxy_wms + level: 3 + name: mapserverproxy + params: {REQUEST: GetCapabilities, SERVICE: WMS, VERSION: 1.1.1} + - display_name: mapserverproxy_wfs + level: 3 + name: mapserverproxy + params: {REQUEST: GetCapabilities, SERVICE: WFS, VERSION: 1.1.0} + themes: + interfaces: {} + level: 1 + params: {version: '2'} + db_chooser: + master: [GET /short/.*] + slave: [\w+ /printproxy/.*] + dbsessions: + ecadastre: {url: '{DB_ECADASTRE}'} + mymaps: {url: '{DB_MYMAPS}'} + pgroute: {url: '{DB_PGROUTE}'} + default_interface: main + default_locale_name: fr + default_max_age: 864000 + devserver_url: http://{DEVSERVER_HOST}{VISIBLE_ENTRY_POINT} + enable_admin_interface: true + exclude_theme_layer_search: null + excluded_themes_from_search: null + fulltextsearch: + defaultlimit: 30 + languages: {de: german, en: english, fr: french} + maxlimit: 200 + functionalities: + anonymous: + default_basemap: plan + default_theme: null + print_template: [1 A4 portrait, 2 A3 landscape] + available_in_templates: [ + default_basemap, default_theme, filterable_layers, print_template, + preset_layer_filter, open_panel] + registered: {} + global_headers: + - headers: { + Content-Security-Policy: 'default-src ''self'' https://*; script-src + ''self'' ''unsafe-inline'' https://cdn.polyfill.io/ https://maps.googleapis.com/ https://statistics.geoportail.lu/ https://shop.geoportail.lu; + style-src ''self'' ''unsafe-inline''; img-src * data:; connect-src *', Referrer-Policy: origin, + Strict-Transport-Security: max-age=31536000; includeSubDomains, X-Content-Type-Options: nosniff, + X-Frame-Options: SAMEORIGIN, X-Xss-Protection: 1; mode=block} + pattern: .* + - headers: { + Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' + 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src *;} + pattern: ^/apihelp.html + - headers: { + Content-Security-Policy: 'default-src ''self''; script-src ''self'' + ''unsafe-inline''; style-src ''self'' ''unsafe-inline''; img-src * data:; + worker-src ''self'' blob:', Referrer-Policy: same-origin} + pattern: ^/admin/.* + headers: + api: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + config: + access_control_allow_origin: [ + '{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + csvecho: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + echo: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + error: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + exportgpxkml: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + fulltextsearch: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + index: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + layers: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + login: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}'] + access_control_max_age: 600 + cache_control_max_age: 600 + mapserver: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + print: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + profile: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + raster: + access_control_allow_origin: ['*'] + access_control_max_age: 600 + cache_control_max_age: 600 + shortener: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + themes: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + tinyows: + access_control_allow_origin: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}', + '*'] + access_control_max_age: 600 + cache_control_max_age: 600 + hide_capabilities: false + hooks: {} + host: '{VISIBLE_WEB_HOST}' + host_forward_host: [] + https_proxy: {unauthorized_ips: '10.0.0.0/8, 127.0.0.1'} + interfaces: [main] + interfaces_config: + main: + tree_params: {version: '2', catalogue: 'true', min_levels: '1'} + constants: + appAuthtktCookieName: auth_tkt_main + appExcludeThemeLayerSearch: [] + appOverviewMapBaseLayer: basemap_2015_global + appOverviewMapShow: true + bboxLidar: [71500, 98600, 81500, 108600] + bboxSrsLidar: 'EPSG:2169' + defaultExtent: [425152.9429259216, 6324465.99999133, 914349.9239510496, 6507914.867875754] + defaultLang: en + defaultTheme: main + fulltextsearch_param: {} + gmfExternalOGCServers: [] + gmfSearchActions: [] + lidarDemoUrl: demo_url + maxExtent: [2.6, 47.7, 8.6, 51] + remoteProxyWms: false + requestScheme: https + sentryUrl: '' + tags: {interface: main, service: js} + tiles3dLayers: [buildings25d, buildings3d, bridges3d] + tiles3dUrl: https://3dtiles.geoportail.lu/3dtiles/ + fulltextsearch_params: { + assetsBaseUrl: 'geoportailv3_geoportal:static-ngeo/', + authenticationBaseUrl: base, fulltextsearchUrl: fulltextsearch, gmfLayersUrl: layers_root, + gmfProfileCsvUrl: profile.csv, gmfRasterUrl: raster, gmfShortenerCreateUrl: shortener_create, + limit: 30, + partitionlimit: 5 + } + routes: { + ping: ping, + arrowUrl: get_arrow_color, authenticationBaseUrl: base, casipoUrl: casipo_url, + cmsSearchServiceUrl: cmssearch, downloadmeasurementUrl: download_measurement, + downloadresourceUrl: download_resource, downloadsketchUrl: download_sketch, + echocsvUrl: echocsv, elevationServiceUrl: raster, exportgpxkmlUrl: exportgpxkml, + geocodingServiceUrl: geocode, getHtmlLegendUrl: get_html, getInfoServiceUrl: getfeatureinfo, + getPngLegendUrl: get_png, getRemoteTemplateServiceUrl: getremotetemplate, + getRouteUrl: getroute, getuserinfoUrl: getuserinfo, gmfLayersUrl: layers_root, + gmfPrintUrl: printproxy, gmfProfileCsvUrl: profile.csv, gmfProfileJsonUrl: profile.json, + gmfRasterUrl: raster, gmfShortenerCreateUrl: shortener_create, httpsProxyUrl: https_proxy, + isThemePrivateUrl: isthemeprivate, layerSearchServiceUrl: layersearch, loginUrl: login, + logoutUrl: logout, mymapsImageUrl: mymaps_image, mymapsMapsUrl: mymaps_getmaps, + mymapsUrl: mymaps, pagUrl: pag_url, pdsUrl: pds_url, poiSearchServiceUrl: fulltextsearch, + postFeedbackUrl: feedback, predefinedWmsUrl: predefined_wms, previewMesurementUrl: preview_measurement, + printServiceUrl: printproxy, profileServiceUrl: profile.json, proxyWmsUrl: wms, + qrServiceUrl: qr, reverseGeocodingServiceUrl: reverse_geocode, routingServiceUrl: getremoteroute, + shorturlServiceUrl: shortener_create + } + static: { + appImagesPath: 'geoportailv3_geoportal:static-ngeo/images/', + appQueryTemplatesPath: 'geoportailv3_geoportal:static-ngeo/js/query/', + arrowModelUrl: 'geoportailv3_geoportal:static-ngeo/models/arrow5.glb', + assetsBaseUrl: 'geoportailv3_geoportal:static-ngeo/', + cesiumURL: 'geoportailv3_geoportal:static-ngeo/node_modules/@camptocamp/cesium/Build/Cesium/Cesium.js' + } + wfs_permalink: + defaultFeatureNS: http://mapserver.gis.umn.edu/mapserver + defaultFeaturePrefix: feature + wfsTypes: + - {featureType: fuel, label: display_name} + - {featureType: osm_scale, label: display_name} + jsbuild: {config: /src/jsbuild/app.cfg, root_dir: /src} + layers: {geometry_validation: true} + ldap: { + base_dn: '{LDAP_BASE_DN}', + bind: '{LDAP_BIND}', + passwd: '{LDAP_PASSWD}', + filter_tmpl: '{LDAP_FILTER_TMPL}', + url: '{LDAP_URL}' + } + default_mymaps_role: '{DEFAULT_MYMAPS_ROLE}' + lidar: {demo_url: '', maxx: 81500, maxy: 108600, minx: 71500, miny: 98600, srs: 'EPSG:2169'} + lingua_extractor: {} + mailer: {message.encoding: UTF-8, transport.host: keendo, transport.use: smtp} + mapserverproxy: {default_ogc_server: source for image/jpeg} + modify_notification: {admin_email: null, email_cc: null, url: null} + no_proxy: localhost + ogcproxy_enable: false + overview_map: {base_layer: basemap_2015_global, show: false} + package: geoportailv3 + pag: { + bcc_address: null, file_server: null, fme_token: null, owncloud_external_url: null, + owncloud_internal_url: null, owncloud_password: null, owncloud_user: null, prod_url: null, + smtp_server: null, staging_url: null} + print_url: '{PRINT_URL}' + print_urls: null + proxy_wms_url: null + raster: + dhm: {file: '{DHM_DEM_FILE}', round: 1, type: '{DHM_DEM_TYPE}'} + referrer: null + reset_password: {email_body: 'unused', email_from: info@camptocamp.com, email_subject: unused} + resourceproxy: + targets: {} + routing: + graphhopper: {api_key: '{ROUTING_GRAPHHOPPER_API_KEY}', url: 'https://graphhopper.com/api/1/route'} + mapquest: {api_key: '{ROUTING_MAPQUEST_API_KEY}', url: 'http://open.mapquestapi.com/directions/v2/route'} + schema: geov3 + schema_static: '{PGSCHEMA_STATIC}' + servers: {my_maps: 'https://ws.geoportail.lu/mymaps'} + shortener: + allowed_hosts: ['{SHORTENER_ALLOWED_HOST}'] + base_url: '{SHORTENER_BASE_URL}' + email_body: 'unused' + email_from: unused + email_subject: unused + smtp: {host: echo 'no-set', password: not-set, ssl: true, user: not-set} + sqlalchemy.max_overflow: 25 + sqlalchemy.pool_recycle: 30 + sqlalchemy.pool_size: 5 + sqlalchemy.url: postgresql://{PGUSER}:{PGPASSWORD}@{PGHOST}:{PGPORT}/{PGDATABASE} + sqlalchemy.use_batch_mode: true + sqlalchemy_slave.max_overflow: 25 + sqlalchemy_slave.pool_recycle: 30 + sqlalchemy_slave.pool_size: 5 + sqlalchemy_slave.url: postgresql://{PGUSER}:{PGPASSWORD}@{PGHOST_SLAVE}:{PGPORT}/{PGDATABASE} + sqlalchemy_slave.use_batch_mode: true + srid: 2169 + stats: {} + tiles_url: ['{VISIBLE_WEB_PROTOCOL}://{VISIBLE_WEB_HOST}/main/tiles/'] + tinyowsproxy: {tinyows_url: '{TINYOWS_URL}'} + urllogin: {} + welcome_email: {email_body: 'unused', email_from: info@camptocamp.com, email_subject: unused} + elastic.servers: '{ELASTIC_SERVERS}' + elastic.index: '{ELASTIC_INDEX}' diff --git a/geoportal/development.ini b/geoportal/development.ini new file mode 100644 index 000000000..7ca74817c --- /dev/null +++ b/geoportal/development.ini @@ -0,0 +1,88 @@ +[app:app] +use = egg:geoportailv3_geoportal +pyramid.reload_templates = true +pyramid.debug_authorization = false +pyramid.debug_notfound = true +pyramid.debug_routematch = false +pyramid.debug_templates = true +pyramid.includes = + pyramid_debugtoolbar +mako.directories = geoportailv3_geoportal:templates + c2cgeoportal_geoportal:templates +authtkt_http_only = False +authtkt_secure = False +authtkt_secret = 916945c4c6604b2088bc9e3e3b29da5f +authtkt_cookie_name = auth_tkt_main +app.cfg = %(here)s/config.yaml + +[pipeline:main] +pipeline = + app + +# logging configuration +# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/logging.html + +[loggers] +keys = root, sqlalchemy, gunicorn.access, gunicorn.error, c2cgeoportal_commons, c2cgeoportal_geoportal, c2cgeoportal_admin, geoportailv3_geoportal, c2cwsgiutils + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console + +[logger_c2cgeoportal_commons] +level = %(C2CGEOPORTAL_LOG_LEVEL)s +handlers = +qualname = c2cgeoportal_commons + +[logger_c2cgeoportal_geoportal] +level = %(C2CGEOPORTAL_LOG_LEVEL)s +handlers = +qualname = c2cgeoportal_geoportal + +[logger_c2cgeoportal_admin] +level = %(C2CGEOPORTAL_LOG_LEVEL)s +handlers = +qualname = c2cgeoportal_admin + +[logger_geoportailv3_geoportal] +level = %(LOG_LEVEL)s +handlers = +qualname = geoportailv3_geoportal + +[logger_c2cwsgiutils] +level = %(LOG_LEVEL)s +handlers = +qualname = c2cwsgiutils + +[logger_gunicorn.access] +level = INFO +handlers = +qualname = gunicorn.access + +[logger_gunicorn.error] +level = INFO +handlers = +qualname = gunicorn.error + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine +# "level = INFO" logs SQL queries. +# "level = DEBUG" logs SQL queries and results. +# "level = WARN" logs neither. (Recommended for production systems.) + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s diff --git a/geoportal/generate_i18n.sh b/geoportal/generate_i18n.sh new file mode 100755 index 000000000..2fa2a9913 --- /dev/null +++ b/geoportal/generate_i18n.sh @@ -0,0 +1,53 @@ +#!/bin/bash -e + +APP_OUTPUT_DIR=geoportailv3_geoportal/static-ngeo/build +LOCALE=geoportailv3_geoportal/locale +LANGS="en fr lb de" + + +blue() { + echo -e "\e[34m\e[1m$*\e[0m" +} + +prefix() { + lang=$1 + prefix="geoportailv3_geoportal/locale/$lang/LC_MESSAGES" + echo $prefix +} + +create_ui_jsons() { + blue "create UI jsons" + for lang in $LANGS + do + prefix="`prefix $lang`" + c2cprefix="$prefix/geoportailv3_geoportal" + files="$c2cprefix-client.po $prefix/ngeo.po" + echo "-> $APP_OUTPUT_DIR/$lang.json" + node node_modules/.bin/compile-catalog $files > $APP_OUTPUT_DIR/$lang.json + done +} + +create_mo_files() { + blue "create mo files" + for lang in $LANGS + do + c2cprefix="`prefix $lang`/geoportailv3_geoportal" + files="$c2cprefix-server $c2cprefix-tooltips" + for f in $files + do + echo "-> $f.mo" + msgfmt -o $f.mo $f.po + done + done +} + +clean_ngeo_en_po() { + blue "Clean ngeo en po file" + rm -f `prefix en`/ngeo.po # For English it is enough (and working) to use keys as values +} + + +clean_ngeo_en_po +create_mo_files +create_ui_jsons +echo all done diff --git a/geoportailv3/PF.py b/geoportal/geoportailv3_geoportal/PF.py similarity index 90% rename from geoportailv3/PF.py rename to geoportal/geoportailv3_geoportal/PF.py index 8f4aab4ec..98cf121c2 100644 --- a/geoportailv3/PF.py +++ b/geoportal/geoportailv3_geoportal/PF.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- from suds.client import Client -from geoportailv3.models import LuxMeasurementLoginCommune -from geoportailv3.models import LuxMeasurementDirectory +from geoportailv3_geoportal.models import LuxMeasurementLoginCommune +from geoportailv3_geoportal.models import LuxMeasurementDirectory +from c2cgeoportal_commons.models import DBSession from sqlalchemy import func -import sqlahelper import logging import os import sys @@ -25,7 +25,6 @@ def __init__(self): Client('https://titan.etat.lu/xxpfoWS/Measure' + 'mentVer1Service/META-INF/wsdl/MeasurementVer1Service.wsdl') self.log = logging.getLogger(__name__) - self.dbsession = sqlahelper.get_session() def get_client(self): return self.client @@ -117,7 +116,7 @@ def _get_pdf_file_path(self, town_code, measurement_number, user, referer): return {"town_info": town_info, "files": files_list} except: - print sys.exc_info() + print(sys.exc_info()) return {} def _add_char_before(self, max_length, the_string): @@ -128,7 +127,7 @@ def _add_char_before(self, max_length, the_string): # retourne l'information sur une commune def _get_town_by_code(self, town_code): - cur_record = self.dbsession.query(LuxMeasurementDirectory).\ + cur_record = DBSession.query(LuxMeasurementDirectory).\ filter(LuxMeasurementDirectory.town_code == town_code).first() if cur_record is not None: return { @@ -139,7 +138,7 @@ def _get_town_by_code(self, town_code): return None def _get_town_by_name(self, town_name): - cur_record = self.dbsession.query(LuxMeasurementDirectory).\ + cur_record = DBSession.query(LuxMeasurementDirectory).\ filter(LuxMeasurementDirectory.name == town_name).first() if cur_record is not None: return { @@ -160,7 +159,7 @@ def _is_download_authorized(self, town_name, user, referer): if (town_info is None or user is None or user.username is None): return False - if (self.dbsession.query(LuxMeasurementLoginCommune). + if (DBSession.query(LuxMeasurementLoginCommune). filter(func.lower(LuxMeasurementLoginCommune.login) == func.lower(func.geov3.getMainAccount(user.username))). filter(LuxMeasurementLoginCommune.num_commune == diff --git a/geoportailv3/__init__.py b/geoportal/geoportailv3_geoportal/__init__.py similarity index 65% rename from geoportailv3/__init__.py rename to geoportal/geoportailv3_geoportal/__init__.py index 3a04ecb36..8fb22bbae 100644 --- a/geoportailv3/__init__.py +++ b/geoportal/geoportailv3_geoportal/__init__.py @@ -1,46 +1,44 @@ # -*- coding: utf-8 -*- +import distutils.core from pyramid.config import Configurator -from c2cgeoportal import add_interface, INTERFACE_TYPE_NGEO_CATALOGUE, \ - set_user_validator -from c2cgeoportal.lib.authentication import create_authentication -from geoportailv3.resources import Root +from c2cgeoportal_geoportal import locale_negotiator, add_interface, \ + INTERFACE_TYPE_NGEO, INTERFACE_TYPE_NGEO_CATALOGUE, set_user_validator +from c2cgeoportal_geoportal.lib.authentication import create_authentication +from geoportailv3_geoportal.resources import Root + from pyramid.renderers import JSON +from pyramid_mako import add_mako_renderer from decimal import Decimal -from turbomail.control import interface - -from geoportailv3.adapters import datetime_adapter, decimal_adapter -from sqlalchemy.orm import sessionmaker +from marrow.mailer import Mailer +# from pyramid.events import NewRequest +from geoportailv3_geoportal.adapters import datetime_adapter, decimal_adapter import datetime import json -import ldap -import sqlalchemy -import sqlahelper - - -def init_db(engine): - def db(request): - maker = request.registry.dbmakers[engine] - session = maker() +import ldap3 as ldap +import os - def cleanup(request): - if request.exception is not None: - session.rollback() - else: - session.commit() - session.close() - request.add_finished_callback(cleanup) - return session - return db +def add_cors_headers_response_callback(event): + def cors_headers(request, response): + response.headers.update({ + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS', + 'Access-Control-Allow-Headers': 'Origin, ' + + 'Content-Type, Accept, Authorization', + 'Access-Control-Allow-Credentials': 'true', + 'Access-Control-Max-Age': '1728000', + }) + event.request.add_response_callback(cors_headers) def locale_negotiator(request): lang = request.params.get("lang") if "/printproxy/report/" in request.path: - from geoportailv3.models import DBSession, LuxPrintJob + from geoportailv3_geoportal.models import LuxPrintJob + from c2cgeoportal_commons.models import DBSession # Language is stored in the database ref = request.path.split("/printproxy/report/")[1] if ref is not None: @@ -56,8 +54,10 @@ def locale_negotiator(request): def main(global_config, **settings): + del global_config # Unused - """ This function returns a Pyramid WSGI application. + """ + This function returns a Pyramid WSGI application. """ config = Configurator( root_factory=Root, settings=settings, @@ -65,6 +65,12 @@ def main(global_config, **settings): authentication_policy=create_authentication(settings) ) + if os.environ.get('DEBUG_TOOLBAR', '0') == '1': + config.get_settings()['debugtoolbar.hosts'] = ['0.0.0.0/0'] + config.include('pyramid_debugtoolbar') + + # Workaround to not have the error: distutils.errors.DistutilsArgError: no commands supplied + distutils.core._setup_stop_after = 'config' # overwrite print routes config.add_route( "lux_printproxy_report_create", @@ -86,6 +92,22 @@ def main(global_config, **settings): "/printproxy/cancel/{ref}", request_method="DELETE" ) + + config.include('c2cgeoportal_geoportal') + distutils.core._setup_stop_after = None + + add_mako_renderer(config, '.appcache') + + config.add_translation_dirs('geoportailv3_geoportal:locale/') + + add_interface(config, 'main', INTERFACE_TYPE_NGEO_CATALOGUE, default=True) + + # ping routes + config.add_route( + "ping", + "/ping" + ) + # mymaps routes config.add_route( "mymaps", @@ -279,7 +301,16 @@ def main(global_config, **settings): "casipo_report", "/casipo/report/{oid}.pdf" ) - + # pds routes + config.add_route( + "pds_url", + "/pds" + ) + # pag routes + config.add_route( + "pds_report", + "/pds/report/{oid}.pdf" + ) config.add_route( "pag_files", "/pag/files/{_file}" @@ -316,33 +347,32 @@ def main(global_config, **settings): '/jsapilayers' ) - config.include('c2cgeoportal') - config.include('pyramid_closure') - - config.add_translation_dirs('geoportailv3:locale/') - - # initialize database - engines = config.get_settings()['sqlalchemy_engines'] - if engines: - config.registry.dbmakers = {} - for engine in engines: - if 'url' not in engines[engine]: - sqlahelper.add_engine( - sqlalchemy.create_engine(engines[engine]), name=engine) - else: - sqlahelper.add_engine( - sqlalchemy.create_engine(engines[engine]['url']), - name=engine) - config.registry.dbmakers[engine] = sessionmaker( - bind=sqlahelper.get_engine(engine)) - config.add_request_method(init_db(engine), - 'db_'+engine, reify=True) - - from geoportailv3.views.authentication import ldap_user_validator, \ + config.add_route("echocsv", "/profile/echocsv", request_method="POST") + config.add_route('getuserinfo', '/getuserinfo') + config.add_route('wms', '/ogcproxywms') + config.add_route('https_proxy', '/httpsproxy') + config.add_route('download_sketch', '/downloadsketch') + config.add_route('download', '/download') + config.add_route('download_measurement', '/downloadmeasurement') + config.add_route('preview_measurement', '/previewmeasurement') + config.add_route('qr', '/qr') + config.add_route('getfeatureinfo', '/getfeatureinfo') + config.add_route('getpoitemplate', '/getpoitemplate') + config.add_route('getremotetemplate', '/getremotetemplate') + config.add_route('isthemeprivate', '/isthemeprivate') + config.add_route('download_resource', '/downloadresource') + + # Appcache manifest + config.add_route( + 'appcache', + '/geoportailv3.appcache' + ) + # ldap + from geoportailv3_geoportal.views.authentication import ldap_user_validator, \ get_user_from_request ldap_settings = config.get_settings()['ldap'] if ldap_settings: - config.include('pyramid_ldap') + config.include('pyramid_ldap3') """Config the ldap connection. """ @@ -351,12 +381,14 @@ def main(global_config, **settings): ldap_settings['url'], ldap_settings['bind'], ldap_settings['passwd'], + use_pool=False, # avoid errors like LDAPMaximumRetriesError and LDAPResponseTimeoutError ) + ldap_settings['filter_tmpl'] = ldap_settings['filter_tmpl'].replace('%%', '%') config.ldap_set_login_query( ldap_settings['base_dn'], - filter_tmpl='(login=%(login)s)', - scope=ldap.SCOPE_SUBTREE, + filter_tmpl=ldap_settings['filter_tmpl'], + scope=ldap.SUBTREE, ) config.set_request_property( @@ -366,35 +398,55 @@ def main(global_config, **settings): ) set_user_validator(config, ldap_user_validator) - json_renderer = JSON() + # json + json_renderer = JSON() json_renderer.add_adapter(datetime.date, datetime_adapter) json_renderer.add_adapter(datetime.datetime, datetime_adapter) json_renderer.add_adapter(Decimal, decimal_adapter) config.add_renderer('json', json_renderer) - mail_config = config.get_settings()['turbomail'] + # mailer + mail_config = config.get_settings()['mailer'] if mail_config: - interface.start(mail_config) + mailer = Mailer(mail_config) + mailer.start() + + + # Add custom table in admin interace, that means re-add all normal table + + from c2cgeoform.routes import register_models + from c2cgeoportal_commons.models.main import ( + Role, LayerWMS, LayerWMTS, Theme, LayerGroup, LayerV1, Interface, OGCServer, + Functionality, RestrictionArea) + from c2cgeoportal_commons.models.static import User + from geoportailv3_geoportal.models import LuxDownloadUrl, \ + LuxMeasurementLoginCommune, LuxMeasurementDirectory, LuxGetfeatureDefinition, \ + LuxPrintServers, LuxPredefinedWms, LuxLayerExternalWMS, LuxLayerInternalWMS + + register_models(config, ( + ('themes', Theme), + ('layer_groups', LayerGroup), + # ('layers_wms', LayerWMS), removed we use LuxLayerExternalWMS and LuxLayerInternalWMS instead + ('layers_wmts', LayerWMTS), + ('layers_v1', LayerV1), + ('ogc_servers', OGCServer), + ('restriction_areas', RestrictionArea), + ('users', User), + ('roles', Role), + ('functionalities', Functionality), + ('interfaces', Interface), + ('lux_download_url', LuxDownloadUrl), + ('lux_measurement_login_commune', LuxMeasurementLoginCommune), + ('lux_measurement_directory', LuxMeasurementDirectory), + ('lux_getfeature_definition', LuxGetfeatureDefinition), + ('lux_print_servers', LuxPrintServers), + ('lux_predefined_wms', LuxPredefinedWms), + ('lux_layer_external_wms', LuxLayerExternalWMS), + ('lux_layer_internal_wms', LuxLayerInternalWMS), + ), 'admin') # scan view decorator for adding routes config.scan() - # add the interfaces - add_interface(config, interface_type=INTERFACE_TYPE_NGEO_CATALOGUE) - - config.add_route("echocsv", "/profile/echocsv", request_method="POST") - config.add_route('getuserinfo', '/getuserinfo') - config.add_route('wms', '/ogcproxywms') - config.add_route('https_proxy', '/httpsproxy') - config.add_route('download_sketch', '/downloadsketch') - config.add_route('download', '/download') - config.add_route('download_measurement', '/downloadmeasurement') - config.add_route('qr', '/qr') - config.add_route('getfeatureinfo', '/getfeatureinfo') - config.add_route('getpoitemplate', '/getpoitemplate') - config.add_route('getremotetemplate', '/getremotetemplate') - config.add_route('isthemeprivate', '/isthemeprivate') - config.add_route('download_resource', '/downloadresource') - return config.make_wsgi_app() diff --git a/geoportailv3/adapters.py b/geoportal/geoportailv3_geoportal/adapters.py similarity index 100% rename from geoportailv3/adapters.py rename to geoportal/geoportailv3_geoportal/adapters.py diff --git a/geoportailv3/views/__init__.py b/geoportal/geoportailv3_geoportal/admin/__init__.py similarity index 100% rename from geoportailv3/views/__init__.py rename to geoportal/geoportailv3_geoportal/admin/__init__.py diff --git a/geoportal/geoportailv3_geoportal/admin/admin.py b/geoportal/geoportailv3_geoportal/admin/admin.py new file mode 100644 index 000000000..4d2f60b0c --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/admin.py @@ -0,0 +1,6 @@ +from c2cgeoportal_admin.views.layertree import itemtypes_tables + +itemtypes_tables.update({ + 'lu_int_wms': 'lux_layer_internal_wms', + 'lu_ext_wms': 'lux_layer_external_wms', +}) diff --git a/geoportal/geoportailv3_geoportal/admin/package.json b/geoportal/geoportailv3_geoportal/admin/package.json new file mode 100644 index 000000000..88396b4c7 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/package.json @@ -0,0 +1,17 @@ +{ + "name": "GeoMapFish-Admin", + "version": "1.0.0", + "description": "GeoMapFish administration interface", + "author": "", + "dependencies": { + "bootstrap": "3.4.0", + "bootstrap-table": "1.13.2", + "jquery": "3.3.1", + "jquery.scrollintoview": "1.9.4", + "jstree": "3.3.7", + "jstreegrid": "3.9.5", + "magicsuggest-alpine": "1.0.0", + "openlayers": "4.6.5", + "typeahead.js": "0.11.1" + } +} diff --git a/geoportal/geoportailv3_geoportal/admin/view/__init__.py b/geoportal/geoportailv3_geoportal/admin/view/__init__.py new file mode 100644 index 000000000..40a96afc6 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_download_url.py b/geoportal/geoportailv3_geoportal/admin/view/lux_download_url.py new file mode 100644 index 000000000..e5732f636 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_download_url.py @@ -0,0 +1,58 @@ +from geoportailv3_geoportal.models import LuxDownloadUrl +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import AbstractViews +from c2cgeoform.views.abstract_views import ListField + +_list_field = partial(ListField, LuxDownloadUrl) + +base_schema = GeoFormSchemaNode(LuxDownloadUrl) + + +@view_defaults(match_param='table=lux_download_url') +class LuxDownloadUrlViews(AbstractViews): + _list_fields = [ + _list_field('id'), + _list_field('url'), + _list_field('protected'), + ] + _id_field = 'id' + _model = LuxDownloadUrl + _base_schema = base_schema + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_getfeature_definition.py b/geoportal/geoportailv3_geoportal/admin/view/lux_getfeature_definition.py new file mode 100644 index 000000000..a88610683 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_getfeature_definition.py @@ -0,0 +1,61 @@ +from geoportailv3_geoportal.models import LuxGetfeatureDefinition +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import AbstractViews +from c2cgeoform.views.abstract_views import ListField + +_list_field = partial(ListField, LuxGetfeatureDefinition) + +base_schema = GeoFormSchemaNode(LuxGetfeatureDefinition) + + +@view_defaults(match_param='table=lux_getfeature_definition') +class LuxGetfeatureDefinitionViews(AbstractViews): + _list_fields = [ + _list_field('id'), + _list_field('engine_gfi'), + _list_field('query'), + _list_field('template'), + _list_field('rest_url'), + _list_field('layer'), + ] + _id_field = 'id' + _model = LuxGetfeatureDefinition + _base_schema = base_schema + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_layer_external_wms.py b/geoportal/geoportailv3_geoportal/admin/view/lux_layer_external_wms.py new file mode 100644 index 000000000..44b07f873 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_layer_external_wms.py @@ -0,0 +1,160 @@ +# Copy past from c2cgeoportal_admin.views.layer_wms except: +# - All references to LuxLayerExternalWMS and lux_layer_external_wms +# - Addition of _list_field('category_id'), +# - renderer path (from "../templates/abc.jinja2" to "./templates/abc.jinja2") + +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from sqlalchemy import inspect, insert, delete, update +from zope.sqlalchemy import mark_changed + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import ListField, ItemAction +from deform.widget import FormWidget + +from c2cgeoportal_commons.models.main import \ + LayerWMS, LayerWMTS, OGCServer, LayerGroup, TreeItem + +from c2cgeoportal_admin import _ +from c2cgeoportal_admin.schemas.dimensions import dimensions_schema_node +from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node +from c2cgeoportal_admin.schemas.interfaces import interfaces_schema_node +from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node +from c2cgeoportal_admin.schemas.treeitem import parent_id_node +from c2cgeoportal_admin.views.dimension_layers import DimensionLayerViews + +from geoportailv3_geoportal.models import LuxLayerExternalWMS + +_list_field = partial(ListField, LuxLayerExternalWMS) + +base_schema = GeoFormSchemaNode(LuxLayerExternalWMS, widget=FormWidget(fields_template='layer_fields')) +base_schema.add(dimensions_schema_node.clone()) +base_schema.add(metadatas_schema_node.clone()) +base_schema.add(interfaces_schema_node.clone()) +base_schema.add(restrictionareas_schema_node.clone()) +base_schema.add_unique_validator(LuxLayerExternalWMS.name, LuxLayerExternalWMS.id) +base_schema.add(parent_id_node(LayerGroup)) + + +@view_defaults(match_param='table=lux_layer_external_wms') +class LuxLayerExternalWMSViews(DimensionLayerViews): + _list_fields = DimensionLayerViews._list_fields + [ + _list_field('category_id'), + _list_field('layer'), + _list_field('style'), + _list_field('time_mode'), + _list_field('time_widget'), + _list_field( + 'ogc_server', + renderer=lambda layer_wms: layer_wms.ogc_server.name, + sort_column=OGCServer.name, + filter_column=OGCServer.name) + ] + DimensionLayerViews._extra_list_fields + _id_field = 'id' + _model = LuxLayerExternalWMS + _base_schema = base_schema + + def _base_query(self): + return super()._base_query( + self._request.dbsession.query(LuxLayerExternalWMS).distinct(). + outerjoin('ogc_server')) + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + def _item_actions(self, item): + actions = super()._item_actions(item) + if inspect(item).persistent: + actions.insert(next((i for i, v in enumerate(actions) if v.name() == 'delete')), ItemAction( + name='convert_to_wmts', + label=_('Convert to WMTS'), + icon='glyphicon icon-l_wmts', + url=self._request.route_url( + 'convert_to_wmts', + id=getattr(item, self._id_field)), + method='POST', + confirmation=_('Are you sure you want to convert this layer to WMTS?'))) + return actions + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + if self._is_new(): + dbsession = self._request.dbsession + default_wms = LayerWMS.get_default(dbsession) + if default_wms: + return self.copy(default_wms, excludes=['name', 'layer']) + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() + + @view_config(route_name='convert_to_wmts', + request_method='POST', + renderer='fast_json') + def convert_to_wmts(self): + src = self._get_object() + dbsession = self._request.dbsession + default_wmts = LayerWMTS.get_default(dbsession) + values = { + 'url': default_wmts.url, + 'matrix_set': default_wmts.matrix_set + } if default_wmts else { + 'url': '', + 'matrix_set': '' + } + with dbsession.no_autoflush: + d = delete(LayerWMS.__table__) + d = d.where(LayerWMS.__table__.c.id == src.id) + i = insert(LayerWMTS.__table__) + values.update({ + 'id': src.id, + 'layer': src.layer, + 'image_type': src.ogc_server.image_type, + 'style': src.style + }) + i = i.values(values) + u = update(TreeItem.__table__) + u = u.where(TreeItem.__table__.c.id == src.id) + u = u.values({'type': 'l_wmts'}) + dbsession.execute(d) + dbsession.execute(i) + dbsession.execute(u) + dbsession.expunge(src) + + dbsession.flush() + mark_changed(dbsession) + + return { + 'success': True, + 'redirect': self._request.route_url( + 'c2cgeoform_item', + table='layers_wmts', + id=self._request.matchdict['id'], + _query=[('msg_col', 'submit_ok')]) + } diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_layer_internal_wms.py b/geoportal/geoportailv3_geoportal/admin/view/lux_layer_internal_wms.py new file mode 100644 index 000000000..72c136b09 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_layer_internal_wms.py @@ -0,0 +1,164 @@ +# Copy past from c2cgeoportal_admin.views.layer_wms except: +# - All references to LuxLayerInternalWMS and lux_layer_internal_wms +# - Addition of _list_field('category_id'), +# - renderer path (from "../templates/abc.jinja2" to "./templates/abc.jinja2") + +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from sqlalchemy import inspect, insert, delete, update +from zope.sqlalchemy import mark_changed + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import ListField, ItemAction +from deform.widget import FormWidget + +from c2cgeoportal_commons.models.main import \ + LayerWMS, LayerWMTS, OGCServer, LayerGroup, TreeItem + +from c2cgeoportal_admin import _ +from c2cgeoportal_admin.schemas.dimensions import dimensions_schema_node +from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node +from c2cgeoportal_admin.schemas.interfaces import interfaces_schema_node +from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node +from c2cgeoportal_admin.schemas.treeitem import parent_id_node +from c2cgeoportal_admin.views.dimension_layers import DimensionLayerViews + +from geoportailv3_geoportal.models import LuxLayerInternalWMS + +_list_field = partial(ListField, LuxLayerInternalWMS) + +base_schema = GeoFormSchemaNode(LuxLayerInternalWMS, widget=FormWidget(fields_template='layer_fields')) +base_schema.add(dimensions_schema_node.clone()) +base_schema.add(metadatas_schema_node.clone()) +base_schema.add(interfaces_schema_node.clone()) +base_schema.add(restrictionareas_schema_node.clone()) +base_schema.add_unique_validator(LuxLayerInternalWMS.name, LuxLayerInternalWMS.id) +base_schema.add(parent_id_node(LayerGroup)) + + +@view_defaults(match_param='table=lux_layer_internal_wms') +class LuxLayerInternalWMSViews(DimensionLayerViews): + _list_fields = DimensionLayerViews._list_fields + [ + _list_field('url'), + _list_field('layers'), + _list_field('is_poi'), + _list_field('collection_id'), + _list_field('rest_url'), + _list_field('layer'), + _list_field('style'), + _list_field('time_mode'), + _list_field('time_widget'), + _list_field( + 'ogc_server', + renderer=lambda layer_wms: layer_wms.ogc_server.name, + sort_column=OGCServer.name, + filter_column=OGCServer.name) + ] + DimensionLayerViews._extra_list_fields + _id_field = 'id' + _model = LuxLayerInternalWMS + _base_schema = base_schema + + def _base_query(self): + return super()._base_query( + self._request.dbsession.query(LuxLayerInternalWMS).distinct(). + outerjoin('ogc_server')) + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + def _item_actions(self, item): + actions = super()._item_actions(item) + if inspect(item).persistent: + actions.insert(next((i for i, v in enumerate(actions) if v.name() == 'delete')), ItemAction( + name='convert_to_wmts', + label=_('Convert to WMTS'), + icon='glyphicon icon-l_wmts', + url=self._request.route_url( + 'convert_to_wmts', + id=getattr(item, self._id_field)), + method='POST', + confirmation=_('Are you sure you want to convert this layer to WMTS?'))) + return actions + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + if self._is_new(): + dbsession = self._request.dbsession + default_wms = LayerWMS.get_default(dbsession) + if default_wms: + return self.copy(default_wms, excludes=['name', 'layer']) + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() + + @view_config(route_name='convert_to_wmts', + request_method='POST', + renderer='fast_json') + def convert_to_wmts(self): + src = self._get_object() + dbsession = self._request.dbsession + default_wmts = LayerWMTS.get_default(dbsession) + values = { + 'url': default_wmts.url, + 'matrix_set': default_wmts.matrix_set + } if default_wmts else { + 'url': '', + 'matrix_set': '' + } + with dbsession.no_autoflush: + d = delete(LayerWMS.__table__) + d = d.where(LayerWMS.__table__.c.id == src.id) + i = insert(LayerWMTS.__table__) + values.update({ + 'id': src.id, + 'layer': src.layer, + 'image_type': src.ogc_server.image_type, + 'style': src.style + }) + i = i.values(values) + u = update(TreeItem.__table__) + u = u.where(TreeItem.__table__.c.id == src.id) + u = u.values({'type': 'l_wmts'}) + dbsession.execute(d) + dbsession.execute(i) + dbsession.execute(u) + dbsession.expunge(src) + + dbsession.flush() + mark_changed(dbsession) + + return { + 'success': True, + 'redirect': self._request.route_url( + 'c2cgeoform_item', + table='layers_wmts', + id=self._request.matchdict['id'], + _query=[('msg_col', 'submit_ok')]) + } diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_measurement_directory.py b/geoportal/geoportailv3_geoportal/admin/view/lux_measurement_directory.py new file mode 100644 index 000000000..2fa8ac520 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_measurement_directory.py @@ -0,0 +1,59 @@ +from geoportailv3_geoportal.models import LuxMeasurementDirectory +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import AbstractViews +from c2cgeoform.views.abstract_views import ListField + +_list_field = partial(ListField, LuxMeasurementDirectory) + +base_schema = GeoFormSchemaNode(LuxMeasurementDirectory) + + +@view_defaults(match_param='table=lux_measurement_directory') +class LuxMeasurementDirectoryViews(AbstractViews): + _list_fields = [ + _list_field('id'), + _list_field('name'), + _list_field('town_code'), + _list_field('path'), + ] + _id_field = 'id' + _model = LuxMeasurementDirectory + _base_schema = base_schema + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_measurement_login_commune.py b/geoportal/geoportailv3_geoportal/admin/view/lux_measurement_login_commune.py new file mode 100644 index 000000000..d2414d961 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_measurement_login_commune.py @@ -0,0 +1,57 @@ +from geoportailv3_geoportal.models import LuxMeasurementLoginCommune +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import AbstractViews +from c2cgeoform.views.abstract_views import ListField + +_list_field = partial(ListField, LuxMeasurementLoginCommune) + +base_schema = GeoFormSchemaNode(LuxMeasurementLoginCommune) + + +@view_defaults(match_param='table=lux_measurement_login_commune') +class LuxMeasurementLoginCommuneViews(AbstractViews): + _list_fields = [ + _list_field('login'), + _list_field('num_commune'), + ] + _id_field = 'login' + _model = LuxMeasurementLoginCommune + _base_schema = base_schema + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_predefined_wms.py b/geoportal/geoportailv3_geoportal/admin/view/lux_predefined_wms.py new file mode 100644 index 000000000..1cf5381c1 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_predefined_wms.py @@ -0,0 +1,58 @@ +from geoportailv3_geoportal.models import LuxPredefinedWms +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import AbstractViews +from c2cgeoform.views.abstract_views import ListField + +_list_field = partial(ListField, LuxPredefinedWms) + +base_schema = GeoFormSchemaNode(LuxPredefinedWms) + + +@view_defaults(match_param='table=lux_predefined_wms') +class LuxPredefinedWmsViews(AbstractViews): + _list_fields = [ + _list_field('id'), + _list_field('label'), + _list_field('url'), + ] + _id_field = 'id' + _model = LuxPredefinedWms + _base_schema = base_schema + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() diff --git a/geoportal/geoportailv3_geoportal/admin/view/lux_print_servers.py b/geoportal/geoportailv3_geoportal/admin/view/lux_print_servers.py new file mode 100644 index 000000000..308e356d3 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/admin/view/lux_print_servers.py @@ -0,0 +1,58 @@ +from geoportailv3_geoportal.models import LuxPrintServers +from functools import partial +from pyramid.view import view_defaults +from pyramid.view import view_config + +from c2cgeoform.schema import GeoFormSchemaNode +from c2cgeoform.views.abstract_views import AbstractViews +from c2cgeoform.views.abstract_views import ListField + +_list_field = partial(ListField, LuxPrintServers) + +base_schema = GeoFormSchemaNode(LuxPrintServers) + + +@view_defaults(match_param='table=lux_print_servers') +class LuxPrintServersViews(AbstractViews): + _list_fields = [ + _list_field('id'), + _list_field('url'), + _list_field('creation'), + ] + _id_field = 'id' + _model = LuxPrintServers + _base_schema = base_schema + + @view_config(route_name='c2cgeoform_index', + renderer='./templates/index.jinja2') + def index(self): + return super().index() + + @view_config(route_name='c2cgeoform_grid', + renderer='fast_json') + def grid(self): + return super().grid() + + @view_config(route_name='c2cgeoform_item', + request_method='GET', + renderer='./templates/edit.jinja2') + def view(self): + return super().edit() + + @view_config(route_name='c2cgeoform_item', + request_method='POST', + renderer='./templates/edit.jinja2') + def save(self): + return super().save() + + @view_config(route_name='c2cgeoform_item', + request_method='DELETE', + renderer='fast_json') + def delete(self): + return super().delete() + + @view_config(route_name='c2cgeoform_item_duplicate', + request_method='GET', + renderer='./templates/edit.jinja2') + def duplicate(self): + return super().duplicate() diff --git a/geoportailv3/externs/fuse.js b/geoportal/geoportailv3_geoportal/externs/fuse.js similarity index 100% rename from geoportailv3/externs/fuse.js rename to geoportal/geoportailv3_geoportal/externs/fuse.js diff --git a/geoportailv3/externs/jszip.js b/geoportal/geoportailv3_geoportal/externs/jszip.js similarity index 100% rename from geoportailv3/externs/jszip.js rename to geoportal/geoportailv3_geoportal/externs/jszip.js diff --git a/geoportailv3/externs/mapfish-print.js b/geoportal/geoportailv3_geoportal/externs/mapfish-print.js similarity index 100% rename from geoportailv3/externs/mapfish-print.js rename to geoportal/geoportailv3_geoportal/externs/mapfish-print.js diff --git a/geoportailv3/externs/piwik.js b/geoportal/geoportailv3_geoportal/externs/piwik.js similarity index 100% rename from geoportailv3/externs/piwik.js rename to geoportal/geoportailv3_geoportal/externs/piwik.js diff --git a/geoportailv3/geocode.py b/geoportal/geoportailv3_geoportal/geocode.py similarity index 95% rename from geoportailv3/geocode.py rename to geoportal/geoportailv3_geoportal/geocode.py index ffc0e6070..9a401aef0 100644 --- a/geoportailv3/geocode.py +++ b/geoportal/geoportailv3_geoportal/geocode.py @@ -1,10 +1,8 @@ # -*- coding: utf-8 -*- from sqlalchemy import Column, Unicode, Integer -from sqlalchemy.ext.declarative import declarative_base from geoalchemy2 import Geometry - -Base = declarative_base() +from c2cgeoportal_commons.models import Base class Parcel(Base): diff --git a/geoportailv3/lib/__init__.py b/geoportal/geoportailv3_geoportal/lib/__init__.py similarity index 100% rename from geoportailv3/lib/__init__.py rename to geoportal/geoportailv3_geoportal/lib/__init__.py diff --git a/geoportailv3/lib/index_settings.json b/geoportal/geoportailv3_geoportal/lib/index_settings.json similarity index 100% rename from geoportailv3/lib/index_settings.json rename to geoportal/geoportailv3_geoportal/lib/index_settings.json diff --git a/geoportailv3/lib/search.py b/geoportal/geoportailv3_geoportal/lib/search.py similarity index 100% rename from geoportailv3/lib/search.py rename to geoportal/geoportailv3_geoportal/lib/search.py diff --git a/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-client.po b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-client.po similarity index 55% rename from geoportailv3/locale/de/LC_MESSAGES/geoportailv3-client.po rename to geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-client.po index 32542b68c..3b1fcec96 100644 --- a/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-client.po +++ b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-client.po @@ -2,19 +2,24 @@ # Translators: # Andrea Donno , 2015-2016 # Andrea Donno , 2015 -# Andrea Donno , 2015-2017 +# Andrea Donno , 2015-2018 # Andrea Donno , 2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 # eRenaud Michaëlis , 2016 # Francis Kaell , 2015 # Jeff Konnen , 2015-2016 -# Jeff Konnen , 2016-2017 +# Jeff Konnen , 2016-2018 +# Loubnabarra , 2017 +# Loubnabarra , 2017 # Patrick Weber , 2015 # Patrick Weber , 2015 msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:25+0000\n" -"Last-Translator: Jeff Konnen \n" +"PO-Revision-Date: 2019-01-09 13:24+0000\n" +"Last-Translator: dhorper \n" "Language-Team: German (http://www.transifex.com/geoportail/geoportailv3-lu/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,13 +37,13 @@ msgstr "Δ -" #: geoportailv3/static/js/externaldata/externaldata.html:2 msgid "+ Add external Wms" -msgstr "+ Externen WMS hinzufügen" +msgstr "+ Externen WM(T)S hinzufügen" -#: geoportailv3/templates/index.html:99 +#: geoportailv3/templates/index.html:131 msgid "+ Add layers" msgstr "+ Layer hinzufügen" -#: geoportailv3/templates/index.html:15 +#: geoportailv3/templates/index.html:17 msgid "- Geoportal Luxembourg" msgstr "- Geoportal Luxemburg" @@ -46,66 +51,75 @@ msgstr "- Geoportal Luxemburg" msgid "- link from geoportail.lu" msgstr "Karte aus geoportal.lu" -#: geoportailv3/static/js/mymaps/mymaps.html:20 +#: geoportailv3/static/js/mymaps/mymaps.html:21 msgid "Aucune description" msgstr "Keine Beschreibung" -#: geoportailv3/templates/index.html:154 +#: geoportailv3/templates/index.html:49 +msgid "" +"You are currently disconnected.\n" +" Enable offline mode\n" +" \n" +" You are currently offline." +msgstr "Sie haben im Moment keine Internetverbindung.\n Offline-Modus einschalten\n \n Sie haben im Moment keine Internetverbindung." + +#: geoportailv3/templates/index.html:188 msgid "" "A right click (tap and hold on mobile) will display information " "about the current location." msgstr "Durch Rechtsklick (tippen und halten auf Mobil) werden Informationen über den aktuellen Standort angezeigt" -#: geoportailv3/templates/index.html:157 +#: geoportailv3/templates/index.html:191 msgid "" "A short click (tap on mobile) on a map feature will select the " "feature and show more information." msgstr "Durch Klick (tippen auf Mobil) auf einer Funktion wir diese Augewählt und weitere Informationen angezeigt" -#: geoportailv3/templates/index.html:221 +#: geoportailv3/templates/index.html:294 msgid "A Propos" msgstr "Über uns" -#: geoportailv3/static/js/print/printdirective.js:209 +#: geoportailv3/static/js/print/printdirective.js:218 msgid "A0 landscape" msgstr "A0 quer" -#: geoportailv3/static/js/print/printdirective.js:210 +#: geoportailv3/static/js/print/printdirective.js:219 msgid "A0 portrait" msgstr "A0 hoch" -#: geoportailv3/static/js/print/printdirective.js:207 +#: geoportailv3/static/js/print/printdirective.js:216 msgid "A1 landscape" msgstr "A1 quer" -#: geoportailv3/static/js/print/printdirective.js:208 +#: geoportailv3/static/js/print/printdirective.js:217 msgid "A1 portrait" msgstr "A1 hoch" -#: geoportailv3/static/js/print/printdirective.js:205 +#: geoportailv3/static/js/print/printdirective.js:214 msgid "A2 landscape" msgstr "A2 quer" -#: geoportailv3/static/js/print/printdirective.js:206 +#: geoportailv3/static/js/print/printdirective.js:215 msgid "A2 portrait" msgstr "A2 hoch" -#: geoportailv3/static/js/print/printdirective.js:203 +#: geoportailv3/static/js/print/printdirective.js:212 msgid "A3 landscape" msgstr "A3 quer" -#: geoportailv3/static/js/print/printdirective.js:204 +#: geoportailv3/static/js/print/printdirective.js:213 msgid "A3 portrait" msgstr "A3 hoch" -#: geoportailv3/static/js/print/printdirective.js:201 +#: geoportailv3/static/js/print/printdirective.js:210 msgid "A4 landscape" msgstr "A4 quer" -#: geoportailv3/static/js/print/printdirective.js:202 +#: geoportailv3/static/js/print/printdirective.js:211 msgid "A4 portrait" msgstr "A4 hoch " +#: geoportailv3/static/js/offlineNgeoComponent.html:12 #: geoportailv3/static/js/print/print.html:45 msgid "Abort" msgstr "Abbrechen" @@ -114,15 +128,26 @@ msgstr "Abbrechen" msgid "Access constraints :" msgstr "Zugangsbedingungen :" +#: geoportailv3/static/js/offlineNgeoComponent.html:31 +msgid "Activate offline mode" +msgstr "Offline-Modus einschalten" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:58 +msgid "Activer Google Streetview" +msgstr "Google Street View aktivieren " + #: geoportailv3/static/js/externaldata/externaldata.html:8 msgid "Add external data" msgstr "Externe Daten hinzufügen" -#: geoportailv3/static/js/search/searchdirective.js:399 +#: geoportailv3/static/js/routing/routingdirective.js:249 +#: geoportailv3/static/js/search/searchdirective.js:447 msgid "Addresses" msgstr "Addressen" +#: geoportailv3/static/js/query/casiporeport.html:8 #: geoportailv3/static/js/query/pagreport.html:8 +#: geoportailv3/static/js/query/pdsreport.html:8 msgid "Adresse Email" msgstr "Email Adresse" @@ -134,27 +159,47 @@ msgstr "Nächstgelegene Adresse" msgid "Affaire" msgstr "Fall" -#: geoportailv3/templates/index.html:222 +#: geoportailv3/templates/index.html:111 +msgid "Afficher les modèles 3D" +msgstr "3D Modelle anzeigen" + +#: geoportailv3/templates/index.html:295 msgid "Aide" msgstr "Hilfe" +#: geoportailv3/static/js/routing/routing.html:45 +msgid "Ajouter une étape" +msgstr "Zwischenstopp einfügen" + #: geoportailv3/static/js/draw/featurepopup.html:88 msgid "Ajouter vignette" msgstr "Miniaturbild hinzufügen" -#: geoportailv3/static/js/draw/styleediting.html:113 -#: geoportailv3/static/js/draw/styleediting.html:99 +#: geoportailv3/static/js/locationinfo/locationinfo.html:37 +#: geoportailv3/static/js/search/search.html:16 +msgid "Ajouter étape à mon itinéraire" +msgstr "Einen Zwischenstopp einfügen" + +#: node_modules/ngeo/src/filter/component.js:154 +msgid "All" +msgstr "Alle" + +#: geoportailv3/static/js/draw/styleediting.html:100 +#: geoportailv3/static/js/draw/styleediting.html:114 msgid "Angle" msgstr "Winkel" #: geoportailv3/static/js/askredirect/askredirect.html:10 #: geoportailv3/static/js/draw/featurepopup.html:116 #: geoportailv3/static/js/draw/featurepopup.html:136 -#: geoportailv3/static/js/draw/styleediting.html:120 -#: geoportailv3/static/js/mymaps/mymaps.html:171 -#: geoportailv3/static/js/mymaps/mymaps.html:185 -#: geoportailv3/static/js/mymaps/mymaps.html:199 -#: geoportailv3/static/js/mymaps/mymaps.html:294 +#: geoportailv3/static/js/draw/styleediting.html:121 +#: geoportailv3/static/js/mymaps/mymaps.html:137 +#: geoportailv3/static/js/mymaps/mymaps.html:151 +#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:210 +#: geoportailv3/static/js/mymaps/mymaps.html:305 +#: geoportailv3/static/js/query/info.html:11 msgid "Annuler" msgstr "Abbrechen" @@ -162,7 +207,11 @@ msgstr "Abbrechen" msgid "Area:" msgstr "Fläche:" -#: geoportailv3/static/js/mymaps/mymaps.html:25 +#: node_modules/ngeo/src/filter/component.js:158 +msgid "At least one" +msgstr "" + +#: geoportailv3/static/js/mymaps/mymaps.html:26 msgid "Attention!" msgstr "Achtung!" @@ -171,6 +220,10 @@ msgid "Aucun symbole disponible" msgstr "Kein Symbol verfügbar" #: geoportailv3/static/js/query/default.html:20 +#: geoportailv3/static/js/query/default_no_prefix.html:20 +#: geoportailv3/static/js/query/default_table.html:28 +#: geoportailv3/static/js/query/default_table_no_prefix.html:28 +#: geoportailv3/static/js/query/sentier_nature.html:19 msgid "Aucune information disponible pour cette couche" msgstr "Keine Informationen zu diesem Layer verfügbar" @@ -182,15 +235,15 @@ msgstr "Es ist keine Legende für die ausgewählten Layer verfügbar" msgid "Azimut" msgstr "Azimut" -#: geoportailv3/static/js/search/searchdirective.js:375 +#: geoportailv3/static/js/search/searchdirective.js:426 msgid "Background" msgstr "Hintergrund" -#: geoportailv3/static/js/search/searchdirective.js:363 +#: geoportailv3/static/js/search/searchdirective.js:414 msgid "Background Layers" msgstr "Hintergrund Layer" -#: geoportailv3/static/js/exclusionmanagerservice.js:125 +#: geoportailv3/static/js/exclusionmanagerservice.js:127 msgid "" "Background has been deactivated because the layer {{layer}} cannot be " "displayed on top of it." @@ -200,45 +253,58 @@ msgstr "Die Hintergrundkarte wurde ausgeschaltet weil sie nicht mit dem Layer {{ msgid "Background layer:" msgstr "Hintergrundkarte:" +#: node_modules/ngeo/src/filter/rulecomponent.js:171 +msgid "Begins at" +msgstr "" + #: geoportailv3/static/js/draw/featurepopup.html:96 -#: geoportailv3/static/js/mymaps/mymaps.html:155 +#: geoportailv3/static/js/mymaps/mymaps.html:347 +#: geoportailv3/static/js/offlineNgeoComponent.html:105 +#: geoportailv3/static/js/offlineNgeoComponent.html:123 +#: geoportailv3/static/js/offlineNgeoComponent.html:74 msgid "Cancel" msgstr "Abbrechen" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:462 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:573 msgid "Carte copiée" msgstr "Karte kopiert" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:714 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:952 msgid "Carte créée" msgstr "Karte erstellt" -#: geoportailv3/static/js/mymaps/mymaps.html:38 +#: geoportailv3/static/js/mymaps/mymaps.html:39 msgid "Carte créée par" msgstr "Karte erstellt von: " -#: geoportailv3/templates/index.html:90 +#: geoportailv3/templates/index.html:121 msgid "Catalog" msgstr "Katalog" -#: geoportailv3/static/js/mymaps/mymaps.html:256 +#: geoportailv3/static/js/mymaps/mymaps.html:267 msgid "Catégorie" msgstr "Kategorie" -#: geoportailv3/static/js/imageupload/imguploaddirective.js:118 +#: geoportailv3/static/js/imageupload/imguploaddirective.js:116 msgid "Ce format d'image n'est as supporté." msgstr "Dieses Bildformat wird nicht unterstützt" -#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:71 +#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:72 msgid "Ce thème est protégé. Veuillez vous connecter." msgstr "Dieses Thema ist geschützt. Bitte melden Sie sich an" +#: geoportailv3/static/js/layerpermalinkservice.js:324 +msgid "" +"Certaines couches sont protégées. Veuillez vous connecter avec un " +"utilisateur disposant les droits de visualiser cette couche." +msgstr "Einige Layer sind geschützt. Bitte melden Sie sich mit einem Benutzer an, der berechtigt ist, diesen Layer einzusehen" + #: geoportailv3/static/js/themeswitcher/themes.html:4 msgid "Changer" msgstr "Wechseln" #: geoportailv3/static/js/draw/featurepopup.html:64 -#: geoportailv3/static/js/draw/styleediting.html:72 +#: geoportailv3/static/js/draw/styleediting.html:73 msgid "Changer sens de la ligne" msgstr "Richtung der Linie ändern" @@ -248,63 +314,88 @@ msgstr "Laden der Informationen" #: geoportailv3/static/js/externaldata/externaldata.html:15 msgid "Choose or write a WMS url" -msgstr "WMS URL auswählen oder eingeben" +msgstr "WM(T)S URL auswählen oder eingeben" #: geoportailv3/static/js/draw/draw.html:23 -#: geoportailv3/static/js/draw/drawdirective.js:694 +#: geoportailv3/static/js/draw/drawdirective.js:760 +#: node_modules/ngeo/src/draw/Controller.js:70 msgid "Circle" msgstr "Kreis" -#: geoportailv3/static/js/measure/measuredirective.js:147 +#: geoportailv3/static/js/measure/measuredirective.js:143 msgid "" "Click to continue drawing the line
Double-click or click last point to " "finish" msgstr "Klicken Sie um mit dem Zeichnen der Linie fortzufahren
Doppelklick zum Abschließen" -#: geoportailv3/static/js/measure/measuredirective.js:189 +#: geoportailv3/static/js/measure/measuredirective.js:185 msgid "" "Click to continue drawing the polygon
Double-click or click last point to" " finish" msgstr "Klicken Sie um mit dem Zeichnen des Polygons fortzufahren
Doppelklick zum Abschließen" -#: geoportailv3/static/js/draw/drawdirective.js:489 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:196 +#: node_modules/ngeo/src/measure/length.js:45 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" + +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:213 +#: node_modules/ngeo/src/measure/area.js:44 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:534 msgid "Click to draw the point" msgstr "Klicken Sie, um den Punkt zu plazieren" -#: geoportailv3/static/js/measure/measuredirective.js:210 +#: geoportailv3/static/js/measure/measuredirective.js:206 +#: node_modules/ngeo/src/measure/azimut.js:48 msgid "Click to finish" msgstr "Klicken Sie zum Abschließen" -#: geoportailv3/static/js/draw/drawdirective.js:507 +#: geoportailv3/static/js/draw/drawdirective.js:552 msgid "Click to place the label" msgstr "Klicken Sie, um den Text zu plazieren" -#: geoportailv3/static/js/measure/measuredirective.js:188 +#: geoportailv3/static/js/measure/measuredirective.js:184 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:212 msgid "Click to start drawing area" msgstr "Klicken Sie um mit dem Messen der Fläche anzufangen" -#: geoportailv3/static/js/measure/measuredirective.js:209 +#: geoportailv3/static/js/measure/measuredirective.js:205 msgid "Click to start drawing azimut" msgstr "Klicken Sie um mit dem Messen des Azimuts anzufangen" -#: geoportailv3/static/js/draw/drawdirective.js:503 +#: geoportailv3/static/js/draw/drawdirective.js:548 +#: node_modules/ngeo/src/measure/azimut.js:47 msgid "Click to start drawing circle" msgstr "Klicken Sie, um anzufangen, einen Kreis zu zeichnen" -#: geoportailv3/static/js/measure/measuredirective.js:165 +#: geoportailv3/static/js/measure/measuredirective.js:161 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:195 msgid "Click to start drawing length" msgstr "Klicken Sie um mit dem Messen der Länge anzufangen" -#: geoportailv3/static/js/draw/drawdirective.js:493 +#: node_modules/ngeo/src/measure/length.js:44 +msgid "Click to start drawing line" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:538 msgid "Click to start drawing line
Double-click to finish" -msgstr "Klicken Sie, um anzufangen, eine Linie zu erfassen
Doppelklick zum Abschließen" +msgstr "Klicken Sie, um anzufangen, eine Linie zu erfassen
Doppelklick oder ESC zum Abschließen
Drücken Sie ⌫ um den als letztes gesetzten Punkt zu entfernen
Wählen Sie die Option \"Strassenverlauf folgen\" um Ihre Linie auf das bestehende Strassennetz anzupassen" -#: geoportailv3/static/js/draw/drawdirective.js:498 +#: node_modules/ngeo/src/measure/area.js:43 +msgid "Click to start drawing polygon" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:543 msgid "" "Click to start drawing polygon
Double-click or click last point to finish" -msgstr "Klicken Sie, um anzufangen, ein Polygon zu zeichnen
Machen Sie einen Doppelklick oder klicken Sie auf den letzten Punkt, um abzuschießen" +msgstr "Klicken Sie, um anzufangen, ein Polygon zu zeichnen
Machen Sie einen Doppelklick, drücken sie ESC oder klicken Sie auf den letzten Punkt, um abzuschießen
Drücken Sie ⌫ um den als letztes gesetzten Punkt zu entfernen" -#: geoportailv3/static/js/measure/measuredirective.js:146 +#: geoportailv3/static/js/measure/measuredirective.js:142 msgid "Click to start drawing profile" msgstr "Klicken Sie um mit dem Messen des Profils anzufangen" @@ -313,7 +404,15 @@ msgstr "Klicken Sie um mit dem Messen des Profils anzufangen" msgid "Cliquez dans l'image pour agrandir" msgstr "Klicken Sie in das Bild, um es ze vergrössern" -#: geoportailv3/static/js/externaldata/externaldata.html:34 +#: geoportailv3/static/js/routing/routing.html:99 +msgid "" +"Cliquez droit (ou appui long sur mobile) à un endroit sur la carte pour " +"ajouter rapidement une adresse." +msgstr "Machen Sie einen Rechtsklick auf die Karte, um schnell eine Adresse hinzufügen.\nAuf mobilen Geräten einfach etwas länger klicken" + +#: geoportailv3/static/js/externaldata/externaldata.html:36 +#: geoportailv3/static/js/offlineNgeoComponent.html:24 +#: node_modules/ngeo/src/message/Disclaimer.js:154 msgid "Close" msgstr "Schliessen" @@ -324,15 +423,21 @@ msgstr "Schliessen" msgid "Color" msgstr "Farbe" +#: geoportailv3/static/js/query/info.html:12 +msgid "Commander" +msgstr "" + #: geoportailv3/static/js/query/mo.html:8 msgid "Commander fichier GML" msgstr "GML Datei bestellen" +#: geoportailv3/static/js/query/casiporeport.html:16 #: geoportailv3/static/js/query/pagreport.html:16 +#: geoportailv3/static/js/query/pdsreport.html:12 msgid "Commander rapport" msgstr "Bericht bestellen" -#: geoportailv3/static/js/query/parcels.html:12 +#: geoportailv3/static/js/query/parcels.html:24 msgid "Commander un extrait" msgstr "Auszug bestellen" @@ -360,15 +465,16 @@ msgstr "Konfigurierbar" msgid "Confirmation de redirection" msgstr "Bestätigung der Umleitung" -#: geoportailv3/static/js/mymaps/mymaps.html:193 +#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/mymaps/mymaps.html:173 msgid "Confirmation de suppression de la carte" msgstr "Bestätigung der Löschung der Karte" -#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:131 msgid "Confirmation de suppression des dessins" msgstr "Bestätigung der Löschung der Zeichnung" -#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:145 msgid "Confirmation de suppression des éléments de la carte" msgstr "Bestätigung der Löschung aller Elemente der Karte" @@ -377,10 +483,15 @@ msgid "Constitution de dossier de mesurage" msgstr "Vermessungsakte anlegen" #: geoportailv3/static/js/layerinfo/popup.html:23 -#: geoportailv3/templates/index.html:223 +#: geoportailv3/templates/index.html:296 msgid "Contact" msgstr "Kontakt" +#: node_modules/ngeo/src/filter/rulecomponent.js:167 +#: node_modules/ngeo/src/filter/rulecomponent.js:168 +msgid "Contains" +msgstr "" + #: geoportailv3/static/js/query/parcels.html:7 #: geoportailv3/static/js/query/parcels_go.html:7 #: geoportailv3/static/js/query/parcels_prof.html:7 @@ -395,14 +506,19 @@ msgstr "Linie weiterzeichnen" msgid "Contrainte d'utilisation" msgstr "Nutzungsbedingungen" -#: geoportailv3/static/js/mymaps/mymaps.html:93 +#: geoportailv3/static/js/mymaps/mymaps.html:100 msgid "Copier dans ma carte" msgstr "In meine Karte kopieren" -#: geoportailv3/templates/index.html:207 +#: geoportailv3/templates/index.html:277 msgid "Couches" msgstr "Layer" +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Couper une ligne" +msgstr "Eine Linie schneiden" + #: geoportailv3/static/js/authentication/authentication.html:12 msgid "Create a new user account" msgstr "Ein neues Benutzerkonto erstellen" @@ -419,7 +535,7 @@ msgstr "Skizze" msgid "Croquis indisponible" msgstr "Skizze nicht verfügbar" -#: geoportailv3/static/js/mymaps/mymaps.html:263 +#: geoportailv3/static/js/mymaps/mymaps.html:274 msgid "Créateur carte" msgstr "Ersteller der Karte" @@ -427,16 +543,16 @@ msgstr "Ersteller der Karte" msgid "Créer cercle concentrique" msgstr "Konzentrischen Kreis erstellen" -#: geoportailv3/static/js/mymaps/mymaps.html:48 +#: geoportailv3/static/js/mymaps/mymaps.html:49 msgid "Créer une copie" msgstr "Kopie erstellen" -#: geoportailv3/static/js/mymaps/mymaps.html:46 -#: geoportailv3/static/js/mymaps/mymaps.html:9 +#: geoportailv3/static/js/mymaps/mymaps.html:10 +#: geoportailv3/static/js/mymaps/mymaps.html:47 msgid "Créer une nouvelle carte" msgstr "Neue Karte erstellen" -#: geoportailv3/static/js/mymaps/mymaps.html:95 +#: geoportailv3/static/js/mymaps/mymaps.html:102 msgid "Créer une nouvelle carte à partir de ces dessins" msgstr "Neue Karte von diesen Zeichnungen erstellen" @@ -448,17 +564,25 @@ msgstr "Gestrichelt" msgid "Date" msgstr "Datum" -#: geoportailv3/static/js/print/printdirective.js:561 +#: geoportailv3/static/js/print/printdirective.js:580 msgid "Date d'impression:" msgstr "Druckdatum:" +#: geoportailv3/static/js/offlineNgeoComponent.html:36 +msgid "Deactivate offline mode" +msgstr "Offline-Modus ausschalten" + +#: geoportailv3/static/js/offlineNgeoComponent.html:48 +msgid "Delete data" +msgstr "Daten löschen" + #: geoportailv3/static/js/query/parcels.html:11 #: geoportailv3/static/js/query/parcels_go.html:11 #: geoportailv3/static/js/query/parcels_prof.html:11 msgid "Dernier mesurage" msgstr "Letze Messung" -#: geoportailv3/static/js/mymaps/mymaps.html:270 +#: geoportailv3/static/js/mymaps/mymaps.html:281 msgid "Dernière Actualisation" msgstr "Letzte Aktualisierung" @@ -467,7 +591,8 @@ msgid "Describe the problem within the current map extent:" msgstr "Bitte beschreiben Sie das Problem innerhalb des aktuellen Kartenausschnitts:" #: geoportailv3/static/js/layerinfo/popup.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:149 +#: geoportailv3/static/js/mymaps/mymaps.html:341 +#: geoportailv3/static/js/query/lignes_bus.html:3 #: geoportailv3/static/js/query/mymaps.html:7 msgid "Description" msgstr "Beschreibung" @@ -480,27 +605,61 @@ msgstr "Beschreibung des Dienstes" msgid "Description du service :" msgstr "Beschreibung des Dienstes :" -#: geoportailv3/templates/index.html:229 +#: geoportailv3/templates/index.html:302 msgid "Dessin" msgstr "Zeichnen" -#: geoportailv3/static/js/mymaps/mymaps.html:86 +#: geoportailv3/static/js/mymaps/mymaps.html:93 msgid "Dessins" msgstr "Zeichnungen" +#: geoportailv3/static/js/routing/routing.html:60 +msgid "Distance" +msgstr "Distanz" + #: geoportailv3/static/js/locationinfo/locationinfo.html:25 msgid "Distance approximative" msgstr "Ungefähre Entfernung" +#: geoportailv3/static/js/offlineNgeoComponent.html:117 +#: geoportailv3/static/js/offlineNgeoComponent.html:99 +msgid "Do you really want to remove your data ?" +msgstr "Wollen Sie Ihre Daten wirklich löschen?" + #: geoportailv3/static/js/draw/styleediting.html:61 msgid "Dotted" msgstr "Gepunktet" +#: geoportailv3/static/js/query/tracing.html:7 +msgid "DownStream" +msgstr "DownStream" + #: geoportailv3/static/js/profile/profile.html:13 msgid "Draw a line on the map to display an elevation profile." msgstr "Zeichnen Sie eine Linie auf der Karte um ein Höhenprofil zu erhalten." -#: geoportailv3/static/js/print/printdirective.js:562 +#: node_modules/ngeo/src/filter/rulecomponent.js:172 +msgid "During" +msgstr "" + +#: geoportailv3/static/js/routing/routing.html:70 +msgid "Dénivelé lors de votre trajet" +msgstr "Höhenunterschied Ihrer Route" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:44 +msgid "Désactiver Google Streetview" +msgstr "Google Street View deaktivieren" + +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Désactiver mode couper une ligne" +msgstr "Schneidmodus deaktivieren" + +#: geoportailv3/static/js/routing/routing.html:75 +msgid "Détail de votre trajet" +msgstr "Detaillierte Route" + +#: geoportailv3/static/js/print/printdirective.js:581 msgid "Echelle approximative 1:" msgstr "Ungefährer Maßstab 1:" @@ -508,13 +667,15 @@ msgstr "Ungefährer Maßstab 1:" msgid "Editer l'objet" msgstr "Objekt bearbeiten" -#: geoportailv3/static/js/mymaps/mymaps.html:172 -#: geoportailv3/static/js/mymaps/mymaps.html:186 -#: geoportailv3/static/js/mymaps/mymaps.html:200 +#: geoportailv3/static/js/mymaps/mymaps.html:138 +#: geoportailv3/static/js/mymaps/mymaps.html:152 +#: geoportailv3/static/js/mymaps/mymaps.html:166 +#: geoportailv3/static/js/mymaps/mymaps.html:180 +#: geoportailv3/static/js/query/tracing.html:8 msgid "Effacer" msgstr "Löschen" -#: geoportailv3/static/js/mymaps/mymaps.html:94 +#: geoportailv3/static/js/mymaps/mymaps.html:101 msgid "Effacer tous les dessins" msgstr "Alle Zeichnungen Löschen" @@ -531,6 +692,13 @@ msgstr "Höhe: {{ ctrl.featureElevation }}" msgid "Email" msgstr "Email" +#: geoportailv3/static/js/query/casiporeport.html:12 +msgid "" +"En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " +"les conditions générales " +"d'utilisation de ce site web." +msgstr "" + #: geoportailv3/static/js/query/pagreport.html:12 msgid "" "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " @@ -538,54 +706,67 @@ msgid "" "de ce site web." msgstr "Der Benutzer erklärt, die allgemeinen Geschäftsbedingungen gelesen zu haben und diese zu akzeptieren." -#: geoportailv3/static/js/mymapsservice.js:841 +#: geoportailv3/templates/index.html:51 +msgid "Enable offline mode" +msgstr "Offline-Modus einschalten" + +#: node_modules/ngeo/src/filter/rulecomponent.js:173 +msgid "Ends at" +msgstr "" + +#: geoportailv3/static/js/mymapsservice.js:929 msgid "Erreur inattendue lors de la copie de votre carte." msgstr "Unerwarteter Fehler bei der Kopie Ihrer Karte" -#: geoportailv3/static/js/mymapsservice.js:799 +#: geoportailv3/static/js/mymapsservice.js:887 msgid "Erreur inattendue lors de la création de votre carte." msgstr "Unerwarteter Fehler bei der Erstellung Ihrer Karte" -#: geoportailv3/static/js/mymapsservice.js:1014 -#: geoportailv3/static/js/mymapsservice.js:964 +#: geoportailv3/static/js/mymapsservice.js:1052 +#: geoportailv3/static/js/mymapsservice.js:1102 msgid "Erreur inattendue lors de la mise à jour de votre carte." msgstr "Unerwarteter Fehler bei dem Update Ihrer Karte" -#: geoportailv3/static/js/mymapsservice.js:1053 -#: geoportailv3/static/js/mymapsservice.js:1092 +#: geoportailv3/static/js/mymapsservice.js:1144 +#: geoportailv3/static/js/mymapsservice.js:1183 +#: geoportailv3/static/js/mymapsservice.js:1222 msgid "Erreur inattendue lors de la sauvegarde de votre modification." msgstr "Unerwarteter Fehler bei der Speicherung Ihrer Änderung" -#: geoportailv3/static/js/mymapsservice.js:757 +#: geoportailv3/static/js/mymapsservice.js:845 msgid "Erreur inattendue lors de la suppression d'un élement." msgstr "Unerwarteter Fehler beim Löschen eines Objekts" -#: geoportailv3/static/js/mymapsservice.js:869 +#: geoportailv3/static/js/mymapsservice.js:957 msgid "Erreur inattendue lors de la suppression de votre carte." msgstr "Unerwarteter Fehler beim Löschen Ihrer Karte" -#: geoportailv3/static/js/mymapsservice.js:898 +#: geoportailv3/static/js/mymapsservice.js:986 msgid "Erreur inattendue lors de la suppression des objets de la carte." msgstr "Unerwarteter Fehler beim Löschen eines Objekts der Karte." -#: geoportailv3/static/js/mymapsservice.js:467 +#: geoportailv3/static/js/mymapsservice.js:545 msgid "Erreur inattendue lors du chargement de vos cartes." msgstr "Unerwarteter Fehler beim Laden Ihrer Karten" -#: geoportailv3/static/js/mymapsservice.js:549 -#: geoportailv3/static/js/mymapsservice.js:727 +#: geoportailv3/static/js/mymapsservice.js:628 +#: geoportailv3/static/js/mymapsservice.js:815 msgid "Erreur inattendue lors du chargement de votre carte." msgstr "Unerwarteter Fehler beim Laden Ihrer Karte" -#: geoportailv3/static/js/mymaps/mymaps.html:196 +#: geoportailv3/static/js/mymaps/mymaps.html:162 msgid "Etes-vous certain de vouloir effacer la carte courrante ?" msgstr "Möchten sie die aktuelle Karte wirklich löschen?" -#: geoportailv3/static/js/mymaps/mymaps.html:168 +#: geoportailv3/static/js/mymaps/mymaps.html:176 +msgid "Etes-vous certain de vouloir effacer la carte intitulée :" +msgstr "Sind Sie sicher, dass Sie folgende Karte löschen wollen: " + +#: geoportailv3/static/js/mymaps/mymaps.html:134 msgid "Etes-vous certain de vouloir effacer tous les dessins ?" msgstr "Möchten Sie wirklich alle Zeichnungen löschen?" -#: geoportailv3/static/js/mymaps/mymaps.html:182 +#: geoportailv3/static/js/mymaps/mymaps.html:148 msgid "Etes-vous certain de vouloir effacer tous les éléments de la carte ?" msgstr "Sind Sie sicher, dass Sie alle Elemente der Karte löschen wollen?" @@ -594,22 +775,30 @@ msgid "Export csv" msgstr "CSV exportieren" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter GPX" msgstr "GPX exportieren" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter KMl" msgstr "KML exportieren" #: geoportailv3/static/js/draw/featurepopup.html:61 -#: geoportailv3/static/js/mymaps/mymaps.html:56 +#: geoportailv3/static/js/mymaps/mymaps.html:59 msgid "Exporter un GPX" msgstr "GPX exportieren" #: geoportailv3/static/js/draw/featurepopup.html:62 -#: geoportailv3/static/js/mymaps/mymaps.html:57 +#: geoportailv3/static/js/mymaps/mymaps.html:60 msgid "Exporter un KML" msgstr "KML exportieren" @@ -617,32 +806,42 @@ msgstr "KML exportieren" msgid "Facebook" msgstr "Facebook" -#: geoportailv3/templates/index.html:181 geoportailv3/templates/index.html:220 +#: geoportailv3/templates/index.html:231 geoportailv3/templates/index.html:293 msgid "Feedback" msgstr "Feedback" -#: geoportailv3/static/js/feedback/feedbackdirective.js:200 +#: geoportailv3/static/js/feedback/feedbackdirective.js:199 msgid "Feedback could not be sent to " msgstr "Feedback konnte nicht an gesendet werden" -#: geoportailv3/static/js/feedback/feedbackdirective.js:194 +#: geoportailv3/static/js/feedback/feedbackdirective.js:193 msgid "Feedback sent to " msgstr "Feedback an gesendet" #: geoportailv3/static/js/draw/symbolselector.html:102 -#: geoportailv3/static/js/mymaps/mymaps.html:54 +#: geoportailv3/static/js/mymaps/mymaps.html:57 msgid "Fermer" msgstr "Schließen" -#: geoportailv3/static/js/mymaps/mymaps.html:222 +#: geoportailv3/static/js/mymaps/mymaps.html:233 msgid "Filter results by category" msgstr "Filter : Kategorie" -#: geoportailv3/static/js/mymaps/mymaps.html:234 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:768 +#: geoportailv3/static/js/mymaps/mymaps.html:245 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1006 msgid "Filter results by username" msgstr "Filter: Benutzername" +#: geoportailv3/static/js/mymaps/mymaps.html:211 +msgid "Fusionner" +msgstr "Zusammenfügen" + +#: geoportailv3/static/js/mymaps/mymaps.html:103 +#: geoportailv3/static/js/mymaps/mymaps.html:188 +#: geoportailv3/static/js/mymaps/mymaps.html:54 +msgid "Fusionner des lignes" +msgstr "Linien zusammenfügen" + #: geoportailv3/static/js/query/pcn_pag.html:7 msgid "Generer Rapport (peut prendre 30 sec)" msgstr "Bericht erstellen ( kann bis zu 30 Sekunden dauern)" @@ -651,6 +850,10 @@ msgstr "Bericht erstellen ( kann bis zu 30 Sekunden dauern)" msgid "Generer un rapport pour toutes les selections" msgstr "Bericht für Gesamtauswahl erstellen" +#: node_modules/ngeo/src/geolocation/mobile.js:148 +msgid "Geolocation: An unknown error occurred." +msgstr "" + #: geoportailv3/static/js/query/affaires.html:6 msgid "Geometre" msgstr "Vermesser" @@ -663,51 +866,136 @@ msgstr "Layer anfragen" msgid "Google Plus" msgstr "Google Plus" +#: geoportailv3/static/js/offlineNgeoComponent.html:45 +msgid "Hide extent" +msgstr "Ausdehnung ausblenden" + #: geoportailv3/static/js/authentication/authentication.html:11 msgid "I lost my password" msgstr "Ich habe mein Passwort vergessen" +#: geoportailv3/static/js/query/tracing.html:4 +msgid "ID" +msgstr "ID" + +#: geoportailv3/static/js/query/pdsreport.html:1 +msgid "" +"Ici vous pouvez commander l'attestation \"plans directeurs sectoriels\" par " +"rapport au terrain séctionné" +msgstr "" + #: geoportailv3/static/js/query/pagreport.html:1 msgid "" "Ici vous pouvez commander le rapport relatif aux règles urbanistiques " "applicables au terrain séctionné" msgstr "Hier können Sie sich einen Bericht zu den Bebauungsverordnungen eines ausgewählten Grundstücks erstellen lassen." +#: geoportailv3/static/js/query/casiporeport.html:1 +msgid "" +"Ici vous pouvez commander le rapport relatif aux site potentiellement " +"contaminés" +msgstr "" + #: geoportailv3/static/js/query/pcn_pag.html:6 msgid "Identifiant" msgstr "Benutzer ID" -#: geoportailv3/static/js/mymaps/mymaps.html:58 -msgid "Importer un GPX" -msgstr "GPX importieren" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1186 +msgid "Il faut au moins 2 lignes disponibles pour pouvoir les fusionner." +msgstr "Sie müssen mindestens 2 verfügbare Linien auswählen, um sie zusammenführen zu können" -#: geoportailv3/static/js/mymaps/mymaps.html:59 -msgid "Importer un KML" -msgstr "KML importieren" +#: geoportailv3/static/js/streetview/streetview.html:4 +msgid "Il n'y a pas de panorama google disponible à cet endroit" +msgstr "An diesem Standort ist kein Google-Panorama verfügbar" + +#: geoportailv3/static/js/mymaps/mymaps.html:61 +msgid "Importer un GPX/KML/KMZ" +msgstr "Eine GPX/KML/KMZ - Datei importieren" #: geoportailv3/static/js/draw/symbolselector.html:100 msgid "Importer un symbole" msgstr "Symbol importieren" -#: geoportailv3/templates/index.html:244 +#: geoportailv3/static/js/wmsservice.js:114 +msgid "Impossible de contacter ce WMS" +msgstr "WM(T)S kann nicht kontaktiert werden" + +#: geoportailv3/static/js/wmtsservice.js:98 +msgid "Impossible de contacter ce WMTS" +msgstr "Dieser WMTS kann momentan nicht erreicht werden" + +#: geoportailv3/templates/index.html:317 msgid "Imprimer" msgstr "Drucken" -#: geoportailv3/templates/index.html:213 +#: geoportailv3/static/js/routing/routing.html:27 +msgid "Indiquez une adresse, un lieu" +msgstr "Geben Sie eine Adresse, einen Ort an" + +#: geoportailv3/templates/index.html:283 msgid "Infos(*)" msgstr "Infos(*)" +#: geoportailv3/static/js/routing/routing.html:37 +msgid "Insérez rapidement" +msgstr "Schnell hinzufügen" + +#: node_modules/ngeo/src/filter/rulecomponent.js:169 +msgid "Intersects" +msgstr "" + #: geoportailv3/static/js/usermanagerservice.js:128 #: geoportailv3/static/js/usermanagerservice.js:135 msgid "Invalid username or password." msgstr "Benutzername oder Passwort falsch" +#: node_modules/ngeo/src/filter/rulecomponent.js:159 +#: node_modules/ngeo/src/filter/rulecomponent.js:174 +msgid "Is equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:160 +msgid "Is greater than" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:161 +msgid "Is greater than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:170 +msgid "Is inside of" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:163 +msgid "Is lesser than" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:164 +msgid "Is lesser than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:166 +msgid "Is not equal to" +msgstr "" + +#: geoportailv3/templates/index.html:95 +msgid "Itinéraire en détail" +msgstr "Detaillierte Route" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:31 +msgid "Itinéraire mobilitéit.lu depuis ici" +msgstr "" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:32 +msgid "Itinéraire mobilitéit.lu vers ici" +msgstr "" + #: geoportailv3/static/js/layerinfo/popup.html:22 msgid "Keywords" msgstr "Stichwörter" -#: geoportailv3/static/js/mymapsservice.js:544 -#: geoportailv3/static/js/mymapsservice.js:722 +#: geoportailv3/static/js/mymapsservice.js:623 +#: geoportailv3/static/js/mymapsservice.js:810 msgid "La carte demandée n'existe pas." msgstr "Die von Ihnen gewünschte Karte existiert nicht." @@ -718,19 +1006,27 @@ msgid "" msgstr "Die Geolokalisierung ist nur in der abgesicherten Version des Geoportals (https) verfügbar.\nWollen Sie umgeleitet werden?" #: geoportailv3/static/js/draw/draw.html:8 -#: geoportailv3/static/js/draw/drawdirective.js:684 +#: geoportailv3/static/js/draw/drawdirective.js:735 msgid "Label" msgstr "Beschriftung" -#: geoportailv3/static/js/search/searchdirective.js:435 +#: geoportailv3/static/js/search/searchdirective.js:485 msgid "Layers" msgstr "Layer" -#: geoportailv3/static/js/print/printdirective.js:563 +#: geoportailv3/static/js/print/printdirective.js:582 msgid "Le géoportail national du Grand-Duché du Luxembourg" msgstr "Das öffentliche Geoportal des Grossherzogtums Luxemburg" -#: geoportailv3/templates/index.html:224 +#: geoportailv3/static/js/routing/routing.html:51 +msgid "Le plus court" +msgstr "Kürzeste Route" + +#: geoportailv3/static/js/routing/routing.html:50 +msgid "Le plus rapide" +msgstr "Schnellste Route" + +#: geoportailv3/templates/index.html:297 msgid "Legalites" msgstr "Legales" @@ -738,7 +1034,7 @@ msgstr "Legales" msgid "Legend" msgstr "mit Legende" -#: geoportailv3/templates/index.html:216 +#: geoportailv3/templates/index.html:286 msgid "Legends" msgstr "Legenden" @@ -750,7 +1046,7 @@ msgstr "Länge" msgid "Length:" msgstr "Länge:" -#: geoportailv3/static/js/mymaps/mymaps.html:26 +#: geoportailv3/static/js/mymaps/mymaps.html:27 msgid "" "Les couches sélectionnées dans le catalogue sont différentes de celles " "chargées avec votre carte. Voulez vous sauvegarder ces modifications dans " @@ -762,22 +1058,28 @@ msgstr "Die im Katalog ausgewählten Layer unterscheiden sich von denen auf Ihre #: geoportailv3/static/js/query/affaires.html:11 #: geoportailv3/static/js/query/asta_esp.html:6 #: geoportailv3/static/js/query/batiments.html:4 -#: geoportailv3/static/js/query/bus.html:6 +#: geoportailv3/static/js/query/bus.html:7 +#: geoportailv3/static/js/query/bus_wo_title.html:5 #: geoportailv3/static/js/query/cfl_hecto.html:4 #: geoportailv3/static/js/query/default.html:23 +#: geoportailv3/static/js/query/default_no_prefix.html:23 +#: geoportailv3/static/js/query/default_table.html:31 +#: geoportailv3/static/js/query/default_table_no_prefix.html:31 #: geoportailv3/static/js/query/flik.html:6 #: geoportailv3/static/js/query/inst_pub.html:5 #: geoportailv3/static/js/query/meteo.html:5 #: geoportailv3/static/js/query/mo.html:9 -#: geoportailv3/static/js/query/mymaps.html:14 +#: geoportailv3/static/js/query/mymaps.html:15 #: geoportailv3/static/js/query/ng95.html:9 #: geoportailv3/static/js/query/ont_poi.html:5 -#: geoportailv3/static/js/query/parcels.html:13 +#: geoportailv3/static/js/query/parcels.html:25 #: geoportailv3/static/js/query/parcels_go.html:26 #: geoportailv3/static/js/query/parcels_prof.html:25 #: geoportailv3/static/js/query/pcn_pag.html:8 +#: geoportailv3/static/js/query/pegel.html:5 #: geoportailv3/static/js/query/poi.html:4 #: geoportailv3/static/js/query/remembrements.html:6 +#: geoportailv3/static/js/query/sentier_nature.html:22 #: geoportailv3/static/js/query/urplang.html:8 #: geoportailv3/static/js/query/viti_flik.html:7 #: geoportailv3/static/js/query/viti_kleinlage.html:4 @@ -786,10 +1088,15 @@ msgstr "Die im Katalog ausgewählten Layer unterscheiden sich von denen auf Ihre msgid "Lien direct vers cet objet" msgstr "Direktlink zum Objekt" -#: geoportailv3/static/js/query/mymaps.html:13 +#: geoportailv3/static/js/query/mymaps.html:14 msgid "Lien vers la carte" msgstr "Link zur Karte" +#: geoportailv3/static/js/locationinfo/locationinfo.html:28 +msgid "Lien vers la démo lidar" +msgstr "Link zur LIDAR Demo" + +#: geoportailv3/static/js/query/parcels.html:12 #: geoportailv3/static/js/query/parcels_go.html:14 #: geoportailv3/static/js/query/parcels_prof.html:13 msgid "Lien vers les mesurages" @@ -805,7 +1112,8 @@ msgstr "Flurname" msgid "Line" msgstr "Linie" -#: geoportailv3/static/js/draw/drawdirective.js:690 +#: geoportailv3/static/js/draw/drawdirective.js:756 +#: node_modules/ngeo/src/draw/Controller.js:68 msgid "LineString" msgstr "Linie" @@ -817,6 +1125,10 @@ msgstr "Link zu den Metadaten" msgid "Location Coordinates" msgstr "Standortkoordinaten" +#: node_modules/ngeo/src/geolocation/mobile.js:142 +msgid "Location information is unavailable." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:4 msgid "Login" msgstr "Benutzername" @@ -833,6 +1145,19 @@ msgstr "Länge" msgid "Longueur" msgstr "Länge" +#: geoportailv3/static/js/query/sentier_nature.html:7 +msgid "Longueur du parcours" +msgstr "Länge" + +#: node_modules/ngeo/src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "" + +#: node_modules/ngeo/src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "" + +#: geoportailv3/static/js/query/parcels.html:16 #: geoportailv3/static/js/query/parcels_go.html:18 #: geoportailv3/static/js/query/parcels_go.html:19 #: geoportailv3/static/js/query/parcels_prof.html:17 @@ -840,8 +1165,8 @@ msgstr "Länge" msgid "MES_TYPE_{{file.filename | limitTo : 1 :5}}" msgstr "MES_TYPE_{{file.filename | limitTo : 1 :5}}" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:660 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:926 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1165 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:896 msgid "Map without Title" msgstr "Karte ohne Titel" @@ -853,12 +1178,13 @@ msgstr "Meine Symbole" msgid "Mesurage" msgstr "Vermessungsakte" +#: geoportailv3/static/js/query/parcels.html:19 #: geoportailv3/static/js/query/parcels_go.html:22 #: geoportailv3/static/js/query/parcels_prof.html:21 msgid "Mesurage non disponible" msgstr "Vermessung nicht verfügbar" -#: geoportailv3/templates/index.html:237 +#: geoportailv3/templates/index.html:310 msgid "Mesurer" msgstr "Messen" @@ -866,11 +1192,15 @@ msgstr "Messen" msgid "Modification des informations" msgstr "Informationen ändern" -#: geoportailv3/static/js/mymaps/mymaps.html:123 +#: geoportailv3/static/js/mymaps/mymaps.html:315 msgid "Modify title and description of the map" msgstr "Titel und Beschreibung der Karte ändern" -#: geoportailv3/templates/index.html:210 +#: node_modules/ngeo/src/filter/rulecomponent.js:826 +msgid "Move" +msgstr "" + +#: geoportailv3/templates/index.html:280 msgid "My Maps(*)" msgstr "My Maps(*)" @@ -879,7 +1209,7 @@ msgstr "My Maps(*)" msgid "My account" msgstr "Mein Konto" -#: geoportailv3/static/js/elevationservice.js:50 +#: geoportailv3/static/js/elevationservice.js:47 msgid "N/A" msgstr "N/A" @@ -899,6 +1229,10 @@ msgstr "Natur" msgid "No layer selected" msgstr "Kein Layer ausgewählt" +#: geoportailv3/static/js/offlineNgeoComponent.html:86 +msgid "No maps selected for saving." +msgstr "Es sind keine Karten ausgewählt, die abgespeichert werden können" + #: geoportailv3/static/js/draw/symbolselector.html:20 #: geoportailv3/static/js/query/cfl_hecto.html:3 #: geoportailv3/static/js/query/remembrements.html:3 @@ -907,11 +1241,32 @@ msgstr "Kein Layer ausgewählt" msgid "Nom" msgstr "Name" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:983 +#: node_modules/ngeo/src/filter/component.js:162 +msgid "None" +msgstr "" + +#: geoportailv3/static/js/mymaps/mymaps.html:194 +msgid "Nouveau nom" +msgstr "Neuer Name" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1246 msgid "Nouvelle carte créée" msgstr "Neue Karte erstellt" +#: geoportailv3/static/js/mymaps/mymaps.html:199 +msgid "Nouvelle description" +msgstr "Neue Beschreibung" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1180 +msgid "Nouvelle ligne" +msgstr "Neue Linie" + +#: geoportailv3/static/js/query/lignes_bus.html:3 +msgid "Num ligne" +msgstr "Liniennummer" + #: geoportailv3/static/js/query/affaires.html:4 +#: geoportailv3/static/js/query/tracing.html:3 #: geoportailv3/static/js/query/viti_parcels.html:3 msgid "Numero" msgstr "Nummer" @@ -934,7 +1289,7 @@ msgstr "Parzellennummer" #: geoportailv3/static/js/draw/featurepopup.html:119 #: geoportailv3/static/js/draw/featurepopup.html:139 -#: geoportailv3/static/js/draw/styleediting.html:123 +#: geoportailv3/static/js/draw/styleediting.html:124 msgid "OK" msgstr "OK" @@ -948,8 +1303,23 @@ msgstr "Die Datei als PDF erhalten" msgid "Occupation" msgstr "Bebauung" +#: geoportailv3/static/js/offlineNgeoComponent.html:27 +msgid "Offline map" +msgstr "Offline Karte" + +#: geoportailv3/static/js/offlineNgeoComponent.html:100 +#: geoportailv3/static/js/offlineNgeoComponent.html:118 +#: geoportailv3/static/js/offlineNgeoComponent.html:69 +#: geoportailv3/static/js/offlineNgeoComponent.html:87 +msgid "Ok" +msgstr "" + +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Operation canceled" +msgstr "Aktion abgebrochen" + #: geoportailv3/static/js/askredirect/askredirect.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:29 +#: geoportailv3/static/js/mymaps/mymaps.html:30 msgid "Oui" msgstr "Ja" @@ -958,20 +1328,20 @@ msgstr "Ja" msgid "Ouvrir la PF" msgstr "PF öffnen" -#: geoportailv3/static/js/mymaps/mymaps.html:208 +#: geoportailv3/static/js/mymaps/mymaps.html:219 #: geoportailv3/static/js/mymaps/mymaps.html:6 msgid "Ouvrir une carte" msgstr "Eine Karte öffnen" -#: geoportailv3/static/js/mymaps/mymaps.html:47 +#: geoportailv3/static/js/mymaps/mymaps.html:48 msgid "Ouvrir une carte existante" msgstr "Eine bereits existierende Karte öffnen" -#: geoportailv3/templates/index.html:249 +#: geoportailv3/templates/index.html:324 msgid "Partager" msgstr "Teilen" -#: geoportailv3/static/js/mymaps/mymaps.html:49 +#: geoportailv3/static/js/mymaps/mymaps.html:50 msgid "Partager la carte" msgstr "Karte teilen" @@ -983,6 +1353,10 @@ msgstr "Passwort" msgid "Perimetre" msgstr "Perimeter" +#: geoportailv3/static/js/routing/routing.html:98 +msgid "Petite astuce!" +msgstr "Kleiner Tip!" + #: geoportailv3/static/js/feedback/feedback.html:9 msgid "Pick layer where problem occurs" msgstr "Wählen Sie den Layer aus, auf welchem das Problem auftaucht " @@ -991,12 +1365,12 @@ msgstr "Wählen Sie den Layer aus, auf welchem das Problem auftaucht " msgid "Plain" msgstr "Durchgehend" -#: geoportailv3/static/js/feedback/feedbackdirective.js:111 -#: geoportailv3/static/js/feedback/feedbackdirective.js:134 +#: geoportailv3/static/js/feedback/feedbackdirective.js:110 +#: geoportailv3/static/js/feedback/feedbackdirective.js:133 msgid "Please pick a layer" msgstr "Wählen Sie bitte einen Layer aus " -#: geoportailv3/static/js/mymaps/mymapsdirective.js:802 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1040 msgid "Please select a Category" msgstr "Wählen Sie bitte eine Kategorie aus" @@ -1005,18 +1379,20 @@ msgid "Please wait, the profile is loading." msgstr "Bitte warten, Höhenprofil wird geladen" #: geoportailv3/static/js/draw/draw.html:3 -#: geoportailv3/static/js/draw/drawdirective.js:686 +#: geoportailv3/static/js/draw/drawdirective.js:737 +#: node_modules/ngeo/src/draw/Controller.js:67 msgid "Point" msgstr "Punkt" #: geoportailv3/static/js/draw/draw.html:18 -#: geoportailv3/static/js/draw/drawdirective.js:696 +#: geoportailv3/static/js/draw/drawdirective.js:765 +#: node_modules/ngeo/src/draw/Controller.js:69 msgid "Polygon" msgstr "Polygon " #: geoportailv3/static/js/externaldata/externaldata.html:14 msgid "Predefined wms" -msgstr "Vordefinierte WMS" +msgstr "Vordefinierte WM(T)S" #: geoportailv3/static/js/measure/measure.html:15 msgid "Profile" @@ -1026,7 +1402,11 @@ msgstr "Höhenprofil" msgid "Proprietaire" msgstr "Besitzer" -#: geoportailv3/static/js/mymaps/mymaps.html:136 +#: geoportailv3/static/js/query/info.html:5 +msgid "Prévisualisation du mesurage" +msgstr "Voranschau des Vermessungsplans" + +#: geoportailv3/static/js/mymaps/mymaps.html:328 msgid "Public Map" msgstr "Öffentliche Karte" @@ -1039,7 +1419,11 @@ msgstr "Öffentlich" msgid "Rayon:" msgstr "Radius:" -#: geoportailv3/static/js/search/search.html:6 +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Read failed" +msgstr "" + +#: geoportailv3/static/js/search/search.html:8 msgid "Recherche adresse, parcelles, couches ..." msgstr "Suche Adressen, Parzellen, Layer ..." @@ -1047,6 +1431,10 @@ msgstr "Suche Adressen, Parzellen, Layer ..." msgid "Rechercher un symbole" msgstr "Symbolsuche" +#: node_modules/ngeo/src/draw/Controller.js:71 +msgid "Rectangle" +msgstr "" + #: geoportailv3/static/js/query/affaires.html:7 msgid "Region" msgstr "Region" @@ -1055,7 +1443,7 @@ msgstr "Region" msgid "Report a map content problem:" msgstr "Ein Karteninhaltsproblem melden:" -#: geoportailv3/static/js/mymaps/mymaps.html:28 +#: geoportailv3/static/js/mymaps/mymaps.html:29 msgid "Reset" msgstr "Reset" @@ -1067,17 +1455,34 @@ msgstr "Miniaturbild entfernen" msgid "Revision date" msgstr "Revisionsdatum" -#: geoportailv3/static/js/mymaps/mymaps.html:156 -#: geoportailv3/static/js/mymaps/mymaps.html:157 -#: geoportailv3/static/js/mymaps/mymaps.html:158 +#: node_modules/ngeo/src/filter/rulecomponent.js:835 +msgid "Rotate" +msgstr "" + +#: geoportailv3/static/js/routing/routingdirective.js:1100 +msgid "Route du" +msgstr "Wegberechnung vom" + +#: geoportailv3/templates/index.html:215 geoportailv3/templates/index.html:289 +msgid "Routing" +msgstr "Routing" + +#: geoportailv3/static/js/mymaps/mymaps.html:348 +#: geoportailv3/static/js/mymaps/mymaps.html:349 +#: geoportailv3/static/js/mymaps/mymaps.html:350 msgid "Save changes" msgstr "Änderungen speichern" -#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/offlineNgeoComponent.html:11 +msgid "Save map" +msgstr "Karte speichern" + +#: geoportailv3/static/js/mymaps/mymaps.html:351 +#: geoportailv3/static/js/offlineNgeoComponent.html:55 msgid "Save new map" msgstr "Neue Karte speichern" -#: geoportailv3/static/js/mymaps/mymaps.html:213 +#: geoportailv3/static/js/mymaps/mymaps.html:224 msgid "Search Maps" msgstr "Karten suchen" @@ -1105,6 +1510,10 @@ msgstr "Nur den « Meine Karten » - Link teilen " msgid "Short Url" msgstr "Url" +#: geoportailv3/static/js/offlineNgeoComponent.html:46 +msgid "Show extent" +msgstr "Ausdehnung anzeigen" + #: geoportailv3/static/js/share/shorturl.html:12 msgid "Show long url" msgstr "Lange URL anzeigen" @@ -1113,8 +1522,8 @@ msgstr "Lange URL anzeigen" msgid "Show orientation" msgstr "Ausrichtung anzeigen" -#: geoportailv3/static/js/draw/styleediting.html:107 -#: geoportailv3/static/js/draw/styleediting.html:93 +#: geoportailv3/static/js/draw/styleediting.html:108 +#: geoportailv3/static/js/draw/styleediting.html:94 msgid "Size" msgstr "Größe" @@ -1140,11 +1549,15 @@ msgstr "Zeichnung stilisieren" msgid "Submit" msgstr "Einloggen" -#: geoportailv3/static/js/mymaps/mymaps.html:51 +#: geoportailv3/static/js/draw/draw.html:34 +msgid "Suivre la route" +msgstr "Strassenverlauf folgen" + +#: geoportailv3/static/js/mymaps/mymaps.html:52 msgid "Supprimer la carte" msgstr "Karte löschen" -#: geoportailv3/static/js/mymaps/mymaps.html:52 +#: geoportailv3/static/js/mymaps/mymaps.html:53 msgid "Supprimer tous les élements de la carte" msgstr "Alle Elemente der Karte löschen" @@ -1155,11 +1568,15 @@ msgstr "Alle Elemente der Karte löschen" msgid "Surface" msgstr "Fläche" -#: geoportailv3/static/js/draw/styleediting.html:78 +#: geoportailv3/static/js/mymaps/mymaps.html:8 +msgid "Switch to 2D to create a map" +msgstr "Wechseln Sie in den 2D - Modus, um eine Karte zu erstellen" + +#: geoportailv3/static/js/draw/styleediting.html:79 msgid "Symbol" msgstr "Symbol" -#: geoportailv3/static/js/draw/styleediting.html:81 +#: geoportailv3/static/js/draw/styleediting.html:82 msgid "" "Symbol\n" " \n" @@ -1172,17 +1589,25 @@ msgstr "Symbol\n map link " "will be sent to our support team." msgstr "Folgender Kartenlink wird an unser Support Team gesendet" -#: geoportailv3/static/js/exclusionmanagerservice.js:138 +#: geoportailv3/static/js/exclusionmanagerservice.js:140 msgid "" "The layer {{layersToRemove}} has been removed because it cannot be " "displayed while the layer {{layer}} is displayed" @@ -1200,6 +1625,10 @@ msgstr "Keine Legende für diesen Layer" msgid "The metadata is right now not available" msgstr "Die Metadaten sind momentan nicht erhältlich" +#: node_modules/ngeo/src/geolocation/mobile.js:145 +msgid "The request to get user location timed out." +msgstr "" + #: geoportailv3/static/js/themeswitcher/themes.html:2 msgid "Theme" msgstr "Thema" @@ -1208,20 +1637,20 @@ msgstr "Thema" msgid "Title" msgstr "Titel" -#: geoportailv3/static/js/mymaps/mymaps.html:124 -#: geoportailv3/static/js/mymaps/mymaps.html:126 +#: geoportailv3/static/js/mymaps/mymaps.html:316 +#: geoportailv3/static/js/mymaps/mymaps.html:318 msgid "Title and description of the map" msgstr "Titel und Beschreibung der Karte" -#: geoportailv3/static/js/mymaps/mymaps.html:125 +#: geoportailv3/static/js/mymaps/mymaps.html:317 msgid "Title and description of the map copy" msgstr "Titel und Beschreibung der Kartenkopie" -#: geoportailv3/static/js/mymaps/mymaps.html:249 +#: geoportailv3/static/js/mymaps/mymaps.html:260 msgid "Titre" msgstr "Titel" -#: geoportailv3/static/js/mymaps/mymaps.html:131 +#: geoportailv3/static/js/mymaps/mymaps.html:323 msgid "Titre de la carte" msgstr "Kartentitel" @@ -1240,15 +1669,39 @@ msgstr "Twitter" msgid "Type" msgstr "Typ" -#: geoportailv3/static/js/usermanagerservice.js:152 -#: geoportailv3/static/js/usermanagerservice.js:160 +#: geoportailv3/static/js/routing/routing.html:77 +msgid "Télécharger" +msgstr "Herunterladen" + +#: geoportailv3/static/js/query/sentier_nature.html:9 +msgid "Télécharger la brochure" +msgstr "Flyer herunterladen" + +#: geoportailv3/static/js/routing/routingdirective.js:1120 +msgid "Une copie de votre route a été enregistrée dans Mymaps." +msgstr "Eine Kopie des Weges wurde in Ihrem Karten (My maps) abgespeichert." + +#: geoportailv3/static/js/usermanagerservice.js:153 +#: geoportailv3/static/js/usermanagerservice.js:161 msgid "Une erreur est survenue durant la déconnexion." msgstr "Ein Fehler ist während der Verbindung aufgetreten" +#: geoportailv3/static/js/query/tracing.html:6 +msgid "UpStream" +msgstr "UpStream" + +#: node_modules/ngeo/src/misc/File.js:87 +msgid "Upload failed" +msgstr "" + #: geoportailv3/static/js/layerinfo/popup.html:18 msgid "Url vers la resource" msgstr "URL zur Ressource" +#: node_modules/ngeo/src/geolocation/mobile.js:139 +msgid "User denied the request for Geolocation." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:7 msgid "Username" msgstr "Benutzername" @@ -1261,7 +1714,8 @@ msgstr "Bestätigen" msgid "Valider" msgstr "Validieren" -#: geoportailv3/static/js/query/reportdirective.js:131 +#: geoportailv3/static/js/query/reportdirective.js:135 +#: geoportailv3/static/js/query/reportdirective.js:275 msgid "Veuillez accepter les termes du rapport" msgstr "Bitte stimmen Sie den Nutzungsbedingungen zu" @@ -1273,28 +1727,64 @@ msgstr "Wählen Sie ein Symbol aus eine Kategorie aus" msgid "Veuillez entrer les caractéristiques de votre nouveau cercle" msgstr "Bitte erfassen Sie die Eigenschaften des neuen Kreises" -#: geoportailv3/static/js/query/reportdirective.js:126 +#: geoportailv3/static/js/query/reportdirective.js:130 +#: geoportailv3/static/js/query/reportdirective.js:270 +#: geoportailv3/static/js/query/reportdirective.js:410 msgid "Veuillez saisir une adresse email valide" msgstr "Bitte erfassen Sie eine gültige Email-Adresse" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:1068 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1336 +#: geoportailv3/static/js/routing/routingdirective.js:1132 msgid "Veuillez vous identifier afin d'accéder à vos cartes" msgstr "Melden Sie sich bitte an, um auf Ihre Karten zurück zu greifen" -#: geoportailv3/static/js/query/reportdirective.js:138 +#: geoportailv3/static/js/query/tracing.html:6 +#: geoportailv3/static/js/query/tracing.html:7 +msgid "Visualiser" +msgstr "Anzeigen" + +#: geoportailv3/templates/index.html:225 +msgid "Voir le plan" +msgstr "Zur Karte" + +#: geoportailv3/static/js/query/reportdirective.js:419 +msgid "" +"Votre attestation est en train d'être généré. Un email vous sera envoyé à " +"l'adresse {{email}} dès qu'il sera disponible" +msgstr "" + +#: geoportailv3/static/js/query/reportdirective.js:142 +#: geoportailv3/static/js/query/reportdirective.js:282 msgid "" "Votre rapport est en train d'être généré. Un email vous sera envoyé à " "l'adresse {{email}} dès qu'il sera disponible" msgstr "Ihr Bericht wird erstellt. Sie erhalten eine Email an die Adresse {{email}} sobald er verfügbar ist." -#: geoportailv3/static/js/mymapsservice.js:1106 +#: geoportailv3/static/js/mymapsservice.js:1236 msgid "Votre utilisateur n'a pas les autorisations suffisantes." msgstr "Ihr Benutzer hat keine ausreichende Befugnis" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:451 +msgid "" +"Vous êtes en mode découpage.
Veuillez cliquer sur une ligne pour la " +"couper en deux." +msgstr "Sie sind im Schneidmodus.
Klicken Sie auf eine Linie, um sie in Zwei zu teilen" + #: geoportailv3/static/js/usermanagerservice.js:123 msgid "Vous êtes maintenant correctement connecté." msgstr "Sie sind korrekt angemeldet" +#: geoportailv3/static/js/offlineNgeoComponent.html:114 +#: geoportailv3/static/js/offlineNgeoComponent.html:65 +#: geoportailv3/static/js/offlineNgeoComponent.html:83 +#: geoportailv3/static/js/offlineNgeoComponent.html:96 +msgid "Warning" +msgstr "" + +#: geoportailv3/static/js/search/searchdirective.js:538 +msgid "Website Pages" +msgstr "" + #: geoportailv3/static/js/print/print.html:13 msgid "With legend" msgstr "Mit Legende" @@ -1306,7 +1796,7 @@ msgid "" "send to the support team." msgstr "Sie können auch dieZeichenfunktionen benutzen, um die Karte zu kommentieren." -#: geoportailv3/static/js/mymaps/mymapsdirective.js:907 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1146 msgid "You have no existing Maps, please create a New Map" msgstr "Sie besitzen keine Karten, bitte erstellen Sie eine Karte" @@ -1462,31 +1952,35 @@ msgstr "Aus Luftaufnahmen vervollständigtes Gebäude" msgid "blank" msgstr "Kein Hintergrund" +#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 +msgid "f_formatted_length" +msgstr "" + #: geoportailv3/static/js/query/attribute_values_for_translation.html:128 msgid "f_percentage" msgstr "Pourcentage" -#: geoportailv3/templates/index.html:132 +#: geoportailv3/templates/index.html:164 msgid "infos" msgstr "Informationen" -#: geoportailv3/templates/index.html:48 +#: geoportailv3/templates/index.html:70 msgid "lang" msgstr "Sprache" -#: geoportailv3/templates/index.html:77 +#: geoportailv3/templates/index.html:104 msgid "layers" msgstr "Layer" -#: geoportailv3/templates/index.html:167 +#: geoportailv3/templates/index.html:201 msgid "legends" msgstr "Legenden" -#: geoportailv3/templates/index.html:85 +#: geoportailv3/templates/index.html:116 msgid "my_layers" msgstr "Meine Layer" -#: geoportailv3/templates/index.html:113 +#: geoportailv3/templates/index.html:145 msgid "my_maps" msgstr "My Maps" @@ -1495,7 +1989,7 @@ msgstr "My Maps" msgid "mètres" msgstr "Meter" -#: geoportailv3/static/js/search/searchdirective.js:448 +#: geoportailv3/static/js/search/searchdirective.js:498 msgid "open in theme" msgstr "im Thema öffnen" @@ -1559,10 +2053,6 @@ msgstr "Gebäude aus der BDTOPO" msgid "pf_bâtiment commercial" msgstr "Handelsgebäude" -#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 -msgid "pf_bâtiment non défini" -msgstr "Unbestimmtes Gebäude" - #: geoportailv3/static/js/query/attribute_values_for_translation.html:94 msgid "pf_bâtiment public" msgstr "Öffentliches Gebäude" @@ -1859,7 +2349,7 @@ msgstr "Forstwirtschaft" msgid "rem_typ_5002" msgstr "Weinbau" -#: geoportailv3/templates/index.html:39 +#: geoportailv3/templates/index.html:57 msgid "search" msgstr "Suchen" @@ -1867,11 +2357,15 @@ msgstr "Suchen" msgid "sentier" msgstr "Weg:" -#: geoportailv3/templates/index.html:41 +#: geoportailv3/templates/index.html:63 msgid "user" msgstr "Benutzer" -#: geoportailv3/static/js/print/printdirective.js:560 +#: geoportailv3/static/js/routing/routing.html:37 +msgid "votre position actuelle" +msgstr "Aktuelle Position anzeigen" + +#: geoportailv3/static/js/print/printdirective.js:579 msgid "" "www.geoportail.lu est un portail d'accès aux informations géolocalisées, " "données et services qui sont mis à disposition par les administrations " @@ -1883,6 +2377,10 @@ msgid "" "Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" msgstr "www.geoportail.lu ist ein Portal zur Einsicht von geolokalisierten Informationen, Daten und Diensten, die von den öffentlichen luxemburgischen Behörden zur Verfügung gestellt werden Haftung: Obwohl die Behörden mit aller Sorgfalt auf die Richtigkeit der veröffentlichten Informationen achten, kann hinsichtlich der inhaltlichen Richtigkeit, Genauigkeit, Aktualität, Zuverlässigkeit und Vollständigkeit dieser Informationen keine Gewährleistung übernommen werden. Informationen ohne rechtliche Garantie.\nCopyright: Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" +#: node_modules/ngeo/src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "" + #: geoportailv3/static/js/query/batiments.html:3 msgid "{{(\"bat_\"+feature.attributes.type) | translate}}" msgstr "{{(\"bat_\"+feature.attributes.type) | translate}}" @@ -1895,6 +2393,23 @@ msgstr "{{(\"rem_status_\"+feature.attributes.K_STATUS) | translate}}" msgid "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" msgstr "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" +#: geoportailv3/static/js/query/lignes_bus.html:6 +#: geoportailv3/static/js/query/lignes_bus.html:7 +#: geoportailv3/static/js/query/lignes_bus.html:8 +msgid "{{feature.attributes.label}}" +msgstr "" + +#: geoportailv3/static/js/query/lignes_bus.html:9 +msgid "{{feature.attributes.map_description}}" +msgstr "" + +#: geoportailv3/static/js/offlineNgeoComponent.html:68 +msgid "" +"~{{$ctrl.estimatedLoadDataSize}}MB of maps will be downloaded - Don't lock " +"your device or navigate away from this site during the download process. " +"Deactivate \"private\" mode of your browser." +msgstr "Es werden ~{{$ctrl.estimatedLoadDataSize}}MB an Kartenmaterial heruntergeladen - Bitte sperren Sie Ihr Gerät nicht und schliessen Sie die Seite nicht während dem Downloadprozess. Bitte deaktivieren Sie auch den \"private\" Modus Ihres Browsers." + #: geoportailv3/static/js/draw/featurepopup.html:113 msgid "Êtes-vous certain de vouloir effacer cet élément de la carte ?" msgstr "Sind Sie sicher dass Sie dieses Element der Karte löschen wollen?" @@ -1951,7 +2466,7 @@ msgstr "API" msgid "arbed" msgstr "ARBED" -#: theme.114 group.253 +#: theme.114 msgid "commande" msgstr "Gemeinde" @@ -2085,7 +2600,7 @@ msgstr "Natura 2000" #: lu_int_wms.147 msgid "arrets_bus" -msgstr "Öffentlicher Transport" +msgstr "Öffentlicher Transport - Haltestellen" #: lu_ext_wms.148 msgid "user_content_vtt" @@ -2121,7 +2636,7 @@ msgstr "Topographische Karte 1:20k 1979 S/W" #: lu_int_wms.157 msgid "env_bruit_air_lden" -msgstr "Flughafen 2011 (LDEN)" +msgstr "Großflughafen 2011 (Lden)" #: lu_ext_wms.158 msgid "tour_cfl" @@ -2153,7 +2668,7 @@ msgstr "Adressen" #: group.166 msgid "env_bruit" -msgstr "Lärmbelastung" +msgstr "Umweltlärm" #: lu_int_wms.167 msgid "env_corine" @@ -2207,10 +2722,6 @@ msgstr "Lokale Wanderwege (kein Unterhalt von der Tourismusdirektion)" msgid "anf_secteurs_ecologiques_group" msgstr "Ökologische Wuchsgebiete" -#: l_wmts.181 -msgid "roads" -msgstr "Straßennetz" - #: l_wmts.182 msgid "ac_wellenstein_pag_zones" msgstr "Zonen" @@ -2305,7 +2816,7 @@ msgstr "Wetterdaten" #: lu_ext_wms.205 msgid "tour_escape_ardenne" -msgstr "EscapArdenne" +msgstr "Escapardenne" #: l_wmts.206 msgid "topo_20k" @@ -2343,9 +2854,9 @@ msgstr "Parzellen" msgid "eau_new_Provisorische_ZPS" msgstr "Provisorische ZPS" -#: l_wmts.216 -msgid "decoupage_communes" -msgstr "Gemeindecode" +#: theme.1388 +msgid "sig_secours" +msgstr "Secours" #: l_wmts.217 msgid "TOPO_CARTESHISTO_1966-74_50k" @@ -2425,11 +2936,11 @@ msgstr "Lagen im Weinbau" #: l_wmts.215 msgid "env_obs2007" -msgstr "Biotoptypenkartierung 2007" +msgstr "Bodennutzung 2007" #: l_wmts.163 msgid "env_obs1999" -msgstr "Biotoptypenkartierung 1999" +msgstr "Bodennutzung 1999" #: group.236 msgid "group_ac_remich_pag" @@ -2485,7 +2996,7 @@ msgstr "My Maps" #: lu_ext_wms.250 msgid "tour_DeLux" -msgstr "Naturwanderpark DeLux" +msgstr "Naturwanderpark Delux" #: l_wmts.251 msgid "ign_ortho" @@ -2699,10 +3210,6 @@ msgstr "Geologische Karte, neue Ausgabe" msgid "tour_mymaps" msgstr "Wanderwege" -#: lu_ext_wms.316 lu_int_wms.749 -msgid "env_sentiersnature" -msgstr "Naturpfade" - #: group.317 msgid "eau_topographie" msgstr "Topographie" @@ -2741,7 +3248,7 @@ msgstr "Umwelt, Biologie und Geologie" #: lu_int_wms.327 msgid "env_bruit_air_lngt" -msgstr "Flughafen 2011 (LNGT)" +msgstr "Großflughafen 2011 (Lngt)" #: l_wmts.328 msgid "1907_CAHANSEN" @@ -2819,10 +3326,6 @@ msgstr "Alle öffentliche Karten meines Hauptkontos" msgid "all_my_maps" msgstr "Alle meine öffentlichen Karten" -#: l_wmts.351 -msgid "roads_labels" -msgstr "Straßennamen" - #: lu_int_wms.352 msgid "cfl_hecto" msgstr "Kilometrierung der CFL-Strecken" @@ -2895,7 +3398,7 @@ msgstr "Bezirke (Namen)" msgid "country" msgstr "Landesgrenzen" -#: lu_int_wms.256 +#: lu_int_wms.256 lu_int_wms.822 msgid "feuilles_cadastrales" msgstr "Kataster Urpläne" @@ -2909,23 +3412,23 @@ msgstr "Kleinlagen im Weinbau" #: lu_int_wms.297 msgid "ivv_flik_parcels" -msgstr "FLIK Referenzparzellen Weinbau 2016" +msgstr "FLIK Referenzparzellen Weinbau 2017" #: l_wmts.326 msgid "env_bruit_axes_routiers_lden" -msgstr "Strassen 2011 (LDEN)" +msgstr "Hauptverkehrsstraßen 2011 (Lden)" #: l_wmts.255 msgid "env_bruit_axes_routiers_lngt" -msgstr "Strassen 2011 (LNGT)" +msgstr "Hauptverkehrsstraßen 2011 (Lngt)" #: l_wmts.259 msgid "env_bruit_axes_ferroviaires_lngt" -msgstr "Eisenbahnlinien 2011 (LNGT)" +msgstr "Haupteisenbahnstrecken 2011 (Lngt)" #: l_wmts.310 msgid "env_bruit_axes_ferroviaires_lden" -msgstr "Eisenbahnlinien 2011 (LDEN)" +msgstr "Haupteisenbahnstrecken 2011 (Lden)" #: lu_int_wms.367 msgid "natur_an_emwelt_terrains" @@ -2951,6 +3454,10 @@ msgstr "Punktuelle Objekte" msgid "emwelt_biotop_kadaster_s" msgstr "Steuobstwiesen" +#: group.253 +msgid "commande_grp" +msgstr "Commande" + #: group.373 msgid "eau_new_Trinkwasser_Schutzzonen_(ZPS)" msgstr "Trinkwasser Schutzzonen [ZPS]" @@ -3029,15 +3536,15 @@ msgstr "Gallo-Romain" #: group.392 msgid "at_pst" -msgstr "SP Transport" +msgstr "SLP Transport" #: group.393 msgid "at_pszae" -msgstr "SP Gewerbegebiete" +msgstr "SLP Gewerbegebiete" #: group.394 msgid "at_ps" -msgstr "Sektorielle Pläne (SP)" +msgstr "Sektorale Leitpläne (SLP) - Projekte" #: lu_int_wms.395 msgid "at_psp_gep" @@ -3053,7 +3560,7 @@ msgstr "Multifunktionale Gebiete (Gesamtheit)" #: group.398 msgid "at_psp" -msgstr "SP Landschaften" +msgstr "SLP Landschaften" #: group.399 msgid "at_psp_zm" @@ -3061,15 +3568,15 @@ msgstr "Multifunktionale Gebiete" #: group.400 msgid "at_psl" -msgstr "SP Wohnungswesen" +msgstr "SLP Wohnungswesen" #: lu_int_wms.401 msgid "at_psl1" -msgstr "Gebiete für größere Wohnungsbauprojekte" +msgstr "Prioritäre Gebiete für Wohnen" #: lu_int_wms.402 msgid "at_pszae2" -msgstr "Neue Gewerbegebiete und Erweiterungen" +msgstr "Geplante Gewerbegebiete" #: lu_int_wms.403 msgid "at_pszae3" @@ -3093,7 +3600,7 @@ msgstr "Bestehende Gewerbegebiete" #: lu_int_wms.408 msgid "at_pst2" -msgstr "Reservierte Trassen" +msgstr "Überlagerte Korridore und Zonen" #: lu_int_wms.409 msgid "at_psp_zvi" @@ -3107,18 +3614,6 @@ msgstr "SPT-Projekte" msgid "ng" msgstr "Höhenreferenzpunkte" -#: l_wmts.412 -msgid "wg_hangneigung_map" -msgstr "Hangneigung °" - -#: l_wmts.413 -msgid "wg_relief_map" -msgstr "Relief" - -#: l_wmts.414 -msgid "wg_exposition_map" -msgstr "Exposition" - #: l_wmts.415 msgid "wg_hohenlinien_10m_map" msgstr "Höhenlinien 10m" @@ -3261,11 +3756,11 @@ msgstr "Gewässernetz" #: group.451 msgid "eau_new_Fischerei" -msgstr "Fischerei" +msgstr "Dienststelle für Fischerei" -#: group.452 -msgid "eau_new_Projekt_Hochwasserrisikokarten_2013" -msgstr "Hochwasserrisikokarten" +#: lu_int_wms.1387 +msgid "logt_bauluecken_2016_restricted" +msgstr "Baulücken 2016" #: group.453 msgid "eau_new_Messstationen" @@ -3283,9 +3778,9 @@ msgstr "Parcelles OLOS" msgid "topo_decoupage_5000_ed2015" msgstr "Blattschnitt topographischer Plan 1:5000 Ausgabe 2015" -#: group.458 -msgid "eau_new_Risikobeurteilung_2021" -msgstr "Risikobewertung 2021" +#: group.1389 +msgid "secours_act" +msgstr "ACT" #: group.459 msgid "eau_new_Oberflaechengewaesser_2021" @@ -3299,9 +3794,9 @@ msgstr "Klimatologische Messstationen" msgid "eau_new_Historische_Ueberschwemmungsgebiete" msgstr "Historische Überschwemmungsgebiete" -#: group.462 -msgid "eau_new_Projekt_Hochwassergefahrenkarten_2013" -msgstr "Hochwassergefahrenkarten" +#: group.1391 +msgid "secours_age" +msgstr "AGE" #: group.463 msgid "eau_new_Zusaetzliche_Informationen" @@ -3387,17 +3882,17 @@ msgstr "Nitratrichtlinie" msgid "eau_new_Grundwasser" msgstr "Grundwasser" -#: group.484 -msgid "eau_new_Gewaesser" -msgstr "Gewässer" +#: lu_int_wms.1396 +msgid "siden_eaux_usees_dom_ind_sep" +msgstr "Eaux usées domestiques, industriels et séparatifs" #: group.485 msgid "eau_new_Hydrologische_Messstationen" msgstr "Hydrologische Messstationen" -#: group.486 -msgid "eau_new_Ueberschwemmungsgebiete_(UESG)" -msgstr "Überschwemmungsgebiete [UESG]" +#: lu_int_wms.1398 +msgid "siden_couvercles_regard" +msgstr "Couvercles de regard" #: group.487 msgid "eau_new_Stehende_Gewaesser_(usage_interne)" @@ -3411,9 +3906,9 @@ msgstr "Historische Karten" msgid "tourisme_poi" msgstr "Interessante Orte vom ONT" -#: lu_int_wms.490 -msgid "eau_new_Sanitaere_Schutzzonen_Stausee" -msgstr "Sanitäre Schutzzonen Stausee" +#: lu_int_wms.1400 +msgid "siden_eaux_usees_mixtes" +msgstr "Eaux usées mixtes" #: lu_int_wms.491 msgid "eau_new_Intensitaet_-_HQ_extrem_(usage_interne)" @@ -3423,6 +3918,14 @@ msgstr "Intensität HQ extrem" msgid "eau_new_Gefaehrdete_Gebiete_(Nitratrichtlinie)" msgstr "Gefährdete Gebiete [Nitratrichtlinie]" +#: lu_int_wms.153 +msgid "communes_cadastrales" +msgstr "Katastergemeinden" + +#: group.1404 +msgid "sebes_zones_protection" +msgstr "Zones de protection" + #: lu_int_wms.493 msgid "eau_new_Oberflaechenwasserabhaengige_Oekosysteme" msgstr "Oberflächenwasserabhängige Ökosysteme" @@ -3517,7 +4020,7 @@ msgstr "Banken" #: lu_int_wms.517 msgid "logt_bauluecken" -msgstr "Baulücken" +msgstr "Baulücken (alle Gemeinden)" #: group.518 msgid "logt" @@ -3555,10 +4058,6 @@ msgstr "FLIK Parzellen 2016" msgid "parcels_labels_go" msgstr "Katasterparzellen (Nummern)" -#: l_wmts.527 -msgid "asta_flik_parcels_2016" -msgstr "FLIK Parzellen 2016" - #: group.528 msgid "bglayers" msgstr "Hintergrundlayer" @@ -3723,9 +4222,9 @@ msgstr "Gefahrenklassen" msgid "eau_new_Stausee_Sauer" msgstr "Obersauer Stausee" -#: lu_int_wms.570 -msgid "eau_new_Grundwasser_(Nitratrichtlinie)" -msgstr "Grundwasser [Nitratrichtlinie]" +#: l_wmts.527 +msgid "asta_flik_parcels" +msgstr "FLIK Parzellen 2018" #: lu_int_wms.571 msgid "eau_new_Kuenstliche_(Bassin)_(usage_interne)" @@ -3773,7 +4272,7 @@ msgstr "Badegewässer - Qualität" #: lu_int_wms.582 msgid "eau_new_Messstationen_Grundwasser_-_Nitratrichtlinie" -msgstr "Messstationen Grundwasser - Nitratrichtlinie" +msgstr "Nitratkonzentrationen Grundwasser" #: lu_int_wms.583 msgid "eau_new_Physiko-Chemie_2015" @@ -3791,17 +4290,13 @@ msgstr "Gesamtzustand 2009" msgid "eau_new_Chemischer_Zustand_2009" msgstr "Chemischer Zustand 2009" -#: lu_int_wms.587 -msgid "eau_new_Primaere_Gewaesser" -msgstr "Primäre Gewässer" - #: lu_int_wms.588 msgid "eau_new_Typologie_Gewaesser_2015" msgstr "Fließgewässertypen 2015" #: lu_int_wms.589 msgid "eau_new_Messstationen_Oberflaechengewaesser_-_Nitratrichtlinie" -msgstr "Messstationen Oberflächengewässer - Nitratrichtlinie" +msgstr "Nitratkonzentrationen Oberflächengewässer" #: lu_int_wms.590 msgid "eau_new_Hydromorphologischer_Zustand_2015" @@ -3839,10 +4334,6 @@ msgstr "ÜSG 10-jährlich" msgid "eau_new_Trinkwasserbehaelter" msgstr "Trinkwasserbehälter" -#: lu_int_wms.599 -msgid "eau_new_Kilometrierung_sekundaere_Gewaesser" -msgstr "Kilometrierung sekundäre Gewässer" - #: lu_int_wms.709 msgid "pag_ssmn" msgstr "nationaler Denkmalschutz" @@ -3927,10 +4418,6 @@ msgstr "Betrachtungsräume 2015" msgid "eau_new_Bodentemperatur" msgstr "Bodentemperatur" -#: lu_int_wms.621 -msgid "eau_new_Chemischer_Zustand_2015" -msgstr "Chemischer Zustand 2015" - #: lu_int_wms.622 msgid "eau_new_Oekologischer_Zustand_2015" msgstr "Ökologischer Zustand 2015" @@ -3939,14 +4426,6 @@ msgstr "Ökologischer Zustand 2015" msgid "eau_new_Temporaer_fliessende_Baeche" msgstr "Temporär fliessende Bäche" -#: lu_int_wms.624 -msgid "eau_new_Kilometrierung_primaere_Gewaesser" -msgstr "Kilometrierung primäre Gewässer" - -#: lu_int_wms.625 -msgid "eau_new_Sekundaere_Gewaesser" -msgstr "Sekundäre Gewässer" - #: lu_int_wms.626 msgid "eau_new_Fischereiabschnitte" msgstr "Fischereiabschnitte" @@ -3979,10 +4458,6 @@ msgstr "Chemischer Zustand der WK 2015" msgid "eau_new_UESG_Sauer_1995" msgstr "UESG Sauer 1995" -#: lu_int_wms.634 -msgid "eau_new_Erheblich_veraenderte_OWK_2009" -msgstr "Erheblich veränderte OWK 2009" - #: lu_int_wms.635 msgid "eau_new_Natuerliche_(Bassin)_(usage_interne)" msgstr "Natürliche [Bassin]" @@ -4059,10 +4534,6 @@ msgstr "Wärmepumpe" msgid "eau_new_Alluvialer_Grundwasserspiegel" msgstr "Alluvialer Grundwasserspiegel" -#: lu_int_wms.654 -msgid "eau_new_Nitratrichtlinie_Messstationen" -msgstr "Nitratrichtlinie" - #: lu_int_wms.655 msgid "eau_new_Wasserstand" msgstr "Wasserstand" @@ -4075,24 +4546,10 @@ msgstr "Badegewässer" msgid "eau_new_Zustand_der_WK_2009" msgstr "Zustand der WK 2009" -#: lu_int_wms.658 -msgid "eau_new_Erheblich_veraenderte_WK_2015" -msgstr "Erheblich veränderte WK 2015" - #: lu_int_wms.659 msgid "eau_new_Grundwasserkoerper_2015" msgstr "Grundwasserkörper 2015" -#: lu_int_wms.660 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_chemischen_Zustandes" -msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten chemischen Zustandes" - -#: lu_int_wms.661 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_mengenmaessigen_Zustandes" -msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten mengenmäßigen Zustandes" - #: lu_int_wms.662 msgid "eau_new_Makrophyten_2015" msgstr "Makrophyten und Phytobenthos 2015" @@ -4163,11 +4620,11 @@ msgstr "Biologische Stationen" #: lu_int_wms.679 msgid "logt_bauluecken_restricted" -msgstr "Baulücken (restricted)" +msgstr "Baulücken 2013 (kein Feeback mehr notwendig)" #: lu_int_wms.680 msgid "aev_decharges" -msgstr "Décharges" +msgstr "Deponien (Internal)" #: lu_ext_wms.681 msgid "tour_moto" @@ -4251,7 +4708,7 @@ msgstr "Fond de plan (staging)" #: lu_ext_wms.701 msgid "logt_baul_feedback" -msgstr "Baulücken-Feedback" +msgstr "Baulücken-Feedback 2016" #: lu_int_wms.702 msgid "asta_pedologie_new" @@ -4301,10 +4758,6 @@ msgstr "Lokalisierung der fixen Radargeräte" msgid "pag_pap_approuves_staging" msgstr "PAP approuvés (staging)" -#: lu_int_wms.715 -msgid "parcels_daily" -msgstr "Katasterparzellen" - #: group.716 msgid "pag_at" msgstr "Landes- und Raumplanung" @@ -4329,9 +4782,9 @@ msgstr "nationaler Denkmalschutz " msgid "cantons_labels" msgstr "Kantone (Namen)" -#: lu_int_wms.153 -msgid "communes_cadastrales" -msgstr "Katastergemeinden" +#: lu_int_wms.715 +msgid "parcels_daily_old" +msgstr "" #: lu_int_wms.302 msgid "communes" @@ -4355,7 +4808,7 @@ msgstr "Klimakarte" #: lu_int_wms.510 msgid "ivv_parcels" -msgstr "Weinbergsparzellen 2016" +msgstr "Weinbergsparzellen 2017" #: l_wmts.420 msgid "eau_new_HQ100_mittlere_Wahrscheinlichkeit" @@ -4387,7 +4840,7 @@ msgstr "Neue und erweiterte ZAE - Tests" #: lu_ext_wms.725 msgid "tour_tdl" -msgstr "Skoda Tour de Luxembourg 2016" +msgstr "Skoda Tour de Luxembourg 2018" #: group.727 msgid "contrats biodiversité MDDI" @@ -4429,10 +4882,6 @@ msgstr "UTM Grid" msgid "Catastrophe naturelle 22/07/16 (informations protégées)" msgstr "Catastrophe naturelle 22/07/16 (informations protégées)" -#: group.737 -msgid "Groupe canin" -msgstr "Groupe canin" - #: lu_ext_wms.736 msgid "police_group_canin" msgstr "police_group_canin" @@ -4447,11 +4896,11 @@ msgstr "Grünlandkartierung" #: lu_ext_wms.741 msgid "Données saisies par l'armée luxembourgeoise" -msgstr "" +msgstr "Données saisies par l'armée luxembourgeoise" #: group.742 msgid "Armée luxembourgeoise" -msgstr "" +msgstr "Armée luxembourgeoise" #: lu_int_wms.743 msgid "aero_1987_30k" @@ -4476,3 +4925,2163 @@ msgstr "Naturparks" #: lu_int_wms.748 msgid "aero_1994_30k" msgstr "Luftbilder von 1994 (1:30k)" + +#: lu_int_wms.316 +msgid "env_sentiersnature" +msgstr "Naturpfade" + +#: group.458 +msgid "eau_new_Risikobeurteilung" +msgstr "Risikobewertung" + +#: group.462 +msgid "eau_new_Hochwassergefahrenkarten_2013" +msgstr "Hochwassergefahrenkarten 2013" + +#: group.452 +msgid "eau_new_Hochwasserrisikokarten_2013" +msgstr "Hochwasserrisikokarten 2013" + +#: lu_int_wms.752 +msgid "eau_new_Bauwerke im Abwasserbereich" +msgstr "Bauwerke im Abwasserbereich" + +#: lu_int_wms.753 +msgid "eau_new_Abwassernetze" +msgstr "Abwassernetze" + +#: lu_int_wms.755 +msgid "eau_new_Gewässer mit einem signifikanten Hochwasserrisiko" +msgstr "Gewässer mit einem signifikanten Hochwasserrisiko" + +#: lu_int_wms.754 +msgid "eau_new_Abwassergebiet" +msgstr "Abwassergebiet" + +#: lu_int_wms.756 +msgid "eau_new_Hochwasser Brennpunkte" +msgstr "Hochwasserbrennpunkte " + +#: lu_int_wms.757 +msgid "eau_new_Hochwasserschutzmassnahmen" +msgstr "Hochwasserschutzmassnahmen" + +#: lu_int_wms.758 +msgid "eau_new_Maßnahmens des Hochwasserrisikomanagementplans" +msgstr "Maßnahmenprogramm HWRM-Plan 2015" + +#: lu_int_wms.759 +msgid "eau_new_Strukturgütekartierung 2015 [7-stufige Bewertung]" +msgstr "Strukturgütekartierung 2015 [7-stufige Bewertung]" + +#: lu_int_wms.760 +msgid "eau_new_Strukturgütekartierung 2015 [5-stufige Bewertung]" +msgstr "Strukturgütekartierung 2015 [5-stufige Bewertung]" + +#: lu_int_wms.761 +msgid "eau_new_Struktukartierung 2015 in 5 Band [7-stufige Bewertung]" +msgstr "Struktukartierung 2015 in 5 Band [7-stufige Bewertung]" + +#: lu_int_wms.763 +msgid "eau_new_Struktukartierung 2015 in 5 Band [5-stufige Bewertung]" +msgstr "Struktukartierung 2015 in 5 Band [5-stufige Bewertung]" + +#: lu_int_wms.764 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2008/105/EG]" +msgstr "Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie 2008/105/EG]" + +#: lu_int_wms.765 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2013/39/EU]" +msgstr "Chemischer Zustand 2015 [Richtlinie 2013/39/EU]" + +#: lu_int_wms.766 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2013/39/EU]" +msgstr "Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie 2013/39/EU]" + +#: lu_int_wms.767 +msgid "eau_new_Hydromorphologische Gesamtbewertung 2015" +msgstr "Hydromorphologische Gesamtbewertung 2015" + +#: lu_int_wms.749 +msgid "eau_new_Gewässer" +msgstr "Gewässer" + +#: lu_int_wms.750 +msgid "eau_new_Kilometrierung der Gewässer" +msgstr "Kilometrierung der Gewässer" + +#: lu_int_wms.751 +msgid "eau_new_ZPS provisorische Gutachten" +msgstr "ZPS provisorische Gutachten" + +#: lu_int_wms.768 +msgid "eau_new_Überwachungsprogramme - Resultate" +msgstr "Überwachungsprogramme - Resultate" + +#: lu_int_wms.769 +msgid "eau_new_Morphologie 2015" +msgstr "Morphologie 2015" + +#: lu_int_wms.770 +msgid "eau_new_Durchgängigkeit 2015" +msgstr "Durchgängigkeit 2015" + +#: lu_int_wms.771 +msgid "eau_new_Phytoplankton 2015" +msgstr "Phytoplankton 2015" + +#: group.772 lu_int_wms.775 +msgid "eau_new_Grundwasser 2027" +msgstr "Grundwasser 2027" + +#: lu_int_wms.773 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2021" +msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten Zustandes 2021" + +#: lu_int_wms.774 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2027" +msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten Zustandes 2027" + +#: lu_int_wms.776 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2027" +msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten mengenmäßigen Zustandes 2027" + +#: lu_int_wms.777 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2027" +msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten chemischen Zustandes 2027" + +#: lu_int_wms.654 +msgid "eau_new_Oberflächengewässer Nitratrichtlinie 91/676/CEE" +msgstr "Oberflächengewässer Nitratrichtlinie 91/676/CEE" + +#: lu_int_wms.570 +msgid "eau_new_Grundwasser Nitratrichtlinie 91/676/CEE" +msgstr "Grundwasser Nitratrichtlinie 91/676/CEE" + +#: group.484 +msgid "eau_new_Hydrografie" +msgstr "Oberflächengewässer" + +#: lu_int_wms.490 +msgid "eau_new_Sanitäre Schutzzonen Stausee Esch/Sauer" +msgstr "Sanitäre Schutzzonen Stausee Esch/Sauer" + +#: group.486 +msgid "eau_new_Hochwasserrisikomanagement-Richtlinie [HWRM-RL]" +msgstr "Hochwasserrisikomanagement-Richtlinie [HWRM-RL]" + +#: lu_int_wms.634 +msgid "eau_new_Erheblich veränderte Wasserkörper 2009" +msgstr "Erheblich veränderte Wasserkörper 2009" + +#: lu_int_wms.658 +msgid "eau_new_Erheblich veränderte Wasserkörper 2015" +msgstr "Erheblich veränderte Wasserkörper 2015" + +#: lu_int_wms.621 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2008/105/EG]" +msgstr "Chemischer Zustand 2015 [Richtlinie 2008/105/EG]" + +#: lu_int_wms.661 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2021" +msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten mengenmäßigen Zustandes 2021" + +#: lu_int_wms.660 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2021" +msgstr "Risikobeurteilung des WK hinsichtlich der Verfehlung des guten chemischen Zustandes 2021" + +#: lu_int_wms.785 +msgid "eau_new_WRRL und HWRM-RL Massnahmen" +msgstr "Detailliertes Maßnahmenprogramm HY" + +#: group.784 +msgid "eau_new_Usage interne" +msgstr "Usage interne" + +#: lu_int_wms.779 +msgid "eau_new_Regionalisierte MNQ-Werte" +msgstr "Regionalisierte MNQ-Werte" + +#: lu_int_wms.781 +msgid "eau_new_Regionalisierte MQ-Werte" +msgstr "Regionalisierte MQ-Werte" + +#: lu_int_wms.782 +msgid "eau_new_Regionalisierte HQ-Werte" +msgstr "Regionalisierte HQ-Werte" + +#: lu_int_wms.786 +msgid "Orthophoto_Infrarouge_2016" +msgstr "Infrarot Orthophotos 2016" + +#: lu_int_wms.787 +msgid "Orthophoto_Infrarouge_2013" +msgstr "Infrarot Orthophotos 2013" + +#: lu_int_wms.788 +msgid "Orthophoto_Infrarouge_2010" +msgstr "Infrarot Orthophotos 2010" + +#: lu_int_wms.789 +msgid "Orthophoto_Infrarouge" +msgstr "Orthophoto infrarot" + +#: group.790 +msgid "Orthophotos Infrarouge" +msgstr "Orthophoto infrarot" + +#: l_wmts.791 +msgid "ortho_2010_irc" +msgstr "Orthophoto 2010 infrarot" + +#: l_wmts.792 +msgid "ortho_2013_irc" +msgstr "Orthophoto 2013 infrarot" + +#: l_wmts.793 +msgid "ortho_2016_irc" +msgstr "Orthophoto 2016 infrarot" + +#: lu_ext_wms.794 +msgid "Scouts_Hikes" +msgstr "Scouts Hikes" + +#: group.795 +msgid "Scouts" +msgstr "Scouts" + +#: lu_ext_wms.796 +msgid "Schleck Gran Fondo" +msgstr "Schleck Gran Fondo" + +#: lu_int_wms.797 +msgid "eau_new_trockenheit_gelb" +msgstr "Vorbeugungsphase (« Phase gelb ») " + +#: lu_int_wms.798 +msgid "seveso" +msgstr "SEVESO Standorte" + +#: l_wmts.799 +msgid "basemap_2015_global_old" +msgstr "Straßenkarte 2D" + +#: theme.800 +msgid "cadastre_hertzien" +msgstr "Mobilfunkkataster" + +#: lu_int_wms.802 +msgid "mat_points_mesure" +msgstr "Messpunkte" + +#: group.803 +msgid "cadastre_hertzien_group" +msgstr "Mobilfunkkataster" + +#: lu_int_wms.804 +msgid "anf_zpin_declarees" +msgstr "Ausgewiesene Naturschutzgebiete" + +#: lu_int_wms.805 +msgid "anf_zpin_a_declarer" +msgstr "Auszuweisende Naturschutzgebiete" + +#: lu_int_wms.806 +msgid "anf_zpin_en_procedure" +msgstr "Naturschutzgebiete in der Ausweisungsprozedur" + +#: group.807 +msgid "zpin_group" +msgstr "Naturschutzgebiete von nationalem Interesse" + +#: lu_int_wms.808 +msgid "velo_by_pch" +msgstr "Nationale Radwege" + +#: lu_ext_wms.809 +msgid "lvi_circuits_cyclables" +msgstr "Radtouren" + +#: lu_int_wms.810 +msgid "TOPO_CARTEHISTO_1950" +msgstr "Topographische Karte 1:150k 1950" + +#: lu_int_wms.801 +msgid "mat_antennes_plus_50_watt" +msgstr "Basisstationen der öffentlichen Mobilfunknetze ≥ 50 Watt" + +#: lu_int_wms.811 +msgid "mat_antennes_moins_50_watt" +msgstr "Basisstationen der öffentlichen Mobilfunknetze < 50 Watt" + +#: lu_int_wms.813 +msgid "cdt_lignes_all" +msgstr "Öffentlicher Transport - Netzwerk" + +#: lu_ext_wms.814 +msgid "cdt_lignes_avl" +msgstr "Buslinien AVL" + +#: lu_ext_wms.815 +msgid "cdt_lignes_rgtr" +msgstr "Buslinien RGTR" + +#: lu_ext_wms.816 +msgid "cdt_lignes_tice" +msgstr "Buslinien TICE" + +#: lu_ext_wms.817 +msgid "cdt_lignes_cfl" +msgstr "Zuglinien CFL" + +#: group.812 +msgid "cdt_lignes_bus_par_operateur" +msgstr "Öffentlicher Transport pro Betreiber" + +#: theme.818 +msgid "API_ONLY" +msgstr "" + +#: lu_int_wms.819 lu_int_wms.1381 +msgid "chargy" +msgstr "Chargy Stationen" + +#: group.820 +msgid "API_ONLY_LAYERS" +msgstr "" + +#: lu_int_wms.821 lu_int_wms.823 +msgid "feuilles_cadastrales_urplang" +msgstr "Kataster Urpläne" + +#: lu_int_wms.830 +msgid "lux_norm1971_2000_00_pluvio_sum" +msgstr "1971-2000 - Referenzperiode 1971-2000, Niederschlag, jährliche Summe [mm] " + +#: lu_int_wms.833 +msgid "lux_norm1971_2000_01_pluvio_sum" +msgstr "Jan. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.836 +msgid "lux_norm1971_2000_02_pluvio_sum" +msgstr "Feb. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.839 +msgid "lux_norm1971_2000_03_pluvio_sum" +msgstr "März 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.842 +msgid "lux_norm1971_2000_04_pluvio_sum" +msgstr "Apr. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.845 +msgid "lux_norm1971_2000_05_pluvio_sum" +msgstr "Mai 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.848 +msgid "lux_norm1971_2000_06_pluvio_sum" +msgstr "Juni 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.851 +msgid "lux_norm1971_2000_07_pluvio_sum" +msgstr "Juli 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.854 +msgid "lux_norm1971_2000_08_pluvio_sum" +msgstr "Aug. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.857 +msgid "lux_norm1971_2000_09_pluvio_sum" +msgstr "Sep. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.860 +msgid "lux_norm1971_2000_10_pluvio_sum" +msgstr "Okt. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.863 +msgid "lux_norm1971_2000_11_pluvio_sum" +msgstr "Nov. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.866 +msgid "lux_norm1971_2000_12_pluvio_sum" +msgstr "Dez. 1971-2000 - Referenzperiode 1971-2000, Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.872 +msgid "lux_2012_00_temp_minimum" +msgstr "2012 - mittlere jährliche Minimaltemperatur [ºC] " + +#: lu_int_wms.875 +msgid "lux_2012_01_temp_minimum" +msgstr "Jan. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.878 +msgid "lux_2012_02_temp_minimum" +msgstr "Feb. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.881 +msgid "lux_2012_03_temp_minimum" +msgstr "März 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.884 +msgid "lux_2012_04_temp_minimum" +msgstr "Apr. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.887 +msgid "lux_2012_05_temp_minimum" +msgstr "Mai 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.890 +msgid "lux_2012_06_temp_minimum" +msgstr "Juni 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.893 +msgid "lux_2012_07_temp_minimum" +msgstr "Juli 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.896 +msgid "lux_2012_08_temp_minimum" +msgstr "Aug. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.899 +msgid "lux_2012_09_temp_minimum" +msgstr "Sep. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.902 +msgid "lux_2012_10_temp_minimum" +msgstr "Okt. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.905 +msgid "lux_2012_11_temp_minimum" +msgstr "Nov. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.908 +msgid "lux_2012_12_temp_minimum" +msgstr "Dez. 2012 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.912 +msgid "lux_2012_00_temp_average" +msgstr "2012 - Temperatur, jährlicher Durchschnitt [ºC] " + +#: lu_int_wms.915 +msgid "lux_2012_01_temp_average" +msgstr "Jan. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.918 +msgid "lux_2012_02_temp_average" +msgstr "Feb. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.921 +msgid "lux_2012_03_temp_average" +msgstr "März 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.924 +msgid "lux_2012_04_temp_average" +msgstr "Apr. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.927 +msgid "lux_2012_05_temp_average" +msgstr "Mai 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.930 +msgid "lux_2012_06_temp_average" +msgstr "Juni 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.933 +msgid "lux_2012_07_temp_average" +msgstr "Juli 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.936 +msgid "lux_2012_08_temp_average" +msgstr "Aug. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.939 +msgid "lux_2012_09_temp_average" +msgstr "Sep. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.942 +msgid "lux_2012_10_temp_average" +msgstr "Okt. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.945 +msgid "lux_2012_11_temp_average" +msgstr "Nov. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.948 +msgid "lux_2012_12_temp_average" +msgstr "Dez. 2012 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.952 +msgid "lux_2012_00_temp_maximum" +msgstr "2012 - mittlere jährliche Maximaltemperatur [ºC] " + +#: lu_int_wms.955 +msgid "lux_2012_01_temp_maximum" +msgstr "Jan. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.958 +msgid "lux_2012_02_temp_maximum" +msgstr "Feb. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.961 +msgid "lux_2012_03_temp_maximum" +msgstr "März 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.964 +msgid "lux_2012_04_temp_maximum" +msgstr "Apr. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.967 +msgid "lux_2012_05_temp_maximum" +msgstr "Mai 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.970 +msgid "lux_2012_06_temp_maximum" +msgstr "Juni 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.973 +msgid "lux_2012_07_temp_maximum" +msgstr "Juli 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.976 +msgid "lux_2012_08_temp_maximum" +msgstr "Aug. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.979 +msgid "lux_2012_09_temp_maximum" +msgstr "Sep. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.982 +msgid "lux_2012_10_temp_maximum" +msgstr "Okt. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.985 +msgid "lux_2012_11_temp_maximum" +msgstr "Nov. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.988 +msgid "lux_2012_12_temp_maximum" +msgstr "Dez. 2012 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.993 +msgid "lux_2012_00_pluvio_sum" +msgstr "2012 - Niederschlag, jährliche Summe [mm] " + +#: lu_int_wms.996 +msgid "lux_2012_01_pluvio_sum" +msgstr "Jan. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.999 +msgid "lux_2012_02_pluvio_sum" +msgstr "Feb. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1002 +msgid "lux_2012_03_pluvio_sum" +msgstr "März 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1005 +msgid "lux_2012_04_pluvio_sum" +msgstr "Apr. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1008 +msgid "lux_2012_05_pluvio_sum" +msgstr "Mai 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1011 +msgid "lux_2012_06_pluvio_sum" +msgstr "Juni 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1014 +msgid "lux_2012_07_pluvio_sum" +msgstr "Juli 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1017 +msgid "lux_2012_08_pluvio_sum" +msgstr "Aug. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1020 +msgid "lux_2012_09_pluvio_sum" +msgstr "Sep. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1023 +msgid "lux_2012_10_pluvio_sum" +msgstr "Okt. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1026 +msgid "lux_2012_11_pluvio_sum" +msgstr "Nov. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1029 +msgid "lux_2012_12_pluvio_sum" +msgstr "Dez. 2012 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1036 +msgid "lux_2012_01_pluvio_diff_mm" +msgstr "Jan. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1039 +msgid "lux_2012_02_pluvio_diff_mm" +msgstr "Feb. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1042 +msgid "lux_2012_03_pluvio_diff_mm" +msgstr "März 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1045 +msgid "lux_2012_04_pluvio_diff_mm" +msgstr "Apr. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1048 +msgid "lux_2012_05_pluvio_diff_mm" +msgstr "Mai 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1051 +msgid "lux_2012_06_pluvio_diff_mm" +msgstr "Juni 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1054 +msgid "lux_2012_07_pluvio_diff_mm" +msgstr "Juli 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1057 +msgid "lux_2012_08_pluvio_diff_mm" +msgstr "Aug. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1060 +msgid "lux_2012_09_pluvio_diff_mm" +msgstr "Sep. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1063 +msgid "lux_2012_10_pluvio_diff_mm" +msgstr "Okt. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1066 +msgid "lux_2012_11_pluvio_diff_mm" +msgstr "Nov. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1069 +msgid "lux_2012_12_pluvio_diff_mm" +msgstr "Dez. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1076 +msgid "lux_2012_01_pluvio_diff_perc" +msgstr "Jan. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1079 +msgid "lux_2012_02_pluvio_diff_perc" +msgstr "Feb. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1082 +msgid "lux_2012_03_pluvio_diff_perc" +msgstr "März 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1085 +msgid "lux_2012_04_pluvio_diff_perc" +msgstr "Apr. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1088 +msgid "lux_2012_05_pluvio_diff_perc" +msgstr "Mai 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1091 +msgid "lux_2012_06_pluvio_diff_perc" +msgstr "Juni 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1094 +msgid "lux_2012_07_pluvio_diff_perc" +msgstr "Juli 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1097 +msgid "lux_2012_08_pluvio_diff_perc" +msgstr "Aug. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1100 +msgid "lux_2012_09_pluvio_diff_perc" +msgstr "Sep. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: theme.824 +msgid "ahc" +msgstr "Hydro-klim. Atlas" + +#: lu_int_wms.1103 +msgid "lux_2012_10_pluvio_diff_perc" +msgstr "Okt. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1106 +msgid "lux_2012_11_pluvio_diff_perc" +msgstr "Nov. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1109 +msgid "lux_2012_12_pluvio_diff_perc" +msgstr "Dez. 2012 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1115 +msgid "lux_2013_00_temp_minimum" +msgstr "2013 - mittlere jährliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1118 +msgid "lux_2013_01_temp_minimum" +msgstr "Jan. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1121 +msgid "lux_2013_02_temp_minimum" +msgstr "Feb. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1124 +msgid "lux_2013_03_temp_minimum" +msgstr "März 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1127 +msgid "lux_2013_04_temp_minimum" +msgstr "Apr. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1130 +msgid "lux_2013_05_temp_minimum" +msgstr "Mai 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1133 +msgid "lux_2013_06_temp_minimum" +msgstr "Juni 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1136 +msgid "lux_2013_07_temp_minimum" +msgstr "Juli 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1139 +msgid "lux_2013_08_temp_minimum" +msgstr "Aug. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1142 +msgid "lux_2013_09_temp_minimum" +msgstr "Sep. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1145 +msgid "lux_2013_10_temp_minimum" +msgstr "Okt. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1148 +msgid "lux_2013_11_temp_minimum" +msgstr "Nov. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1151 +msgid "lux_2013_12_temp_minimum" +msgstr "Dez. 2013 - mittlere monatliche Minimaltemperatur [ºC] " + +#: lu_int_wms.1155 +msgid "lux_2013_00_temp_average" +msgstr "2013 - Temperatur, jährlicher Durchschnitt [ºC] " + +#: lu_int_wms.1158 +msgid "lux_2013_01_temp_average" +msgstr "Jan. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1161 +msgid "lux_2013_02_temp_average" +msgstr "Feb. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1164 +msgid "lux_2013_03_temp_average" +msgstr "März 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1167 +msgid "lux_2013_04_temp_average" +msgstr "Apr. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1170 +msgid "lux_2013_05_temp_average" +msgstr "Mai 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1173 +msgid "lux_2013_06_temp_average" +msgstr "Juni 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1176 +msgid "lux_2013_07_temp_average" +msgstr "Juli 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1179 +msgid "lux_2013_08_temp_average" +msgstr "Aug. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1182 +msgid "lux_2013_09_temp_average" +msgstr "Sep. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1185 +msgid "lux_2013_10_temp_average" +msgstr "Okt. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1188 +msgid "lux_2013_11_temp_average" +msgstr "Nov. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1191 +msgid "lux_2013_12_temp_average" +msgstr "Dez. 2013 - Temperatur, monatlicher Durchschnitt [ºC] " + +#: lu_int_wms.1195 +msgid "lux_2013_00_temp_maximum" +msgstr "2013 - mittlere jährliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1198 +msgid "lux_2013_01_temp_maximum" +msgstr "Jan. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1201 +msgid "lux_2013_02_temp_maximum" +msgstr "Feb. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1204 +msgid "lux_2013_03_temp_maximum" +msgstr "März 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1207 +msgid "lux_2013_04_temp_maximum" +msgstr "Apr. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1210 +msgid "lux_2013_05_temp_maximum" +msgstr "Mai 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1213 +msgid "lux_2013_06_temp_maximum" +msgstr "Juni 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1216 +msgid "lux_2013_07_temp_maximum" +msgstr "Juli 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1219 +msgid "lux_2013_08_temp_maximum" +msgstr "Aug. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1222 +msgid "lux_2013_09_temp_maximum" +msgstr "Sep. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1225 +msgid "lux_2013_10_temp_maximum" +msgstr "Okt. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1228 +msgid "lux_2013_11_temp_maximum" +msgstr "Nov. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1231 +msgid "lux_2013_12_temp_maximum" +msgstr "Dez. 2013 - mittlere monatliche Maximaltemperatur [ºC] " + +#: lu_int_wms.1236 +msgid "lux_2013_00_pluvio_sum" +msgstr "2013 - Niederschlag, jährliche Summe [mm] " + +#: lu_int_wms.1239 +msgid "lux_2013_01_pluvio_sum" +msgstr "Jan. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1242 +msgid "lux_2013_02_pluvio_sum" +msgstr "Feb. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1245 +msgid "lux_2013_03_pluvio_sum" +msgstr "März 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1248 +msgid "lux_2013_04_pluvio_sum" +msgstr "Apr. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1251 +msgid "lux_2013_05_pluvio_sum" +msgstr "Mai 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1254 +msgid "lux_2013_06_pluvio_sum" +msgstr "Juni 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1257 +msgid "lux_2013_07_pluvio_sum" +msgstr "Juli 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1260 +msgid "lux_2013_08_pluvio_sum" +msgstr "Aug. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1263 +msgid "lux_2013_09_pluvio_sum" +msgstr "Sep. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1266 +msgid "lux_2013_10_pluvio_sum" +msgstr "Okt. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1269 +msgid "lux_2013_11_pluvio_sum" +msgstr "Nov. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1272 +msgid "lux_2013_12_pluvio_sum" +msgstr "Dez. 2013 - Niederschlag, monatliche Summe [mm] " + +#: lu_int_wms.1279 +msgid "lux_2013_01_pluvio_diff_mm" +msgstr "Jan. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1282 +msgid "lux_2013_02_pluvio_diff_mm" +msgstr "Feb. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1285 +msgid "lux_2013_03_pluvio_diff_mm" +msgstr "März 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1288 +msgid "lux_2013_04_pluvio_diff_mm" +msgstr "Apr. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1291 +msgid "lux_2013_05_pluvio_diff_mm" +msgstr "Mai 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1294 +msgid "lux_2013_06_pluvio_diff_mm" +msgstr "Juni 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1297 +msgid "lux_2013_07_pluvio_diff_mm" +msgstr "Juli 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1300 +msgid "lux_2013_08_pluvio_diff_mm" +msgstr "Aug. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1303 +msgid "lux_2013_09_pluvio_diff_mm" +msgstr "Sep. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode in Prozent [mm] " + +#: lu_int_wms.1306 +msgid "lux_2013_10_pluvio_diff_mm" +msgstr "Okt. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1309 +msgid "lux_2013_11_pluvio_diff_mm" +msgstr "Nov. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1312 +msgid "lux_2013_12_pluvio_diff_mm" +msgstr "Dez. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1319 +msgid "lux_2013_01_pluvio_diff_perc" +msgstr "Jan. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1322 +msgid "lux_2013_02_pluvio_diff_perc" +msgstr "Feb. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1325 +msgid "lux_2013_03_pluvio_diff_perc" +msgstr "März 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1328 +msgid "lux_2013_04_pluvio_diff_perc" +msgstr "Apr. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1331 +msgid "lux_2013_05_pluvio_diff_perc" +msgstr "Mai 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1334 +msgid "lux_2013_06_pluvio_diff_perc" +msgstr "Juni 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1337 +msgid "lux_2013_07_pluvio_diff_perc" +msgstr "Juli 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1340 +msgid "lux_2013_08_pluvio_diff_perc" +msgstr "Aug. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1343 +msgid "lux_2013_09_pluvio_diff_perc" +msgstr "Sep. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1346 +msgid "lux_2013_10_pluvio_diff_perc" +msgstr "Okt. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1349 +msgid "lux_2013_11_pluvio_diff_perc" +msgstr "Nov. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1352 +msgid "lux_2013_12_pluvio_diff_perc" +msgstr "Dez. 2013 - Niederschlag, monatliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1033 +msgid "lux_2012_00_pluvio_diff_mm" +msgstr "2012 - Niederschlag, jährliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1073 +msgid "lux_2012_00_pluvio_diff_perc" +msgstr "2012 - Niederschlag, jährliche Differenz zur Referenzperiode [%] " + +#: lu_int_wms.1276 +msgid "lux_2013_00_pluvio_diff_mm" +msgstr "2013 - Niederschlag, jährliche Differenz zur Referenzperiode [mm] " + +#: lu_int_wms.1316 +msgid "lux_2013_00_pluvio_diff_perc" +msgstr "2013 - Niederschlag, jährliche Differenz zur Referenzperiode [%] " + +#: group.826 +msgid "30 years reference period 1971-2000" +msgstr "30 jährige Referenzperiode 1971-2000" + +#: group.827 group.990 group.1233 +msgid "Precipitation" +msgstr "Niederschlag" + +#: group.828 +msgid "lux_norm1971_2000_pluvio_sum" +msgstr "Referenzperiode 1971-2000, Niederschlag, Summe [mm]" + +#: group.868 +msgid "2012" +msgstr "2012" + +#: group.869 group.1112 +msgid "Temperature" +msgstr "Temperatur" + +#: group.870 +msgid "lux_2012_temp_minimum" +msgstr "mittlere Minimaltemperatur [ºC]" + +#: group.910 +msgid "lux_2012_temp_average" +msgstr "Temperatur, Durchschnitt [ºC]" + +#: group.950 +msgid "lux_2012_temp_maximum" +msgstr "mittlere Maximaltemperatur [ºC]" + +#: group.991 +msgid "lux_2012_pluvio_sum" +msgstr "Niederschlag, Summe [mm]" + +#: group.1031 +msgid "lux_2012_pluvio_diff_mm" +msgstr "Niederschlag, monatliche Differenz zur Referenzperiode [mm]" + +#: group.1071 +msgid "lux_2012_pluvio_diff_perc" +msgstr "Niederschlag, monatliche Differenz zur Referenzperiode [%]" + +#: group.1111 +msgid "2013" +msgstr "2013" + +#: group.1113 +msgid "lux_2013_temp_minimum" +msgstr "mittlere Minimaltemperatur [ºC]" + +#: group.1153 +msgid "lux_2013_temp_average" +msgstr "Temperatur, Durchschnitt [ºC]" + +#: group.1193 +msgid "lux_2013_temp_maximum" +msgstr "mittlere Maximaltemperatur [ºC]" + +#: group.1234 +msgid "lux_2013_pluvio_sum" +msgstr "Niederschlag, Summe [mm]" + +#: group.1274 +msgid "lux_2013_pluvio_diff_mm" +msgstr "Niederschlag, monatliche Differenz zur Referenzperiode [mm]" + +#: group.1314 +msgid "lux_2013_pluvio_diff_perc" +msgstr "Niederschlag, monatliche Differenz zur Referenzperiode [%]" + +#: group.1355 +msgid "aev_qualite_air" +msgstr "Luftqualität " + +#: group.1356 +msgid "aev_eoliennes" +msgstr "Windkraftanlagen (Internal)" + +#: lu_int_wms.1357 +msgid "aev_reseau_telemetrique" +msgstr "Telemetrisches Messnetz" + +#: lu_int_wms.1358 +msgid "aev_poussieres_fines" +msgstr "Feinstaub (Referenzmethode mit Filter)" + +#: lu_int_wms.1359 +msgid "aev_reseau_bergerhoff" +msgstr "Staubniederschlag (Bergerhoff Messnetz)" + +#: lu_int_wms.1360 +msgid "aev_emplacements_eoliennes" +msgstr "Windkraftanlagen (Internal)" + +#: group.1361 +msgid "aev_casipo_group" +msgstr "CASIPO (Internal)" + +#: lu_int_wms.1362 +msgid "aev_casipo" +msgstr "Cadastre des sites potentiellement pollués (Internal) " + +#: lu_int_wms.1363 +msgid "reagis" +msgstr "" + +#: lu_int_wms.1364 +msgid "act_frontieres_isodistances" +msgstr "Entfernungen von der Landesgrenze" + +#: lu_ext_wms.1365 +msgid "sentiers_thematiques" +msgstr "Thematische Wege" + +#: lu_int_wms.1366 +msgid "pag_infos_supp" +msgstr "Zusätzlech Informatiounen" + +#: lu_int_wms.1367 +msgid "anf_biotopes_points" +msgstr "Punktuelle Objekte" + +#: lu_int_wms.1368 +msgid "anf_biotopes_vergers" +msgstr "Steuobstwiesen" + +#: lu_int_wms.1369 +msgid "anf_biotopes_surfaces" +msgstr "Flächige Objekte mit Ausnahme der Streuobstwiesen" + +#: lu_int_wms.1370 +msgid "anf_biotopes_tampons" +msgstr "Pufferzonen" + +#: l_wmts.1371 +msgid "ortho_2017" +msgstr "Orthophoto 2017" + +#: l_wmts.1372 +msgid "ortho_2017_irc" +msgstr "Orthophoto 2017 infrarot" + +#: lu_int_wms.1373 +msgid "pag_infos_supp_staging" +msgstr "" + +#: lu_ext_wms.1374 +msgid "cdt_lignes_tram" +msgstr "Tramlinien" + +#: lu_int_wms.1375 +msgid "makerspaces" +msgstr "" + +#: lu_int_wms.1376 +msgid "parcels_daily" +msgstr "Katasterparzellen" + +#: lu_int_wms.216 +msgid "decoupage_communes" +msgstr "Gemeindecode" + +#: lu_int_wms.1377 +msgid "lidar_mns" +msgstr "Digitales Oberflächenmodell der Region Nordstad" + +#: lu_int_wms.1378 +msgid "lidar_mnt" +msgstr "Digitales Höhenmodell der Region Nordstad" + +#: lu_int_wms.1379 +msgid "lidar_ortho" +msgstr "Hochaufgelöstes Luftbild der Region Nordstad" + +#: group.1380 +msgid "lidar_prototype" +msgstr "Resultate des LIDAR Prototyps der Katasterverwaltung" + +#: lu_int_wms.1383 +msgid "aev_zones_calmes_rurales" +msgstr "Potentiell ruhige Gebiete im ländlichen Raum" + +#: lu_int_wms.1384 +msgid "aev_zones_calmes_urbaines" +msgstr "Potentielle Gebiete der ruhigen Stadtlandschaft" + +#: lu_int_wms.1385 +msgid "aev_oases_urbaines" +msgstr "Potentiell ruhige Stadtoasen" + +#: group.1382 +msgid "aev_zones_calmes" +msgstr "Ruhige Gebiete" + +#: lu_int_wms.1386 +msgid "mobiliteit_livebikes" +msgstr "Fahrradverleihsysteme (Livedaten)" + +#: group.1390 +msgid "secours_siden" +msgstr "SIDEN" + +#: group.1392 +msgid "secours_sebes" +msgstr "SEBES" + +#: group.1393 +msgid "secours_pch" +msgstr "PCH" + +#: group.1394 +msgid "siden_canalisation" +msgstr "Canalisation" + +#: lu_int_wms.1395 +msgid "siden_conduites_de_refoulement" +msgstr "Conduites de refoulement" + +#: lu_int_wms.1397 +msgid "siden_ouvrages" +msgstr "Ouvrages" + +#: lu_int_wms.1399 +msgid "siden_eaux_pluviales" +msgstr "Eaux pluviales" + +#: group.1401 +msgid "sebes_reseau_adduction" +msgstr "Réseau d'adduction" + +#: group.1402 +msgid "sebes_lac_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1403 +msgid "sebes_bassins_versants" +msgstr "Bassins versants" + +#: lu_int_wms.1405 +msgid "sebes_reseau_adduction_sebes" +msgstr "Réseau d'adduction SEBES" + +#: lu_int_wms.1406 +msgid "sebes_volume_structure_lac" +msgstr "Volume et structure du lac" + +#: lu_int_wms.1407 +msgid "sebes_bassinversant_sure_lux_bel" +msgstr "Bassin versant luxembourgeois et belge pour la Sûre" + +#: lu_int_wms.1408 +msgid "sebes_bassinversant_sure_bel" +msgstr "Bassin versant belge" + +#: lu_int_wms.1409 +msgid "sebes_bassinversant_sous_bassins" +msgstr "Sous-bassins versants" + +#: lu_int_wms.1410 +msgid "sebes_zoneprotection_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1411 +msgid "pch_infrastructure" +msgstr "Infrastructure" + +#: group.1412 +msgid "pch_origine_pollution" +msgstr "Origine de la pollution" + +#: lu_int_wms.1413 +msgid "pch_reseau_routier_avec_pk" +msgstr "Réseau routier " + +#: lu_int_wms.1414 +msgid "pch_chemins_acces" +msgstr "Chemins d'accès" + +#: lu_int_wms.1415 +msgid "pch_ancrage_barrage_flottant" +msgstr "Points d'ancrage pour barrage flottant" + +#: lu_int_wms.1416 +msgid "pch_zones_acces" +msgstr "Zones d'accès" + +#: lu_int_wms.1417 +msgid "pch_ouvrages_art_eau" +msgstr "Ouvrages d'art sur cours d'eau" + +#: lu_int_wms.1419 +msgid "pch_camion_pompe" +msgstr "Camion pompe" + +#: lu_int_wms.1420 +msgid "pch_stockage_materiaux_depolluants" +msgstr "Stockage de matériaux dépolluants" + +#: lu_int_wms.1421 +msgid "pch_place_potentielle_retenue_antipollution" +msgstr "Place potentielle de retenue antipollution" + +#: lu_int_wms.1422 +msgid "pch_stations_services" +msgstr "Stations-services" + +#: group.1423 +msgid "secours_basisdaten" +msgstr "" + +#: lu_int_wms.181 +msgid "roads" +msgstr "Straßennetz" + +#: lu_int_wms.351 +msgid "roads_labels" +msgstr "Straßennamen" + +#: lu_ext_wms.1424 +msgid "logt_baul_feedback_2013" +msgstr "Baulücken-Feedback 2013" + +#: lu_int_wms.1426 +msgid "aev_reseau_biosurveillance" +msgstr "Biomonitoring Messnetz (Internal)" + +#: lu_int_wms.1427 +msgid "aev_mesures_tubes_passifs" +msgstr "Passivsammler-Messnetz (Internal)" + +#: lu_int_wms.1425 +msgid "air_quality_pm10" +msgstr "Geostatistische Interpolation PM10" + +#: lu_int_wms.1429 +msgid "air_quality_no2" +msgstr "Geostatistische Interpolation NO2" + +#: lu_int_wms.1430 +msgid "air_quality_o3" +msgstr "Geostatistische Interpolation O3" + +#: group.737 +msgid "Groupes canins" +msgstr "" + +#: lu_ext_wms.1431 +msgid "cgdis_groupe_cynotechnique" +msgstr "" + +#: lu_int_wms.1432 +msgid "air_quality_global" +msgstr "" + +#: lu_int_wms.1434 +msgid "at_pst_droit_preemption" +msgstr "Vorkaufsrecht" + +#: lu_int_wms.1435 +msgid "at_pszae_droit_preemption" +msgstr "Vorkaufsrecht" + +#: lu_int_wms.1436 +msgid "at_psl_droit_preemption" +msgstr "Vorkaufsrecht" + +#: lu_int_wms.1438 +msgid "Habitations" +msgstr "" + +#: group.1440 +msgid "APRG Zones de protection du Lac de la Haute Sûre" +msgstr "" + +#: lu_int_wms.1441 +msgid "Zones urbanisées" +msgstr "" + +#: lu_int_wms.1442 +msgid "Bâtiments industriels / commerciaux" +msgstr "" + +#: group.1444 +msgid "Altlasten" +msgstr "" + +#: lu_int_wms.1446 +msgid "Sites potentiellement contaminés" +msgstr "" + +#: lu_int_wms.1447 +msgid "Axes routiers" +msgstr "" + +#: lu_int_wms.1448 +msgid "Zones de protection d'eaux de surfaces" +msgstr "" + +#: lu_int_wms.1449 +msgid "Vulnérabilité selon méthode SIRIS" +msgstr "" + +#: lu_int_wms.1451 +msgid "Sites de baignade" +msgstr "" + +#: lu_int_wms.1452 +msgid "Etang à poissons" +msgstr "" + +#: lu_int_wms.1453 +msgid "Chemin risque de contamination des eaux par chiens promenés" +msgstr "" + +#: lu_int_wms.1454 +msgid "Pêche" +msgstr "" + +#: lu_int_wms.1455 +msgid "Trafic bateaux " +msgstr "" + +#: lu_int_wms.1445 +msgid "Sites contaminés" +msgstr "" + +#: group.1456 +msgid "Autres utilisations" +msgstr "" + +#: l_wmts.1457 lu_int_wms.1458 lu_ext_wms.1459 +msgid "OSM_MQ" +msgstr "" + +#: lu_int_wms.1463 +msgid "lidar_mnh" +msgstr "Digitales Objekthöhenmodell" + +#: lu_int_wms.1462 +msgid "wg_exposition_map" +msgstr "Exposition" + +#: lu_int_wms.1461 +msgid "wg_hangneigung_map" +msgstr "Hangneigung °" + +#: lu_int_wms.1460 +msgid "wg_relief_map" +msgstr "Relief" + +#: lu_int_wms.1464 +msgid "eau_prgd_zones_protection_lac" +msgstr "Entwurf der großherzoglichen Verordnung zur Abgrenzung der Schutzzonen um den Obersauer Stausee" + +#: lu_int_wms.1465 +msgid "aev_medium_combustion_plants" +msgstr "" + +#: group.1466 +msgid "aev_facilities_registers" +msgstr "" + +#: group.1467 +msgid "radon" +msgstr "" + +#: lu_int_wms.1468 +msgid "carte_radon_communes" +msgstr "Radon-Konzentrationen pro Gemeinde" + +#: lu_int_wms.1469 +msgid "eau_strahlwirkungskonzept" +msgstr "Strahlwirkungskonzept" + +#: lu_int_wms.1470 +msgid "eau_fliessgewaessertypen_2015" +msgstr "Fließgewässertypen 2015 (LAWA)" + +#: lu_int_wms.1471 +msgid "eau_detailliertes_massnahmenprogramm_sww" +msgstr "Detailliertes Maßnahmenprogramm SWW" + +#: group.1472 +msgid "aev_modelisation" +msgstr "Modellierung" + +#: group.1473 +msgid "aev_air_mesures" +msgstr "Messnetze" + +#: lu_int_wms.1474 +msgid "cantons_voodoo_test" +msgstr "" + +#: lu_int_wms.1475 +msgid "env_bruit_axes_routiers_hotspots" +msgstr "Prioritäre Hotspots - Straßenlärm 2011" + +#: lu_int_wms.1476 +msgid "env_bruit_axes_ferroviaires_hotspots" +msgstr "Prioritäre Hotspots - Schienenlärm 2011" + +#: lu_int_wms.1477 +msgid "aev_pacte_climat_2018" +msgstr "Klimapakt 2018 - NO2 (Internal)" + +#: group.1478 +msgid "aev_air_campagnes_mesure" +msgstr "NO2 Hotspots (Internal)" + +#: lu_int_wms.1479 +msgid "aev_casipo_attributs_internes" +msgstr "" + +#: lu_int_wms.1480 +msgid "air_quality_pm2_5" +msgstr "Geostatistische Interpolation PM2.5" + +#: group.1481 +msgid "asta_projet_rgd" +msgstr "Entwurf der großherzoglichen Verordnung zur Abgrenzung der Schutzzonen um den Obersauer Stausee" + +#: lu_int_wms.1482 +msgid "asta_contrainte_stockage_engrais" +msgstr "Einschränkungen für die Lagerung organischer Dünger und Silofeldmieten (Hangneigung > 5%)" + +#: lu_int_wms.1483 +msgid "asta_contrainte_utilisation_engrais" +msgstr "Einschränkungen für die Ausbringung organischer Flüssigdünger und Maßnahmen gegen die Erosion (Hangneigung > 10%)" + +#: lu_int_wms.1484 +msgid "eau_asta_prgd_zones_protection_lac" +msgstr "Schutzzonen" + +#: lu_int_wms.1485 +msgid "env_bruit_axes_routiers_agglomeration" +msgstr "Prioritäre Hotspots - Straßenlärm 2011 Agglomeration" + +#: lu_int_wms.1486 +msgid "env_bruit_routes_lden_2016" +msgstr "Hauptverkehrsstraßen 2016 (Lden) (Internal)" + +#: lu_int_wms.1487 +msgid "env_bruit_routes_lngt_2016" +msgstr "Hauptverkehrsstraßen 2016 (Lngt) (Internal)" + +#: lu_int_wms.1488 +msgid "env_bruit_ferroviaire_lden_2016" +msgstr "Haupteisenbahnstrecken 2016 (Lden) (Internal)" + +#: lu_int_wms.1489 +msgid "env_bruit_ferroviaire_lngt_2016" +msgstr "Haupteisenbahnstrecken 2016 (Lngt) (Internal)" + +#: lu_int_wms.1490 +msgid "env_bruit_air_lden_2016" +msgstr "Großflughafen 2016 (Lden) (Internal)" + +#: lu_int_wms.1491 +msgid "env_bruit_air_lngt_2016" +msgstr "Großflughafen 2016 (Lngt) (Internal)" + +#: lu_int_wms.1492 +msgid "at_pds_parcels" +msgstr "Bescheinigung SLP" + +#: group.1493 +msgid "at_pds_parcels_group" +msgstr "SLP Zusätzliche Dokumente" + +#: lu_int_wms.1494 +msgid "gaz_naturel" +msgstr "Erdgasverfügbarkeit" + +#: group.1495 +msgid "fourniture_energie" +msgstr "Energieversorgung" + +#: lu_int_wms.1496 +msgid "anf_centre_ramassage" +msgstr "Annahmestellen für Fallwild und Aufbruch" + +#: l_wmts.1497 +msgid "env_bruit2016_axes_routiers_lden" +msgstr "Hauptverkehrsstraßen 2016 (Lden)" + +#: l_wmts.1498 +msgid "env_bruit2016_axes_ferroviaires_lden" +msgstr "Haupteisenbahnstrecken 2016 (Lden)" + +#: l_wmts.1499 +msgid "env_bruit2016_axes_aeroport_lngt" +msgstr "Großflughafen 2016 (Lngt)" + +#: l_wmts.1500 +msgid "env_bruit2016_axes_routiers_lngt" +msgstr "Hauptverkehrsstraßen 2016 (Lngt)" + +#: l_wmts.1501 +msgid "env_bruit2016_axes_aeroport_lden" +msgstr "Großflughafen 2016 (Lden)" + +#: l_wmts.1502 +msgid "env_bruit2016_axes_ferroviaires_lngt" +msgstr "Haupteisenbahnstrecken 2016 (Lngt)" + +#: lu_int_wms.1503 +msgid "env_bruit_axes_ferroviaires_hotspots_2016" +msgstr "Prioritäre Hotspots - Schienenlärm 2016 (Internal)" + +#: lu_int_wms.1504 +msgid "env_bruit_axes_routiers_hotspots_2016" +msgstr "Prioritäre Hotspots - Straßenlärm 2016 (Internal)" + +#: lu_int_wms.1505 +msgid "env_bruit_axes_routiers_agglomeration_2016" +msgstr "Prioritäre Hotspots - Straßenlärm 2016 Agglomeration (Internal)" + +#: lu_int_wms.1506 +msgid "aev_dechets_composting" +msgstr "" + +#: lu_int_wms.1507 +msgid "aev_dechets_inert_waste" +msgstr "" + +#: lu_int_wms.1508 +msgid "aev_dechets_recycling" +msgstr "" + +#: lu_int_wms.1509 +msgid "aev_dechets_biogas" +msgstr "" + +#: group.1510 +msgid "aev_dechets" +msgstr "" + +#: lu_int_wms.1511 +msgid "asta_prairies_permanentes" +msgstr "Dauergrünlandstatut" + +#: lu_int_wms.1512 +msgid "aev_no2_grobscreening_2016" +msgstr "NO2 Grobscreening 2016" + +#: lu_ext_wms.1513 +msgid "tourisme_neue_nationale_wanderwege" +msgstr "Neue Nationale Wanderwege" + +#: lu_int_wms.1514 +msgid "anf_forets_publiques_fsc_pefc" +msgstr "Öffentliche zertifizierte Wälder FSC und/oder PEFC" + +#: lu_ext_wms.1515 +msgid "tourisme_ortal_belaege" +msgstr "Beläge " + +#: lu_ext_wms.1516 +msgid "tourisme_ortal_escapardenne" +msgstr "Escapardenne" + +#: lu_ext_wms.1517 +msgid "tourisme_ortal_naturwanderpark_delux" +msgstr "NaturWanderPark delux" + +#: lu_ext_wms.1518 +msgid "tourisme_ortal_qualitaetstouren" +msgstr "Qualitätstouren" + +#: lu_ext_wms.1519 +msgid "tourisme_ortal_lokale_wanderwege" +msgstr "Lokale Wanderwege" + +#: lu_ext_wms.1520 +msgid "tourisme_ortal_grosse_lokale_wanderwege" +msgstr "Große lokale Wanderwege" + +#: lu_ext_wms.1521 +msgid "tourisme_ortal_kleine_lokale_wanderwege" +msgstr "Kleine lokale Wanderwege POI" + +#: lu_ext_wms.1522 +msgid "tourisme_ortal_autopedestres" +msgstr "Auto-Pédestre Wanderwege" + +#: lu_ext_wms.1523 +msgid "tourisme_ortal_cfl" +msgstr "CFL-Bahnwanderwege" + +#: lu_ext_wms.1524 +msgid "tourisme_ortal_wanderwege_thema" +msgstr "Wanderwege mit Thema " + +#: lu_ext_wms.1525 +msgid "tourisme_ortal_themenwege" +msgstr "Themenwege" + +#: group.1526 +msgid "tourisme_wanderwege_ortal" +msgstr "Qualitätswanderregion Éislek" + +#: l_wmts.1527 +msgid "ortho_2018" +msgstr "Orthophoto 2018" + +#: lu_int_wms.1529 +msgid "ortho2018_IR" +msgstr "Orthophoto 2018 infrarot" + +#: theme.1528 +msgid "atlas_demographique_old" +msgstr "" + +#: theme.1530 +msgid "atlas_demographique" +msgstr "" + +#: lu_int_wms.1531 +msgid "ad_fusions_communes" +msgstr "Überblick der Gemeindefusionen seit 1920" + +#: lu_int_wms.1532 +msgid "ad_communes_cantons" +msgstr "Die 12 Kantone und 102 Gemeinden am 1. Januar 2018" + +#: lu_int_wms.1533 +msgid "ad_evol_pop_1981_2018" +msgstr "Bevölkerungsentwicklung" + +#: lu_int_wms.1534 +msgid "ad_part_francais_commune" +msgstr "Franzosen" + +#: lu_int_wms.1535 +msgid "ad_densite_pop_comm" +msgstr "Bevölkerungsdichte pro Gemeinde am 1. Januar 2018" + +#: lu_int_wms.1536 +msgid "ad_part_portugais_commune" +msgstr "Portugiesen" + +#: lu_int_wms.1537 +msgid "ad_part_africains_commune" +msgstr "Afrikaner" + +#: lu_int_wms.1538 +msgid "ad_part_allemands_commune" +msgstr "Deutsche" + +#: lu_int_wms.1539 +msgid "ad_part_americains_commune" +msgstr "Amerikaner" + +#: lu_int_wms.1540 +msgid "ad_part_asiates_commune" +msgstr "Asiaten und Ozeanier" + +#: lu_int_wms.1541 +msgid "ad_part_belges_commune" +msgstr "Belgier" + +#: lu_int_wms.1542 +msgid "ad_part_nonUE28_commune" +msgstr "Europäer (nicht UE-28)" + +#: lu_int_wms.1543 +msgid "ad_part_UE28_commune" +msgstr "Europäer (UE-28)" + +#: lu_int_wms.1544 +msgid "ad_part_italiens_commune" +msgstr "Italiener" + +#: group.1545 +msgid "ad_part_etrangers_comm" +msgstr "Anteil der Ausländer an der Bevölkerung" + +#: group.1546 +msgid "ad_org_territoriale" +msgstr "Territoriale Organisation" + +#: group.1547 +msgid "ad_org_terr_lux" +msgstr "Territoriale Organisation von Luxemburg" + +#: group.1548 +msgid "ad_etat_population" +msgstr "Stand der Bevölkerung" + +#: group.1549 +msgid "ad_population_stock_evolution_densite" +msgstr "Bestand, Entwicklung und Dichte der Bevölkerung" + +#: group.1550 +msgid "ad_evolution_pop_comm" +msgstr "Bevölkerungsentwicklung pro Gemeinde zwischen 1981 und 2018" + +#: group.1551 +msgid "ad_densite_pop" +msgstr "Bevölkerungsdichte pro Gemeinde am 1. Januar 2018" + +#: group.1552 +msgid "ad_rapport_hommes_femmes" +msgstr "Frauenanteil" + +#: group.1553 +msgid "ad_prop_femmes_comm_2018_group" +msgstr "" + +#: group.1554 +msgid "ad_etrangers_lieu_naissance" +msgstr "Ausländische Staatsangehörigkeit und Geburtsort" + +#: group.1555 +msgid "ad_nationalites_commune_2018" +msgstr "Meist verbreitete Staatsangehörigkeiten pro Gemeinde am 1. Januar 2018" + +#: group.1556 +msgid "ad_structure_age" +msgstr "Altersstruktur" + +#: group.1557 +msgid "ad_age_moyen" +msgstr "Durchschnittsalter pro Geschlecht und insgesamt, pro Gemeinde am 1. Januar 2018" + +#: group.1558 +msgid "ad_proportion_classes_age" +msgstr "Anteil der verschiedenen Altersgruppen pro Gemeinde am 1. Januar 2018" + +#: group.1559 +msgid "ad_proportion_jeunes" +msgstr "Anteil der jungen Personen (-18) nach verschiedenen Altersgruppen pro Gemeinde am 1. Januar 2018" + +#: group.1560 +msgid "ad_proportion_ages" +msgstr "Anteil der alten Personen (+65) nach verschiedenen Altersgruppen pro Gemeinde am 1. Januar 2018" + +#: lu_int_wms.1561 +msgid "ad_age_moyen_femmes" +msgstr "Durchschnittsalter der Frauen" + +#: lu_int_wms.1562 +msgid "ad_age_moyen_hommes" +msgstr "Durchschnittsalter der Männer" + +#: lu_int_wms.1563 +msgid "ad_age_moyen_2" +msgstr "Durchschnittsalter gesamt" + +#: lu_int_wms.1564 +msgid "ad_moins20" +msgstr "Anteil der unter 20-Jährigen " + +#: lu_int_wms.1565 +msgid "ad_20_64" +msgstr "Anteil der 20 bis 64-Jährigen" + +#: lu_int_wms.1566 +msgid "ad_65plus" +msgstr "Anteil der über 65-Jährigen" + +#: lu_int_wms.1567 +msgid "ad_moins3" +msgstr "Anteil der unter 3-Jährigen" + +#: lu_int_wms.1568 +msgid "ad_3_5" +msgstr "Anteil der 3-5-Jährigen" + +#: lu_int_wms.1569 +msgid "ad_6_10" +msgstr "Anteil der 6-10-Jährigen" + +#: lu_int_wms.1570 +msgid "ad_11_17" +msgstr "Anteil der 11-17-Jährigen" + +#: lu_int_wms.1571 +msgid "ad_65_74" +msgstr "Anteil der 65-74-Jährigen" + +#: lu_int_wms.1572 +msgid "ad_75_89" +msgstr "Anteil der 75-89-Jährigen" + +#: lu_int_wms.1573 +msgid "ad_90plus" +msgstr "Anteil der ab 90-Jährigen" + +#: lu_int_wms.1574 +msgid "ad_poles_urbains" +msgstr "Die drei städtischen Zentren in Luxemburg" + +#: group.1575 +msgid "ad_population_commune_canton" +msgstr "Bevölkerung pro Kanton und Gemeinde am 1. Januar 2018" + +#: lu_int_wms.1576 +msgid "ad_population_canton" +msgstr "Bevölkerung pro Kanton" + +#: lu_int_wms.1577 +msgid "ad_population_commune" +msgstr "Bevölkerung pro Gemeinde" + +#: lu_int_wms.1578 +msgid "ad_prop_femmes_comm_2018" +msgstr "Anteil der Frauen pro Gemeinde am 1. Januar 2018" + +#: lu_int_wms.1579 +msgid "ad_structure_pop_comm" +msgstr "Bevölkerungsstruktur pro Gemeinde am 1. Januar 2018" + +#: group.1580 +msgid "ad_lieu_naissance_lux_etr" +msgstr "Geburtsort (Luxemburg/Ausland)" + +#: lu_int_wms.1581 +msgid "ad_lieu_naissance_commune" +msgstr "Geburtsort pro Gemeinde am 1. Januar 2018" + +#: lu_int_wms.1582 +msgid "ad_rapport_dependance_personnes_agees" +msgstr "Altenquotient pro Gemeinde" + +#: lu_int_wms.1583 +msgid "ad_rapport_dependance_jeunes" +msgstr "Jugendquotient pro Gemeinde" + +#: lu_int_wms.1584 +msgid "ad_rapport_dependance_total" +msgstr "Abhängigenquotient (gesamt)" + +#: lu_int_wms.1585 +msgid "ad_celibataires" +msgstr "Ledige" + +#: lu_int_wms.1586 +msgid "ad_maries_pacses" +msgstr "Verheiratete/in ziviler Lebenspartnerschaft lebende" + +#: lu_int_wms.1587 +msgid "ad_divorces_separes" +msgstr "Geschiedene/Getrennte" + +#: lu_int_wms.1588 +msgid "ad_veufs_veuves" +msgstr "Verwitwete" + +#: group.1589 +msgid "ad_rapport_dependance" +msgstr "Abhängigenquotient pro Gemeinde am 1. Januar 2018" + +#: group.1590 +msgid "ad_situation_matrimoniale" +msgstr "Familienstand der Volljährigen (18+)" + +#: group.1591 +msgid "ad_mouvement_population" +msgstr "Bevölkerungsbewegung" + +#: group.1592 +msgid "ad_naissances" +msgstr "Geburten" + +#: group.1593 +msgid "ad_deces" +msgstr "Sterbefälle" + +#: group.1594 +msgid "ad_solde_naturel" +msgstr "Natürlicher Saldo" + +#: group.1595 +msgid "ad_migrations" +msgstr "Migrationen" + +#: group.1596 +msgid "ad_mariages" +msgstr "Eheschließungen" + +#: lu_int_wms.1597 +msgid "ad_naissances_taux_natalite" +msgstr "Anzahl der Geburten und Geburtenrate pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1598 +msgid "ad_naissances_mariage" +msgstr "Anteil der Geburten innerhalb der Ehe pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1599 +msgid "ad_naissances_age_maternite" +msgstr "Durchschnittsalter bei der Geburt pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1600 +msgid "ad_deces_taux_mortalite" +msgstr "Anzahl der Sterbefälle und Sterblichkeitsrate pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1601 +msgid "ad_solde_naturel_nombre_absolu" +msgstr "Natürlicher Saldo und natürliche Saldo-Rate pro Gemeinde (Durchschnitt 2013-2017)" + +#: group.1602 +msgid "ad_langues_lux" +msgstr "Sprachen in Luxemburg" + +#: lu_int_wms.1603 +msgid "ad_migrations_solde_interne" +msgstr "Interner Migrationssaldo und interne Migrationssaldo-Rate (Durchschnitt 2013-2017)" + +#: lu_int_wms.1604 +msgid "ad_migrations_solde_international" +msgstr "Internationaler Migrationssaldo und internationale Migrationssaldo-Rate (Durchschnitt 2013-2017)" + +#: lu_int_wms.1605 +msgid "ad_migrations_solde_total" +msgstr "Gesamter Migrationssaldo und gesamte Migrationssaldo-Rate (Durchschnitt 2013-2017)" + +#: lu_int_wms.1606 +msgid "ad_mariages_taux_nuptialite" +msgstr "Anzahl der Eheschließungen und Eheschließungsrate pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1607 +msgid "ad_mariages_age_femme" +msgstr "Durchschnittsalter der Frauen bei der Eheschließung pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1608 +msgid "ad_mariage_age_hommes" +msgstr "Durchschnittsalter der Männer bei der Eheschließung pro Gemeinde (Durchschnitt 2013-2017)" + +#: lu_int_wms.1609 +msgid "ad_langues_luxembourgeois" +msgstr "Luxemburgisch" + +#: lu_int_wms.1610 +msgid "ad_langues_francais" +msgstr "Französisch" + +#: lu_int_wms.1611 +msgid "ad_langues_allemand" +msgstr "Deutsch" + +#: lu_int_wms.1612 +msgid "ad_langues_portugais" +msgstr "Portugiesisch" + +#: lu_int_wms.1613 +msgid "ad_langues_italien" +msgstr "Italienisch" + +#: lu_int_wms.1614 +msgid "ad_langues_anglais" +msgstr "Englisch" + +#: lu_int_wms.1615 +msgid "ad_langues_autre" +msgstr "Andere Sprache" + +#: group.1616 +msgid "ad_langue_principale_2018" +msgstr "Hauptsprache" + +#: lu_ext_wms.1617 +msgid "levee_sans_operation" +msgstr "" + +#: group.1620 +msgid "points_sauvetage_group" +msgstr "Rettungspunkte" + +#: lu_int_wms.1621 +msgid "points_sauvetage_vdl" +msgstr "Rettungspunkte - Stadt Luxemburg" + +#: group.1622 +msgid "ortal_kriterienauswertung" +msgstr "Kriterienauswertung" + +#: group.1623 +msgid "ortal_wanderwege" +msgstr "Wanderwege" + +#: lu_ext_wms.1624 +msgid "tourisme_ortal_5_strasse" +msgstr "Kriterium 5% auf Straße" + +#: lu_ext_wms.1625 +msgid "tourisme_ortal_10_nebenstrasse" +msgstr "Kriterium 10% neben Straße" + +#: lu_ext_wms.1626 +msgid "tourisme_ortal_75_abdeckung" +msgstr "Kriterium 75% Abdeckung" + +#: lu_ext_wms.1627 +msgid "tourisme_ortal_schlecht_begehbar" +msgstr "Kriterium schlecht begehbar" + +#: lu_ext_wms.1628 +msgid "tourisme_ortal_ausgangspunkte" +msgstr "Kriterium Ausgangspunkte" + +#: lu_ext_wms.1629 +msgid "tourisme_ortal_knotenpunkte" +msgstr "Kriterium Knotenpunkte" + +#: lu_ext_wms.1630 +msgid "tourisme_ortal_wegweiserstandorte" +msgstr "Kriterium Wegweiserstandorte " + +#: lu_ext_wms.1631 +msgid "tourisme_ortal_verpflegung" +msgstr "Kriterium Verpflegung" + +#: lu_ext_wms.1632 +msgid "tourisme_ortal_gastgeber" +msgstr "Kriterium Gastgeber" + +#: lu_ext_wms.1633 +msgid "tourisme_ortal_touristinfo" +msgstr "Kriterium Tourist-Informationen" + +#: lu_ext_wms.1634 +msgid "tourisme_ortal_wanderziele" +msgstr "Wanderziele & Sehnsuchtsorte" + +#: lu_ext_wms.1635 +msgid "tourisme_ortal_mobilitaet" +msgstr "Kriterium Mobilität" + +#: lu_ext_wms.1636 +msgid "tourisme_ortal_servicestellen" +msgstr "Kriterium Servicestellen" diff --git a/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-server.po b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-server.po similarity index 69% rename from geoportailv3/locale/de/LC_MESSAGES/geoportailv3-server.po rename to geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-server.po index 047ec946c..32602d475 100644 --- a/geoportailv3/locale/de/LC_MESSAGES/geoportailv3-server.po +++ b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-server.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:15+0000\n" +"PO-Revision-Date: 2019-01-07 08:28+0000\n" "Last-Translator: Jeff Konnen \n" "Language-Team: German (http://www.transifex.com/geoportail/geoportailv3-lu/language/de/)\n" "MIME-Version: 1.0\n" @@ -18,7 +18,7 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ./geoportailv3/views/pag.py:120 +#: ./geoportailv3/views/pag.py:124 #, python-format msgid "PAG webservice response ${email}" msgstr "Votre rapport est en train d'être généré.\n
Un email vous sera envoyé à l'adresse ${email} dès qu'il sera disponible" @@ -32,106 +32,123 @@ msgstr "Bonjour!\n
\nil y a eu un souci avec la génération de votre rapport msgid "PAG Mail the report link ${link}" msgstr "Bonjour!\n
\n
\nVotre rapport PAG est finalisé.\n
\n
\nCliquez-ici pour télécharger le résultat.\n
\n
\nMeilleures salutations\n
\nL'équipe du géoportail et du Ministère de l'Intérieur" -#: ./geoportailv3/views/luxprintproxy.py:147 +#: ./geoportailv3/views/luxprintproxy.py:215 msgid "Access constraints" msgstr "Zugangsbestimmungen" #: ./geoportailv3/models.py:27 -msgid "Allowed measurement for a user" -msgstr "Allowed measurement for a user" +msgid "Base url for download" +msgstr "" -#: ./geoportailv3/models.py:38 +#: ./geoportailv3/models.py:42 +msgid "Allowed surveying for a user" +msgstr "" + +#: ./geoportailv3/models.py:54 +msgid "Surveying file config" +msgstr "" + +#: ./geoportailv3/models.py:67 msgid "Internal WMS layer" msgstr "Internal WMS layer" -#: ./geoportailv3/models.py:39 +#: ./geoportailv3/models.py:68 msgid "Internal WMS layers" msgstr "Internal WMS layers" -#: ./geoportailv3/models.py:60 +#: ./geoportailv3/models.py:89 msgid "External WMS layer" msgstr "External WMS layer" -#: ./geoportailv3/models.py:61 +#: ./geoportailv3/models.py:90 msgid "External WMS layers" msgstr "External WMS layers" -#: ./geoportailv3/models.py:52 +#: ./geoportailv3/models.py:37 ./geoportailv3/models.py:81 +#: ./geoportailv3/models.py:167 msgid "Url" msgstr "Url" -#: ./geoportailv3/models.py:53 +#: ./geoportailv3/models.py:38 +msgid "Only connected user can download" +msgstr "" + +#: ./geoportailv3/models.py:82 msgid "Layers" msgstr "Layers" -#: ./geoportailv3/models.py:54 +#: ./geoportailv3/models.py:83 msgid "Is a POI" msgstr "Is a POI" -#: ./geoportailv3/models.py:55 +#: ./geoportailv3/models.py:84 msgid "Collection ID" msgstr "Collection ID" -#: ./geoportailv3/models.py:56 +#: ./geoportailv3/models.py:85 msgid "REST url" msgstr "REST url" -#: ./geoportailv3/models.py:74 +#: ./geoportailv3/models.py:103 msgid "Category ID" msgstr "Category ID" -#: ./geoportailv3/models.py:87 +#: ./geoportailv3/models.py:116 msgid "Table name" msgstr "Table name" -#: ./geoportailv3/models.py:88 +#: ./geoportailv3/models.py:117 msgid "URL Rest" msgstr "URL Rest" -#: ./geoportailv3/models.py:89 +#: ./geoportailv3/models.py:118 msgid "Engine" msgstr "Engine" -#: ./geoportailv3/models.py:90 +#: ./geoportailv3/models.py:119 msgid "Layer" msgstr "Layer" -#: ./geoportailv3/models.py:91 +#: ./geoportailv3/models.py:120 msgid "Template file name" msgstr "Template file name" -#: ./geoportailv3/models.py:93 +#: ./geoportailv3/models.py:122 msgid "Is the template local or remote" msgstr "Is the template local or remote" -#: ./geoportailv3/models.py:94 +#: ./geoportailv3/models.py:123 msgid "Python function" msgstr "Python function" -#: ./geoportailv3/models.py:95 +#: ./geoportailv3/models.py:124 msgid "Role" msgstr "Role" -#: ./geoportailv3/models.py:96 -msgid "Attributes to keep" -msgstr "Attributes to keep" +#: ./geoportailv3/models.py:125 +msgid "Attributes to remove" +msgstr "" -#: ./geoportailv3/models.py:97 +#: ./geoportailv3/models.py:126 msgid "Id of the poi collection" msgstr "Id of the poi collection" -#: ./geoportailv3/models.py:98 +#: ./geoportailv3/models.py:127 msgid "Geometry column name" msgstr "Geometry column name" -#: ./geoportailv3/models.py:99 +#: ./geoportailv3/models.py:128 msgid "Order of columns" msgstr "Order of columns" -#: ./geoportailv3/models.py:100 +#: ./geoportailv3/models.py:129 msgid "ID column name" msgstr "ID column name" -#: ./geoportailv3/models.py:102 +#: ./geoportailv3/models.py:131 msgid "Is a profile displayed in template ?" msgstr "" + +#: ./geoportailv3/models.py:133 +msgid "Limit the results. If < 0 then not limit." +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-tooltips.po b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-tooltips.po new file mode 100644 index 000000000..793d71813 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/geoportailv3_geoportal-tooltips.po @@ -0,0 +1,2444 @@ +# +# Translators: +# Andrea Donno , 2015-2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 +# Francis Kaell , 2015 +# Jeff Konnen , 2015 +# Jeff Konnen , 2015-2018 +# Loubnabarra , 2017 +# Loubnabarra , 2017 +# Patrick Weber , 2015 +# Patrick Weber , 2015 +msgid "" +msgstr "" +"Project-Id-Version: portail\n" +"PO-Revision-Date: 2019-01-11 14:29+0000\n" +"Last-Translator: dhorper \n" +"Language-Team: German (http://www.transifex.com/geoportail/geoportailv3-lu/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Nom" +msgstr "Name" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Code national" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Photo" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Hyperlinks" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Abschnitt" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Cours eau" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Profil en travers" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Fiche descriptive" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Type LAWA" +msgstr "" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_name" +msgstr "Name" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_address" +msgstr "Adresse" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_bikes" +msgstr "Verfügbare Fahrräder" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_ebikes" +msgstr "Verfügbare E-Bikes" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_docks" +msgstr "Verfügbare Stationen" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_docks" +msgstr "Total Stationen" + +#: engineecadastre Layer:265 RoleNone +msgid "f_numero" +msgstr "Nummer" + +#: engineecadastre Layer:457 RoleNone +msgid "f_tiff" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_nom" +msgstr "Name" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_geoloc_type" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_fr" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_gr" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_nuts5" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_canton" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_habitants" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_chef_lieu" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_district" +msgstr "" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_commune" +msgstr "Aktueller Name der Gemeinde, in welcher sich der größte Teil des Biotops befindet" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_code" +msgstr "Type des Biotops" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_url_fiche" +msgstr "Informationsblatt" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_biotope" +msgstr "Eindeutiger Code des Biotops" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_annee_evaluation" +msgstr "Jahr der Erstinventur " + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_fr" +msgstr "Französicher Name des Biotops" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_de" +msgstr "Deutscher Name des Biotops" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_evaluation" +msgstr "Gesamtbewertung des Biotops" + +#: engineecadastre Layer:1368 RoleNone +msgid "f_surface_ares" +msgstr "Fläche in Ar (100m²) aufgerundet zum Quadratmeter" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_Etat" +msgstr "Status" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_P_kW" +msgstr "Elektrische Nennleistung (kVA)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_D_rotor_m" +msgstr "Durchmesser des Propellers (Meter)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_H_Moy_m" +msgstr "Nabenhöhe (Meter)" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Exploitant" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Code" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Nom(s) du/des captages(s) concerné(s)" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Projet de Règlement grand-ducal" +msgstr "" + +#: engineecadastre Layer:647 RoleNone +msgid "f_Photo station" +msgstr "" + +#: engineecadastre Layer:573 RoleNone +msgid "f_Publication du règlement grand-duca" +msgstr "" + +#: engineecadastre Layer:797 RoleNone +msgid "f_site de la commune" +msgstr "" + +#: engineecadastre Layer:805 RoleNone +msgid "f_no_zpin" +msgstr "Nummer" + +#: engineecadastre Layer:805 RoleNone +msgid "f_interets_principaux" +msgstr "Hauptnutzen" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_c" +msgstr "Verbot Zone C" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_a" +msgstr "Verbot Zone A" + +#: engineecadastre Layer:804 RoleNone +msgid "f_date_classement" +msgstr "Datum der Ausweisung" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_b" +msgstr "Verbot Zone B" + +#: engineecadastre Layer:804 RoleNone +msgid "f_commentaire" +msgstr "Kommentar" + +#: engineecadastre Layer:804 RoleNone +msgid "f_sous_zone" +msgstr "Unterzone" + +#: engineecadastre Layer:804 RoleNone +msgid "f_link" +msgstr "Link" + +#: engineecadastre Layer:804 RoleNone +msgid "f_code_national" +msgstr "Nationaler Code" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_Name" +msgstr "Name" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_description" +msgstr "Beschreibung" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastrePa" +msgstr "Katasterparzelle" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastreSe" +msgstr "Katastersektion" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteAEV" +msgstr "Genehmigung des Umweltministers / Kommodo" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Installati" +msgstr "Installation" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArretNum" +msgstr "Erlassnummer" + +#: engineecadastre Layer:801 RoleNone +msgid "f_SiteOperat" +msgstr "Standort" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Adresse" +msgstr "Adresse" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception" +msgstr "Abnahme" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Explicatio" +msgstr "Allgemeine Erklärungen" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteITM" +msgstr "Genehmigung des Arbeitsministers" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception2" +msgstr "Abnahme 2" + +#: engineecadastre Layer:802 RoleNone +msgid "f_PointMesur" +msgstr "" + +#: engineecadastre Layer:802 RoleNone +msgid "f_URL" +msgstr "" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Km2" +msgstr "Fläche (km2)" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Steckbri_1" +msgstr "Steckbrief" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Legende" +msgstr "Typ des Gebiets" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Id" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Code masse eau" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Fiches descriptives" +msgstr "" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Operateur" +msgstr "Betreiber" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Commune" +msgstr "Gemeinde" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Technologi" +msgstr "Technologie" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Site" +msgstr "Standort" + +#: engineecadastre Layer:427 RoleNone +msgid "f_fax" +msgstr "Fax" + +#: engineecadastre Layer:427 RoleNone +msgid "f_code_postal" +msgstr "Postleitzahl" + +#: engineecadastre Layer:427 RoleNone +msgid "f_telephone" +msgstr "Telefon" + +#: engineecadastre Layer:427 RoleNone +msgid "f_rue" +msgstr "Strasse" + +#: engineecadastre Layer:427 RoleNone +msgid "f_boite_postale" +msgstr "Postfach" + +#: engineecadastre Layer:427 RoleNone +msgid "f_localite" +msgstr "Ortschaft" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_AQIAPP_ID" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_RPT_FILE" +msgstr "Jahresbericht (monatlich aktualisiert)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_X" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_Y" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_CITY" +msgstr "Localité" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO_RAW" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_F_ACTIVE" +msgstr "Status (in Betrieb = 1, außer Betrieb = 0)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_NUM_STREET" +msgstr "Numéro" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_CODE" +msgstr "Code" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_STREET" +msgstr "Rue" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_pm10_index_w_leg" +msgstr "PM10 Sub-Index" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_date_et_heure" +msgstr "Datum und Uhrzeit" + +#: engineecadastre Layer:355 RoleNone +msgid "f_nom_section" +msgstr "" + +#: engineecadastre Layer:355 RoleNone +msgid "f_district" +msgstr "Bezirk" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_cad" +msgstr "Katastergemeinde" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_admin" +msgstr "Gemeinde" + +#: engineecadastre Layer:355 RoleNone +msgid "f_code_section" +msgstr "Sektion" + +#: engineecadastre Layer:355 RoleNone +msgid "f_canton" +msgstr "Kanton" + +#: engineecadastre Layer:540 RoleNone +msgid "f_InspireID" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_CODE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_FID" +msgstr "FID" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITENAME" +msgstr "Name" + +#: engineecadastre Layer:540 RoleNone +msgid "f_TYPE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITECODE" +msgstr "Code" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nom_Projet" +msgstr "Projekt" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nr_Projet" +msgstr "Projekt-Nr." + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PERIMETER" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Reclasseme" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Classement" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ORIG_FID" +msgstr "" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_communeDDP" +msgstr "Gemeinde" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_plan" +msgstr "Plan" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_num_cadast" +msgstr "Parzellennummer" + +#: engineecadastre Layer:401 RoleNone +msgid "f_Nom_Site" +msgstr "Name des Standortes" + +#: engineecadastre Layer:401 RoleNone +msgid "f_SurfaceHa" +msgstr "Fläche in ha" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Projet" +msgstr "Projekt" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Type" +msgstr "Typ" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Priorite" +msgstr "Priorität" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code cours eau" +msgstr "" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code station" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_Operator" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_OBJECTID" +msgstr "" + +#: engineecadastre Layer:407 RoleNone +msgid "f_Categorie" +msgstr "Kategorie" + +#: engineecadastre Layer:402 RoleNone +msgid "f_Remarque" +msgstr "Bemerkung" + +#: engineecadastre Layer:655 Role:1 +msgid "f_Fiche station" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_lot" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_Gewaesser" +msgstr "" + +#: engineecadastre Layer:768 RoleNone +msgid "f_Résultats" +msgstr "" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Nbre_mes" +msgstr "Anzahl der Messungen" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_min" +msgstr "Aktivität min." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Activite" +msgstr "Durchschnittliche Aktivität" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_CANTON" +msgstr "Kanton" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_max" +msgstr "Aktivität max." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_LAU2" +msgstr "LAU2 Code" + +#: engineecadastre Layer:582 RoleNone +msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Drkg_Wtr_Prot_Zone" +msgstr "" + +#: engineecadastre Layer:582 RoleNone +msgid "f_Nitrates (mg/l)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Années de construction" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Type conduite" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Longueur géométrique (m)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Matériel conduite" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Cycle_pdm" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Nr" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Bezeich" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Planungszu" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Projekt_Co" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_result__Ge" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_RW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Lux_ID" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_F8" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Bezeichnun" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Kurzbezeic" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Maßnahmen" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_HW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Fiche" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Superficie (km²)" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Code AGE du point d'analyse" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Cours d'eau" +msgstr "Wasserläufe" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Profil" +msgstr "" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Nom de la station" +msgstr "" + +#: engineecadastre Layer:682 RoleNone +msgid "f_localisation" +msgstr "Lage" + +#: engineecadastre Layer:682 RoleNone +msgid "f_parkup" +msgstr "Doppelstockparker" + +#: engineecadastre Layer:682 RoleNone +msgid "f_capacity_inside" +msgstr "Kapazität" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Tronçon" +msgstr "Abschnitt" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Numéro" +msgstr "Site-ID" + +#: engineecadastre Layer:713 RoleNone +msgid "f_YEAR" +msgstr "Joer" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_line" +msgstr "LABEL_LINE" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_section" +msgstr "LABEL_SECTION" + +#: engineecadastre Layer:539 RoleNone +msgid "f_label" +msgstr "Parzelle" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligneshort" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_no_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk_text" +msgstr "" + +#: engineecadastre Layer:428 RoleNone +msgid "f_heures_appel" +msgstr "Anrufszeiten" + +#: engineecadastre Layer:428 RoleNone +msgid "f_arrondissement" +msgstr "Regionale Naturschutz- und Forstämter" + +#: engineecadastre Layer:428 RoleNone +msgid "f_preposes_forestiers" +msgstr "Förster" + +#: engineecadastre Layer:428 RoleNone +msgid "f_gsm" +msgstr "Mobiltelefon" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SelectTest" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_essence" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_propriete" +msgstr "BESITZ" + +#: engineecadastre Layer:690 RoleNone +msgid "f_secteur" +msgstr "SEKTOR" + +#: engineecadastre Layer:690 RoleNone +msgid "f_region" +msgstr "REGION" + +#: engineecadastre Layer:645 RoleNone +msgid "f_Analyses" +msgstr "" + +#: engineecadastre Layer:645 RoleNone +msgid "f_CAPA" +msgstr "" + +#: engineecadastre Layer:163 RoleNone +msgid "f_LEG_FR" +msgstr "Typ" + +#: engineecadastre Layer:331 RoleNone +msgid "f_type" +msgstr "Typ" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_la" +msgstr "Art (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_de" +msgstr "Name (de)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_la" +msgstr "Name (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_fr" +msgstr "Art (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_abreviation" +msgstr "Abkürzung" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_fr" +msgstr "Name (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_de" +msgstr "Art (de)" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChiro" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChir" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Ext_Nouv" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SUP2017" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Join_Count" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Area_ha" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Print0719" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Leng" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_OBJECTID_1" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone" +msgstr "Zonenname" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_TARGET_FID" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PrintModif" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NumeroRGD" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA_DEF" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Specifique" +msgstr "Bemerkung" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Select_" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone2" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ElimComp" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Le_1" +msgstr "" + +#: engineecadastre Layer:680 RoleNone +msgid "f_No" +msgstr "No" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Niveau d'assainissement" +msgstr "Niveau d'assainissement" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Contamination résiduelle" +msgstr "Contamination résiduelle" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Ancien No" +msgstr "Ancien No" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Description" +msgstr "Description" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Nom du site" +msgstr "Nom du site" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Année de saisie" +msgstr "Année de saisie" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Commentaire" +msgstr "Commentaire" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Identifiant surface" +msgstr "Identifiant surface" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Méthode" +msgstr "Méthode" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Fr" +msgstr "Kürzel in französicher Sprache: \"ZT\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Gr" +msgstr "Kürzel der Pufferzone in Deutscher Sprache: \"PZ\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Buffer_Id" +msgstr "Eindeutiger Code der Pufferzone" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKGemeinde" +msgstr "Gemeindename während des Kartierungsjahres" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Code" +msgstr "Code des ersten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_Shape_ares" +msgstr "Fläche in Ar (100m²) aufgerundet zum Quadratmeter" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEOCODE" +msgstr "Eindeutiger Code des Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Nom" +msgstr "Französicher Name des dritten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Code" +msgstr "Code des zweiten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKJahr" +msgstr "Kartierungsjahr" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Nom" +msgstr "Französicher Name des zweiten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Name" +msgstr "Deutscher Name des ersten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Code" +msgstr "Code des dritten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG3" +msgstr "Gesamtbewertung des dritten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG2" +msgstr "Gesamtbewertung des zweiten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG1" +msgstr "Gesamtbewertung des ersten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Name" +msgstr "Deutscher Name des dritten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Nom" +msgstr "Französicher Name des ersten Biotops" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEMEINDE" +msgstr "Aktueller Name der Gemeinde, welche den grössten Teil des Biotops beherbergt" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Name" +msgstr "Deutscher Name des zweiten Biotops" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Partie numéro" +msgstr "" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Loi" +msgstr "" + +#: engineecadastre Layer:670 RoleNone +msgid "f_COMMUNE" +msgstr "Gemeinde" + +#: engineecadastre Layer:670 RoleNone +msgid "f_UHD3" +msgstr "" + +#: engineecadastre Layer:493 RoleNone +msgid "f_Nom écosystème" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_y" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_arbre_baum" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_x" +msgstr "" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_name" +msgstr "Name" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_description" +msgstr "Beschreibung" + +#: engineecadastre Layer:678 RoleNone +msgid "f_station_biologique" +msgstr "Biologische Station" + +#: engineecadastre Layer:581 RoleNone +msgid "f_Qualité" +msgstr "" + +#: engineecadastre Layer:581 RoleNone +msgid "f_messstationen.GISADMIN.Badegewaesser.Baignade" +msgstr "" + +#: engineecadastre Layer:157 RoleNone +msgid "f_LDEN" +msgstr "dB" + +#: engineecadastre Layer:627 RoleNone +msgid "f_Station" +msgstr "" + +#: engineecadastre Layer:691 RoleNone +msgid "f_lot_numero" +msgstr "NUMMER" + +#: engineecadastre Layer:167 RoleNone +msgid "f_CodeDesc" +msgstr "Typ" + +#: engineecadastre Layer:255 RoleNone +msgid "f_LNGT" +msgstr "dB" + +#: engineecadastre Layer:367 RoleNone +msgid "f_flurname" +msgstr "Lieu-dit" + +#: engineecadastre Layer:367 RoleNone +msgid "f_vendeur" +msgstr "Vendeur" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem_p" +msgstr "Remarque Bail" + +#: engineecadastre Layer:367 RoleNone +msgid "f_datum" +msgstr "Date d''achat" + +#: engineecadastre Layer:367 RoleNone +msgid "f_notar" +msgstr "Notaire" + +#: engineecadastre Layer:367 RoleNone +msgid "f_paechter" +msgstr "Betreiber" + +#: engineecadastre Layer:367 RoleNone +msgid "f_id" +msgstr "PF" + +#: engineecadastre Layer:367 RoleNone +msgid "f_jagdlos" +msgstr "Lot de chasse" + +#: engineecadastre Layer:367 RoleNone +msgid "f_sektion" +msgstr "Section" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fischereil" +msgstr "Lot de peche" + +#: engineecadastre Layer:367 RoleNone +msgid "f_num_flik" +msgstr "Num. FLIK" + +#: engineecadastre Layer:367 RoleNone +msgid "f_aff" +msgstr "Affectation" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fl_che" +msgstr "Surface cadastrale" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem" +msgstr "Bemerkung" + +#: engineecadastre Layer:367 RoleNone +msgid "f_gemeinde" +msgstr "Gemeinde" + +#: engineecadastre Layer:367 RoleNone +msgid "f_kadasternu" +msgstr "Num. cadastral" + +#: engineecadastre Layer:378 RoleNone +msgid "f_voiture_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection1" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_cout" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_station" +msgstr "Station" + +#: engineecadastre Layer:378 RoleNone +msgid "f_operateur" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_open" +msgstr "" + +#: engineecadastre Layer:368 RoleNone +msgid "f_systeme" +msgstr "Dienst" + +#: engineecadastre Layer:368 RoleNone +msgid "f_adress" +msgstr "Adresse" + +#: engineecadastre Layer:368 RoleNone +msgid "f_reservation" +msgstr "Buchung" + +#: engineecadastre Layer:368 RoleNone +msgid "f_bornes" +msgstr "Abstellplätze" + +#: engineecadastre Layer:368 RoleNone +msgid "f_ouvert" +msgstr "Erreichbar" + +#: engineecadastre Layer:643 RoleNone +msgid "f_Syndicat" +msgstr "" + +#: engineecadastre Layer:659 RoleNone +msgid "f_NAME" +msgstr "Name" + +#: engineecadastre Layer:441 RoleNone +msgid "f_Cause mauvais etat" +msgstr "" + +#: engineecadastre Layer:536 RoleNone +msgid "f_km2" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_index_w_leg" +msgstr "NO2 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index_w_leg" +msgstr "O3 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index" +msgstr "Sub-Index O3" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_value" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_value" +msgstr "Konzentration O3 (ug/m3)" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm10_value" +msgstr "PM10 Partikel-Konzentration (ug/m3) - Gleitender 24-Stundenmittelwert" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index_w_leg" +msgstr "PM2.5 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_value" +msgstr "Stickstoffdioxid NO2 Konzentration (ug/m3) - Stundenmittelwert" + +#: engineecadastre Layer:726 RoleNone +msgid "f_code_dossier" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_fin" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_annexe" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_debut" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_etat_libelle" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_aide" +msgstr "" + +#: engineecadastre Layer:747 RoleNone +msgid "f_Naturpark" +msgstr "Naturpark" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_ru" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_b_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_easting" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_owner" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_northing" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_bois" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_numero_arr" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_ins" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_decommissi" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_master" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode_de" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_mazout" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_cha" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_nu" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_apres_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_no" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_latitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installa_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_gaz_nature" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_longitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonn_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_code_nace" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_conforme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_remarque" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonnee" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_local" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installate" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_artis" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_mot" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_co" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_diesel" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_rapport" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot5" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_biogaz" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_comme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_lo" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_batiment" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_rue" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_date" +msgstr "Datum" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_indus" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_admin" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_exemption" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_avant_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_code_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_chau" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_numer" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges_mo" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_ITINERAIRE" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_N_PC" +msgstr "Nummer" + +#: engineecadastre Layer:808 RoleNone +msgid "f_NOM PC" +msgstr "Name" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWA" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_E75N" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_UCZ" +msgstr "Hotspot ID" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWC" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Code de l'élément fonctionnel" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Elément fonctionnel" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Code de la masse eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Type de mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_ID de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Nom de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Taille de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Description de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Type de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Longueur (m)" +msgstr "" + +#: engineecadastre Layer:1471 RoleNone +msgid "f_Code de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:669 RoleNone +msgid "f_UHD2" +msgstr "" + +#: engineecadastre Layer:1359 RoleNone +msgid "f_RPT_FILE_NEW" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E70N" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E75L" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E65N" +msgstr "" + +#: engineecadastre Layer:671 RoleNone +msgid "f_UHD1" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_LienMemori" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_nom_fichier" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_Area" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_NomProjet" +msgstr "" + +#: engineecadastre Layer:1503 RoleNone +msgid "f_UCEden" +msgstr "UCEden Exposition" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_street" +msgstr "Straße" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_link_to_emwelt" +msgstr "Link" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_pm10_value_w_leg" +msgstr "PM10 Partikel-Konzentration (ug/m3) - Gleitender 24-Stundenmittelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_city" +msgstr "Ort" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value" +msgstr "Ozon O3 Konzentration (ug/m3) - Stundenmittelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_index" +msgstr "Gesamtindex" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_index_w_leg" +msgstr "Sub-Index O3" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_no2_value_w_leg" +msgstr "Stickstoffdioxid NO2 Konzentration (ug/m3) - Stundenmittelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value_w_leg" +msgstr "Ozon O3 Konzentration (ug/m3) - Stundenmittelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_x" +msgstr "X-Koordinate" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_y" +msgstr "Y-Koordinate" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Publiée" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Abandonné" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Séquence" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Catégorie d'SPC" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé par" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Traité" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Effacé" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_area(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Type de surface" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_length(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Sous type" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié par" +msgstr "" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_fournisseur" +msgstr "Netzbetreiber" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_texte_fr" +msgstr " Vorgehen" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_rdv" +msgstr "Termin" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_adresse" +msgstr "Adresse" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_responsable" +msgstr "Verantwortlicher" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_horaire" +msgstr "Öffnungszeiten" + +#: engineecadastre Layer:1507 RoleNone +msgid "f_Descrip" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Field1" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Code_posta" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Longitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Latitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Addresse" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Centre_de" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Y" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_X" +msgstr "" + +#: engineecadastre Layer:1509 RoleNone +msgid "f_F1" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_IdAEV" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_X" +msgstr "X-Koordinate" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Moy2018" +msgstr "NO2 Mittelwert (ug/m3)" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_Y" +msgstr "Y-Koordinate" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Localité" +msgstr "Ortschaft" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_AGE" +msgstr "Anzahl Jahre der Begrünung" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_FLAECHE_AR" +msgstr "Fläche (in Ar)" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_Allemands" +msgstr "Deutsche Bevölkerung" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_F__Alleman" +msgstr "Anteil der Deutschen in %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_F__Afrique" +msgstr "Anteil der Afrikaner in %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_Afrique" +msgstr "Afrikanische Bevölkerung" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_type_proprietaire" +msgstr "Eigentumsverhältnis" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_nom_proprietaire" +msgstr "Name des Besitzers" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_annee_inventaire" +msgstr "Jahr der Forstinventur" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_NO2_I1G" +msgstr "NO2 (ug/m3)" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_STR_NAME" +msgstr "Strasse" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_F__Portuga" +msgstr "Anteil der Portugiesen in %" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_Portugais" +msgstr "Portugiesische Bevölkerung" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_Amérique" +msgstr "Amerikanische Bevölkerung" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_F__Amériq" +msgstr "Anteil der Amerikaner in %" + +#: engineecadastre Layer:1532 RoleNone +msgid "f_CODE_LAU2" +msgstr "LAU2 Code" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Etranger" +msgstr "Ausländische Bevölkerung" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__étrang" +msgstr "Anteil der Ausländer in %" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Luxembourg" +msgstr "Luxemburger Bevölkerung" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__luxembo" +msgstr "Anteil der Luxemburger in %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_F__Italien" +msgstr "Anteil der Italiener in %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_Italiens" +msgstr "Italienische Bevölkerung" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_F__UE28" +msgstr "Anteil der Europäer (EU-28) in %" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_UE28" +msgstr "Bevölkerung aus der EU-28" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_Européens" +msgstr "Europäische Bevölkerung (Nicht-EU-28)" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_F__non_UE" +msgstr "Anteil der Europäer (Nicht-EU-28) in %" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_Belges" +msgstr "Belgische Bevölkerung" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_F__Belges" +msgstr "Anteil der Belgier in %" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_AsieOcéan" +msgstr "Asiatische und Ozeanische Bevölkerung" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_F__Asie_et" +msgstr "Anteil der Asiaten und Ozeanier in %" + +#: engineecadastre Layer:1577 RoleNone +msgid "f_Population_com" +msgstr "Bevölkerung pro Gemeinde" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_F__França" +msgstr "Anteil der Franzosen in %" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_Français" +msgstr "Französische Bevölkerung" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_total_m_3" +msgstr "Bevölkerung unter 3 Jahren in %" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_part_m_3" +msgstr "Anteil der Bevölkerung unter 3 Jahren in %" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_part_6_10" +msgstr "Anteil der Bevölkerung zwischen 6 und 10 Jahren in %" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_total_6_10" +msgstr "Bevölkerung zwischen 6 und 10 Jahren in %" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_part_3_5" +msgstr "Anteil der Bevölkerung zwischen 3 und 5 Jahren in %" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_total_3_5" +msgstr "Bevölkerung zwischen 3 und 5 Jahren in %" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_tot_11_17" +msgstr "Bevölkerung zwischen 11 und 17 Jahren" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_part_11_17" +msgstr "Anteil der Bevölkerung zwischen 11 und 17 Jahren in %" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_p_75_89" +msgstr "Anteil der Bevölkerung zwischen 75 und 89 Jahren in %" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_t_75_89" +msgstr "Bevölkerung zwischen 75 und 89 Jahren" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_t_90" +msgstr "Bevölkerung im Alter von 90 Jahren und mehr" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_p_90" +msgstr "Anteil der Bevölkerung im Alter von 90 Jahren und mehr in %" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_dep_jeunes" +msgstr "Jugendquotient (0-19 Jahre)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_pers_jeune" +msgstr "Junge Personen (0-19 Jahre)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_age_trav" +msgstr "Personen im erwerbsfähigen Alter (20-64 Jahre)" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_rapp_j_a" +msgstr "Abhängigenquotient" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_pers_agees" +msgstr "Ältere Personen (65+ Jahre)" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibatai" +msgstr "Ledige Personen" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibat_1" +msgstr "Anteil der ledigen Personen in %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e_1" +msgstr "Anteil der verheirateten/in Lebenspartnerschaft lebenden Personen in %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e__" +msgstr "Verheiratete/in Lebenspartnerschaft lebende Personen" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_e" +msgstr "Geschiedene/getrennte Personen" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_1" +msgstr "Anteil der geschiedenen/getrennten Personen in %" + +#: engineecadastre Layer:1563 RoleNone +msgid "f_age_moyen" +msgstr "Durchschnittsalter (beide Geschlechter zusammen)" + +#: engineecadastre Layer:1562 RoleNone +msgid "f_age_h" +msgstr "Durchschnittsalter der Männer" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_moins20" +msgstr "Bevölkerung unter 20 Jahren" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_p_moins20" +msgstr "Anteil der Bevölkerung unter 20 Jahren in %" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_a20_64" +msgstr "Bevölkerung zwischen 20 und 64 Jahren in %" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_p20_64" +msgstr "Anteil der Bevölkerung zwischen 20 und 64 Jahren in %" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_pole_urbai" +msgstr "Urbanes Zentrum" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_Population_villes" +msgstr "Bevölkerung" + +#: engineecadastre Layer:1576 RoleNone +msgid "f_Population_can" +msgstr "Bevölkerung pro Kanton" + +#: engineecadastre Layer:1578 RoleNone +msgid "f_prop_f" +msgstr "Anteil der Frauen in %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_nbre" +msgstr "In Luxemburg geborene Bevölkerung" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_nbre" +msgstr "Im Ausland geborene Bevölkerung" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_pourcent" +msgstr "Anteil der im Ausland geborenen Bevölkerung in %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_pourcent" +msgstr "Anteil der in Luxemburg geborenen Bevölkerung in %" + +#: engineecadastre Layer:1561 RoleNone +msgid "f_age_f" +msgstr "Durchschnittsalter der Frauen" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veuve" +msgstr "Verwittwete Personen" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veu_1" +msgstr "Anteil der verwittweten Personen in %" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Annee_fusi" +msgstr "Datum des Inkrafttretens der Gemeindefusion" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Nouv_comm" +msgstr "Name der Gemeinde nach der Fusion" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Anc_comm" +msgstr "Name der Gemeinde vor der Fusion" + +#: engineecadastre Layer:1598 RoleNone +msgid "f_F__des_nai" +msgstr "Anteil der Geburten innerhalb der Ehe (%) (2013-2017)" + +#: engineecadastre Layer:1599 RoleNone +msgid "f_Age_moyen" +msgstr "Durchschnittsalter der Mutter bei der Geburt (Durschnitt 2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_24" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_d" +msgstr "Durchschnittliche Anzahl an Sterbefälle (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_20" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_21" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_22" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_23" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissances" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_na" +msgstr "Durchschnittliche Geburtenrate (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F10" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F11" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_po" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_3" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne__1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_2" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_na" +msgstr "Durchschnittliche Geburtenzahl (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_mo" +msgstr "Durchschnittliche Sterblichkeitsrate (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_4" +msgstr "" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Taux de solde naturel moyen (‰)" +msgstr "Durchschnittliche Rate des natürlichen Saldos (‰) (2013-2017)" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Solde_natu" +msgstr "Durchschnittlicher natürlicher Saldo (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Solde_mi_5" +msgstr "Durchschnittlicher interner Wanderungssaldo (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Taux de solde migratoire interne moyen (‰)" +msgstr "Durchschnittliche Rate des internen Wanderungssaldos (‰) (2013-2017)" + +#: engineecadastre Layer:1605 RoleNone +msgid "f_Taux de solde migratoire total moyen (‰)" +msgstr "Durchschnittlicher totaler Wanderungssaldo (‰) (2013-2017)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Ital_" +msgstr "Italienisch ist die Hauptsprache (%)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Italienisc" +msgstr "Italienisch ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_a64plus" +msgstr "Bevölkerung im Alter von 65 Jahren und mehr" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_p64plus" +msgstr "Anteil der Bevölkerung im Alter von 65 Jahren und mehr in %" + +#: engineecadastre Layer:1604 RoleNone +msgid "f_Taux de solde migratoire international moyen (‰)" +msgstr "Durchschnittliche Rate des internationalen Wanderungssaldos (‰) (2013-2017)" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_t_65_74" +msgstr "Bevölkerung zwischen 65 und 74 Jahren" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_p_65_74" +msgstr "Anteil der Bevölkerung zwischen 65 und 74 Jahren in %" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Taux_de__1" +msgstr "Durchschnittliche Heiratsrate (‰) (2013-2017)" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Mariages_1" +msgstr "Durchschnittliche Anzahl an Hochzeiten (2013-2017)" + +#: engineecadastre Layer:1607 RoleNone +msgid "f_Age moyen des femmes au mariage" +msgstr "Durchschnittliches Heiratsalter der Frauen (Durchschnitt 2013-2017)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (1981)" +msgstr "Zahl der Einwohner im Jahr 1981" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Taux_acc" +msgstr "Wachstumsrate der Bevölkerung in % (1981-2018)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (2018)" +msgstr "Zahl der Einwohner im Jahr 2018" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Densité_d" +msgstr "Bevölkerungsdichte im Jahr 2018 (Einwohner/km2)" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Chiffres_a" +msgstr "Zahl der Einwohner im Jahr 2018" + +#: engineecadastre Layer:1608 RoleNone +msgid "f_Age moyen des hommes au mariage" +msgstr "Durchschnittliches Heiratsalter der Männer (Durchschnitt 2013-2017)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Luxemburgi" +msgstr "Luxemburgisch ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Lux_" +msgstr "Luxemburgisch ist die Hauptsprache (%)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Französis" +msgstr "Französisch ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Fran_" +msgstr "Französisch ist die Hauptsprache (%)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deutsch" +msgstr "Deutsch ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deu_" +msgstr "Deutsch ist die Hauptsprache (%)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Portugiesi" +msgstr "Portugiesisch ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Port_" +msgstr "Portugiesisch ist die Hauptsprache (%)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Englisch" +msgstr "Englisch ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Eng_" +msgstr "Englisch ist die Hauptsprache (%)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_sonstige" +msgstr "Andere Sprache ist die Hauptsprache (Personen)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_Sonstige_" +msgstr "Andere Sprache ist die Hauptsprache (%)" + +#: engineecadastre Layer:1582 RoleNone +msgid "f_dep_age" +msgstr "Altenquotient (65+ Jahre)" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_MEASU" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_CREAT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ELEVATION" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_POINT_CLAS" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_IMG_DIRECT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_Y_WG" +msgstr "Y-Koordinate" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID_STRING" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REFERENCE_" +msgstr "Bezeichnung" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_X_WG" +msgstr "X-Koordinate" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REMARQUE" +msgstr "Bezeichnung" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID" +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/ngeo.po b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/ngeo.po new file mode 100644 index 000000000..cd21d41c9 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/de/LC_MESSAGES/ngeo.po @@ -0,0 +1,386 @@ +# Translators: +# Stéphane Brunner , 2017 +# Elisabeth Leu , 2017 +# Michael Kuenzli , 2017 +# Frédéric Junod , 2018 +# Wolfgang Kaltz , 2018 +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Last-Translator: Wolfgang Kaltz , 2018\n" +"Language-Team: German (https://www.transifex.com/camptocamp/teams/36764/de/)\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/filter/component.html:64 +msgid "+ Add a new criteria" +msgstr "+ Neues Kriterium hinzufügen" + +#: src/routing/routing.html:47 +msgid "Add via" +msgstr "Via Hinzufügen" + +#: src/filter/component.js:181 +msgid "All" +msgstr "Alle" + +#: src/filter/rulecomponent.html:210 +msgid "Apply" +msgstr "Anwenden" + +#: src/filter/component.html:94 +msgid "Apply filter" +msgstr "Filter anwenden" + +#: src/filter/component.js:185 +msgid "At least one" +msgstr "Mindestens eines" + +#: src/filter/ruleComponent.js:200 +msgid "Begins at" +msgstr "Beginnt mit" + +#: src/filter/rulecomponent.html:288 +msgid "Between" +msgstr "Zwischen" + +#: src/filter/rulecomponent.html:214 +msgid "Cancel" +msgstr "Abbrechen" + +#: src/draw/Controller.js:71 +msgid "Circle" +msgstr "Kreis" + +#: src/routing/routing.html:41 +msgid "Clear" +msgstr "Zurücksetzen" + +#: src/googlestreetview/component.html:1 +msgid "Click on a road on the map to start StreetView." +msgstr "Klicken Sie auf eine Strasse auf der Karte um StreetView zu starten." + +#: src/interaction/MeasureLength.js:32 +msgid "Click to continue drawing the line." +msgstr "Klicken Sie, um mit der Zeichnung der Linie fortzufahren." + +#: src/interaction/MeasureArea.js:37 +msgid "Click to continue drawing the polygon." +msgstr "Klicken Sie, um mit der Zeichnung des Polygons fortzufahren." + +#: src/editing/createfeatureComponent.js:193 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" +"Klicken Sie um weiter zu zeichnen
Doppel-Klicken oder klicken Sie auf " +"den Endpunkt um zu Beenden" + +#: src/editing/createfeatureComponent.js:211 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" +"Klicken Sie um weiter zu zeichnen
Doppel-Klicken oder klicken Sie auf " +"den Startpunkt um zu Beenden" + +#: src/measure/length.js:43 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" +"Klicken Sie um weiter zu zeichnenDoppel-Klicken oder klicken Sie auf den " +"Endpunkt um zu Beenden" + +#: src/measure/area.js:41 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" +"Klicken Sie um weiter zu zeichnenDoppel-Klicken oder klicken Sie auf den " +"Startpunkt um zu Beenden" + +#: src/measure/azimut.js:45 +msgid "Click to finish" +msgstr "Kicken Sie um zu Beenden" + +#: src/editing/createfeatureComponent.js:210 +msgid "Click to start drawing area" +msgstr "Klicken Sie um eine Fäche zu zeichnen" + +#: src/measure/azimut.js:44 +msgid "Click to start drawing circle" +msgstr "Klicken Sie um einen Kreis zu zeichnen" + +#: src/editing/createfeatureComponent.js:192 +msgid "Click to start drawing length" +msgstr "Klicken Sie un eine Strecke zu zeichnen" + +#: src/measure/length.js:42 +msgid "Click to start drawing line" +msgstr "Klicken Sie um eine Linie zu zeichnen" + +#: src/measure/area.js:40 +msgid "Click to start drawing polygon" +msgstr "Klicken Sie um ein Polygon zu zeichnen" + +#: src/message/Disclaimer.js:157 +msgid "Close" +msgstr "Schliessen" + +#: src/filter/ruleComponent.js:196 src/filter/ruleComponent.js:197 +msgid "Contains" +msgstr "Enthält" + +#: src/filter/component.html:12 +msgid "Criteria taken into account" +msgstr "Kriterium wird berücksichtigt" + +#: src/misc/datepickerComponent.html:6 +msgid "Date:" +msgstr "Datum:" + +#: src/routing/routing.html:88 +msgid "Distance" +msgstr "Entfernung" + +#: src/interaction/MeasureLength.js:34 +msgid "Double-click or click last point to finish." +msgstr "Um zu beenden, doppelklicken Sie oder klicken Sie den Endpunkt." + +#: src/interaction/MeasureArea.js:39 +msgid "Double-click or click starting point to finish." +msgstr "Um zu beenden, doppelklicken Sie oder klicken Sie den Startpunkt." + +#: src/filter/rulecomponent.html:113 +msgid "Draw a circle on the map" +msgstr "Kreis zeichnen" + +#: src/filter/rulecomponent.html:148 +msgid "Draw a circle on the map." +msgstr "Kreis auf der Karte zeichnen" + +#: src/filter/rulecomponent.html:90 +msgid "Draw a line on the map" +msgstr "Linie zeichnen" + +#: src/filter/rulecomponent.html:142 +msgid "Draw a line string on the map." +msgstr "Linie zeichnen." + +#: src/filter/rulecomponent.html:78 +msgid "Draw a point on the map" +msgstr "Punkt zeichnen" + +#: src/filter/rulecomponent.html:139 +msgid "Draw a point on the map." +msgstr "Punkt zeichnen." + +#: src/filter/rulecomponent.html:102 +msgid "Draw a polygon on the map" +msgstr "Polygon zeichnen" + +#: src/filter/rulecomponent.html:145 +msgid "Draw a polygon on the map." +msgstr "Polygon zeichnen." + +#: src/filter/rulecomponent.html:124 +msgid "Draw a rectangle on the map" +msgstr "Rechteck zeichnen" + +#: src/filter/rulecomponent.html:151 +msgid "Draw a rectangle on the map." +msgstr "Rechteck zeichnen." + +#: src/routing/routing.html:79 +msgid "Duration" +msgstr "Dauer" + +#: src/filter/ruleComponent.js:201 +msgid "During" +msgstr "Während" + +#: src/filter/ruleComponent.js:202 +msgid "Ends at" +msgstr "Endet am" + +#: src/filter/rulecomponent.html:241 +msgid "From" +msgstr "Von" + +#: src/misc/datepickerComponent.html:5 +msgid "From:" +msgstr "Von:" + +#: src/geolocation/mobile.js:145 +msgid "Geolocation: An unknown error occurred." +msgstr "Geolokalisation: Ein unbekannter Fehler ist aufgetreten." + +#: src/filter/component.html:103 +msgid "Get data" +msgstr "Daten laden" + +#: src/filter/ruleComponent.js:198 +msgid "Intersects" +msgstr "Schneidet" + +#: src/filter/ruleComponent.js:188 src/filter/ruleComponent.js:203 +msgid "Is equal to" +msgstr "Ist gleich" + +#: src/filter/ruleComponent.js:189 +msgid "Is greater than" +msgstr "Ist grösser als" + +#: src/filter/ruleComponent.js:190 +msgid "Is greater than or equal to" +msgstr "Ist grösser oder gleich" + +#: src/filter/ruleComponent.js:199 +msgid "Is inside of" +msgstr "Ist innerhalb von" + +#: src/filter/ruleComponent.js:192 +msgid "Is lesser than" +msgstr "Ist kleiner als" + +#: src/filter/ruleComponent.js:193 +msgid "Is lesser than or equal to" +msgstr "Ist kleiner oder gleich" + +#: src/filter/ruleComponent.js:195 +msgid "Is not equal to" +msgstr "Ist ungleich" + +#: src/draw/Controller.js:69 +msgid "LineString" +msgstr "Linie" + +#: src/geolocation/mobile.js:139 +msgid "Location information is unavailable." +msgstr "Standort-Information ist nicht vorhanden." + +#: src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "M/d/yyyy" + +#: src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "M/yyyy" + +#: src/filter/ruleComponent.js:869 +msgid "Move" +msgstr "Verschieben" + +#: src/filter/component.js:189 +msgid "None" +msgstr "Keine" + +#: src/misc/File.js:52 +msgid "Operation canceled" +msgstr "Vorgang abgebrochen" + +#: src/draw/Controller.js:68 +msgid "Point" +msgstr "Punkt" + +#: src/draw/Controller.js:70 +msgid "Polygon" +msgstr "Polygon" + +#: src/routing/routing.html:56 +msgid "Profile" +msgstr "Profil" + +#: src/misc/File.js:52 +msgid "Read failed" +msgstr "Lesen fehlgeschlagen" + +#: src/draw/Controller.js:72 +msgid "Rectangle" +msgstr "Rechteck" + +#: src/routing/routing.html:44 +msgid "Reverse" +msgstr "Wenden" + +#: src/filter/ruleComponent.js:878 +msgid "Rotate" +msgstr "Drehen" + +#: src/routing/routing.html:75 +msgid "Route statistics" +msgstr "Route Statistiken" + +#: src/routing/routingfeature.html:5 +msgid "Search..." +msgstr "Suchen..." + +#: src/filter/component.html:72 +msgid "Spatial filter" +msgstr "räumlicher Filter" + +#: src/googlestreetview/component.html:7 +msgid "Street View data not found for this location." +msgstr "Keine Street View Daten für diesen Standort gefunden." + +#: src/draw/Controller.js:73 +msgid "Text" +msgstr "Text" + +#: src/geolocation/mobile.js:142 +msgid "The request to get user location timed out." +msgstr "" +"Die Anfrage für den Benutzerstandort konnte nicht in abgeschlossen werden: " +"Time Out." + +#: src/editing/attributescomponent.html:116 +msgid "This field is required" +msgstr "Diese Feld wird benötigt " + +#: src/misc/datepickerComponent.html:12 +msgid "To:" +msgstr "An:" + +#: src/misc/File.js:85 +msgid "Upload failed" +msgstr "Datei hochladen" + +#: src/geolocation/mobile.js:136 +msgid "User denied the request for Geolocation." +msgstr "Der Benutzer hat den Zugriff auf den Standort verweigert." + +#: src/filter/rulecomponent.html:290 +msgid "and" +msgstr "und" + +#: src/misc/filters.js:365 +msgid "day" +msgid_plural "days" +msgstr[0] "Tag" +msgstr[1] "Tage" + +#: src/misc/filters.js:362 +msgid "hour" +msgid_plural "hours" +msgstr[0] "Stunde" +msgstr[1] "Stunden" + +#: src/misc/filters.js:359 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "Minute" +msgstr[1] "Minuten" + +#: src/misc/filters.js:356 +msgid "second" +msgid_plural "seconds" +msgstr[0] "Sekunde" +msgstr[1] "Sekunden" + +#: src/filter/rulecomponent.html:243 +msgid "to" +msgstr "zu" + +#: src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "yyyy" diff --git a/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-client.po b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-client.po similarity index 55% rename from geoportailv3/locale/en/LC_MESSAGES/geoportailv3-client.po rename to geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-client.po index 4d2a803f9..fcfaadfeb 100644 --- a/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-client.po +++ b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-client.po @@ -2,19 +2,24 @@ # Translators: # Andrea Donno , 2015-2016 # Andrea Donno , 2015 -# Andrea Donno , 2015-2017 +# Andrea Donno , 2015-2018 # Andrea Donno , 2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 # eRenaud Michaëlis , 2015-2016 # Francis Kaell , 2015 # Jeff Konnen , 2015-2016 -# Jeff Konnen , 2016-2017 +# Jeff Konnen , 2016-2018 +# Loubnabarra , 2017 +# Loubnabarra , 2017 # Patrick Weber , 2015 # Patrick Weber , 2015 msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:24+0000\n" -"Last-Translator: Jeff Konnen \n" +"PO-Revision-Date: 2019-01-09 13:24+0000\n" +"Last-Translator: dhorper \n" "Language-Team: English (http://www.transifex.com/geoportail/geoportailv3-lu/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,13 +37,13 @@ msgstr "Δ -" #: geoportailv3/static/js/externaldata/externaldata.html:2 msgid "+ Add external Wms" -msgstr "+ Add external WMS" +msgstr "+ Add external WM(T)S" -#: geoportailv3/templates/index.html:99 +#: geoportailv3/templates/index.html:131 msgid "+ Add layers" msgstr "+ Add layers" -#: geoportailv3/templates/index.html:15 +#: geoportailv3/templates/index.html:17 msgid "- Geoportal Luxembourg" msgstr "- Geoportal Luxembourg" @@ -46,66 +51,75 @@ msgstr "- Geoportal Luxembourg" msgid "- link from geoportail.lu" msgstr "Map from geoportal.lu" -#: geoportailv3/static/js/mymaps/mymaps.html:20 +#: geoportailv3/static/js/mymaps/mymaps.html:21 msgid "Aucune description" msgstr "No description" -#: geoportailv3/templates/index.html:154 +#: geoportailv3/templates/index.html:49 +msgid "" +"You are currently disconnected.\n" +" Enable offline mode\n" +" \n" +" You are currently offline." +msgstr "You are currently disconnected.\n Enable offline mode\n \n You are currently offline." + +#: geoportailv3/templates/index.html:188 msgid "" "A right click (tap and hold on mobile) will display information " "about the current location." msgstr "A right click (tap and hold on mobile) will display information about the current location." -#: geoportailv3/templates/index.html:157 +#: geoportailv3/templates/index.html:191 msgid "" "A short click (tap on mobile) on a map feature will select the " "feature and show more information." msgstr "A short click (tap on mobile) on a map feature will select the feature and show more information." -#: geoportailv3/templates/index.html:221 +#: geoportailv3/templates/index.html:294 msgid "A Propos" msgstr "About Us" -#: geoportailv3/static/js/print/printdirective.js:209 +#: geoportailv3/static/js/print/printdirective.js:218 msgid "A0 landscape" msgstr "A0 landscape" -#: geoportailv3/static/js/print/printdirective.js:210 +#: geoportailv3/static/js/print/printdirective.js:219 msgid "A0 portrait" msgstr "A0 portrait" -#: geoportailv3/static/js/print/printdirective.js:207 +#: geoportailv3/static/js/print/printdirective.js:216 msgid "A1 landscape" msgstr "A1 landscape" -#: geoportailv3/static/js/print/printdirective.js:208 +#: geoportailv3/static/js/print/printdirective.js:217 msgid "A1 portrait" msgstr "A1 portrait" -#: geoportailv3/static/js/print/printdirective.js:205 +#: geoportailv3/static/js/print/printdirective.js:214 msgid "A2 landscape" msgstr "A2 landscape" -#: geoportailv3/static/js/print/printdirective.js:206 +#: geoportailv3/static/js/print/printdirective.js:215 msgid "A2 portrait" msgstr "A2 portrait" -#: geoportailv3/static/js/print/printdirective.js:203 +#: geoportailv3/static/js/print/printdirective.js:212 msgid "A3 landscape" msgstr "A3 landscape" -#: geoportailv3/static/js/print/printdirective.js:204 +#: geoportailv3/static/js/print/printdirective.js:213 msgid "A3 portrait" msgstr "A3 portrait" -#: geoportailv3/static/js/print/printdirective.js:201 +#: geoportailv3/static/js/print/printdirective.js:210 msgid "A4 landscape" msgstr "A4 landscape" -#: geoportailv3/static/js/print/printdirective.js:202 +#: geoportailv3/static/js/print/printdirective.js:211 msgid "A4 portrait" msgstr "A4 portrait" +#: geoportailv3/static/js/offlineNgeoComponent.html:12 #: geoportailv3/static/js/print/print.html:45 msgid "Abort" msgstr "Abort" @@ -114,15 +128,26 @@ msgstr "Abort" msgid "Access constraints :" msgstr "Access constraints" +#: geoportailv3/static/js/offlineNgeoComponent.html:31 +msgid "Activate offline mode" +msgstr "Activate offline mode" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:58 +msgid "Activer Google Streetview" +msgstr "Enable Google Street View" + #: geoportailv3/static/js/externaldata/externaldata.html:8 msgid "Add external data" msgstr "Add external data" -#: geoportailv3/static/js/search/searchdirective.js:399 +#: geoportailv3/static/js/routing/routingdirective.js:249 +#: geoportailv3/static/js/search/searchdirective.js:447 msgid "Addresses" msgstr "Adressess" +#: geoportailv3/static/js/query/casiporeport.html:8 #: geoportailv3/static/js/query/pagreport.html:8 +#: geoportailv3/static/js/query/pdsreport.html:8 msgid "Adresse Email" msgstr "Email address" @@ -134,27 +159,47 @@ msgstr "Closest addess" msgid "Affaire" msgstr "Case" -#: geoportailv3/templates/index.html:222 +#: geoportailv3/templates/index.html:111 +msgid "Afficher les modèles 3D" +msgstr "Show 3D models" + +#: geoportailv3/templates/index.html:295 msgid "Aide" msgstr "Help" +#: geoportailv3/static/js/routing/routing.html:45 +msgid "Ajouter une étape" +msgstr "Add a stop" + #: geoportailv3/static/js/draw/featurepopup.html:88 msgid "Ajouter vignette" msgstr "Add thumbnail" -#: geoportailv3/static/js/draw/styleediting.html:113 -#: geoportailv3/static/js/draw/styleediting.html:99 +#: geoportailv3/static/js/locationinfo/locationinfo.html:37 +#: geoportailv3/static/js/search/search.html:16 +msgid "Ajouter étape à mon itinéraire" +msgstr "Add a stop to my route" + +#: node_modules/ngeo/src/filter/component.js:154 +msgid "All" +msgstr "All" + +#: geoportailv3/static/js/draw/styleediting.html:100 +#: geoportailv3/static/js/draw/styleediting.html:114 msgid "Angle" msgstr "Angle" #: geoportailv3/static/js/askredirect/askredirect.html:10 #: geoportailv3/static/js/draw/featurepopup.html:116 #: geoportailv3/static/js/draw/featurepopup.html:136 -#: geoportailv3/static/js/draw/styleediting.html:120 -#: geoportailv3/static/js/mymaps/mymaps.html:171 -#: geoportailv3/static/js/mymaps/mymaps.html:185 -#: geoportailv3/static/js/mymaps/mymaps.html:199 -#: geoportailv3/static/js/mymaps/mymaps.html:294 +#: geoportailv3/static/js/draw/styleediting.html:121 +#: geoportailv3/static/js/mymaps/mymaps.html:137 +#: geoportailv3/static/js/mymaps/mymaps.html:151 +#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:210 +#: geoportailv3/static/js/mymaps/mymaps.html:305 +#: geoportailv3/static/js/query/info.html:11 msgid "Annuler" msgstr "Cancel" @@ -162,7 +207,11 @@ msgstr "Cancel" msgid "Area:" msgstr "Area:" -#: geoportailv3/static/js/mymaps/mymaps.html:25 +#: node_modules/ngeo/src/filter/component.js:158 +msgid "At least one" +msgstr "At least one" + +#: geoportailv3/static/js/mymaps/mymaps.html:26 msgid "Attention!" msgstr "Attention!" @@ -171,6 +220,10 @@ msgid "Aucun symbole disponible" msgstr "No symbol available" #: geoportailv3/static/js/query/default.html:20 +#: geoportailv3/static/js/query/default_no_prefix.html:20 +#: geoportailv3/static/js/query/default_table.html:28 +#: geoportailv3/static/js/query/default_table_no_prefix.html:28 +#: geoportailv3/static/js/query/sentier_nature.html:19 msgid "Aucune information disponible pour cette couche" msgstr "No information available for this layer" @@ -182,15 +235,15 @@ msgstr "There is no legend defined for the selected layers" msgid "Azimut" msgstr "Azimut" -#: geoportailv3/static/js/search/searchdirective.js:375 +#: geoportailv3/static/js/search/searchdirective.js:426 msgid "Background" msgstr "Background" -#: geoportailv3/static/js/search/searchdirective.js:363 +#: geoportailv3/static/js/search/searchdirective.js:414 msgid "Background Layers" msgstr "Background Layers" -#: geoportailv3/static/js/exclusionmanagerservice.js:125 +#: geoportailv3/static/js/exclusionmanagerservice.js:127 msgid "" "Background has been deactivated because the layer {{layer}} cannot be " "displayed on top of it." @@ -200,45 +253,58 @@ msgstr "Background has been deactivated because the layer {{layer}} cannot be di msgid "Background layer:" msgstr "Background layer" +#: node_modules/ngeo/src/filter/rulecomponent.js:171 +msgid "Begins at" +msgstr "Begins at" + #: geoportailv3/static/js/draw/featurepopup.html:96 -#: geoportailv3/static/js/mymaps/mymaps.html:155 +#: geoportailv3/static/js/mymaps/mymaps.html:347 +#: geoportailv3/static/js/offlineNgeoComponent.html:105 +#: geoportailv3/static/js/offlineNgeoComponent.html:123 +#: geoportailv3/static/js/offlineNgeoComponent.html:74 msgid "Cancel" msgstr "Cancel" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:462 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:573 msgid "Carte copiée" msgstr "Map copied" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:714 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:952 msgid "Carte créée" msgstr "Map created" -#: geoportailv3/static/js/mymaps/mymaps.html:38 +#: geoportailv3/static/js/mymaps/mymaps.html:39 msgid "Carte créée par" msgstr "Map created by" -#: geoportailv3/templates/index.html:90 +#: geoportailv3/templates/index.html:121 msgid "Catalog" msgstr "Catalog" -#: geoportailv3/static/js/mymaps/mymaps.html:256 +#: geoportailv3/static/js/mymaps/mymaps.html:267 msgid "Catégorie" msgstr "Category " -#: geoportailv3/static/js/imageupload/imguploaddirective.js:118 +#: geoportailv3/static/js/imageupload/imguploaddirective.js:116 msgid "Ce format d'image n'est as supporté." msgstr "This image format is not supported" -#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:71 +#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:72 msgid "Ce thème est protégé. Veuillez vous connecter." msgstr "This theme is protected. Please login" +#: geoportailv3/static/js/layerpermalinkservice.js:324 +msgid "" +"Certaines couches sont protégées. Veuillez vous connecter avec un " +"utilisateur disposant les droits de visualiser cette couche." +msgstr "Some layers are protected. Please login with a user who has the rights to view this layer." + #: geoportailv3/static/js/themeswitcher/themes.html:4 msgid "Changer" msgstr "Change" #: geoportailv3/static/js/draw/featurepopup.html:64 -#: geoportailv3/static/js/draw/styleediting.html:72 +#: geoportailv3/static/js/draw/styleediting.html:73 msgid "Changer sens de la ligne" msgstr "Change line direction" @@ -248,63 +314,88 @@ msgstr "Loading information" #: geoportailv3/static/js/externaldata/externaldata.html:15 msgid "Choose or write a WMS url" -msgstr "Choose or write a WMS URL" +msgstr "Choose or write a WM(T)S URL" #: geoportailv3/static/js/draw/draw.html:23 -#: geoportailv3/static/js/draw/drawdirective.js:694 +#: geoportailv3/static/js/draw/drawdirective.js:760 +#: node_modules/ngeo/src/draw/Controller.js:70 msgid "Circle" msgstr "Circle" -#: geoportailv3/static/js/measure/measuredirective.js:147 +#: geoportailv3/static/js/measure/measuredirective.js:143 msgid "" "Click to continue drawing the line
Double-click or click last point to " "finish" msgstr "Click to continue drawing the line
Double-click to finish" -#: geoportailv3/static/js/measure/measuredirective.js:189 +#: geoportailv3/static/js/measure/measuredirective.js:185 msgid "" "Click to continue drawing the polygon
Double-click or click last point to" " finish" msgstr "Click to continue drawing the polygon
Double-click to finish" -#: geoportailv3/static/js/draw/drawdirective.js:489 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:196 +#: node_modules/ngeo/src/measure/length.js:45 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "Click to continue drawing
Double-click or click last point to finish" + +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:213 +#: node_modules/ngeo/src/measure/area.js:44 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "Click to continue drawing
Double-click or click starting point to finish" + +#: geoportailv3/static/js/draw/drawdirective.js:534 msgid "Click to draw the point" msgstr "Click to draw the point" -#: geoportailv3/static/js/measure/measuredirective.js:210 +#: geoportailv3/static/js/measure/measuredirective.js:206 +#: node_modules/ngeo/src/measure/azimut.js:48 msgid "Click to finish" msgstr "Click to finish" -#: geoportailv3/static/js/draw/drawdirective.js:507 +#: geoportailv3/static/js/draw/drawdirective.js:552 msgid "Click to place the label" msgstr "Click to place the label" -#: geoportailv3/static/js/measure/measuredirective.js:188 +#: geoportailv3/static/js/measure/measuredirective.js:184 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:212 msgid "Click to start drawing area" msgstr "Click to start measuring an area" -#: geoportailv3/static/js/measure/measuredirective.js:209 +#: geoportailv3/static/js/measure/measuredirective.js:205 msgid "Click to start drawing azimut" msgstr "Click to start measuring an azimut" -#: geoportailv3/static/js/draw/drawdirective.js:503 +#: geoportailv3/static/js/draw/drawdirective.js:548 +#: node_modules/ngeo/src/measure/azimut.js:47 msgid "Click to start drawing circle" msgstr "Click to start drawing a circle" -#: geoportailv3/static/js/measure/measuredirective.js:165 +#: geoportailv3/static/js/measure/measuredirective.js:161 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:195 msgid "Click to start drawing length" msgstr "Click to start measuring a distance" -#: geoportailv3/static/js/draw/drawdirective.js:493 +#: node_modules/ngeo/src/measure/length.js:44 +msgid "Click to start drawing line" +msgstr "Click to start drawing line" + +#: geoportailv3/static/js/draw/drawdirective.js:538 msgid "Click to start drawing line
Double-click to finish" -msgstr "Click to start drawing line
Double-click to finish" +msgstr "Click to start drawing line
Double-click or ESC to finish
Hit ⌫ to remove the last drawn point
Select the option \"follow roads\" to make your line follow the existing road network" + +#: node_modules/ngeo/src/measure/area.js:43 +msgid "Click to start drawing polygon" +msgstr "Click to start drawing polygon" -#: geoportailv3/static/js/draw/drawdirective.js:498 +#: geoportailv3/static/js/draw/drawdirective.js:543 msgid "" "Click to start drawing polygon
Double-click or click last point to finish" -msgstr "Click to start drawing polygon
Double-click or click last point to finish" +msgstr "Click to start drawing polygon
Double-click, ESC, or click last point to finish
Hit ⌫ to remove the last drawn point" -#: geoportailv3/static/js/measure/measuredirective.js:146 +#: geoportailv3/static/js/measure/measuredirective.js:142 msgid "Click to start drawing profile" msgstr "Click to start measuring a profile" @@ -313,7 +404,15 @@ msgstr "Click to start measuring a profile" msgid "Cliquez dans l'image pour agrandir" msgstr "Clic on the image to see a bigger version" -#: geoportailv3/static/js/externaldata/externaldata.html:34 +#: geoportailv3/static/js/routing/routing.html:99 +msgid "" +"Cliquez droit (ou appui long sur mobile) à un endroit sur la carte pour " +"ajouter rapidement une adresse." +msgstr "Right-clic to a point on the map to rapidly add a new stop. \nOn a mobile device, simply clic a bit longer" + +#: geoportailv3/static/js/externaldata/externaldata.html:36 +#: geoportailv3/static/js/offlineNgeoComponent.html:24 +#: node_modules/ngeo/src/message/Disclaimer.js:154 msgid "Close" msgstr "Close" @@ -324,15 +423,21 @@ msgstr "Close" msgid "Color" msgstr "Color" +#: geoportailv3/static/js/query/info.html:12 +msgid "Commander" +msgstr "Order" + #: geoportailv3/static/js/query/mo.html:8 msgid "Commander fichier GML" msgstr "Order a GML file" +#: geoportailv3/static/js/query/casiporeport.html:16 #: geoportailv3/static/js/query/pagreport.html:16 +#: geoportailv3/static/js/query/pdsreport.html:12 msgid "Commander rapport" msgstr "Order a report" -#: geoportailv3/static/js/query/parcels.html:12 +#: geoportailv3/static/js/query/parcels.html:24 msgid "Commander un extrait" msgstr "Order an extract" @@ -360,15 +465,16 @@ msgstr "Customizable" msgid "Confirmation de redirection" msgstr "Redirection confirmation" -#: geoportailv3/static/js/mymaps/mymaps.html:193 +#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/mymaps/mymaps.html:173 msgid "Confirmation de suppression de la carte" msgstr "Confirm map deletion" -#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:131 msgid "Confirmation de suppression des dessins" msgstr "Confirm drawing deletion" -#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:145 msgid "Confirmation de suppression des éléments de la carte" msgstr "Do you want to delete all the elements of the map?" @@ -377,10 +483,15 @@ msgid "Constitution de dossier de mesurage" msgstr "Create surveying dossier" #: geoportailv3/static/js/layerinfo/popup.html:23 -#: geoportailv3/templates/index.html:223 +#: geoportailv3/templates/index.html:296 msgid "Contact" msgstr "Contact" +#: node_modules/ngeo/src/filter/rulecomponent.js:167 +#: node_modules/ngeo/src/filter/rulecomponent.js:168 +msgid "Contains" +msgstr "Contains" + #: geoportailv3/static/js/query/parcels.html:7 #: geoportailv3/static/js/query/parcels_go.html:7 #: geoportailv3/static/js/query/parcels_prof.html:7 @@ -395,14 +506,19 @@ msgstr "Continue line" msgid "Contrainte d'utilisation" msgstr "Access constraints" -#: geoportailv3/static/js/mymaps/mymaps.html:93 +#: geoportailv3/static/js/mymaps/mymaps.html:100 msgid "Copier dans ma carte" msgstr "Copy to my map" -#: geoportailv3/templates/index.html:207 +#: geoportailv3/templates/index.html:277 msgid "Couches" msgstr "Layers" +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Couper une ligne" +msgstr "Cut a line" + #: geoportailv3/static/js/authentication/authentication.html:12 msgid "Create a new user account" msgstr "Create a new user account" @@ -419,7 +535,7 @@ msgstr "Sketch" msgid "Croquis indisponible" msgstr "Sketch not available" -#: geoportailv3/static/js/mymaps/mymaps.html:263 +#: geoportailv3/static/js/mymaps/mymaps.html:274 msgid "Créateur carte" msgstr "Map creator" @@ -427,16 +543,16 @@ msgstr "Map creator" msgid "Créer cercle concentrique" msgstr "Create circle with same center" -#: geoportailv3/static/js/mymaps/mymaps.html:48 +#: geoportailv3/static/js/mymaps/mymaps.html:49 msgid "Créer une copie" msgstr "Create a copy" -#: geoportailv3/static/js/mymaps/mymaps.html:46 -#: geoportailv3/static/js/mymaps/mymaps.html:9 +#: geoportailv3/static/js/mymaps/mymaps.html:10 +#: geoportailv3/static/js/mymaps/mymaps.html:47 msgid "Créer une nouvelle carte" msgstr "Create a new map" -#: geoportailv3/static/js/mymaps/mymaps.html:95 +#: geoportailv3/static/js/mymaps/mymaps.html:102 msgid "Créer une nouvelle carte à partir de ces dessins" msgstr "Create a new map from drawings" @@ -448,17 +564,25 @@ msgstr "Dashed" msgid "Date" msgstr "Date" -#: geoportailv3/static/js/print/printdirective.js:561 +#: geoportailv3/static/js/print/printdirective.js:580 msgid "Date d'impression:" msgstr "Print date:" +#: geoportailv3/static/js/offlineNgeoComponent.html:36 +msgid "Deactivate offline mode" +msgstr "Deactivate offline mode" + +#: geoportailv3/static/js/offlineNgeoComponent.html:48 +msgid "Delete data" +msgstr "Delete data" + #: geoportailv3/static/js/query/parcels.html:11 #: geoportailv3/static/js/query/parcels_go.html:11 #: geoportailv3/static/js/query/parcels_prof.html:11 msgid "Dernier mesurage" msgstr "Last measurement" -#: geoportailv3/static/js/mymaps/mymaps.html:270 +#: geoportailv3/static/js/mymaps/mymaps.html:281 msgid "Dernière Actualisation" msgstr "Last Update" @@ -467,7 +591,8 @@ msgid "Describe the problem within the current map extent:" msgstr "Describe the problem within the current map extent:" #: geoportailv3/static/js/layerinfo/popup.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:149 +#: geoportailv3/static/js/mymaps/mymaps.html:341 +#: geoportailv3/static/js/query/lignes_bus.html:3 #: geoportailv3/static/js/query/mymaps.html:7 msgid "Description" msgstr "Description" @@ -480,27 +605,61 @@ msgstr "Service description" msgid "Description du service :" msgstr "Service description" -#: geoportailv3/templates/index.html:229 +#: geoportailv3/templates/index.html:302 msgid "Dessin" msgstr "Draw" -#: geoportailv3/static/js/mymaps/mymaps.html:86 +#: geoportailv3/static/js/mymaps/mymaps.html:93 msgid "Dessins" msgstr "Drawings" +#: geoportailv3/static/js/routing/routing.html:60 +msgid "Distance" +msgstr "Distance" + #: geoportailv3/static/js/locationinfo/locationinfo.html:25 msgid "Distance approximative" msgstr "Approximative distance" +#: geoportailv3/static/js/offlineNgeoComponent.html:117 +#: geoportailv3/static/js/offlineNgeoComponent.html:99 +msgid "Do you really want to remove your data ?" +msgstr "Do you really want to remove your data ?" + #: geoportailv3/static/js/draw/styleediting.html:61 msgid "Dotted" msgstr "Dotted" +#: geoportailv3/static/js/query/tracing.html:7 +msgid "DownStream" +msgstr "DownStream" + #: geoportailv3/static/js/profile/profile.html:13 msgid "Draw a line on the map to display an elevation profile." msgstr "Draw a line on the map to display an elevation profile." -#: geoportailv3/static/js/print/printdirective.js:562 +#: node_modules/ngeo/src/filter/rulecomponent.js:172 +msgid "During" +msgstr "During" + +#: geoportailv3/static/js/routing/routing.html:70 +msgid "Dénivelé lors de votre trajet" +msgstr "Height difference on your route" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:44 +msgid "Désactiver Google Streetview" +msgstr "Disable Google Street View" + +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Désactiver mode couper une ligne" +msgstr "Deactivate cutting mode" + +#: geoportailv3/static/js/routing/routing.html:75 +msgid "Détail de votre trajet" +msgstr "Route details" + +#: geoportailv3/static/js/print/printdirective.js:581 msgid "Echelle approximative 1:" msgstr "Approximate scale 1:" @@ -508,13 +667,15 @@ msgstr "Approximate scale 1:" msgid "Editer l'objet" msgstr "Edit object" -#: geoportailv3/static/js/mymaps/mymaps.html:172 -#: geoportailv3/static/js/mymaps/mymaps.html:186 -#: geoportailv3/static/js/mymaps/mymaps.html:200 +#: geoportailv3/static/js/mymaps/mymaps.html:138 +#: geoportailv3/static/js/mymaps/mymaps.html:152 +#: geoportailv3/static/js/mymaps/mymaps.html:166 +#: geoportailv3/static/js/mymaps/mymaps.html:180 +#: geoportailv3/static/js/query/tracing.html:8 msgid "Effacer" msgstr "Delete" -#: geoportailv3/static/js/mymaps/mymaps.html:94 +#: geoportailv3/static/js/mymaps/mymaps.html:101 msgid "Effacer tous les dessins" msgstr "Delete all drawings" @@ -531,6 +692,13 @@ msgstr "Elevation: {{ ctrl.featureElevation }}" msgid "Email" msgstr "Email" +#: geoportailv3/static/js/query/casiporeport.html:12 +msgid "" +"En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " +"les conditions générales " +"d'utilisation de ce site web." +msgstr "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté les conditions générales d'utilisation de ce site web." + #: geoportailv3/static/js/query/pagreport.html:12 msgid "" "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " @@ -538,54 +706,67 @@ msgid "" "de ce site web." msgstr "By checking this box, the user declares that he has read, understood and accepted the general terms of use of this website." -#: geoportailv3/static/js/mymapsservice.js:841 +#: geoportailv3/templates/index.html:51 +msgid "Enable offline mode" +msgstr "Enable offline mode" + +#: node_modules/ngeo/src/filter/rulecomponent.js:173 +msgid "Ends at" +msgstr "Ends at" + +#: geoportailv3/static/js/mymapsservice.js:929 msgid "Erreur inattendue lors de la copie de votre carte." msgstr "An unexpected error occured while copying your map" -#: geoportailv3/static/js/mymapsservice.js:799 +#: geoportailv3/static/js/mymapsservice.js:887 msgid "Erreur inattendue lors de la création de votre carte." msgstr "An unexpected error occured while creating your map" -#: geoportailv3/static/js/mymapsservice.js:1014 -#: geoportailv3/static/js/mymapsservice.js:964 +#: geoportailv3/static/js/mymapsservice.js:1052 +#: geoportailv3/static/js/mymapsservice.js:1102 msgid "Erreur inattendue lors de la mise à jour de votre carte." msgstr "An unexpected error occured while updating your map" -#: geoportailv3/static/js/mymapsservice.js:1053 -#: geoportailv3/static/js/mymapsservice.js:1092 +#: geoportailv3/static/js/mymapsservice.js:1144 +#: geoportailv3/static/js/mymapsservice.js:1183 +#: geoportailv3/static/js/mymapsservice.js:1222 msgid "Erreur inattendue lors de la sauvegarde de votre modification." msgstr "An unexpected error occured while saving your modifcations" -#: geoportailv3/static/js/mymapsservice.js:757 +#: geoportailv3/static/js/mymapsservice.js:845 msgid "Erreur inattendue lors de la suppression d'un élement." msgstr "An unexpected error occured while deleting an element" -#: geoportailv3/static/js/mymapsservice.js:869 +#: geoportailv3/static/js/mymapsservice.js:957 msgid "Erreur inattendue lors de la suppression de votre carte." msgstr "An unexpected error occured while deleting your map" -#: geoportailv3/static/js/mymapsservice.js:898 +#: geoportailv3/static/js/mymapsservice.js:986 msgid "Erreur inattendue lors de la suppression des objets de la carte." msgstr "Unexpected error while deleting the objects of the map." -#: geoportailv3/static/js/mymapsservice.js:467 +#: geoportailv3/static/js/mymapsservice.js:545 msgid "Erreur inattendue lors du chargement de vos cartes." msgstr "An unexpected error occured while loading your maps" -#: geoportailv3/static/js/mymapsservice.js:549 -#: geoportailv3/static/js/mymapsservice.js:727 +#: geoportailv3/static/js/mymapsservice.js:628 +#: geoportailv3/static/js/mymapsservice.js:815 msgid "Erreur inattendue lors du chargement de votre carte." msgstr "An unexpected error occured while loading your map" -#: geoportailv3/static/js/mymaps/mymaps.html:196 +#: geoportailv3/static/js/mymaps/mymaps.html:162 msgid "Etes-vous certain de vouloir effacer la carte courrante ?" msgstr "Are you sure you want to delete the current map?" -#: geoportailv3/static/js/mymaps/mymaps.html:168 +#: geoportailv3/static/js/mymaps/mymaps.html:176 +msgid "Etes-vous certain de vouloir effacer la carte intitulée :" +msgstr "Do you really want to delete the map with the title: " + +#: geoportailv3/static/js/mymaps/mymaps.html:134 msgid "Etes-vous certain de vouloir effacer tous les dessins ?" msgstr "Are you sure you want to delete all the drawings?" -#: geoportailv3/static/js/mymaps/mymaps.html:182 +#: geoportailv3/static/js/mymaps/mymaps.html:148 msgid "Etes-vous certain de vouloir effacer tous les éléments de la carte ?" msgstr "Are you sure you want to delete all the elements of this map?" @@ -594,22 +775,30 @@ msgid "Export csv" msgstr "Export CSV" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter GPX" msgstr "Export GPX" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter KMl" msgstr "Export KML" #: geoportailv3/static/js/draw/featurepopup.html:61 -#: geoportailv3/static/js/mymaps/mymaps.html:56 +#: geoportailv3/static/js/mymaps/mymaps.html:59 msgid "Exporter un GPX" msgstr "Export GPX" #: geoportailv3/static/js/draw/featurepopup.html:62 -#: geoportailv3/static/js/mymaps/mymaps.html:57 +#: geoportailv3/static/js/mymaps/mymaps.html:60 msgid "Exporter un KML" msgstr "Export KML" @@ -617,32 +806,42 @@ msgstr "Export KML" msgid "Facebook" msgstr "Facebook" -#: geoportailv3/templates/index.html:181 geoportailv3/templates/index.html:220 +#: geoportailv3/templates/index.html:231 geoportailv3/templates/index.html:293 msgid "Feedback" msgstr "Feedback" -#: geoportailv3/static/js/feedback/feedbackdirective.js:200 +#: geoportailv3/static/js/feedback/feedbackdirective.js:199 msgid "Feedback could not be sent to " msgstr "Feedback could not be sent to " -#: geoportailv3/static/js/feedback/feedbackdirective.js:194 +#: geoportailv3/static/js/feedback/feedbackdirective.js:193 msgid "Feedback sent to " msgstr "Feedback sent to " #: geoportailv3/static/js/draw/symbolselector.html:102 -#: geoportailv3/static/js/mymaps/mymaps.html:54 +#: geoportailv3/static/js/mymaps/mymaps.html:57 msgid "Fermer" msgstr "Close" -#: geoportailv3/static/js/mymaps/mymaps.html:222 +#: geoportailv3/static/js/mymaps/mymaps.html:233 msgid "Filter results by category" msgstr "Filter results by category" -#: geoportailv3/static/js/mymaps/mymaps.html:234 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:768 +#: geoportailv3/static/js/mymaps/mymaps.html:245 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1006 msgid "Filter results by username" msgstr "Filter results by username" +#: geoportailv3/static/js/mymaps/mymaps.html:211 +msgid "Fusionner" +msgstr "Merge" + +#: geoportailv3/static/js/mymaps/mymaps.html:103 +#: geoportailv3/static/js/mymaps/mymaps.html:188 +#: geoportailv3/static/js/mymaps/mymaps.html:54 +msgid "Fusionner des lignes" +msgstr "Merge lines" + #: geoportailv3/static/js/query/pcn_pag.html:7 msgid "Generer Rapport (peut prendre 30 sec)" msgstr "Generate report (can take up to 30 sec)" @@ -651,6 +850,10 @@ msgstr "Generate report (can take up to 30 sec)" msgid "Generer un rapport pour toutes les selections" msgstr "Generate report for all the selections" +#: node_modules/ngeo/src/geolocation/mobile.js:148 +msgid "Geolocation: An unknown error occurred." +msgstr "Geolocation: An unknown error occurred." + #: geoportailv3/static/js/query/affaires.html:6 msgid "Geometre" msgstr "Surveyor" @@ -663,51 +866,136 @@ msgstr "Get the layers" msgid "Google Plus" msgstr "Google Plus" +#: geoportailv3/static/js/offlineNgeoComponent.html:45 +msgid "Hide extent" +msgstr "Hide extent" + #: geoportailv3/static/js/authentication/authentication.html:11 msgid "I lost my password" msgstr "I lost my password" +#: geoportailv3/static/js/query/tracing.html:4 +msgid "ID" +msgstr "ID" + +#: geoportailv3/static/js/query/pdsreport.html:1 +msgid "" +"Ici vous pouvez commander l'attestation \"plans directeurs sectoriels\" par " +"rapport au terrain séctionné" +msgstr "" + #: geoportailv3/static/js/query/pagreport.html:1 msgid "" "Ici vous pouvez commander le rapport relatif aux règles urbanistiques " "applicables au terrain séctionné" msgstr "Hereby you can order a report concerning the municipal planning rules for a selected site." +#: geoportailv3/static/js/query/casiporeport.html:1 +msgid "" +"Ici vous pouvez commander le rapport relatif aux site potentiellement " +"contaminés" +msgstr "" + #: geoportailv3/static/js/query/pcn_pag.html:6 msgid "Identifiant" msgstr "User ID" -#: geoportailv3/static/js/mymaps/mymaps.html:58 -msgid "Importer un GPX" -msgstr "Import GPX" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1186 +msgid "Il faut au moins 2 lignes disponibles pour pouvoir les fusionner." +msgstr "You have to select at least 2 existing lines to be able to merge them" -#: geoportailv3/static/js/mymaps/mymaps.html:59 -msgid "Importer un KML" -msgstr "Import KML" +#: geoportailv3/static/js/streetview/streetview.html:4 +msgid "Il n'y a pas de panorama google disponible à cet endroit" +msgstr "There is no Google panorama available at this location" + +#: geoportailv3/static/js/mymaps/mymaps.html:61 +msgid "Importer un GPX/KML/KMZ" +msgstr "Import a GPX/KML/KMZ file" #: geoportailv3/static/js/draw/symbolselector.html:100 msgid "Importer un symbole" msgstr "Import symbol" -#: geoportailv3/templates/index.html:244 +#: geoportailv3/static/js/wmsservice.js:114 +msgid "Impossible de contacter ce WMS" +msgstr "Not possible to contact WM(T)S Server" + +#: geoportailv3/static/js/wmtsservice.js:98 +msgid "Impossible de contacter ce WMTS" +msgstr "Impossible to contact this WMTS" + +#: geoportailv3/templates/index.html:317 msgid "Imprimer" msgstr "Print" -#: geoportailv3/templates/index.html:213 +#: geoportailv3/static/js/routing/routing.html:27 +msgid "Indiquez une adresse, un lieu" +msgstr "Specify an address, a place" + +#: geoportailv3/templates/index.html:283 msgid "Infos(*)" msgstr "Info(*)" +#: geoportailv3/static/js/routing/routing.html:37 +msgid "Insérez rapidement" +msgstr "Quickly add" + +#: node_modules/ngeo/src/filter/rulecomponent.js:169 +msgid "Intersects" +msgstr "Intersects" + #: geoportailv3/static/js/usermanagerservice.js:128 #: geoportailv3/static/js/usermanagerservice.js:135 msgid "Invalid username or password." msgstr "Invalid username or password." +#: node_modules/ngeo/src/filter/rulecomponent.js:159 +#: node_modules/ngeo/src/filter/rulecomponent.js:174 +msgid "Is equal to" +msgstr "Is equal to" + +#: node_modules/ngeo/src/filter/rulecomponent.js:160 +msgid "Is greater than" +msgstr "Is greater than" + +#: node_modules/ngeo/src/filter/rulecomponent.js:161 +msgid "Is greater than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:170 +msgid "Is inside of" +msgstr "Is inside of" + +#: node_modules/ngeo/src/filter/rulecomponent.js:163 +msgid "Is lesser than" +msgstr "Is lesser than" + +#: node_modules/ngeo/src/filter/rulecomponent.js:164 +msgid "Is lesser than or equal to" +msgstr "Is lesser than or equal to" + +#: node_modules/ngeo/src/filter/rulecomponent.js:166 +msgid "Is not equal to" +msgstr "Is not equal to" + +#: geoportailv3/templates/index.html:95 +msgid "Itinéraire en détail" +msgstr "Route details" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:31 +msgid "Itinéraire mobilitéit.lu depuis ici" +msgstr "" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:32 +msgid "Itinéraire mobilitéit.lu vers ici" +msgstr "" + #: geoportailv3/static/js/layerinfo/popup.html:22 msgid "Keywords" msgstr "Keywords" -#: geoportailv3/static/js/mymapsservice.js:544 -#: geoportailv3/static/js/mymapsservice.js:722 +#: geoportailv3/static/js/mymapsservice.js:623 +#: geoportailv3/static/js/mymapsservice.js:810 msgid "La carte demandée n'existe pas." msgstr "The map that you have chosen does not exist" @@ -718,19 +1006,27 @@ msgid "" msgstr "Geolocation is only available in the secure version of geoportal.lu (https).\nDo you want to be redirected?" #: geoportailv3/static/js/draw/draw.html:8 -#: geoportailv3/static/js/draw/drawdirective.js:684 +#: geoportailv3/static/js/draw/drawdirective.js:735 msgid "Label" msgstr "Label" -#: geoportailv3/static/js/search/searchdirective.js:435 +#: geoportailv3/static/js/search/searchdirective.js:485 msgid "Layers" msgstr "Layers" -#: geoportailv3/static/js/print/printdirective.js:563 +#: geoportailv3/static/js/print/printdirective.js:582 msgid "Le géoportail national du Grand-Duché du Luxembourg" msgstr "The official geoportal for the Grand-Duchy of Luxembourg" -#: geoportailv3/templates/index.html:224 +#: geoportailv3/static/js/routing/routing.html:51 +msgid "Le plus court" +msgstr "Shortest" + +#: geoportailv3/static/js/routing/routing.html:50 +msgid "Le plus rapide" +msgstr "Fastest" + +#: geoportailv3/templates/index.html:297 msgid "Legalites" msgstr "T & C" @@ -738,7 +1034,7 @@ msgstr "T & C" msgid "Legend" msgstr "with legend" -#: geoportailv3/templates/index.html:216 +#: geoportailv3/templates/index.html:286 msgid "Legends" msgstr "Legends" @@ -750,7 +1046,7 @@ msgstr "Length" msgid "Length:" msgstr "Lenght:" -#: geoportailv3/static/js/mymaps/mymaps.html:26 +#: geoportailv3/static/js/mymaps/mymaps.html:27 msgid "" "Les couches sélectionnées dans le catalogue sont différentes de celles " "chargées avec votre carte. Voulez vous sauvegarder ces modifications dans " @@ -762,22 +1058,28 @@ msgstr "The layers selected in the catalog are different than the ones loaded in #: geoportailv3/static/js/query/affaires.html:11 #: geoportailv3/static/js/query/asta_esp.html:6 #: geoportailv3/static/js/query/batiments.html:4 -#: geoportailv3/static/js/query/bus.html:6 +#: geoportailv3/static/js/query/bus.html:7 +#: geoportailv3/static/js/query/bus_wo_title.html:5 #: geoportailv3/static/js/query/cfl_hecto.html:4 #: geoportailv3/static/js/query/default.html:23 +#: geoportailv3/static/js/query/default_no_prefix.html:23 +#: geoportailv3/static/js/query/default_table.html:31 +#: geoportailv3/static/js/query/default_table_no_prefix.html:31 #: geoportailv3/static/js/query/flik.html:6 #: geoportailv3/static/js/query/inst_pub.html:5 #: geoportailv3/static/js/query/meteo.html:5 #: geoportailv3/static/js/query/mo.html:9 -#: geoportailv3/static/js/query/mymaps.html:14 +#: geoportailv3/static/js/query/mymaps.html:15 #: geoportailv3/static/js/query/ng95.html:9 #: geoportailv3/static/js/query/ont_poi.html:5 -#: geoportailv3/static/js/query/parcels.html:13 +#: geoportailv3/static/js/query/parcels.html:25 #: geoportailv3/static/js/query/parcels_go.html:26 #: geoportailv3/static/js/query/parcels_prof.html:25 #: geoportailv3/static/js/query/pcn_pag.html:8 +#: geoportailv3/static/js/query/pegel.html:5 #: geoportailv3/static/js/query/poi.html:4 #: geoportailv3/static/js/query/remembrements.html:6 +#: geoportailv3/static/js/query/sentier_nature.html:22 #: geoportailv3/static/js/query/urplang.html:8 #: geoportailv3/static/js/query/viti_flik.html:7 #: geoportailv3/static/js/query/viti_kleinlage.html:4 @@ -786,10 +1088,15 @@ msgstr "The layers selected in the catalog are different than the ones loaded in msgid "Lien direct vers cet objet" msgstr "Direct link to object" -#: geoportailv3/static/js/query/mymaps.html:13 +#: geoportailv3/static/js/query/mymaps.html:14 msgid "Lien vers la carte" msgstr "Link to the map" +#: geoportailv3/static/js/locationinfo/locationinfo.html:28 +msgid "Lien vers la démo lidar" +msgstr "Link to the LIDAR demo" + +#: geoportailv3/static/js/query/parcels.html:12 #: geoportailv3/static/js/query/parcels_go.html:14 #: geoportailv3/static/js/query/parcels_prof.html:13 msgid "Lien vers les mesurages" @@ -805,7 +1112,8 @@ msgstr "Place name" msgid "Line" msgstr "Line" -#: geoportailv3/static/js/draw/drawdirective.js:690 +#: geoportailv3/static/js/draw/drawdirective.js:756 +#: node_modules/ngeo/src/draw/Controller.js:68 msgid "LineString" msgstr "Line" @@ -817,6 +1125,10 @@ msgstr "Link to the metadata" msgid "Location Coordinates" msgstr "Location coordinates" +#: node_modules/ngeo/src/geolocation/mobile.js:142 +msgid "Location information is unavailable." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:4 msgid "Login" msgstr "Username" @@ -833,6 +1145,19 @@ msgstr "Length" msgid "Longueur" msgstr "Length" +#: geoportailv3/static/js/query/sentier_nature.html:7 +msgid "Longueur du parcours" +msgstr "Length" + +#: node_modules/ngeo/src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "M/d/yyyy" + +#: node_modules/ngeo/src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "M/yyyy" + +#: geoportailv3/static/js/query/parcels.html:16 #: geoportailv3/static/js/query/parcels_go.html:18 #: geoportailv3/static/js/query/parcels_go.html:19 #: geoportailv3/static/js/query/parcels_prof.html:17 @@ -840,8 +1165,8 @@ msgstr "Length" msgid "MES_TYPE_{{file.filename | limitTo : 1 :5}}" msgstr "MES_TYPE_{{file.filename | limitTo : 1 :5}}" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:660 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:926 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1165 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:896 msgid "Map without Title" msgstr "Map without title" @@ -853,12 +1178,13 @@ msgstr "My symbols" msgid "Mesurage" msgstr "Surveying Dossier" +#: geoportailv3/static/js/query/parcels.html:19 #: geoportailv3/static/js/query/parcels_go.html:22 #: geoportailv3/static/js/query/parcels_prof.html:21 msgid "Mesurage non disponible" msgstr "Measurement unavailable" -#: geoportailv3/templates/index.html:237 +#: geoportailv3/templates/index.html:310 msgid "Mesurer" msgstr "Measure" @@ -866,11 +1192,15 @@ msgstr "Measure" msgid "Modification des informations" msgstr "Modify information" -#: geoportailv3/static/js/mymaps/mymaps.html:123 +#: geoportailv3/static/js/mymaps/mymaps.html:315 msgid "Modify title and description of the map" msgstr "Modify title and description of the map" -#: geoportailv3/templates/index.html:210 +#: node_modules/ngeo/src/filter/rulecomponent.js:826 +msgid "Move" +msgstr "Move" + +#: geoportailv3/templates/index.html:280 msgid "My Maps(*)" msgstr "My Maps(*)" @@ -879,7 +1209,7 @@ msgstr "My Maps(*)" msgid "My account" msgstr "My account" -#: geoportailv3/static/js/elevationservice.js:50 +#: geoportailv3/static/js/elevationservice.js:47 msgid "N/A" msgstr "N/A" @@ -899,6 +1229,10 @@ msgstr "Nature" msgid "No layer selected" msgstr "No layer selected" +#: geoportailv3/static/js/offlineNgeoComponent.html:86 +msgid "No maps selected for saving." +msgstr "No maps selected for saving." + #: geoportailv3/static/js/draw/symbolselector.html:20 #: geoportailv3/static/js/query/cfl_hecto.html:3 #: geoportailv3/static/js/query/remembrements.html:3 @@ -907,11 +1241,32 @@ msgstr "No layer selected" msgid "Nom" msgstr "Name" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:983 +#: node_modules/ngeo/src/filter/component.js:162 +msgid "None" +msgstr "None" + +#: geoportailv3/static/js/mymaps/mymaps.html:194 +msgid "Nouveau nom" +msgstr "New name" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1246 msgid "Nouvelle carte créée" msgstr "New map created" +#: geoportailv3/static/js/mymaps/mymaps.html:199 +msgid "Nouvelle description" +msgstr "New description" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1180 +msgid "Nouvelle ligne" +msgstr "New line" + +#: geoportailv3/static/js/query/lignes_bus.html:3 +msgid "Num ligne" +msgstr "Line number" + #: geoportailv3/static/js/query/affaires.html:4 +#: geoportailv3/static/js/query/tracing.html:3 #: geoportailv3/static/js/query/viti_parcels.html:3 msgid "Numero" msgstr "Number" @@ -934,7 +1289,7 @@ msgstr "cadastral parcel number" #: geoportailv3/static/js/draw/featurepopup.html:119 #: geoportailv3/static/js/draw/featurepopup.html:139 -#: geoportailv3/static/js/draw/styleediting.html:123 +#: geoportailv3/static/js/draw/styleediting.html:124 msgid "OK" msgstr "OK" @@ -948,8 +1303,23 @@ msgstr "Get File as a PDF" msgid "Occupation" msgstr "Occupation" +#: geoportailv3/static/js/offlineNgeoComponent.html:27 +msgid "Offline map" +msgstr "Offline map" + +#: geoportailv3/static/js/offlineNgeoComponent.html:100 +#: geoportailv3/static/js/offlineNgeoComponent.html:118 +#: geoportailv3/static/js/offlineNgeoComponent.html:69 +#: geoportailv3/static/js/offlineNgeoComponent.html:87 +msgid "Ok" +msgstr "Ok" + +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Operation canceled" +msgstr "Operation canceled" + #: geoportailv3/static/js/askredirect/askredirect.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:29 +#: geoportailv3/static/js/mymaps/mymaps.html:30 msgid "Oui" msgstr "Yes" @@ -958,20 +1328,20 @@ msgstr "Yes" msgid "Ouvrir la PF" msgstr "Open PF" -#: geoportailv3/static/js/mymaps/mymaps.html:208 +#: geoportailv3/static/js/mymaps/mymaps.html:219 #: geoportailv3/static/js/mymaps/mymaps.html:6 msgid "Ouvrir une carte" msgstr "Open a map" -#: geoportailv3/static/js/mymaps/mymaps.html:47 +#: geoportailv3/static/js/mymaps/mymaps.html:48 msgid "Ouvrir une carte existante" msgstr "Open an exsisting map" -#: geoportailv3/templates/index.html:249 +#: geoportailv3/templates/index.html:324 msgid "Partager" msgstr "Share" -#: geoportailv3/static/js/mymaps/mymaps.html:49 +#: geoportailv3/static/js/mymaps/mymaps.html:50 msgid "Partager la carte" msgstr "Share map" @@ -983,6 +1353,10 @@ msgstr "Password" msgid "Perimetre" msgstr "Perimeter" +#: geoportailv3/static/js/routing/routing.html:98 +msgid "Petite astuce!" +msgstr "Tip!" + #: geoportailv3/static/js/feedback/feedback.html:9 msgid "Pick layer where problem occurs" msgstr "Pick layer where problem occurs" @@ -991,12 +1365,12 @@ msgstr "Pick layer where problem occurs" msgid "Plain" msgstr "Plain" -#: geoportailv3/static/js/feedback/feedbackdirective.js:111 -#: geoportailv3/static/js/feedback/feedbackdirective.js:134 +#: geoportailv3/static/js/feedback/feedbackdirective.js:110 +#: geoportailv3/static/js/feedback/feedbackdirective.js:133 msgid "Please pick a layer" msgstr "Please pick a layer" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:802 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1040 msgid "Please select a Category" msgstr "Please select a category" @@ -1005,18 +1379,20 @@ msgid "Please wait, the profile is loading." msgstr "Please wait, the profile is loading." #: geoportailv3/static/js/draw/draw.html:3 -#: geoportailv3/static/js/draw/drawdirective.js:686 +#: geoportailv3/static/js/draw/drawdirective.js:737 +#: node_modules/ngeo/src/draw/Controller.js:67 msgid "Point" msgstr "Point" #: geoportailv3/static/js/draw/draw.html:18 -#: geoportailv3/static/js/draw/drawdirective.js:696 +#: geoportailv3/static/js/draw/drawdirective.js:765 +#: node_modules/ngeo/src/draw/Controller.js:69 msgid "Polygon" msgstr "Polygon" #: geoportailv3/static/js/externaldata/externaldata.html:14 msgid "Predefined wms" -msgstr "Predefined WMS" +msgstr "Predefined WM(T)S" #: geoportailv3/static/js/measure/measure.html:15 msgid "Profile" @@ -1026,7 +1402,11 @@ msgstr "Height profile" msgid "Proprietaire" msgstr "Owner" -#: geoportailv3/static/js/mymaps/mymaps.html:136 +#: geoportailv3/static/js/query/info.html:5 +msgid "Prévisualisation du mesurage" +msgstr "Preview the survey plan" + +#: geoportailv3/static/js/mymaps/mymaps.html:328 msgid "Public Map" msgstr "Public Map" @@ -1039,7 +1419,11 @@ msgstr "Public" msgid "Rayon:" msgstr "Radius:" -#: geoportailv3/static/js/search/search.html:6 +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Read failed" +msgstr "" + +#: geoportailv3/static/js/search/search.html:8 msgid "Recherche adresse, parcelles, couches ..." msgstr "Search addresses, parcels, layers ... " @@ -1047,6 +1431,10 @@ msgstr "Search addresses, parcels, layers ... " msgid "Rechercher un symbole" msgstr "Search symbol" +#: node_modules/ngeo/src/draw/Controller.js:71 +msgid "Rectangle" +msgstr "" + #: geoportailv3/static/js/query/affaires.html:7 msgid "Region" msgstr "Region" @@ -1055,7 +1443,7 @@ msgstr "Region" msgid "Report a map content problem:" msgstr "Report a map content problem:" -#: geoportailv3/static/js/mymaps/mymaps.html:28 +#: geoportailv3/static/js/mymaps/mymaps.html:29 msgid "Reset" msgstr "Reset" @@ -1067,17 +1455,34 @@ msgstr "Remove thumbnail" msgid "Revision date" msgstr "Revision date" -#: geoportailv3/static/js/mymaps/mymaps.html:156 -#: geoportailv3/static/js/mymaps/mymaps.html:157 -#: geoportailv3/static/js/mymaps/mymaps.html:158 +#: node_modules/ngeo/src/filter/rulecomponent.js:835 +msgid "Rotate" +msgstr "" + +#: geoportailv3/static/js/routing/routingdirective.js:1100 +msgid "Route du" +msgstr "Calculated way from" + +#: geoportailv3/templates/index.html:215 geoportailv3/templates/index.html:289 +msgid "Routing" +msgstr "Routing" + +#: geoportailv3/static/js/mymaps/mymaps.html:348 +#: geoportailv3/static/js/mymaps/mymaps.html:349 +#: geoportailv3/static/js/mymaps/mymaps.html:350 msgid "Save changes" msgstr "Save changes" -#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/offlineNgeoComponent.html:11 +msgid "Save map" +msgstr "Save map" + +#: geoportailv3/static/js/mymaps/mymaps.html:351 +#: geoportailv3/static/js/offlineNgeoComponent.html:55 msgid "Save new map" msgstr "Save new map" -#: geoportailv3/static/js/mymaps/mymaps.html:213 +#: geoportailv3/static/js/mymaps/mymaps.html:224 msgid "Search Maps" msgstr "Search Maps" @@ -1105,6 +1510,10 @@ msgstr "Only share mymaps link" msgid "Short Url" msgstr "Url" +#: geoportailv3/static/js/offlineNgeoComponent.html:46 +msgid "Show extent" +msgstr "Show extent" + #: geoportailv3/static/js/share/shorturl.html:12 msgid "Show long url" msgstr "Show long URL" @@ -1113,8 +1522,8 @@ msgstr "Show long URL" msgid "Show orientation" msgstr "Show orientation" -#: geoportailv3/static/js/draw/styleediting.html:107 -#: geoportailv3/static/js/draw/styleediting.html:93 +#: geoportailv3/static/js/draw/styleediting.html:108 +#: geoportailv3/static/js/draw/styleediting.html:94 msgid "Size" msgstr "Size" @@ -1140,11 +1549,15 @@ msgstr "Style your drawing" msgid "Submit" msgstr "Submit" -#: geoportailv3/static/js/mymaps/mymaps.html:51 +#: geoportailv3/static/js/draw/draw.html:34 +msgid "Suivre la route" +msgstr "Follow roads" + +#: geoportailv3/static/js/mymaps/mymaps.html:52 msgid "Supprimer la carte" msgstr "Delete map" -#: geoportailv3/static/js/mymaps/mymaps.html:52 +#: geoportailv3/static/js/mymaps/mymaps.html:53 msgid "Supprimer tous les élements de la carte" msgstr "Delete all the elements of the map" @@ -1155,11 +1568,15 @@ msgstr "Delete all the elements of the map" msgid "Surface" msgstr "Surface" -#: geoportailv3/static/js/draw/styleediting.html:78 +#: geoportailv3/static/js/mymaps/mymaps.html:8 +msgid "Switch to 2D to create a map" +msgstr "Switch to 2D to create a map" + +#: geoportailv3/static/js/draw/styleediting.html:79 msgid "Symbol" msgstr "Symbol" -#: geoportailv3/static/js/draw/styleediting.html:81 +#: geoportailv3/static/js/draw/styleediting.html:82 msgid "" "Symbol\n" " \n" @@ -1172,17 +1589,25 @@ msgstr "Symbol\n map link " "will be sent to our support team." msgstr "The following map link will be sent to our support team." -#: geoportailv3/static/js/exclusionmanagerservice.js:138 +#: geoportailv3/static/js/exclusionmanagerservice.js:140 msgid "" "The layer {{layersToRemove}} has been removed because it cannot be " "displayed while the layer {{layer}} is displayed" @@ -1200,6 +1625,10 @@ msgstr "The legend is not available for this layer." msgid "The metadata is right now not available" msgstr "The metadata is actually not available." +#: node_modules/ngeo/src/geolocation/mobile.js:145 +msgid "The request to get user location timed out." +msgstr "The request to get user location timed out." + #: geoportailv3/static/js/themeswitcher/themes.html:2 msgid "Theme" msgstr "Theme" @@ -1208,20 +1637,20 @@ msgstr "Theme" msgid "Title" msgstr "Title" -#: geoportailv3/static/js/mymaps/mymaps.html:124 -#: geoportailv3/static/js/mymaps/mymaps.html:126 +#: geoportailv3/static/js/mymaps/mymaps.html:316 +#: geoportailv3/static/js/mymaps/mymaps.html:318 msgid "Title and description of the map" msgstr "Title and description of the map" -#: geoportailv3/static/js/mymaps/mymaps.html:125 +#: geoportailv3/static/js/mymaps/mymaps.html:317 msgid "Title and description of the map copy" msgstr "Title and description of the map copy" -#: geoportailv3/static/js/mymaps/mymaps.html:249 +#: geoportailv3/static/js/mymaps/mymaps.html:260 msgid "Titre" msgstr "Title" -#: geoportailv3/static/js/mymaps/mymaps.html:131 +#: geoportailv3/static/js/mymaps/mymaps.html:323 msgid "Titre de la carte" msgstr "Title of the map" @@ -1240,15 +1669,39 @@ msgstr "Twitter" msgid "Type" msgstr "Type" -#: geoportailv3/static/js/usermanagerservice.js:152 -#: geoportailv3/static/js/usermanagerservice.js:160 +#: geoportailv3/static/js/routing/routing.html:77 +msgid "Télécharger" +msgstr "Download" + +#: geoportailv3/static/js/query/sentier_nature.html:9 +msgid "Télécharger la brochure" +msgstr "Download flyer" + +#: geoportailv3/static/js/routing/routingdirective.js:1120 +msgid "Une copie de votre route a été enregistrée dans Mymaps." +msgstr "A copy of your route has been saved into your maps (My Maps)" + +#: geoportailv3/static/js/usermanagerservice.js:153 +#: geoportailv3/static/js/usermanagerservice.js:161 msgid "Une erreur est survenue durant la déconnexion." msgstr "An error occured while disconnecting" +#: geoportailv3/static/js/query/tracing.html:6 +msgid "UpStream" +msgstr "UpStream" + +#: node_modules/ngeo/src/misc/File.js:87 +msgid "Upload failed" +msgstr "Upload failed" + #: geoportailv3/static/js/layerinfo/popup.html:18 msgid "Url vers la resource" msgstr "Ressource URL" +#: node_modules/ngeo/src/geolocation/mobile.js:139 +msgid "User denied the request for Geolocation." +msgstr "User denied the request for Geolocation." + #: geoportailv3/static/js/authentication/authentication.html:7 msgid "Username" msgstr "Username" @@ -1261,7 +1714,8 @@ msgstr "Validate" msgid "Valider" msgstr "Validate" -#: geoportailv3/static/js/query/reportdirective.js:131 +#: geoportailv3/static/js/query/reportdirective.js:135 +#: geoportailv3/static/js/query/reportdirective.js:275 msgid "Veuillez accepter les termes du rapport" msgstr "Please accept the terms of the report" @@ -1273,28 +1727,64 @@ msgstr "Chose a symbol from a category" msgid "Veuillez entrer les caractéristiques de votre nouveau cercle" msgstr "Please specify the details of your new circle" -#: geoportailv3/static/js/query/reportdirective.js:126 +#: geoportailv3/static/js/query/reportdirective.js:130 +#: geoportailv3/static/js/query/reportdirective.js:270 +#: geoportailv3/static/js/query/reportdirective.js:410 msgid "Veuillez saisir une adresse email valide" msgstr "Please enter a valid email address" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:1068 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1336 +#: geoportailv3/static/js/routing/routingdirective.js:1132 msgid "Veuillez vous identifier afin d'accéder à vos cartes" msgstr "Please login to access your maps" -#: geoportailv3/static/js/query/reportdirective.js:138 +#: geoportailv3/static/js/query/tracing.html:6 +#: geoportailv3/static/js/query/tracing.html:7 +msgid "Visualiser" +msgstr "View" + +#: geoportailv3/templates/index.html:225 +msgid "Voir le plan" +msgstr "To the map" + +#: geoportailv3/static/js/query/reportdirective.js:419 +msgid "" +"Votre attestation est en train d'être généré. Un email vous sera envoyé à " +"l'adresse {{email}} dès qu'il sera disponible" +msgstr "Votre attestation est en train d'être généré. Un email vous sera envoyé à l'adresse {{email}} dès qu'il sera disponible" + +#: geoportailv3/static/js/query/reportdirective.js:142 +#: geoportailv3/static/js/query/reportdirective.js:282 msgid "" "Votre rapport est en train d'être généré. Un email vous sera envoyé à " "l'adresse {{email}} dès qu'il sera disponible" msgstr "Your report is being generated. \nYou will receive an email at your address {{email}} as soon as it is available" -#: geoportailv3/static/js/mymapsservice.js:1106 +#: geoportailv3/static/js/mymapsservice.js:1236 msgid "Votre utilisateur n'a pas les autorisations suffisantes." msgstr "Your user has not enough privileges" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:451 +msgid "" +"Vous êtes en mode découpage.
Veuillez cliquer sur une ligne pour la " +"couper en deux." +msgstr "You are in cutting mode
Please clic on a line to cut it into two pieces" + #: geoportailv3/static/js/usermanagerservice.js:123 msgid "Vous êtes maintenant correctement connecté." msgstr "You are now logged in" +#: geoportailv3/static/js/offlineNgeoComponent.html:114 +#: geoportailv3/static/js/offlineNgeoComponent.html:65 +#: geoportailv3/static/js/offlineNgeoComponent.html:83 +#: geoportailv3/static/js/offlineNgeoComponent.html:96 +msgid "Warning" +msgstr "" + +#: geoportailv3/static/js/search/searchdirective.js:538 +msgid "Website Pages" +msgstr "" + #: geoportailv3/static/js/print/print.html:13 msgid "With legend" msgstr "With legend" @@ -1306,7 +1796,7 @@ msgid "" "send to the support team." msgstr "You can also use the Drawing Tools to annotate the map sent to the support team." -#: geoportailv3/static/js/mymaps/mymapsdirective.js:907 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1146 msgid "You have no existing Maps, please create a New Map" msgstr "You have no existing maps, please create a new map" @@ -1462,31 +1952,35 @@ msgstr "building completed from orthoimagery" msgid "blank" msgstr "White background" +#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 +msgid "f_formatted_length" +msgstr "" + #: geoportailv3/static/js/query/attribute_values_for_translation.html:128 msgid "f_percentage" msgstr "Prozentsatz" -#: geoportailv3/templates/index.html:132 +#: geoportailv3/templates/index.html:164 msgid "infos" msgstr "infos" -#: geoportailv3/templates/index.html:48 +#: geoportailv3/templates/index.html:70 msgid "lang" msgstr "Language" -#: geoportailv3/templates/index.html:77 +#: geoportailv3/templates/index.html:104 msgid "layers" msgstr "Layers" -#: geoportailv3/templates/index.html:167 +#: geoportailv3/templates/index.html:201 msgid "legends" msgstr "legends" -#: geoportailv3/templates/index.html:85 +#: geoportailv3/templates/index.html:116 msgid "my_layers" msgstr "My layers" -#: geoportailv3/templates/index.html:113 +#: geoportailv3/templates/index.html:145 msgid "my_maps" msgstr "My Maps" @@ -1495,7 +1989,7 @@ msgstr "My Maps" msgid "mètres" msgstr "meters" -#: geoportailv3/static/js/search/searchdirective.js:448 +#: geoportailv3/static/js/search/searchdirective.js:498 msgid "open in theme" msgstr "open in theme" @@ -1559,10 +2053,6 @@ msgstr "BDTopo building" msgid "pf_bâtiment commercial" msgstr "commercial building" -#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 -msgid "pf_bâtiment non défini" -msgstr "Undefined building" - #: geoportailv3/static/js/query/attribute_values_for_translation.html:94 msgid "pf_bâtiment public" msgstr "Public building" @@ -1859,7 +2349,7 @@ msgstr "forestry" msgid "rem_typ_5002" msgstr "viticultural" -#: geoportailv3/templates/index.html:39 +#: geoportailv3/templates/index.html:57 msgid "search" msgstr "Search" @@ -1867,11 +2357,15 @@ msgstr "Search" msgid "sentier" msgstr "Path:" -#: geoportailv3/templates/index.html:41 +#: geoportailv3/templates/index.html:63 msgid "user" msgstr "User" -#: geoportailv3/static/js/print/printdirective.js:560 +#: geoportailv3/static/js/routing/routing.html:37 +msgid "votre position actuelle" +msgstr "Your current position" + +#: geoportailv3/static/js/print/printdirective.js:579 msgid "" "www.geoportail.lu est un portail d'accès aux informations géolocalisées, " "données et services qui sont mis à disposition par les administrations " @@ -1883,6 +2377,10 @@ msgid "" "Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" msgstr "www.geoportal.lu offers spatial data & services provided by Luxembourg government bodies. Responsibiliy: Despite the great care taken by the official instances regarding the exactitude of the published data, the authorities cannot assume any responsibility regarding fidelity, exactitude, up-to-dateness, reliability and integrity of these informations. Information without legal value.\nCopyright: Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" +#: node_modules/ngeo/src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "" + #: geoportailv3/static/js/query/batiments.html:3 msgid "{{(\"bat_\"+feature.attributes.type) | translate}}" msgstr "{{(\"bat_\"+feature.attributes.type) | translate}}" @@ -1895,6 +2393,23 @@ msgstr "{{(\"rem_status_\"+feature.attributes.K_STATUS) | translate}}" msgid "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" msgstr "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" +#: geoportailv3/static/js/query/lignes_bus.html:6 +#: geoportailv3/static/js/query/lignes_bus.html:7 +#: geoportailv3/static/js/query/lignes_bus.html:8 +msgid "{{feature.attributes.label}}" +msgstr "Results of the LIDAR prototype of the A.C.T." + +#: geoportailv3/static/js/query/lignes_bus.html:9 +msgid "{{feature.attributes.map_description}}" +msgstr "" + +#: geoportailv3/static/js/offlineNgeoComponent.html:68 +msgid "" +"~{{$ctrl.estimatedLoadDataSize}}MB of maps will be downloaded - Don't lock " +"your device or navigate away from this site during the download process. " +"Deactivate \"private\" mode of your browser." +msgstr "~{{$ctrl.estimatedLoadDataSize}}MB of maps will be downloaded - Don't lock your device or navigate away from this site during the download process. Deactivate \"private\" mode of your browser." + #: geoportailv3/static/js/draw/featurepopup.html:113 msgid "Êtes-vous certain de vouloir effacer cet élément de la carte ?" msgstr "Are you sure you want to delete this element from the map?" @@ -1951,7 +2466,7 @@ msgstr "API" msgid "arbed" msgstr "ARBED" -#: theme.114 group.253 +#: theme.114 msgid "commande" msgstr "Gemeng" @@ -2049,11 +2564,11 @@ msgstr "Orthophoto Préizerdaul" #: lu_int_wms.138 msgid "asta_esp_lisiere" -msgstr "forest edges" +msgstr "Forest edges" #: lu_int_wms.139 msgid "asta_esp_esp" -msgstr "landscape features" +msgstr "Landscape features" #: lu_int_wms.140 msgid "aero_1963_20k" @@ -2085,7 +2600,7 @@ msgstr "Natura 2000" #: lu_int_wms.147 msgid "arrets_bus" -msgstr " Public Transport" +msgstr " Public Transport - Stops" #: lu_ext_wms.148 msgid "user_content_vtt" @@ -2121,7 +2636,7 @@ msgstr "Topographical Map 1:20k 1979 B/W" #: lu_int_wms.157 msgid "env_bruit_air_lden" -msgstr "Airport 2011 (LDEN)" +msgstr "Major airport 2011 (Lden)" #: lu_ext_wms.158 msgid "tour_cfl" @@ -2153,7 +2668,7 @@ msgstr "Addresses" #: group.166 msgid "env_bruit" -msgstr "Noise" +msgstr "Environmental Noise" #: lu_int_wms.167 msgid "env_corine" @@ -2207,10 +2722,6 @@ msgstr "Local Footpaths (not maintained by the DG Tourism)" msgid "anf_secteurs_ecologiques_group" msgstr "Ecological sectors" -#: l_wmts.181 -msgid "roads" -msgstr "Road Network" - #: l_wmts.182 msgid "ac_wellenstein_pag_zones" msgstr "Zones" @@ -2305,7 +2816,7 @@ msgstr "Weather data" #: lu_ext_wms.205 msgid "tour_escape_ardenne" -msgstr "EscapArdenne" +msgstr "Escapardenne" #: l_wmts.206 msgid "topo_20k" @@ -2343,9 +2854,9 @@ msgstr "Cadastral data" msgid "eau_new_Provisorische_ZPS" msgstr "Provisional ZPS" -#: l_wmts.216 -msgid "decoupage_communes" -msgstr "Municipality code" +#: theme.1388 +msgid "sig_secours" +msgstr "Secours" #: l_wmts.217 msgid "TOPO_CARTESHISTO_1966-74_50k" @@ -2485,7 +2996,7 @@ msgstr "My Maps" #: lu_ext_wms.250 msgid "tour_DeLux" -msgstr "Naturwanderpark DeLux" +msgstr "Naturwanderpark Delux" #: l_wmts.251 msgid "ign_ortho" @@ -2699,10 +3210,6 @@ msgstr "Geological map, new edition" msgid "tour_mymaps" msgstr "Foot trails" -#: lu_ext_wms.316 lu_int_wms.749 -msgid "env_sentiersnature" -msgstr "Nature trails" - #: group.317 msgid "eau_topographie" msgstr "Topography" @@ -2741,7 +3248,7 @@ msgstr "Environment, Biology and Geology" #: lu_int_wms.327 msgid "env_bruit_air_lngt" -msgstr "Airport 2011 (LNGT)" +msgstr "Major airport 2011 (Lngt)" #: l_wmts.328 msgid "1907_CAHANSEN" @@ -2819,10 +3326,6 @@ msgstr "All public maps of my root account" msgid "all_my_maps" msgstr "All my public maps" -#: l_wmts.351 -msgid "roads_labels" -msgstr "Road Names" - #: lu_int_wms.352 msgid "cfl_hecto" msgstr "Mileage of the CFL tracks" @@ -2895,7 +3398,7 @@ msgstr "Districts (names)" msgid "country" msgstr "Country" -#: lu_int_wms.256 +#: lu_int_wms.256 lu_int_wms.822 msgid "feuilles_cadastrales" msgstr "Historical cadastral sheets" @@ -2909,23 +3412,23 @@ msgstr "Small winegrowing areas" #: lu_int_wms.297 msgid "ivv_flik_parcels" -msgstr "FLIK reference parcels for Vineyards 2016" +msgstr "FLIK reference parcels for Vineyards 2017" #: l_wmts.326 msgid "env_bruit_axes_routiers_lden" -msgstr "Roads 2011 (LDEN)" +msgstr "Major Roads 2011 (Lden)" #: l_wmts.255 msgid "env_bruit_axes_routiers_lngt" -msgstr "Roads 2011 (LNGT)" +msgstr "Major Roads 2011 (Lngt)" #: l_wmts.259 msgid "env_bruit_axes_ferroviaires_lngt" -msgstr "Railroads 2011 (LNGT)" +msgstr "Major Railways 2011 (Lngt)" #: l_wmts.310 msgid "env_bruit_axes_ferroviaires_lden" -msgstr "Railroads 2011 (LDEN)" +msgstr "Major Railways 2011 (Lden)" #: lu_int_wms.367 msgid "natur_an_emwelt_terrains" @@ -2951,9 +3454,13 @@ msgstr "Point elements" msgid "emwelt_biotop_kadaster_s" msgstr "Orchards" +#: group.253 +msgid "commande_grp" +msgstr "Commande" + #: group.373 msgid "eau_new_Trinkwasser_Schutzzonen_(ZPS)" -msgstr "Drinking water protection Zones [ZPS]" +msgstr "Drinking water safeguard zones [ZPS]" #: lu_int_wms.374 msgid "topo_decoupage_ortho_2013" @@ -3029,15 +3536,15 @@ msgstr "Gallo-Romain" #: group.392 msgid "at_pst" -msgstr "SP transport" +msgstr "SMP transport" #: group.393 msgid "at_pszae" -msgstr "SP economic activity zones" +msgstr "SMP business and industrial parks" #: group.394 msgid "at_ps" -msgstr "Sectoral plans (SP)" +msgstr "Sectoral master plans (SMP) - Projects" #: lu_int_wms.395 msgid "at_psp_gep" @@ -3053,7 +3560,7 @@ msgstr "Multifunctional zones (total)" #: group.398 msgid "at_psp" -msgstr "SP landscapes" +msgstr "SMP landscapes" #: group.399 msgid "at_psp_zm" @@ -3061,19 +3568,19 @@ msgstr "Multifunctional zones" #: group.400 msgid "at_psl" -msgstr "SP housing" +msgstr "SMP housing" #: lu_int_wms.401 msgid "at_psl1" -msgstr "Zones for major housing projects" +msgstr "Priority zones for housing " #: lu_int_wms.402 msgid "at_pszae2" -msgstr "New economic activity zones and extensions" +msgstr "Planned business and industrial parks" #: lu_int_wms.403 msgid "at_pszae3" -msgstr "Existing economic activity zones to be reclassified" +msgstr "Existing business and industrial parks to be reclassified" #: lu_int_wms.404 msgid "at_pszae4" @@ -3089,11 +3596,11 @@ msgstr "Ecological network" #: lu_int_wms.407 msgid "at_pszae1" -msgstr "Existing economic activity zones" +msgstr "Existing business and industrial parks" #: lu_int_wms.408 msgid "at_pst2" -msgstr "Reserved corridors" +msgstr "Superimposed corridors and zones" #: lu_int_wms.409 msgid "at_psp_zvi" @@ -3107,18 +3614,6 @@ msgstr "SPT projects" msgid "ng" msgstr "Height reference points" -#: l_wmts.412 -msgid "wg_hangneigung_map" -msgstr "Slope" - -#: l_wmts.413 -msgid "wg_relief_map" -msgstr "Relief" - -#: l_wmts.414 -msgid "wg_exposition_map" -msgstr "Exposition" - #: l_wmts.415 msgid "wg_hohenlinien_10m_map" msgstr "Contour 10 m" @@ -3257,19 +3752,19 @@ msgstr "Cadastral parcels (numbers)" #: group.450 msgid "eau_new_Gewaessernetz" -msgstr "Hydrography" +msgstr "Stream Network" #: group.451 msgid "eau_new_Fischerei" -msgstr "Fishing service" +msgstr "Fishery service" -#: group.452 -msgid "eau_new_Projekt_Hochwasserrisikokarten_2013" -msgstr "Flood risk maps" +#: lu_int_wms.1387 +msgid "logt_bauluecken_2016_restricted" +msgstr "Baulücken 2016" #: group.453 msgid "eau_new_Messstationen" -msgstr "Gauging stations" +msgstr "Monitoring stations" #: lu_int_wms.454 msgid "parcels_eau" @@ -3283,9 +3778,9 @@ msgstr "Parcelles OLOS" msgid "topo_decoupage_5000_ed2015" msgstr "Mapsheets topographic plan 1:5000 edition 2015" -#: group.458 -msgid "eau_new_Risikobeurteilung_2021" -msgstr "Risk assessment 2021" +#: group.1389 +msgid "secours_act" +msgstr "ACT" #: group.459 msgid "eau_new_Oberflaechengewaesser_2021" @@ -3299,9 +3794,9 @@ msgstr "Precipitation measurement" msgid "eau_new_Historische_Ueberschwemmungsgebiete" msgstr "Historic floodplains" -#: group.462 -msgid "eau_new_Projekt_Hochwassergefahrenkarten_2013" -msgstr "Flood hazard maps" +#: group.1391 +msgid "secours_age" +msgstr "AGE" #: group.463 msgid "eau_new_Zusaetzliche_Informationen" @@ -3341,7 +3836,7 @@ msgstr "Groundwater 2015" #: group.472 msgid "eau_new_Oberflaechengewaesser_Messstationen" -msgstr "Surface water stations" +msgstr "Surface water monitoring stations" #: group.473 msgid "eau_new_Grundwasser_Messstationen" @@ -3387,17 +3882,17 @@ msgstr "Nitrates directive" msgid "eau_new_Grundwasser" msgstr "Groundwater" -#: group.484 -msgid "eau_new_Gewaesser" -msgstr "Watercourses" +#: lu_int_wms.1396 +msgid "siden_eaux_usees_dom_ind_sep" +msgstr "Eaux usées domestiques, industriels et séparatifs" #: group.485 msgid "eau_new_Hydrologische_Messstationen" msgstr "Hydrological stations" -#: group.486 -msgid "eau_new_Ueberschwemmungsgebiete_(UESG)" -msgstr "Floodplains" +#: lu_int_wms.1398 +msgid "siden_couvercles_regard" +msgstr "Couvercles de regard" #: group.487 msgid "eau_new_Stehende_Gewaesser_(usage_interne)" @@ -3411,9 +3906,9 @@ msgstr "Historic maps" msgid "tourisme_poi" msgstr "Points of interest by ONT" -#: lu_int_wms.490 -msgid "eau_new_Sanitaere_Schutzzonen_Stausee" -msgstr "Sanitary protection zones reservoir" +#: lu_int_wms.1400 +msgid "siden_eaux_usees_mixtes" +msgstr "Eaux usées mixtes" #: lu_int_wms.491 msgid "eau_new_Intensitaet_-_HQ_extrem_(usage_interne)" @@ -3423,6 +3918,14 @@ msgstr "Extreme flood intensity" msgid "eau_new_Gefaehrdete_Gebiete_(Nitratrichtlinie)" msgstr "Vulnerable zones [Nitrates directive]" +#: lu_int_wms.153 +msgid "communes_cadastrales" +msgstr "Cadastral municipalities" + +#: group.1404 +msgid "sebes_zones_protection" +msgstr "Zones de protection" + #: lu_int_wms.493 msgid "eau_new_Oberflaechenwasserabhaengige_Oekosysteme" msgstr "Ecosystems dep. on SW" @@ -3517,7 +4020,7 @@ msgstr "Banks" #: lu_int_wms.517 msgid "logt_bauluecken" -msgstr "Baulücken" +msgstr "Baulücken (alle Gemeinden)" #: group.518 msgid "logt" @@ -3555,10 +4058,6 @@ msgstr "FLIK Parcels 2016" msgid "parcels_labels_go" msgstr "Cadastral parcels (numbers)" -#: l_wmts.527 -msgid "asta_flik_parcels_2016" -msgstr "FLIK Parcels 2016" - #: group.528 msgid "bglayers" msgstr "Background layers" @@ -3723,9 +4222,9 @@ msgstr "Hazard classification" msgid "eau_new_Stausee_Sauer" msgstr "Upper Sure Lake" -#: lu_int_wms.570 -msgid "eau_new_Grundwasser_(Nitratrichtlinie)" -msgstr "Groundwater [Nitrates directive]" +#: l_wmts.527 +msgid "asta_flik_parcels" +msgstr "FLIK parcels 2018" #: lu_int_wms.571 msgid "eau_new_Kuenstliche_(Bassin)_(usage_interne)" @@ -3773,7 +4272,7 @@ msgstr "Bathing Water Quality" #: lu_int_wms.582 msgid "eau_new_Messstationen_Grundwasser_-_Nitratrichtlinie" -msgstr "Groundwater monitoring - Nitrates Directive" +msgstr "Nitrates concentrations groundwater " #: lu_int_wms.583 msgid "eau_new_Physiko-Chemie_2015" @@ -3791,17 +4290,13 @@ msgstr "Global status 2009" msgid "eau_new_Chemischer_Zustand_2009" msgstr "Chemical status 2009" -#: lu_int_wms.587 -msgid "eau_new_Primaere_Gewaesser" -msgstr "Main watercourses" - #: lu_int_wms.588 msgid "eau_new_Typologie_Gewaesser_2015" msgstr "Types of watercourses 2015" #: lu_int_wms.589 msgid "eau_new_Messstationen_Oberflaechengewaesser_-_Nitratrichtlinie" -msgstr "Surface water monitoring - Nitrates Directive" +msgstr "Nitrates concentrations surface water" #: lu_int_wms.590 msgid "eau_new_Hydromorphologischer_Zustand_2015" @@ -3839,10 +4334,6 @@ msgstr "Floodplain 10 year flood" msgid "eau_new_Trinkwasserbehaelter" msgstr "Drinking water tanks" -#: lu_int_wms.599 -msgid "eau_new_Kilometrierung_sekundaere_Gewaesser" -msgstr "Measurement affluent watercourses" - #: lu_int_wms.709 msgid "pag_ssmn" msgstr "national protected sites and monuments" @@ -3921,16 +4412,12 @@ msgstr "100 year flood depth" #: lu_int_wms.619 msgid "eau_new_Betrachtungsraeume_2015" -msgstr "Catchment areas 2015" +msgstr "Study zones 2015" #: lu_int_wms.620 msgid "eau_new_Bodentemperatur" msgstr "Soil temperature" -#: lu_int_wms.621 -msgid "eau_new_Chemischer_Zustand_2015" -msgstr "Chemical status 2015" - #: lu_int_wms.622 msgid "eau_new_Oekologischer_Zustand_2015" msgstr "Ecological status 2015" @@ -3939,14 +4426,6 @@ msgstr "Ecological status 2015" msgid "eau_new_Temporaer_fliessende_Baeche" msgstr "Temporary watercourses" -#: lu_int_wms.624 -msgid "eau_new_Kilometrierung_primaere_Gewaesser" -msgstr "Measurement main watercourses" - -#: lu_int_wms.625 -msgid "eau_new_Sekundaere_Gewaesser" -msgstr "Affluent watercourses" - #: lu_int_wms.626 msgid "eau_new_Fischereiabschnitte" msgstr "Fishing sections" @@ -3979,10 +4458,6 @@ msgstr "Chemical status of the WB 2015" msgid "eau_new_UESG_Sauer_1995" msgstr "Floodplain Sauer 1995" -#: lu_int_wms.634 -msgid "eau_new_Erheblich_veraenderte_OWK_2009" -msgstr "Heavily modified SWB 2009" - #: lu_int_wms.635 msgid "eau_new_Natuerliche_(Bassin)_(usage_interne)" msgstr "Natural basin" @@ -4059,10 +4534,6 @@ msgstr "Heat pumps" msgid "eau_new_Alluvialer_Grundwasserspiegel" msgstr "Alluvial groundwater level" -#: lu_int_wms.654 -msgid "eau_new_Nitratrichtlinie_Messstationen" -msgstr "Nitrates Directive" - #: lu_int_wms.655 msgid "eau_new_Wasserstand" msgstr "Water level" @@ -4075,24 +4546,10 @@ msgstr "Bathing Waters" msgid "eau_new_Zustand_der_WK_2009" msgstr "Status of the WB 2009" -#: lu_int_wms.658 -msgid "eau_new_Erheblich_veraenderte_WK_2015" -msgstr "Heavily modified WB 2015" - #: lu_int_wms.659 msgid "eau_new_Grundwasserkoerper_2015" msgstr "Ground water bodies 2015" -#: lu_int_wms.660 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_chemischen_Zustandes" -msgstr "Risk assessment of the WB to reach good chemical status " - -#: lu_int_wms.661 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_mengenmaessigen_Zustandes" -msgstr "Risk assessment of the WB to reach good quantitative status " - #: lu_int_wms.662 msgid "eau_new_Makrophyten_2015" msgstr "Macrophytes and phytobenthos 2015" @@ -4163,11 +4620,11 @@ msgstr "Regional biological stations" #: lu_int_wms.679 msgid "logt_bauluecken_restricted" -msgstr "Baulücken (restricted)" +msgstr "Baulücken 2013 (no feedback needed)" #: lu_int_wms.680 msgid "aev_decharges" -msgstr "Décharges" +msgstr "Landfills (Internal)" #: lu_ext_wms.681 msgid "tour_moto" @@ -4251,7 +4708,7 @@ msgstr "Fond de plan (staging)" #: lu_ext_wms.701 msgid "logt_baul_feedback" -msgstr "Baulücken-Feedback" +msgstr "Baulücken-Feedback 2016" #: lu_int_wms.702 msgid "asta_pedologie_new" @@ -4301,10 +4758,6 @@ msgstr "Localisation of traffic radars" msgid "pag_pap_approuves_staging" msgstr "PAP approuvés (staging)" -#: lu_int_wms.715 -msgid "parcels_daily" -msgstr "Cadastral parcels" - #: group.716 msgid "pag_at" msgstr "Land planning" @@ -4329,9 +4782,9 @@ msgstr "Wasserwirtschaft" msgid "cantons_labels" msgstr "Cantons (names)" -#: lu_int_wms.153 -msgid "communes_cadastrales" -msgstr "Cadastral municipalities" +#: lu_int_wms.715 +msgid "parcels_daily_old" +msgstr "" #: lu_int_wms.302 msgid "communes" @@ -4355,7 +4808,7 @@ msgstr "Climate map" #: lu_int_wms.510 msgid "ivv_parcels" -msgstr "Vineyards 2016" +msgstr "Vineyards 2017" #: l_wmts.420 msgid "eau_new_HQ100_mittlere_Wahrscheinlichkeit" @@ -4387,7 +4840,7 @@ msgstr "New ZAE and extensions - Test" #: lu_ext_wms.725 msgid "tour_tdl" -msgstr "Skoda Tour de Luxembourg 2016" +msgstr "Skoda Tour de Luxembourg 2018" #: group.727 msgid "contrats biodiversité MDDI" @@ -4429,10 +4882,6 @@ msgstr "UTM Grid" msgid "Catastrophe naturelle 22/07/16 (informations protégées)" msgstr "Catastrophe naturelle 22/07/16 (informations protégées)" -#: group.737 -msgid "Groupe canin" -msgstr "Groupe canin" - #: lu_ext_wms.736 msgid "police_group_canin" msgstr "police_group_canin" @@ -4447,11 +4896,11 @@ msgstr "Herbages sensibles" #: lu_ext_wms.741 msgid "Données saisies par l'armée luxembourgeoise" -msgstr "" +msgstr "Données saisies par l'armée luxembourgeoise" #: group.742 msgid "Armée luxembourgeoise" -msgstr "" +msgstr "Armée luxembourgeoise" #: lu_int_wms.743 msgid "aero_1987_30k" @@ -4476,3 +4925,2163 @@ msgstr "Nature Parks" #: lu_int_wms.748 msgid "aero_1994_30k" msgstr "Aerial images from 1994 (1:30k)" + +#: lu_int_wms.316 +msgid "env_sentiersnature" +msgstr "Nature trails" + +#: group.458 +msgid "eau_new_Risikobeurteilung" +msgstr "Risk assessment" + +#: group.462 +msgid "eau_new_Hochwassergefahrenkarten_2013" +msgstr "Flood hazard maps 2013" + +#: group.452 +msgid "eau_new_Hochwasserrisikokarten_2013" +msgstr "Flood risk maps 2013" + +#: lu_int_wms.752 +msgid "eau_new_Bauwerke im Abwasserbereich" +msgstr "Wastewater structures" + +#: lu_int_wms.753 +msgid "eau_new_Abwassernetze" +msgstr "Wastewater network" + +#: lu_int_wms.755 +msgid "eau_new_Gewässer mit einem signifikanten Hochwasserrisiko" +msgstr "Watercourses with significant flood risks" + +#: lu_int_wms.754 +msgid "eau_new_Abwassergebiet" +msgstr "Agglomerations in wastewater" + +#: lu_int_wms.756 +msgid "eau_new_Hochwasser Brennpunkte" +msgstr "Flood foci" + +#: lu_int_wms.757 +msgid "eau_new_Hochwasserschutzmassnahmen" +msgstr "Flood protection measures" + +#: lu_int_wms.758 +msgid "eau_new_Maßnahmens des Hochwasserrisikomanagementplans" +msgstr "Programme of measures FRMP 2015" + +#: lu_int_wms.759 +msgid "eau_new_Strukturgütekartierung 2015 [7-stufige Bewertung]" +msgstr "Structural quality mapping 2015 [7-stage evaluation]" + +#: lu_int_wms.760 +msgid "eau_new_Strukturgütekartierung 2015 [5-stufige Bewertung]" +msgstr "Structural quality mapping 2015 [5-stage evaluation]" + +#: lu_int_wms.761 +msgid "eau_new_Struktukartierung 2015 in 5 Band [7-stufige Bewertung]" +msgstr "Structural quality mapping 2015 in 5 stripes [7-stage evaluation]" + +#: lu_int_wms.763 +msgid "eau_new_Struktukartierung 2015 in 5 Band [5-stufige Bewertung]" +msgstr "Structural quality mapping 2015 in 5 stripes [5-stage evaluation]" + +#: lu_int_wms.764 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2008/105/EG]" +msgstr "Chemical status without ubiquitous substances 2015 [Directive 2008/105/EC]" + +#: lu_int_wms.765 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2013/39/EU]" +msgstr "Chemical status 2015 [Directive 2013/39/EU]" + +#: lu_int_wms.766 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2013/39/EU]" +msgstr "Chemical status without ubiquitous substances 2015 [Directive 2013/39/EU]" + +#: lu_int_wms.767 +msgid "eau_new_Hydromorphologische Gesamtbewertung 2015" +msgstr "Hydromorphology 2015" + +#: lu_int_wms.749 +msgid "eau_new_Gewässer" +msgstr "Watercourses" + +#: lu_int_wms.750 +msgid "eau_new_Kilometrierung der Gewässer" +msgstr "Watercourses kilometrage" + +#: lu_int_wms.751 +msgid "eau_new_ZPS provisorische Gutachten" +msgstr "ZPS provisional report" + +#: lu_int_wms.768 +msgid "eau_new_Überwachungsprogramme - Resultate" +msgstr "Monitoringprogramms - Results" + +#: lu_int_wms.769 +msgid "eau_new_Morphologie 2015" +msgstr "Morphology 2015" + +#: lu_int_wms.770 +msgid "eau_new_Durchgängigkeit 2015" +msgstr "Continuity 2015" + +#: lu_int_wms.771 +msgid "eau_new_Phytoplankton 2015" +msgstr "Phytoplankton 2015" + +#: group.772 lu_int_wms.775 +msgid "eau_new_Grundwasser 2027" +msgstr "Groundwater 2027" + +#: lu_int_wms.773 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2021" +msgstr "Risk assessment of the WB to reach good status 2021" + +#: lu_int_wms.774 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2027" +msgstr "Risk assessment of the WB to reach good status 2027" + +#: lu_int_wms.776 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2027" +msgstr "Risk assessment of the WB to reach good quantitative status 2027" + +#: lu_int_wms.777 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2027" +msgstr "Risk assessment of the WB to reach good chemical status 2027" + +#: lu_int_wms.654 +msgid "eau_new_Oberflächengewässer Nitratrichtlinie 91/676/CEE" +msgstr "Surface water Nitrates Directive 91/676/CEE" + +#: lu_int_wms.570 +msgid "eau_new_Grundwasser Nitratrichtlinie 91/676/CEE" +msgstr "Groundwater Nitrates Directive 91/676/CEE" + +#: group.484 +msgid "eau_new_Hydrografie" +msgstr "Surface waters" + +#: lu_int_wms.490 +msgid "eau_new_Sanitäre Schutzzonen Stausee Esch/Sauer" +msgstr "Sanitary protection zones Esch-sur-Sûre dam" + +#: group.486 +msgid "eau_new_Hochwasserrisikomanagement-Richtlinie [HWRM-RL]" +msgstr "Floods directive [FD]" + +#: lu_int_wms.634 +msgid "eau_new_Erheblich veränderte Wasserkörper 2009" +msgstr "Heavily modified waterbodies 2009" + +#: lu_int_wms.658 +msgid "eau_new_Erheblich veränderte Wasserkörper 2015" +msgstr "Heavily modified waterbodies 2015" + +#: lu_int_wms.621 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2008/105/EG]" +msgstr "Chemical status 2015 [Directive 2008/105/EC]" + +#: lu_int_wms.661 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2021" +msgstr "Risk assessment of the WB to reach good quantitative status 2021" + +#: lu_int_wms.660 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2021" +msgstr "Risk assessment of the WB to reach good chemical status 2021" + +#: lu_int_wms.785 +msgid "eau_new_WRRL und HWRM-RL Massnahmen" +msgstr "Detailed programme of measures HY" + +#: group.784 +msgid "eau_new_Usage interne" +msgstr "Usage interne" + +#: lu_int_wms.779 +msgid "eau_new_Regionalisierte MNQ-Werte" +msgstr "Regionalization of mean low water values" + +#: lu_int_wms.781 +msgid "eau_new_Regionalisierte MQ-Werte" +msgstr "Regionalization of mean water values" + +#: lu_int_wms.782 +msgid "eau_new_Regionalisierte HQ-Werte" +msgstr "Regionalization of high water values" + +#: lu_int_wms.786 +msgid "Orthophoto_Infrarouge_2016" +msgstr "Infrared Orthophoto 2016" + +#: lu_int_wms.787 +msgid "Orthophoto_Infrarouge_2013" +msgstr "Infrared Orthophoto 2013" + +#: lu_int_wms.788 +msgid "Orthophoto_Infrarouge_2010" +msgstr "Infrared Orthophoto 2010" + +#: lu_int_wms.789 +msgid "Orthophoto_Infrarouge" +msgstr "Orthophoto infrared" + +#: group.790 +msgid "Orthophotos Infrarouge" +msgstr "Orthophoto infrared" + +#: l_wmts.791 +msgid "ortho_2010_irc" +msgstr "Orthophoto 2010 infrared" + +#: l_wmts.792 +msgid "ortho_2013_irc" +msgstr "Orthophoto 2013 infrared" + +#: l_wmts.793 +msgid "ortho_2016_irc" +msgstr "Orthophoto 2016 infrared" + +#: lu_ext_wms.794 +msgid "Scouts_Hikes" +msgstr "Scouts Hikes" + +#: group.795 +msgid "Scouts" +msgstr "Scouts" + +#: lu_ext_wms.796 +msgid "Schleck Gran Fondo" +msgstr "Schleck Gran Fondo" + +#: lu_int_wms.797 +msgid "eau_new_trockenheit_gelb" +msgstr "Prevention phase (Phase yellow) " + +#: lu_int_wms.798 +msgid "seveso" +msgstr "SEVESO Sites" + +#: l_wmts.799 +msgid "basemap_2015_global_old" +msgstr "Road map 2D" + +#: theme.800 +msgid "cadastre_hertzien" +msgstr "Cellular phone cadastre" + +#: lu_int_wms.802 +msgid "mat_points_mesure" +msgstr "Measuring points" + +#: group.803 +msgid "cadastre_hertzien_group" +msgstr "Cellular phone cadastre" + +#: lu_int_wms.804 +msgid "anf_zpin_declarees" +msgstr "Designated protected areas" + +#: lu_int_wms.805 +msgid "anf_zpin_a_declarer" +msgstr "Protected areas in view of designation" + +#: lu_int_wms.806 +msgid "anf_zpin_en_procedure" +msgstr "Protected areas undergoing the official designation procedure" + +#: group.807 +msgid "zpin_group" +msgstr "Protected areas" + +#: lu_int_wms.808 +msgid "velo_by_pch" +msgstr "National cycling paths" + +#: lu_ext_wms.809 +msgid "lvi_circuits_cyclables" +msgstr "Cycling tours" + +#: lu_int_wms.810 +msgid "TOPO_CARTEHISTO_1950" +msgstr "Topographical Map 1:150k 1950" + +#: lu_int_wms.801 +msgid "mat_antennes_plus_50_watt" +msgstr "Base stations for public mobile communication networks ≥ 50 Watt" + +#: lu_int_wms.811 +msgid "mat_antennes_moins_50_watt" +msgstr "Base stations for public mobile communication networks < 50 Watt" + +#: lu_int_wms.813 +msgid "cdt_lignes_all" +msgstr "Public Transport Network" + +#: lu_ext_wms.814 +msgid "cdt_lignes_avl" +msgstr "Bus lines AVL" + +#: lu_ext_wms.815 +msgid "cdt_lignes_rgtr" +msgstr "Bus lines RGTR" + +#: lu_ext_wms.816 +msgid "cdt_lignes_tice" +msgstr "Bus lines TICE" + +#: lu_ext_wms.817 +msgid "cdt_lignes_cfl" +msgstr "Train Lines CFL" + +#: group.812 +msgid "cdt_lignes_bus_par_operateur" +msgstr "Public transport network by operator" + +#: theme.818 +msgid "API_ONLY" +msgstr "" + +#: lu_int_wms.819 lu_int_wms.1381 +msgid "chargy" +msgstr "Chargy stations" + +#: group.820 +msgid "API_ONLY_LAYERS" +msgstr "" + +#: lu_int_wms.821 lu_int_wms.823 +msgid "feuilles_cadastrales_urplang" +msgstr " Historical cadastral sheets" + +#: lu_int_wms.830 +msgid "lux_norm1971_2000_00_pluvio_sum" +msgstr "1971-2000 - Reference period 1971-2000, Precipitation, yearly sum [mm] " + +#: lu_int_wms.833 +msgid "lux_norm1971_2000_01_pluvio_sum" +msgstr "Jan. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.836 +msgid "lux_norm1971_2000_02_pluvio_sum" +msgstr "Feb. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.839 +msgid "lux_norm1971_2000_03_pluvio_sum" +msgstr "Mar. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.842 +msgid "lux_norm1971_2000_04_pluvio_sum" +msgstr "Apr. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.845 +msgid "lux_norm1971_2000_05_pluvio_sum" +msgstr "May 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.848 +msgid "lux_norm1971_2000_06_pluvio_sum" +msgstr "Jun. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.851 +msgid "lux_norm1971_2000_07_pluvio_sum" +msgstr "Jul. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.854 +msgid "lux_norm1971_2000_08_pluvio_sum" +msgstr "Aug. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.857 +msgid "lux_norm1971_2000_09_pluvio_sum" +msgstr "Sep. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.860 +msgid "lux_norm1971_2000_10_pluvio_sum" +msgstr "Oct. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.863 +msgid "lux_norm1971_2000_11_pluvio_sum" +msgstr "Nov. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.866 +msgid "lux_norm1971_2000_12_pluvio_sum" +msgstr "Dec. 1971-2000 - Reference period 1971-2000, Precipitation, monthly sum [mm] " + +#: lu_int_wms.872 +msgid "lux_2012_00_temp_minimum" +msgstr "2012 - Temperature yearly minimum [ºC] " + +#: lu_int_wms.875 +msgid "lux_2012_01_temp_minimum" +msgstr "Jan. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.878 +msgid "lux_2012_02_temp_minimum" +msgstr "Feb. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.881 +msgid "lux_2012_03_temp_minimum" +msgstr "Mar. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.884 +msgid "lux_2012_04_temp_minimum" +msgstr "Apr. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.887 +msgid "lux_2012_05_temp_minimum" +msgstr "May 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.890 +msgid "lux_2012_06_temp_minimum" +msgstr "Jun. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.893 +msgid "lux_2012_07_temp_minimum" +msgstr "Jul. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.896 +msgid "lux_2012_08_temp_minimum" +msgstr "Aug. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.899 +msgid "lux_2012_09_temp_minimum" +msgstr "Sep. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.902 +msgid "lux_2012_10_temp_minimum" +msgstr "Oct. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.905 +msgid "lux_2012_11_temp_minimum" +msgstr "Nov. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.908 +msgid "lux_2012_12_temp_minimum" +msgstr "Dec. 2012 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.912 +msgid "lux_2012_00_temp_average" +msgstr "2012 - Temperature yearly average [ºC] " + +#: lu_int_wms.915 +msgid "lux_2012_01_temp_average" +msgstr "Jan. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.918 +msgid "lux_2012_02_temp_average" +msgstr "Feb. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.921 +msgid "lux_2012_03_temp_average" +msgstr "Mar. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.924 +msgid "lux_2012_04_temp_average" +msgstr "Apr. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.927 +msgid "lux_2012_05_temp_average" +msgstr "May 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.930 +msgid "lux_2012_06_temp_average" +msgstr "Jun. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.933 +msgid "lux_2012_07_temp_average" +msgstr "Jul. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.936 +msgid "lux_2012_08_temp_average" +msgstr "Aug. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.939 +msgid "lux_2012_09_temp_average" +msgstr "Sep. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.942 +msgid "lux_2012_10_temp_average" +msgstr "Oct. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.945 +msgid "lux_2012_11_temp_average" +msgstr "Nov. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.948 +msgid "lux_2012_12_temp_average" +msgstr "Dec. 2012 - Temperature monthly average [ºC] " + +#: lu_int_wms.952 +msgid "lux_2012_00_temp_maximum" +msgstr "2012 - Average annual maximum temperatures [ºC] " + +#: lu_int_wms.955 +msgid "lux_2012_01_temp_maximum" +msgstr "Jan. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.958 +msgid "lux_2012_02_temp_maximum" +msgstr "Feb. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.961 +msgid "lux_2012_03_temp_maximum" +msgstr "Mar. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.964 +msgid "lux_2012_04_temp_maximum" +msgstr "Apr. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.967 +msgid "lux_2012_05_temp_maximum" +msgstr "May 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.970 +msgid "lux_2012_06_temp_maximum" +msgstr "Jun. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.973 +msgid "lux_2012_07_temp_maximum" +msgstr "Jul. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.976 +msgid "lux_2012_08_temp_maximum" +msgstr "Aug. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.979 +msgid "lux_2012_09_temp_maximum" +msgstr "Sep. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.982 +msgid "lux_2012_10_temp_maximum" +msgstr "Oct. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.985 +msgid "lux_2012_11_temp_maximum" +msgstr "Nov. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.988 +msgid "lux_2012_12_temp_maximum" +msgstr "Dec. 2012 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.993 +msgid "lux_2012_00_pluvio_sum" +msgstr "2012 - Precipitation, yearly sum [mm] " + +#: lu_int_wms.996 +msgid "lux_2012_01_pluvio_sum" +msgstr "Jan. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.999 +msgid "lux_2012_02_pluvio_sum" +msgstr "Feb. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1002 +msgid "lux_2012_03_pluvio_sum" +msgstr "Mar. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1005 +msgid "lux_2012_04_pluvio_sum" +msgstr "Apr. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1008 +msgid "lux_2012_05_pluvio_sum" +msgstr "May 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1011 +msgid "lux_2012_06_pluvio_sum" +msgstr "Jun. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1014 +msgid "lux_2012_07_pluvio_sum" +msgstr "Jul. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1017 +msgid "lux_2012_08_pluvio_sum" +msgstr "Aug. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1020 +msgid "lux_2012_09_pluvio_sum" +msgstr "Sep. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1023 +msgid "lux_2012_10_pluvio_sum" +msgstr "Oct. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1026 +msgid "lux_2012_11_pluvio_sum" +msgstr "Nov. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1029 +msgid "lux_2012_12_pluvio_sum" +msgstr "Dec. 2012 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1036 +msgid "lux_2012_01_pluvio_diff_mm" +msgstr "Jan. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1039 +msgid "lux_2012_02_pluvio_diff_mm" +msgstr "Feb. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1042 +msgid "lux_2012_03_pluvio_diff_mm" +msgstr "Mar. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1045 +msgid "lux_2012_04_pluvio_diff_mm" +msgstr "Apr. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1048 +msgid "lux_2012_05_pluvio_diff_mm" +msgstr "May 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1051 +msgid "lux_2012_06_pluvio_diff_mm" +msgstr "Jun. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1054 +msgid "lux_2012_07_pluvio_diff_mm" +msgstr "Jul. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1057 +msgid "lux_2012_08_pluvio_diff_mm" +msgstr "Aug. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1060 +msgid "lux_2012_09_pluvio_diff_mm" +msgstr "Sep. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1063 +msgid "lux_2012_10_pluvio_diff_mm" +msgstr "Oct. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1066 +msgid "lux_2012_11_pluvio_diff_mm" +msgstr "Nov. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1069 +msgid "lux_2012_12_pluvio_diff_mm" +msgstr "Dec. 2012 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1076 +msgid "lux_2012_01_pluvio_diff_perc" +msgstr "Jan. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1079 +msgid "lux_2012_02_pluvio_diff_perc" +msgstr "Feb. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1082 +msgid "lux_2012_03_pluvio_diff_perc" +msgstr "Mar. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1085 +msgid "lux_2012_04_pluvio_diff_perc" +msgstr "Apr. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1088 +msgid "lux_2012_05_pluvio_diff_perc" +msgstr "May 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1091 +msgid "lux_2012_06_pluvio_diff_perc" +msgstr "Jun. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1094 +msgid "lux_2012_07_pluvio_diff_perc" +msgstr "Jul. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1097 +msgid "lux_2012_08_pluvio_diff_perc" +msgstr "Aug. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1100 +msgid "lux_2012_09_pluvio_diff_perc" +msgstr "Sep. 2012 - Precipitation, monthly difference to reference [%] " + +#: theme.824 +msgid "ahc" +msgstr "Hydro-climatological atlas" + +#: lu_int_wms.1103 +msgid "lux_2012_10_pluvio_diff_perc" +msgstr "Oct. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1106 +msgid "lux_2012_11_pluvio_diff_perc" +msgstr "Nov. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1109 +msgid "lux_2012_12_pluvio_diff_perc" +msgstr "Dec. 2012 - Precipitation, monthly difference to reference [%] " + +#: lu_int_wms.1115 +msgid "lux_2013_00_temp_minimum" +msgstr "2013 - Average annual minimum temperatures [ºC] " + +#: lu_int_wms.1118 +msgid "lux_2013_01_temp_minimum" +msgstr "Jan. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1121 +msgid "lux_2013_02_temp_minimum" +msgstr "Feb. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1124 +msgid "lux_2013_03_temp_minimum" +msgstr "Mar. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1127 +msgid "lux_2013_04_temp_minimum" +msgstr "Apr. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1130 +msgid "lux_2013_05_temp_minimum" +msgstr "May 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1133 +msgid "lux_2013_06_temp_minimum" +msgstr "Jun. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1136 +msgid "lux_2013_07_temp_minimum" +msgstr "Jul. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1139 +msgid "lux_2013_08_temp_minimum" +msgstr "Aug. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1142 +msgid "lux_2013_09_temp_minimum" +msgstr "Sep. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1145 +msgid "lux_2013_10_temp_minimum" +msgstr "Oct. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1148 +msgid "lux_2013_11_temp_minimum" +msgstr "Nov. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1151 +msgid "lux_2013_12_temp_minimum" +msgstr "Dec. 2013 - Average monthly minimum temperatures [ºC] " + +#: lu_int_wms.1155 +msgid "lux_2013_00_temp_average" +msgstr "2013 - Temperature yearly average [ºC] " + +#: lu_int_wms.1158 +msgid "lux_2013_01_temp_average" +msgstr "Jan. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1161 +msgid "lux_2013_02_temp_average" +msgstr "Feb. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1164 +msgid "lux_2013_03_temp_average" +msgstr "Mar. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1167 +msgid "lux_2013_04_temp_average" +msgstr "Apr. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1170 +msgid "lux_2013_05_temp_average" +msgstr "May 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1173 +msgid "lux_2013_06_temp_average" +msgstr "Jun. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1176 +msgid "lux_2013_07_temp_average" +msgstr "Jul. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1179 +msgid "lux_2013_08_temp_average" +msgstr "Aug. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1182 +msgid "lux_2013_09_temp_average" +msgstr "Sep. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1185 +msgid "lux_2013_10_temp_average" +msgstr "Oct. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1188 +msgid "lux_2013_11_temp_average" +msgstr "Nov. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1191 +msgid "lux_2013_12_temp_average" +msgstr "Dec. 2013 - Temperature monthly average [ºC] " + +#: lu_int_wms.1195 +msgid "lux_2013_00_temp_maximum" +msgstr "2013 - Average annual maximum temperatures [ºC] " + +#: lu_int_wms.1198 +msgid "lux_2013_01_temp_maximum" +msgstr "Jan. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1201 +msgid "lux_2013_02_temp_maximum" +msgstr "Feb. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1204 +msgid "lux_2013_03_temp_maximum" +msgstr "Mar. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1207 +msgid "lux_2013_04_temp_maximum" +msgstr "Apr. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1210 +msgid "lux_2013_05_temp_maximum" +msgstr "May 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1213 +msgid "lux_2013_06_temp_maximum" +msgstr "Jun. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1216 +msgid "lux_2013_07_temp_maximum" +msgstr "Jul. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1219 +msgid "lux_2013_08_temp_maximum" +msgstr "Aug. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1222 +msgid "lux_2013_09_temp_maximum" +msgstr "Sep. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1225 +msgid "lux_2013_10_temp_maximum" +msgstr "Oct. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1228 +msgid "lux_2013_11_temp_maximum" +msgstr "Nov. 2013 - Average monthly maximum temperatures [ºC] " + +#: lu_int_wms.1231 +msgid "lux_2013_12_temp_maximum" +msgstr "Dec. 2013 - Average annual maximum temperatures [ºC] " + +#: lu_int_wms.1236 +msgid "lux_2013_00_pluvio_sum" +msgstr "2013 - Precipitation, yearly sum [mm] " + +#: lu_int_wms.1239 +msgid "lux_2013_01_pluvio_sum" +msgstr "Jan. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1242 +msgid "lux_2013_02_pluvio_sum" +msgstr "Feb. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1245 +msgid "lux_2013_03_pluvio_sum" +msgstr "Mar. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1248 +msgid "lux_2013_04_pluvio_sum" +msgstr "Apr. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1251 +msgid "lux_2013_05_pluvio_sum" +msgstr "May 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1254 +msgid "lux_2013_06_pluvio_sum" +msgstr "Jun. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1257 +msgid "lux_2013_07_pluvio_sum" +msgstr "Jul. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1260 +msgid "lux_2013_08_pluvio_sum" +msgstr "Aug. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1263 +msgid "lux_2013_09_pluvio_sum" +msgstr "Sep. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1266 +msgid "lux_2013_10_pluvio_sum" +msgstr "Oct. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1269 +msgid "lux_2013_11_pluvio_sum" +msgstr "Nov. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1272 +msgid "lux_2013_12_pluvio_sum" +msgstr "Dec. 2013 - Precipitation, monthly sum [mm] " + +#: lu_int_wms.1279 +msgid "lux_2013_01_pluvio_diff_mm" +msgstr "Jan. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1282 +msgid "lux_2013_02_pluvio_diff_mm" +msgstr "Feb. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1285 +msgid "lux_2013_03_pluvio_diff_mm" +msgstr "Mar. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1288 +msgid "lux_2013_04_pluvio_diff_mm" +msgstr "Apr. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1291 +msgid "lux_2013_05_pluvio_diff_mm" +msgstr "May 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1294 +msgid "lux_2013_06_pluvio_diff_mm" +msgstr "Jun. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1297 +msgid "lux_2013_07_pluvio_diff_mm" +msgstr "Jul. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1300 +msgid "lux_2013_08_pluvio_diff_mm" +msgstr "Aug. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1303 +msgid "lux_2013_09_pluvio_diff_mm" +msgstr "Sep. 2013 - Precipitation, monthly difference to reference period in percent [mm] " + +#: lu_int_wms.1306 +msgid "lux_2013_10_pluvio_diff_mm" +msgstr "Oct. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1309 +msgid "lux_2013_11_pluvio_diff_mm" +msgstr "Nov. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1312 +msgid "lux_2013_12_pluvio_diff_mm" +msgstr "Dec. 2013 - Precipitation, monthly difference to reference period [mm] " + +#: lu_int_wms.1319 +msgid "lux_2013_01_pluvio_diff_perc" +msgstr "Jan. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1322 +msgid "lux_2013_02_pluvio_diff_perc" +msgstr "Feb. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1325 +msgid "lux_2013_03_pluvio_diff_perc" +msgstr "Mar. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1328 +msgid "lux_2013_04_pluvio_diff_perc" +msgstr "Apr. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1331 +msgid "lux_2013_05_pluvio_diff_perc" +msgstr "May 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1334 +msgid "lux_2013_06_pluvio_diff_perc" +msgstr "Jun. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1337 +msgid "lux_2013_07_pluvio_diff_perc" +msgstr "Jul. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1340 +msgid "lux_2013_08_pluvio_diff_perc" +msgstr "Aug. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1343 +msgid "lux_2013_09_pluvio_diff_perc" +msgstr "Sep. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1346 +msgid "lux_2013_10_pluvio_diff_perc" +msgstr "Oct. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1349 +msgid "lux_2013_11_pluvio_diff_perc" +msgstr "Nov. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1352 +msgid "lux_2013_12_pluvio_diff_perc" +msgstr "Dec. 2013 - Precipitation, monthly difference to reference period [%] " + +#: lu_int_wms.1033 +msgid "lux_2012_00_pluvio_diff_mm" +msgstr "2012 - Precipitation, yearly difference to reference period [mm] " + +#: lu_int_wms.1073 +msgid "lux_2012_00_pluvio_diff_perc" +msgstr "2012 - Precipitation, yearly difference to reference [%] " + +#: lu_int_wms.1276 +msgid "lux_2013_00_pluvio_diff_mm" +msgstr "2013 - Precipitation, yearly difference to reference period [mm] " + +#: lu_int_wms.1316 +msgid "lux_2013_00_pluvio_diff_perc" +msgstr "2013 - Precipitation, yearly difference to reference period [%] " + +#: group.826 +msgid "30 years reference period 1971-2000" +msgstr "30 years reference period 1971-2000" + +#: group.827 group.990 group.1233 +msgid "Precipitation" +msgstr "Precipitation" + +#: group.828 +msgid "lux_norm1971_2000_pluvio_sum" +msgstr "Reference period 1971-2000, Precipitation, sum [mm]" + +#: group.868 +msgid "2012" +msgstr "2012" + +#: group.869 group.1112 +msgid "Temperature" +msgstr "Temperature" + +#: group.870 +msgid "lux_2012_temp_minimum" +msgstr "Temperature minimum [ºC]" + +#: group.910 +msgid "lux_2012_temp_average" +msgstr "Temperature average [ºC]" + +#: group.950 +msgid "lux_2012_temp_maximum" +msgstr "Average maximum temperatures [ºC]" + +#: group.991 +msgid "lux_2012_pluvio_sum" +msgstr "Precipitation, sum [mm]" + +#: group.1031 +msgid "lux_2012_pluvio_diff_mm" +msgstr "Precipitation, monthly difference to reference period [mm]" + +#: group.1071 +msgid "lux_2012_pluvio_diff_perc" +msgstr "Precipitation, monthly difference to reference [%]" + +#: group.1111 +msgid "2013" +msgstr "2013" + +#: group.1113 +msgid "lux_2013_temp_minimum" +msgstr "Average minimum temperatures [ºC]" + +#: group.1153 +msgid "lux_2013_temp_average" +msgstr "Temperature average [ºC]" + +#: group.1193 +msgid "lux_2013_temp_maximum" +msgstr "Average maximum temperatures [ºC]" + +#: group.1234 +msgid "lux_2013_pluvio_sum" +msgstr "Precipitation, sum [mm]" + +#: group.1274 +msgid "lux_2013_pluvio_diff_mm" +msgstr "Precipitation, monthly difference to reference period [mm]" + +#: group.1314 +msgid "lux_2013_pluvio_diff_perc" +msgstr "Precipitation, monthly difference to reference period [%]" + +#: group.1355 +msgid "aev_qualite_air" +msgstr "Air quality" + +#: group.1356 +msgid "aev_eoliennes" +msgstr "Wind turbines (Internal)" + +#: lu_int_wms.1357 +msgid "aev_reseau_telemetrique" +msgstr "Telemetry Network" + +#: lu_int_wms.1358 +msgid "aev_poussieres_fines" +msgstr "Particulate Matter (filter reference method)" + +#: lu_int_wms.1359 +msgid "aev_reseau_bergerhoff" +msgstr "Dust deposition (Bergerhoff Network)" + +#: lu_int_wms.1360 +msgid "aev_emplacements_eoliennes" +msgstr "Wind turbines (Internal)" + +#: group.1361 +msgid "aev_casipo_group" +msgstr "CASIPO (Internal)" + +#: lu_int_wms.1362 +msgid "aev_casipo" +msgstr "Cadastre des sites potentiellement pollués (Internal) " + +#: lu_int_wms.1363 +msgid "reagis" +msgstr "" + +#: lu_int_wms.1364 +msgid "act_frontieres_isodistances" +msgstr "Distances from the (country) border" + +#: lu_ext_wms.1365 +msgid "sentiers_thematiques" +msgstr "Thematic trails" + +#: lu_int_wms.1366 +msgid "pag_infos_supp" +msgstr "Additional information" + +#: lu_int_wms.1367 +msgid "anf_biotopes_points" +msgstr "Point elements" + +#: lu_int_wms.1368 +msgid "anf_biotopes_vergers" +msgstr "Orchards" + +#: lu_int_wms.1369 +msgid "anf_biotopes_surfaces" +msgstr "Surface elements without orchards" + +#: lu_int_wms.1370 +msgid "anf_biotopes_tampons" +msgstr "Buffer" + +#: l_wmts.1371 +msgid "ortho_2017" +msgstr "Orthophoto 2017" + +#: l_wmts.1372 +msgid "ortho_2017_irc" +msgstr "Orthophoto 2017 infrared" + +#: lu_int_wms.1373 +msgid "pag_infos_supp_staging" +msgstr "" + +#: lu_ext_wms.1374 +msgid "cdt_lignes_tram" +msgstr "Tram lines" + +#: lu_int_wms.1375 +msgid "makerspaces" +msgstr "" + +#: lu_int_wms.1376 +msgid "parcels_daily" +msgstr "Cadastral parcels" + +#: lu_int_wms.216 +msgid "decoupage_communes" +msgstr "Municipality code" + +#: lu_int_wms.1377 +msgid "lidar_mns" +msgstr "Digital Surface Model of the Nordstad region" + +#: lu_int_wms.1378 +msgid "lidar_mnt" +msgstr "Digital Height Model of the Nordstad region" + +#: lu_int_wms.1379 +msgid "lidar_ortho" +msgstr "High resolution aerial imagery of the Nordstad region" + +#: group.1380 +msgid "lidar_prototype" +msgstr "Results of the LIDAR prototype of the A.C.T." + +#: lu_int_wms.1383 +msgid "aev_zones_calmes_rurales" +msgstr "Potential quiet rural areas" + +#: lu_int_wms.1384 +msgid "aev_zones_calmes_urbaines" +msgstr "Potential quiet urban areas" + +#: lu_int_wms.1385 +msgid "aev_oases_urbaines" +msgstr "Potential quiet urban oases " + +#: group.1382 +msgid "aev_zones_calmes" +msgstr "Quiet areas" + +#: lu_int_wms.1386 +msgid "mobiliteit_livebikes" +msgstr "Bike sharing (live data)" + +#: group.1390 +msgid "secours_siden" +msgstr "SIDEN" + +#: group.1392 +msgid "secours_sebes" +msgstr "SEBES" + +#: group.1393 +msgid "secours_pch" +msgstr "PCH" + +#: group.1394 +msgid "siden_canalisation" +msgstr "Canalisation" + +#: lu_int_wms.1395 +msgid "siden_conduites_de_refoulement" +msgstr "Conduites de refoulement" + +#: lu_int_wms.1397 +msgid "siden_ouvrages" +msgstr "Ouvrages" + +#: lu_int_wms.1399 +msgid "siden_eaux_pluviales" +msgstr "Eaux pluviales" + +#: group.1401 +msgid "sebes_reseau_adduction" +msgstr "Réseau d'adduction" + +#: group.1402 +msgid "sebes_lac_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1403 +msgid "sebes_bassins_versants" +msgstr "Bassins versants" + +#: lu_int_wms.1405 +msgid "sebes_reseau_adduction_sebes" +msgstr "Réseau d'adduction SEBES" + +#: lu_int_wms.1406 +msgid "sebes_volume_structure_lac" +msgstr "Volume et structure du lac" + +#: lu_int_wms.1407 +msgid "sebes_bassinversant_sure_lux_bel" +msgstr "Bassin versant luxembourgeois et belge pour la Sûre" + +#: lu_int_wms.1408 +msgid "sebes_bassinversant_sure_bel" +msgstr "Bassin versant belge" + +#: lu_int_wms.1409 +msgid "sebes_bassinversant_sous_bassins" +msgstr "Sous-bassins versants" + +#: lu_int_wms.1410 +msgid "sebes_zoneprotection_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1411 +msgid "pch_infrastructure" +msgstr "Infrastructure" + +#: group.1412 +msgid "pch_origine_pollution" +msgstr "Origine de la pollution" + +#: lu_int_wms.1413 +msgid "pch_reseau_routier_avec_pk" +msgstr "Réseau routier " + +#: lu_int_wms.1414 +msgid "pch_chemins_acces" +msgstr "Chemins d'accès" + +#: lu_int_wms.1415 +msgid "pch_ancrage_barrage_flottant" +msgstr "Points d'ancrage pour barrage flottant" + +#: lu_int_wms.1416 +msgid "pch_zones_acces" +msgstr "Zones d'accès" + +#: lu_int_wms.1417 +msgid "pch_ouvrages_art_eau" +msgstr "Ouvrages d'art sur cours d'eau" + +#: lu_int_wms.1419 +msgid "pch_camion_pompe" +msgstr "Camion pompe" + +#: lu_int_wms.1420 +msgid "pch_stockage_materiaux_depolluants" +msgstr "Stockage de matériaux dépolluants" + +#: lu_int_wms.1421 +msgid "pch_place_potentielle_retenue_antipollution" +msgstr "Place potentielle de retenue antipollution" + +#: lu_int_wms.1422 +msgid "pch_stations_services" +msgstr "Stations-services" + +#: group.1423 +msgid "secours_basisdaten" +msgstr "" + +#: lu_int_wms.181 +msgid "roads" +msgstr "Road Network" + +#: lu_int_wms.351 +msgid "roads_labels" +msgstr "Road Names" + +#: lu_ext_wms.1424 +msgid "logt_baul_feedback_2013" +msgstr "Baulücken-Feedback 2013" + +#: lu_int_wms.1426 +msgid "aev_reseau_biosurveillance" +msgstr "Biomonitoring Network (Internal)" + +#: lu_int_wms.1427 +msgid "aev_mesures_tubes_passifs" +msgstr "Passive tubes (Internal)" + +#: lu_int_wms.1425 +msgid "air_quality_pm10" +msgstr "Geostatistical Interpolation PM10" + +#: lu_int_wms.1429 +msgid "air_quality_no2" +msgstr "Geostatistical Interpolation NO2" + +#: lu_int_wms.1430 +msgid "air_quality_o3" +msgstr "Geostatistical Interpolation O3" + +#: group.737 +msgid "Groupes canins" +msgstr "" + +#: lu_ext_wms.1431 +msgid "cgdis_groupe_cynotechnique" +msgstr "" + +#: lu_int_wms.1432 +msgid "air_quality_global" +msgstr "" + +#: lu_int_wms.1434 +msgid "at_pst_droit_preemption" +msgstr "Pre-emptive right" + +#: lu_int_wms.1435 +msgid "at_pszae_droit_preemption" +msgstr "Pre-emptive right" + +#: lu_int_wms.1436 +msgid "at_psl_droit_preemption" +msgstr "Pre-emptive right" + +#: lu_int_wms.1438 +msgid "Habitations" +msgstr "" + +#: group.1440 +msgid "APRG Zones de protection du Lac de la Haute Sûre" +msgstr "" + +#: lu_int_wms.1441 +msgid "Zones urbanisées" +msgstr "" + +#: lu_int_wms.1442 +msgid "Bâtiments industriels / commerciaux" +msgstr "" + +#: group.1444 +msgid "Altlasten" +msgstr "" + +#: lu_int_wms.1446 +msgid "Sites potentiellement contaminés" +msgstr "" + +#: lu_int_wms.1447 +msgid "Axes routiers" +msgstr "" + +#: lu_int_wms.1448 +msgid "Zones de protection d'eaux de surfaces" +msgstr "" + +#: lu_int_wms.1449 +msgid "Vulnérabilité selon méthode SIRIS" +msgstr "" + +#: lu_int_wms.1451 +msgid "Sites de baignade" +msgstr "" + +#: lu_int_wms.1452 +msgid "Etang à poissons" +msgstr "" + +#: lu_int_wms.1453 +msgid "Chemin risque de contamination des eaux par chiens promenés" +msgstr "" + +#: lu_int_wms.1454 +msgid "Pêche" +msgstr "" + +#: lu_int_wms.1455 +msgid "Trafic bateaux " +msgstr "" + +#: lu_int_wms.1445 +msgid "Sites contaminés" +msgstr "" + +#: group.1456 +msgid "Autres utilisations" +msgstr "" + +#: l_wmts.1457 lu_int_wms.1458 lu_ext_wms.1459 +msgid "OSM_MQ" +msgstr "" + +#: lu_int_wms.1463 +msgid "lidar_mnh" +msgstr "Digital height model" + +#: lu_int_wms.1462 +msgid "wg_exposition_map" +msgstr "Exposition" + +#: lu_int_wms.1461 +msgid "wg_hangneigung_map" +msgstr "Slope" + +#: lu_int_wms.1460 +msgid "wg_relief_map" +msgstr "Relief" + +#: lu_int_wms.1464 +msgid "eau_prgd_zones_protection_lac" +msgstr "Draft of the grand-ducal regulation regarding the safeguard zones around the Upper Sûre Lake" + +#: lu_int_wms.1465 +msgid "aev_medium_combustion_plants" +msgstr "" + +#: group.1466 +msgid "aev_facilities_registers" +msgstr "" + +#: group.1467 +msgid "radon" +msgstr "" + +#: lu_int_wms.1468 +msgid "carte_radon_communes" +msgstr "Radon concentrations per municipality" + +#: lu_int_wms.1469 +msgid "eau_strahlwirkungskonzept" +msgstr "Concept of aquatic habitat connectivity" + +#: lu_int_wms.1470 +msgid "eau_fliessgewaessertypen_2015" +msgstr "Types of watercourses 2015 (LAWA)" + +#: lu_int_wms.1471 +msgid "eau_detailliertes_massnahmenprogramm_sww" +msgstr "Detailed programme of measures SWW" + +#: group.1472 +msgid "aev_modelisation" +msgstr "Modelling" + +#: group.1473 +msgid "aev_air_mesures" +msgstr "Measurement networks" + +#: lu_int_wms.1474 +msgid "cantons_voodoo_test" +msgstr "" + +#: lu_int_wms.1475 +msgid "env_bruit_axes_routiers_hotspots" +msgstr "Priority noise hotspots - road traffic 2011" + +#: lu_int_wms.1476 +msgid "env_bruit_axes_ferroviaires_hotspots" +msgstr "Priority noise hotspots - railway traffic 2011" + +#: lu_int_wms.1477 +msgid "aev_pacte_climat_2018" +msgstr "Climate pact 2018 - NO2 (Internal)" + +#: group.1478 +msgid "aev_air_campagnes_mesure" +msgstr "NO2 Hotspots (Internal)" + +#: lu_int_wms.1479 +msgid "aev_casipo_attributs_internes" +msgstr "" + +#: lu_int_wms.1480 +msgid "air_quality_pm2_5" +msgstr "Geostatistical Interpolation PM2.5" + +#: group.1481 +msgid "asta_projet_rgd" +msgstr "Draft of the grand-ducal regulation regarding the safeguard zones around the Upper Sûre Lake" + +#: lu_int_wms.1482 +msgid "asta_contrainte_stockage_engrais" +msgstr "Contraintes pour le stockage d’engrais organiques et de silos taupinières (pentes > 5%)" + +#: lu_int_wms.1483 +msgid "asta_contrainte_utilisation_engrais" +msgstr "Contraintes pour l’épandage d’engrais organiques à action rapide et mesures contre l’érosion (pentes > 10%)" + +#: lu_int_wms.1484 +msgid "eau_asta_prgd_zones_protection_lac" +msgstr "Safeguard zones" + +#: lu_int_wms.1485 +msgid "env_bruit_axes_routiers_agglomeration" +msgstr "Priority noise hotspots - road traffic 2011 agglomeration" + +#: lu_int_wms.1486 +msgid "env_bruit_routes_lden_2016" +msgstr "Major Roads 2016 (Lden) (Internal)" + +#: lu_int_wms.1487 +msgid "env_bruit_routes_lngt_2016" +msgstr "Major Roads 2016 (Lngt) (Internal)" + +#: lu_int_wms.1488 +msgid "env_bruit_ferroviaire_lden_2016" +msgstr "Major Railways 2016 (Lden) (Internal)" + +#: lu_int_wms.1489 +msgid "env_bruit_ferroviaire_lngt_2016" +msgstr "Major Railways 2016 (Lngt) (Internal)" + +#: lu_int_wms.1490 +msgid "env_bruit_air_lden_2016" +msgstr "Major Airport 2016 (Lden) (Internal)" + +#: lu_int_wms.1491 +msgid "env_bruit_air_lngt_2016" +msgstr "Major Airport 2016 (Lngt) (Internal)" + +#: lu_int_wms.1492 +msgid "at_pds_parcels" +msgstr "Certificate SMP" + +#: group.1493 +msgid "at_pds_parcels_group" +msgstr "SMP Additional documents" + +#: lu_int_wms.1494 +msgid "gaz_naturel" +msgstr "Disponibility of natural gas" + +#: group.1495 +msgid "fourniture_energie" +msgstr "Energy supply" + +#: lu_int_wms.1496 +msgid "anf_centre_ramassage" +msgstr "Collection centres for wild roadkill and guts" + +#: l_wmts.1497 +msgid "env_bruit2016_axes_routiers_lden" +msgstr "Major Roads 2016 (Lden)" + +#: l_wmts.1498 +msgid "env_bruit2016_axes_ferroviaires_lden" +msgstr "Major Railways 2016 (Lden)" + +#: l_wmts.1499 +msgid "env_bruit2016_axes_aeroport_lngt" +msgstr "Major Airport 2016 (Lngt)" + +#: l_wmts.1500 +msgid "env_bruit2016_axes_routiers_lngt" +msgstr "Major Roads 2016 (Lngt)" + +#: l_wmts.1501 +msgid "env_bruit2016_axes_aeroport_lden" +msgstr "Major Airport 2016 (Lden)" + +#: l_wmts.1502 +msgid "env_bruit2016_axes_ferroviaires_lngt" +msgstr "Major Railways 2016 (Lngt)" + +#: lu_int_wms.1503 +msgid "env_bruit_axes_ferroviaires_hotspots_2016" +msgstr "Priority noise hotspots - railway traffic 2016 (Internal)" + +#: lu_int_wms.1504 +msgid "env_bruit_axes_routiers_hotspots_2016" +msgstr "Priority noise hotspots - road traffic 2016 (Internal)" + +#: lu_int_wms.1505 +msgid "env_bruit_axes_routiers_agglomeration_2016" +msgstr "Priority noise hotspots - road traffic 2016 agglomeration (Internal)" + +#: lu_int_wms.1506 +msgid "aev_dechets_composting" +msgstr "" + +#: lu_int_wms.1507 +msgid "aev_dechets_inert_waste" +msgstr "" + +#: lu_int_wms.1508 +msgid "aev_dechets_recycling" +msgstr "" + +#: lu_int_wms.1509 +msgid "aev_dechets_biogas" +msgstr "" + +#: group.1510 +msgid "aev_dechets" +msgstr "" + +#: lu_int_wms.1511 +msgid "asta_prairies_permanentes" +msgstr "Status Permanent Grassland" + +#: lu_int_wms.1512 +msgid "aev_no2_grobscreening_2016" +msgstr "NO2 Grobscreening 2016" + +#: lu_ext_wms.1513 +msgid "tourisme_neue_nationale_wanderwege" +msgstr "Neue Nationale Wanderwege" + +#: lu_int_wms.1514 +msgid "anf_forets_publiques_fsc_pefc" +msgstr "Public forest certification FSC and/or PEFC" + +#: lu_ext_wms.1515 +msgid "tourisme_ortal_belaege" +msgstr "Beläge " + +#: lu_ext_wms.1516 +msgid "tourisme_ortal_escapardenne" +msgstr "Escapardenne" + +#: lu_ext_wms.1517 +msgid "tourisme_ortal_naturwanderpark_delux" +msgstr "NaturWanderPark delux" + +#: lu_ext_wms.1518 +msgid "tourisme_ortal_qualitaetstouren" +msgstr "Qualitätstouren" + +#: lu_ext_wms.1519 +msgid "tourisme_ortal_lokale_wanderwege" +msgstr "Lokale Wanderwege" + +#: lu_ext_wms.1520 +msgid "tourisme_ortal_grosse_lokale_wanderwege" +msgstr "Große lokale Wanderwege" + +#: lu_ext_wms.1521 +msgid "tourisme_ortal_kleine_lokale_wanderwege" +msgstr "Kleine lokale Wanderwege POI" + +#: lu_ext_wms.1522 +msgid "tourisme_ortal_autopedestres" +msgstr "Auto-Pédestre Wanderwege" + +#: lu_ext_wms.1523 +msgid "tourisme_ortal_cfl" +msgstr "CFL-Bahnwanderwege" + +#: lu_ext_wms.1524 +msgid "tourisme_ortal_wanderwege_thema" +msgstr "Wanderwege mit Thema " + +#: lu_ext_wms.1525 +msgid "tourisme_ortal_themenwege" +msgstr "Themenwege" + +#: group.1526 +msgid "tourisme_wanderwege_ortal" +msgstr "Qualitätswanderregion Éislek" + +#: l_wmts.1527 +msgid "ortho_2018" +msgstr "Orthophoto 2018" + +#: lu_int_wms.1529 +msgid "ortho2018_IR" +msgstr "Orthophoto 2018 infrared" + +#: theme.1528 +msgid "atlas_demographique_old" +msgstr "" + +#: theme.1530 +msgid "atlas_demographique" +msgstr "" + +#: lu_int_wms.1531 +msgid "ad_fusions_communes" +msgstr "Overview of the fusions of the municipalities since 1920" + +#: lu_int_wms.1532 +msgid "ad_communes_cantons" +msgstr "The 12 cantons and 102 municipalities on 1st January 2018" + +#: lu_int_wms.1533 +msgid "ad_evol_pop_1981_2018" +msgstr "Evolution of the population" + +#: lu_int_wms.1534 +msgid "ad_part_francais_commune" +msgstr "Frenchmen" + +#: lu_int_wms.1535 +msgid "ad_densite_pop_comm" +msgstr "Population density per municipality on the 1st January 2018" + +#: lu_int_wms.1536 +msgid "ad_part_portugais_commune" +msgstr "Portuguese" + +#: lu_int_wms.1537 +msgid "ad_part_africains_commune" +msgstr "Africans" + +#: lu_int_wms.1538 +msgid "ad_part_allemands_commune" +msgstr "Germans" + +#: lu_int_wms.1539 +msgid "ad_part_americains_commune" +msgstr "Americans" + +#: lu_int_wms.1540 +msgid "ad_part_asiates_commune" +msgstr "Asians and Oceanians" + +#: lu_int_wms.1541 +msgid "ad_part_belges_commune" +msgstr "Belgians" + +#: lu_int_wms.1542 +msgid "ad_part_nonUE28_commune" +msgstr "Europeans (no EU-28)" + +#: lu_int_wms.1543 +msgid "ad_part_UE28_commune" +msgstr "Europeans (EU-28)" + +#: lu_int_wms.1544 +msgid "ad_part_italiens_commune" +msgstr "Italians" + +#: group.1545 +msgid "ad_part_etrangers_comm" +msgstr "Proportion of foreign persons among the population" + +#: group.1546 +msgid "ad_org_territoriale" +msgstr "Territorial organisation" + +#: group.1547 +msgid "ad_org_terr_lux" +msgstr "Territoiral organisation of Luxembourg" + +#: group.1548 +msgid "ad_etat_population" +msgstr "State of population" + +#: group.1549 +msgid "ad_population_stock_evolution_densite" +msgstr "Stock, evolution and density of the population" + +#: group.1550 +msgid "ad_evolution_pop_comm" +msgstr "Evolution of population of the municipalities between 1981 and 2018" + +#: group.1551 +msgid "ad_densite_pop" +msgstr "Population density per municipality on the 1st January" + +#: group.1552 +msgid "ad_rapport_hommes_femmes" +msgstr "Proportion of women" + +#: group.1553 +msgid "ad_prop_femmes_comm_2018_group" +msgstr "" + +#: group.1554 +msgid "ad_etrangers_lieu_naissance" +msgstr "Foreign nationalities and place of birth" + +#: group.1555 +msgid "ad_nationalites_commune_2018" +msgstr "Most frequent nationalities per municipality on the 1st january 2018" + +#: group.1556 +msgid "ad_structure_age" +msgstr "Age structure" + +#: group.1557 +msgid "ad_age_moyen" +msgstr "Average age per sex and in total, per municipality on the 1st January 2018" + +#: group.1558 +msgid "ad_proportion_classes_age" +msgstr "Proportion of the different age groups per municipality on the 1st January 2018" + +#: group.1559 +msgid "ad_proportion_jeunes" +msgstr "Proportion of youth (-18) per groups per municipality on the 1st January 2018" + +#: group.1560 +msgid "ad_proportion_ages" +msgstr "Proportion of elderly people per groups per municipality on the 1st January 2018" + +#: lu_int_wms.1561 +msgid "ad_age_moyen_femmes" +msgstr "Average age of women" + +#: lu_int_wms.1562 +msgid "ad_age_moyen_hommes" +msgstr "Average age of men" + +#: lu_int_wms.1563 +msgid "ad_age_moyen_2" +msgstr "Average age (total)" + +#: lu_int_wms.1564 +msgid "ad_moins20" +msgstr "Proportion of under 20-year-old people" + +#: lu_int_wms.1565 +msgid "ad_20_64" +msgstr "Proportion of 20 to 64 year-old people" + +#: lu_int_wms.1566 +msgid "ad_65plus" +msgstr "Proportion of people aged 65 years and more" + +#: lu_int_wms.1567 +msgid "ad_moins3" +msgstr "Proportion of people aged less than 3 years" + +#: lu_int_wms.1568 +msgid "ad_3_5" +msgstr "Proportion of people aged 3-5 years" + +#: lu_int_wms.1569 +msgid "ad_6_10" +msgstr "Proportion of people aged 6-10 years" + +#: lu_int_wms.1570 +msgid "ad_11_17" +msgstr "Proportion of people aged 11-17 years" + +#: lu_int_wms.1571 +msgid "ad_65_74" +msgstr "Proportion of people aged 65-74 years" + +#: lu_int_wms.1572 +msgid "ad_75_89" +msgstr "Proportion of people aged 75-89 years" + +#: lu_int_wms.1573 +msgid "ad_90plus" +msgstr "Proportion of people aged 90 years and more" + +#: lu_int_wms.1574 +msgid "ad_poles_urbains" +msgstr "The three urban centres in Luxembourg" + +#: group.1575 +msgid "ad_population_commune_canton" +msgstr "Population per canton and municipality on the 1st January 2018" + +#: lu_int_wms.1576 +msgid "ad_population_canton" +msgstr "Population per canton" + +#: lu_int_wms.1577 +msgid "ad_population_commune" +msgstr "Population per municipality" + +#: lu_int_wms.1578 +msgid "ad_prop_femmes_comm_2018" +msgstr "Proportion of women per municipality on the 1st January 2018" + +#: lu_int_wms.1579 +msgid "ad_structure_pop_comm" +msgstr "Age structure per municipality on the 1st January 2018" + +#: group.1580 +msgid "ad_lieu_naissance_lux_etr" +msgstr "Place of birth (Luxembourg/abroad)" + +#: lu_int_wms.1581 +msgid "ad_lieu_naissance_commune" +msgstr "Place of birth per municipality on the 1st January 2018" + +#: lu_int_wms.1582 +msgid "ad_rapport_dependance_personnes_agees" +msgstr "Dependency of the elderly people" + +#: lu_int_wms.1583 +msgid "ad_rapport_dependance_jeunes" +msgstr "Dependency of the youth per municipality" + +#: lu_int_wms.1584 +msgid "ad_rapport_dependance_total" +msgstr "Total dependency ratio" + +#: lu_int_wms.1585 +msgid "ad_celibataires" +msgstr "Unmarried people" + +#: lu_int_wms.1586 +msgid "ad_maries_pacses" +msgstr "Married people/people living in civil partnership" + +#: lu_int_wms.1587 +msgid "ad_divorces_separes" +msgstr "Divorced people" + +#: lu_int_wms.1588 +msgid "ad_veufs_veuves" +msgstr "Widowed people" + +#: group.1589 +msgid "ad_rapport_dependance" +msgstr "Dependency ratio per municipality on the 1st January 2018" + +#: group.1590 +msgid "ad_situation_matrimoniale" +msgstr "Marital status of the adults (18+)" + +#: group.1591 +msgid "ad_mouvement_population" +msgstr "Population movement" + +#: group.1592 +msgid "ad_naissances" +msgstr "Births" + +#: group.1593 +msgid "ad_deces" +msgstr "Deaths" + +#: group.1594 +msgid "ad_solde_naturel" +msgstr "Natural balance" + +#: group.1595 +msgid "ad_migrations" +msgstr "Migrations" + +#: group.1596 +msgid "ad_mariages" +msgstr "Marriages" + +#: lu_int_wms.1597 +msgid "ad_naissances_taux_natalite" +msgstr "Births and birth rate per municipality (average 2013-2017)" + +#: lu_int_wms.1598 +msgid "ad_naissances_mariage" +msgstr "Proportion of births within mariage per municipality (average 2013-2017)" + +#: lu_int_wms.1599 +msgid "ad_naissances_age_maternite" +msgstr "Average age at the birth per municipality (average 2013-2017)" + +#: lu_int_wms.1600 +msgid "ad_deces_taux_mortalite" +msgstr "Deaths and mortality rate per municipality (average 2013-2017)" + +#: lu_int_wms.1601 +msgid "ad_solde_naturel_nombre_absolu" +msgstr "Natural balance and natural balance rate per municipality (average 2013-2017)" + +#: group.1602 +msgid "ad_langues_lux" +msgstr "Languages in Luxembourg" + +#: lu_int_wms.1603 +msgid "ad_migrations_solde_interne" +msgstr "Internal migratory balance and internal migratory balance rate per municipality (average 2013-2017)" + +#: lu_int_wms.1604 +msgid "ad_migrations_solde_international" +msgstr "International migratory balance and international migratory balance rate per municipality (average 2013-2017)" + +#: lu_int_wms.1605 +msgid "ad_migrations_solde_total" +msgstr "Total migratory balance and total migratory balance rate per municipality (average 2013-2017)" + +#: lu_int_wms.1606 +msgid "ad_mariages_taux_nuptialite" +msgstr "Marriages and rate of marriage per municipality (average 2013-2017)" + +#: lu_int_wms.1607 +msgid "ad_mariages_age_femme" +msgstr "Women's average age at the marriage per municipality (average 2013-2017)" + +#: lu_int_wms.1608 +msgid "ad_mariage_age_hommes" +msgstr "Men's average age at the marriage per municipality (average 2013-2017)" + +#: lu_int_wms.1609 +msgid "ad_langues_luxembourgeois" +msgstr "Luxembourgish" + +#: lu_int_wms.1610 +msgid "ad_langues_francais" +msgstr "French" + +#: lu_int_wms.1611 +msgid "ad_langues_allemand" +msgstr "German" + +#: lu_int_wms.1612 +msgid "ad_langues_portugais" +msgstr "Portuguese" + +#: lu_int_wms.1613 +msgid "ad_langues_italien" +msgstr "Italian" + +#: lu_int_wms.1614 +msgid "ad_langues_anglais" +msgstr "English" + +#: lu_int_wms.1615 +msgid "ad_langues_autre" +msgstr "Other language" + +#: group.1616 +msgid "ad_langue_principale_2018" +msgstr "Main language" + +#: lu_ext_wms.1617 +msgid "levee_sans_operation" +msgstr "" + +#: group.1620 +msgid "points_sauvetage_group" +msgstr "Emergency spots" + +#: lu_int_wms.1621 +msgid "points_sauvetage_vdl" +msgstr "Emergency spots - Luxembourg city" + +#: group.1622 +msgid "ortal_kriterienauswertung" +msgstr "Kriterienauswertung" + +#: group.1623 +msgid "ortal_wanderwege" +msgstr "Wanderwege" + +#: lu_ext_wms.1624 +msgid "tourisme_ortal_5_strasse" +msgstr "Kriterium 5% auf Straße" + +#: lu_ext_wms.1625 +msgid "tourisme_ortal_10_nebenstrasse" +msgstr "Kriterium 10% neben Straße" + +#: lu_ext_wms.1626 +msgid "tourisme_ortal_75_abdeckung" +msgstr "Kriterium 75% Abdeckung" + +#: lu_ext_wms.1627 +msgid "tourisme_ortal_schlecht_begehbar" +msgstr "Kriterium schlecht begehbar" + +#: lu_ext_wms.1628 +msgid "tourisme_ortal_ausgangspunkte" +msgstr "Kriterium Ausgangspunkte" + +#: lu_ext_wms.1629 +msgid "tourisme_ortal_knotenpunkte" +msgstr "Kriterium Knotenpunkte" + +#: lu_ext_wms.1630 +msgid "tourisme_ortal_wegweiserstandorte" +msgstr "Kriterium Wegweiserstandorte " + +#: lu_ext_wms.1631 +msgid "tourisme_ortal_verpflegung" +msgstr "Kriterium Verpflegung" + +#: lu_ext_wms.1632 +msgid "tourisme_ortal_gastgeber" +msgstr "Kriterium Gastgeber" + +#: lu_ext_wms.1633 +msgid "tourisme_ortal_touristinfo" +msgstr "Kriterium Tourist-Informationen" + +#: lu_ext_wms.1634 +msgid "tourisme_ortal_wanderziele" +msgstr "Wanderziele & Sehnsuchtsorte" + +#: lu_ext_wms.1635 +msgid "tourisme_ortal_mobilitaet" +msgstr "Kriterium Mobilität" + +#: lu_ext_wms.1636 +msgid "tourisme_ortal_servicestellen" +msgstr "Kriterium Servicestellen" diff --git a/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-server.po b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-server.po similarity index 70% rename from geoportailv3/locale/en/LC_MESSAGES/geoportailv3-server.po rename to geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-server.po index b72a30aef..23e91e666 100644 --- a/geoportailv3/locale/en/LC_MESSAGES/geoportailv3-server.po +++ b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-server.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:15+0000\n" +"PO-Revision-Date: 2019-01-07 08:28+0000\n" "Last-Translator: Jeff Konnen \n" "Language-Team: English (http://www.transifex.com/geoportail/geoportailv3-lu/language/en/)\n" "MIME-Version: 1.0\n" @@ -19,7 +19,7 @@ msgstr "" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ./geoportailv3/views/pag.py:120 +#: ./geoportailv3/views/pag.py:124 #, python-format msgid "PAG webservice response ${email}" msgstr "Votre rapport est en train d'être généré.\n
Un email vous sera envoyé à l'adresse ${email} dès qu'il sera disponible" @@ -33,106 +33,123 @@ msgstr "Bonjour!\n
\nil y a eu un souci avec la génération de votre rapport msgid "PAG Mail the report link ${link}" msgstr "Bonjour!\n
\n
\nVotre rapport PAG est finalisé.\n
\n
\nCliquez-ici pour télécharger le résultat.\n
\n
\nMeilleures salutations\n
\nL'équipe du géoportail et du Ministère de l'Intérieur" -#: ./geoportailv3/views/luxprintproxy.py:147 +#: ./geoportailv3/views/luxprintproxy.py:215 msgid "Access constraints" msgstr "Access constraints" #: ./geoportailv3/models.py:27 -msgid "Allowed measurement for a user" -msgstr "Allowed measurement for a user" +msgid "Base url for download" +msgstr "" -#: ./geoportailv3/models.py:38 +#: ./geoportailv3/models.py:42 +msgid "Allowed surveying for a user" +msgstr "" + +#: ./geoportailv3/models.py:54 +msgid "Surveying file config" +msgstr "" + +#: ./geoportailv3/models.py:67 msgid "Internal WMS layer" msgstr "Internal WMS layer" -#: ./geoportailv3/models.py:39 +#: ./geoportailv3/models.py:68 msgid "Internal WMS layers" msgstr "Internal WMS layers" -#: ./geoportailv3/models.py:60 +#: ./geoportailv3/models.py:89 msgid "External WMS layer" msgstr "External WMS layer" -#: ./geoportailv3/models.py:61 +#: ./geoportailv3/models.py:90 msgid "External WMS layers" msgstr "External WMS layers" -#: ./geoportailv3/models.py:52 +#: ./geoportailv3/models.py:37 ./geoportailv3/models.py:81 +#: ./geoportailv3/models.py:167 msgid "Url" msgstr "Url" -#: ./geoportailv3/models.py:53 +#: ./geoportailv3/models.py:38 +msgid "Only connected user can download" +msgstr "" + +#: ./geoportailv3/models.py:82 msgid "Layers" msgstr "Layers" -#: ./geoportailv3/models.py:54 +#: ./geoportailv3/models.py:83 msgid "Is a POI" msgstr "Is a POI" -#: ./geoportailv3/models.py:55 +#: ./geoportailv3/models.py:84 msgid "Collection ID" msgstr "Collection ID" -#: ./geoportailv3/models.py:56 +#: ./geoportailv3/models.py:85 msgid "REST url" msgstr "REST url" -#: ./geoportailv3/models.py:74 +#: ./geoportailv3/models.py:103 msgid "Category ID" msgstr "Category ID" -#: ./geoportailv3/models.py:87 +#: ./geoportailv3/models.py:116 msgid "Table name" msgstr "Table name" -#: ./geoportailv3/models.py:88 +#: ./geoportailv3/models.py:117 msgid "URL Rest" msgstr "URL Rest" -#: ./geoportailv3/models.py:89 +#: ./geoportailv3/models.py:118 msgid "Engine" msgstr "Engine" -#: ./geoportailv3/models.py:90 +#: ./geoportailv3/models.py:119 msgid "Layer" msgstr "Layer" -#: ./geoportailv3/models.py:91 +#: ./geoportailv3/models.py:120 msgid "Template file name" msgstr "Template file name" -#: ./geoportailv3/models.py:93 +#: ./geoportailv3/models.py:122 msgid "Is the template local or remote" msgstr "Is the template local or remote" -#: ./geoportailv3/models.py:94 +#: ./geoportailv3/models.py:123 msgid "Python function" msgstr "Python function" -#: ./geoportailv3/models.py:95 +#: ./geoportailv3/models.py:124 msgid "Role" msgstr "Role" -#: ./geoportailv3/models.py:96 -msgid "Attributes to keep" -msgstr "Attributes to keep" +#: ./geoportailv3/models.py:125 +msgid "Attributes to remove" +msgstr "" -#: ./geoportailv3/models.py:97 +#: ./geoportailv3/models.py:126 msgid "Id of the poi collection" msgstr "Id of the poi collection" -#: ./geoportailv3/models.py:98 +#: ./geoportailv3/models.py:127 msgid "Geometry column name" msgstr "Geometry column name" -#: ./geoportailv3/models.py:99 +#: ./geoportailv3/models.py:128 msgid "Order of columns" msgstr "Order of columns" -#: ./geoportailv3/models.py:100 +#: ./geoportailv3/models.py:129 msgid "ID column name" msgstr "ID column name" -#: ./geoportailv3/models.py:102 +#: ./geoportailv3/models.py:131 msgid "Is a profile displayed in template ?" msgstr "" + +#: ./geoportailv3/models.py:133 +msgid "Limit the results. If < 0 then not limit." +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-tooltips.po b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-tooltips.po new file mode 100644 index 000000000..9a947d01b --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/geoportailv3_geoportal-tooltips.po @@ -0,0 +1,2448 @@ +# +# Translators: +# Andrea Donno , 2015-2016 +# Andrea Donno , 2015 +# Andrea Donno , 2015-2016 +# Andrea Donno , 2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 +# eRenaud Michaëlis , 2015 +# Francis Kaell , 2015 +# Jeff Konnen , 2015 +# Jeff Konnen , 2015-2018 +# Loubnabarra , 2017 +# Loubnabarra , 2017 +# Patrick Weber , 2015 +# Patrick Weber , 2015 +msgid "" +msgstr "" +"Project-Id-Version: portail\n" +"PO-Revision-Date: 2019-01-11 14:28+0000\n" +"Last-Translator: dhorper \n" +"Language-Team: English (http://www.transifex.com/geoportail/geoportailv3-lu/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Nom" +msgstr "Name" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Code national" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Photo" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Hyperlinks" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Abschnitt" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Cours eau" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Profil en travers" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Fiche descriptive" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Type LAWA" +msgstr "" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_name" +msgstr "Name" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_address" +msgstr "Address" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_bikes" +msgstr "Available bikes" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_ebikes" +msgstr "Available E-Bikes" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_docks" +msgstr "Available docks" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_docks" +msgstr "Docks" + +#: engineecadastre Layer:265 RoleNone +msgid "f_numero" +msgstr "Number" + +#: engineecadastre Layer:457 RoleNone +msgid "f_tiff" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_nom" +msgstr "Name" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_geoloc_type" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_fr" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_gr" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_nuts5" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_canton" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_habitants" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_chef_lieu" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_district" +msgstr "" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_commune" +msgstr "Actual name of the commune holding the biggest part of the biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_code" +msgstr "Type of biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_url_fiche" +msgstr "Fact sheet" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_biotope" +msgstr "Unique code of the biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_annee_evaluation" +msgstr "Year of the initial inventory " + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_fr" +msgstr "French name of the biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_de" +msgstr "German name of the biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_evaluation" +msgstr "Global evaluation of the biotope" + +#: engineecadastre Layer:1368 RoleNone +msgid "f_surface_ares" +msgstr "Surface in ares (100m²) rounded to the square meter" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_Etat" +msgstr "State" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_P_kW" +msgstr "Nominal electrical power (kVA)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_D_rotor_m" +msgstr "Diameter of the propeller (meter)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_H_Moy_m" +msgstr "Hub height (meter)" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Exploitant" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Code" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Nom(s) du/des captages(s) concerné(s)" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Projet de Règlement grand-ducal" +msgstr "" + +#: engineecadastre Layer:647 RoleNone +msgid "f_Photo station" +msgstr "" + +#: engineecadastre Layer:573 RoleNone +msgid "f_Publication du règlement grand-duca" +msgstr "" + +#: engineecadastre Layer:797 RoleNone +msgid "f_site de la commune" +msgstr "" + +#: engineecadastre Layer:805 RoleNone +msgid "f_no_zpin" +msgstr "Number" + +#: engineecadastre Layer:805 RoleNone +msgid "f_interets_principaux" +msgstr "Main interest" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_c" +msgstr "Prohibition zone C" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_a" +msgstr "Prohibition zone A" + +#: engineecadastre Layer:804 RoleNone +msgid "f_date_classement" +msgstr "Date of designation" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_b" +msgstr "Prohibition zone B" + +#: engineecadastre Layer:804 RoleNone +msgid "f_commentaire" +msgstr "Comment" + +#: engineecadastre Layer:804 RoleNone +msgid "f_sous_zone" +msgstr "Subzone" + +#: engineecadastre Layer:804 RoleNone +msgid "f_link" +msgstr "Link" + +#: engineecadastre Layer:804 RoleNone +msgid "f_code_national" +msgstr "National code" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_Name" +msgstr "Name" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_description" +msgstr "Description" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastrePa" +msgstr "Cadastral parcel" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastreSe" +msgstr "Cadastral section" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteAEV" +msgstr "Authorization from the Minister of the Environment" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Installati" +msgstr "Installation" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArretNum" +msgstr "Permit number" + +#: engineecadastre Layer:801 RoleNone +msgid "f_SiteOperat" +msgstr "Site" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Adresse" +msgstr "Address" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception" +msgstr "Receipt" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Explicatio" +msgstr "General explanations" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteITM" +msgstr "Authorization from the Minister of Labour" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception2" +msgstr "Receipt 2" + +#: engineecadastre Layer:802 RoleNone +msgid "f_PointMesur" +msgstr "" + +#: engineecadastre Layer:802 RoleNone +msgid "f_URL" +msgstr "" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Km2" +msgstr "Surface (km2)" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Steckbri_1" +msgstr "Fact sheet" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Legende" +msgstr "Zone type" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Id" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Code masse eau" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Fiches descriptives" +msgstr "" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Operateur" +msgstr "Operator" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Commune" +msgstr "Municipality" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Technologi" +msgstr "Technology" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Site" +msgstr "Site" + +#: engineecadastre Layer:427 RoleNone +msgid "f_fax" +msgstr "Fax" + +#: engineecadastre Layer:427 RoleNone +msgid "f_code_postal" +msgstr "Postal code" + +#: engineecadastre Layer:427 RoleNone +msgid "f_telephone" +msgstr "Phone" + +#: engineecadastre Layer:427 RoleNone +msgid "f_rue" +msgstr "Road" + +#: engineecadastre Layer:427 RoleNone +msgid "f_boite_postale" +msgstr "Post box" + +#: engineecadastre Layer:427 RoleNone +msgid "f_localite" +msgstr "Locality" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_AQIAPP_ID" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_RPT_FILE" +msgstr "Annual report (monthly updated)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_X" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_Y" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_CITY" +msgstr "Localité" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO_RAW" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_F_ACTIVE" +msgstr "State (in service = 1, out of service = 0)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_NUM_STREET" +msgstr "Numéro" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_CODE" +msgstr "Code" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_STREET" +msgstr "Rue" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_pm10_index_w_leg" +msgstr "PM10 Sub-Index" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_date_et_heure" +msgstr "Date and time" + +#: engineecadastre Layer:355 RoleNone +msgid "f_nom_section" +msgstr "" + +#: engineecadastre Layer:355 RoleNone +msgid "f_district" +msgstr "District" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_cad" +msgstr "Cadastral municipality" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_admin" +msgstr "Municipality" + +#: engineecadastre Layer:355 RoleNone +msgid "f_code_section" +msgstr "Section" + +#: engineecadastre Layer:355 RoleNone +msgid "f_canton" +msgstr "Canton" + +#: engineecadastre Layer:540 RoleNone +msgid "f_InspireID" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_CODE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_FID" +msgstr "FID" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITENAME" +msgstr "Name" + +#: engineecadastre Layer:540 RoleNone +msgid "f_TYPE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITECODE" +msgstr "Code" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nom_Projet" +msgstr "Project" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nr_Projet" +msgstr "Project-No." + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PERIMETER" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Reclasseme" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Classement" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ORIG_FID" +msgstr "" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_communeDDP" +msgstr "Municipality" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_plan" +msgstr "Plan" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_num_cadast" +msgstr "Cadastral parcel number" + +#: engineecadastre Layer:401 RoleNone +msgid "f_Nom_Site" +msgstr "Site name" + +#: engineecadastre Layer:401 RoleNone +msgid "f_SurfaceHa" +msgstr "Area in ha" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Projet" +msgstr "Project" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Type" +msgstr "Type" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Priorite" +msgstr "Priority" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code cours eau" +msgstr "" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code station" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_Operator" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_OBJECTID" +msgstr "" + +#: engineecadastre Layer:407 RoleNone +msgid "f_Categorie" +msgstr "Category" + +#: engineecadastre Layer:402 RoleNone +msgid "f_Remarque" +msgstr "Remark" + +#: engineecadastre Layer:655 Role:1 +msgid "f_Fiche station" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_lot" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_Gewaesser" +msgstr "" + +#: engineecadastre Layer:768 RoleNone +msgid "f_Résultats" +msgstr "" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Nbre_mes" +msgstr "Number of measurements" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_min" +msgstr "Activity min." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Activite" +msgstr "Mean activity" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_CANTON" +msgstr "Canton" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_max" +msgstr "Activity max." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_LAU2" +msgstr "LAU2 Code" + +#: engineecadastre Layer:582 RoleNone +msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Drkg_Wtr_Prot_Zone" +msgstr "" + +#: engineecadastre Layer:582 RoleNone +msgid "f_Nitrates (mg/l)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Années de construction" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Type conduite" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Longueur géométrique (m)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Matériel conduite" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Cycle_pdm" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Nr" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Bezeich" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Planungszu" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Projekt_Co" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_result__Ge" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_RW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Lux_ID" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_F8" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Bezeichnun" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Kurzbezeic" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Maßnahmen" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_HW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Fiche" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Superficie (km²)" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Code AGE du point d'analyse" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Cours d'eau" +msgstr "Watercourses" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Profil" +msgstr "" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Nom de la station" +msgstr "" + +#: engineecadastre Layer:682 RoleNone +msgid "f_localisation" +msgstr "Location" + +#: engineecadastre Layer:682 RoleNone +msgid "f_parkup" +msgstr "Double deck cycle parking" + +#: engineecadastre Layer:682 RoleNone +msgid "f_capacity_inside" +msgstr "Capacity" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Tronçon" +msgstr "Section" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Numéro" +msgstr "Site ID" + +#: engineecadastre Layer:713 RoleNone +msgid "f_YEAR" +msgstr "Year" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_line" +msgstr "LABEL_LINE" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_section" +msgstr "LABEL_SECTION" + +#: engineecadastre Layer:539 RoleNone +msgid "f_label" +msgstr "Parcel" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligneshort" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_no_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk_text" +msgstr "" + +#: engineecadastre Layer:428 RoleNone +msgid "f_heures_appel" +msgstr "Office hours" + +#: engineecadastre Layer:428 RoleNone +msgid "f_arrondissement" +msgstr "Regional districts" + +#: engineecadastre Layer:428 RoleNone +msgid "f_preposes_forestiers" +msgstr "Forestry agent" + +#: engineecadastre Layer:428 RoleNone +msgid "f_gsm" +msgstr "Mobile Number" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SelectTest" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_essence" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_propriete" +msgstr "PROPRIETE" + +#: engineecadastre Layer:690 RoleNone +msgid "f_secteur" +msgstr "SECTEUR" + +#: engineecadastre Layer:690 RoleNone +msgid "f_region" +msgstr "REGION" + +#: engineecadastre Layer:645 RoleNone +msgid "f_Analyses" +msgstr "" + +#: engineecadastre Layer:645 RoleNone +msgid "f_CAPA" +msgstr "" + +#: engineecadastre Layer:163 RoleNone +msgid "f_LEG_FR" +msgstr "Type" + +#: engineecadastre Layer:331 RoleNone +msgid "f_type" +msgstr "Type" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_la" +msgstr "Type (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_de" +msgstr "Name (de)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_la" +msgstr "Name (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_fr" +msgstr "Type (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_abreviation" +msgstr "Abbreviation" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_fr" +msgstr "Name (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_de" +msgstr "Type (de)" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChiro" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChir" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Ext_Nouv" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SUP2017" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Join_Count" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Area_ha" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Print0719" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Leng" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_OBJECTID_1" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone" +msgstr "Zone name" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_TARGET_FID" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PrintModif" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NumeroRGD" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA_DEF" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Specifique" +msgstr "Remark" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Select_" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone2" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ElimComp" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Le_1" +msgstr "" + +#: engineecadastre Layer:680 RoleNone +msgid "f_No" +msgstr "No" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Niveau d'assainissement" +msgstr "Niveau d'assainissement" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Contamination résiduelle" +msgstr "Contamination résiduelle" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Ancien No" +msgstr "Ancien numéro" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Description" +msgstr "Description" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Nom du site" +msgstr "Nom du site" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Année de saisie" +msgstr "Année de saisie" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Commentaire" +msgstr "Commentaire" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Identifiant surface" +msgstr "Identifiant de surface" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Méthode" +msgstr "Méthode" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Fr" +msgstr "French Legend of the buffer: \"PZ\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Gr" +msgstr "German Legend of the buffer: \"PZ\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Buffer_Id" +msgstr "Unique code of the buffer" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKGemeinde" +msgstr "Commune name of the inventory year" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Code" +msgstr "Code of the first biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_Shape_ares" +msgstr "Surface in ares (100m²) rounded to the square meter" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEOCODE" +msgstr "Unique code of the biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Nom" +msgstr "French name of the third biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Code" +msgstr "Code of the second biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKJahr" +msgstr "Year of the field inventory" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Nom" +msgstr "French name of the second biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Name" +msgstr "German name of the first biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Code" +msgstr "Code of the third biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG3" +msgstr "Evaluation of the third biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG2" +msgstr "Evaluation of the second biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG1" +msgstr "Evaluation of the first biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Name" +msgstr "German name of the third biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Nom" +msgstr "French name of the first biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEMEINDE" +msgstr "Actual name of the commune holding the biggest part of the biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Name" +msgstr "German name of the second biotop" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Partie numéro" +msgstr "" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Loi" +msgstr "" + +#: engineecadastre Layer:670 RoleNone +msgid "f_COMMUNE" +msgstr "Municipality" + +#: engineecadastre Layer:670 RoleNone +msgid "f_UHD3" +msgstr "" + +#: engineecadastre Layer:493 RoleNone +msgid "f_Nom écosystème" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_y" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_arbre_baum" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_x" +msgstr "" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_name" +msgstr "Name" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_description" +msgstr "Description" + +#: engineecadastre Layer:678 RoleNone +msgid "f_station_biologique" +msgstr "Biological station" + +#: engineecadastre Layer:581 RoleNone +msgid "f_Qualité" +msgstr "" + +#: engineecadastre Layer:581 RoleNone +msgid "f_messstationen.GISADMIN.Badegewaesser.Baignade" +msgstr "" + +#: engineecadastre Layer:157 RoleNone +msgid "f_LDEN" +msgstr "dB" + +#: engineecadastre Layer:627 RoleNone +msgid "f_Station" +msgstr "" + +#: engineecadastre Layer:691 RoleNone +msgid "f_lot_numero" +msgstr "Number" + +#: engineecadastre Layer:167 RoleNone +msgid "f_CodeDesc" +msgstr "Type" + +#: engineecadastre Layer:255 RoleNone +msgid "f_LNGT" +msgstr "dB" + +#: engineecadastre Layer:367 RoleNone +msgid "f_flurname" +msgstr "Lieu-dit" + +#: engineecadastre Layer:367 RoleNone +msgid "f_vendeur" +msgstr "Vendeur" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem_p" +msgstr "Remarque Bail" + +#: engineecadastre Layer:367 RoleNone +msgid "f_datum" +msgstr "Date d''achat" + +#: engineecadastre Layer:367 RoleNone +msgid "f_notar" +msgstr "Notaire" + +#: engineecadastre Layer:367 RoleNone +msgid "f_paechter" +msgstr "Bedreiwer" + +#: engineecadastre Layer:367 RoleNone +msgid "f_id" +msgstr "PF" + +#: engineecadastre Layer:367 RoleNone +msgid "f_jagdlos" +msgstr "Lot de chasse" + +#: engineecadastre Layer:367 RoleNone +msgid "f_sektion" +msgstr "Section" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fischereil" +msgstr "Lot de peche" + +#: engineecadastre Layer:367 RoleNone +msgid "f_num_flik" +msgstr "Num. FLIK" + +#: engineecadastre Layer:367 RoleNone +msgid "f_aff" +msgstr "Affectation" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fl_che" +msgstr "Surface cadastrale" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem" +msgstr "Remark" + +#: engineecadastre Layer:367 RoleNone +msgid "f_gemeinde" +msgstr "Municipality" + +#: engineecadastre Layer:367 RoleNone +msgid "f_kadasternu" +msgstr "Num. cadastral" + +#: engineecadastre Layer:378 RoleNone +msgid "f_voiture_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection1" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_cout" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_station" +msgstr "Station" + +#: engineecadastre Layer:378 RoleNone +msgid "f_operateur" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_open" +msgstr "" + +#: engineecadastre Layer:368 RoleNone +msgid "f_systeme" +msgstr "Service" + +#: engineecadastre Layer:368 RoleNone +msgid "f_adress" +msgstr "Address" + +#: engineecadastre Layer:368 RoleNone +msgid "f_reservation" +msgstr "Booking" + +#: engineecadastre Layer:368 RoleNone +msgid "f_bornes" +msgstr "Racks" + +#: engineecadastre Layer:368 RoleNone +msgid "f_ouvert" +msgstr "Open" + +#: engineecadastre Layer:643 RoleNone +msgid "f_Syndicat" +msgstr "" + +#: engineecadastre Layer:659 RoleNone +msgid "f_NAME" +msgstr "Name" + +#: engineecadastre Layer:441 RoleNone +msgid "f_Cause mauvais etat" +msgstr "" + +#: engineecadastre Layer:536 RoleNone +msgid "f_km2" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_index_w_leg" +msgstr "NO2 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index_w_leg" +msgstr "O3 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index" +msgstr "Sub-Index O3" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_value" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_value" +msgstr "Concentration O3 (ug/m3)" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm10_value" +msgstr "Particulate matter PM10 concentration (ug/m3) - 24-hour sliding average" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index_w_leg" +msgstr "PM2.5 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_value" +msgstr "Nitrogen dioxide NO2 concentration (ug/m3) - Hourly average" + +#: engineecadastre Layer:726 RoleNone +msgid "f_code_dossier" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_fin" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_annexe" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_debut" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_etat_libelle" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_aide" +msgstr "" + +#: engineecadastre Layer:747 RoleNone +msgid "f_Naturpark" +msgstr "Nature park" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_ru" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_b_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_easting" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_owner" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_northing" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_bois" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_numero_arr" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_ins" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_decommissi" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_master" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode_de" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_mazout" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_cha" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_nu" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_apres_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_no" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_latitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installa_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_gaz_nature" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_longitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonn_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_code_nace" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_conforme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_remarque" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonnee" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_local" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installate" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_artis" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_mot" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_co" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_diesel" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_rapport" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot5" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_biogaz" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_comme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_lo" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_batiment" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_rue" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_date" +msgstr "Date" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_indus" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_admin" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_exemption" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_avant_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_code_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_chau" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_numer" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges_mo" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_ITINERAIRE" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_N_PC" +msgstr "Label" + +#: engineecadastre Layer:808 RoleNone +msgid "f_NOM PC" +msgstr "Name" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWA" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_E75N" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_UCZ" +msgstr "Hotspot ID" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWC" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Code de l'élément fonctionnel" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Elément fonctionnel" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Code de la masse eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Type de mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_ID de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Nom de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Taille de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Description de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Type de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Longueur (m)" +msgstr "" + +#: engineecadastre Layer:1471 RoleNone +msgid "f_Code de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:669 RoleNone +msgid "f_UHD2" +msgstr "" + +#: engineecadastre Layer:1359 RoleNone +msgid "f_RPT_FILE_NEW" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E70N" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E75L" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E65N" +msgstr "" + +#: engineecadastre Layer:671 RoleNone +msgid "f_UHD1" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_LienMemori" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_nom_fichier" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_Area" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_NomProjet" +msgstr "" + +#: engineecadastre Layer:1503 RoleNone +msgid "f_UCEden" +msgstr "UCEden exposition" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_street" +msgstr "Street" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_link_to_emwelt" +msgstr "Link" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_pm10_value_w_leg" +msgstr "Particulate matter PM10 concentration (ug/m3) - 24-hour sliding average" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_city" +msgstr "Location" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value" +msgstr "Ozone O3 Concentration (ug/m3) - Hourly average" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_index" +msgstr "Overall index" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_index_w_leg" +msgstr "Sub-Index O3" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_no2_value_w_leg" +msgstr "Nitrogen dioxide NO2 concentration (ug/m3) - Hourly average" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value_w_leg" +msgstr "Ozone O3 Concentration (ug/m3) - Hourly average" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_x" +msgstr "X coordinate" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_y" +msgstr "Y coordinate" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Publiée" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Abandonné" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Séquence" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Catégorie d'SPC" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé par" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Traité" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Effacé" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_area(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Type de surface" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_length(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Sous type" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié par" +msgstr "" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_fournisseur" +msgstr "Grid operator" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_texte_fr" +msgstr " Procedure" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_rdv" +msgstr "Appointment" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_adresse" +msgstr "Address" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_responsable" +msgstr "Person in charge" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_horaire" +msgstr "Opening hours" + +#: engineecadastre Layer:1507 RoleNone +msgid "f_Descrip" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Field1" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Code_posta" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Longitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Latitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Addresse" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Centre_de" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Y" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_X" +msgstr "" + +#: engineecadastre Layer:1509 RoleNone +msgid "f_F1" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_IdAEV" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_X" +msgstr "X coordinate" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Moy2018" +msgstr "NO2 average (ug/m3)" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_Y" +msgstr "Y coordinate" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Localité" +msgstr "Locality" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_AGE" +msgstr "Number of years of green cover" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_FLAECHE_AR" +msgstr "Area (in are)" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_Allemands" +msgstr "German population" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_F__Alleman" +msgstr "Proportion of German people in %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_F__Afrique" +msgstr "Proportion of African people in %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_Afrique" +msgstr "African population" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_type_proprietaire" +msgstr "Type of owner" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_nom_proprietaire" +msgstr "Name of the owner" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_annee_inventaire" +msgstr "Year of the forest inventory" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_NO2_I1G" +msgstr "NO2 (ug/m3)" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_STR_NAME" +msgstr "Road" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_F__Portuga" +msgstr "Proportion of Portuguese people in %" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_Portugais" +msgstr "Portuguese population" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_Amérique" +msgstr "American population" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_F__Amériq" +msgstr "Proportion of American people in %" + +#: engineecadastre Layer:1532 RoleNone +msgid "f_CODE_LAU2" +msgstr "LAU2 Code" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Etranger" +msgstr "Foreign population" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__étrang" +msgstr "Proportion of foreign people in %" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Luxembourg" +msgstr "Luxembourgish population" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__luxembo" +msgstr "Proportion of Luxembourgish people in %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_F__Italien" +msgstr "Proportion of Italian people in %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_Italiens" +msgstr "Italian population" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_F__UE28" +msgstr "Proportion of European people (EU-28) in %" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_UE28" +msgstr "EU-28 population" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_Européens" +msgstr "European population (non EU-28)" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_F__non_UE" +msgstr "Proportion of European people (non EU-28) in %" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_Belges" +msgstr "Belgian population" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_F__Belges" +msgstr "Proportion of Belgian people in %" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_AsieOcéan" +msgstr "Asian and Oceania population" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_F__Asie_et" +msgstr "Proportion of Asian and Oceania people in %" + +#: engineecadastre Layer:1577 RoleNone +msgid "f_Population_com" +msgstr "Population per municipality" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_F__França" +msgstr "Proportion of French people in %" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_Français" +msgstr "French population" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_total_m_3" +msgstr "Population under 3 years of age" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_part_m_3" +msgstr "Proportion of population under 3 years of age in %" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_part_6_10" +msgstr "Proportion of population aged between 6 and 10 years in %" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_total_6_10" +msgstr "Population aged between 6 and 10 years" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_part_3_5" +msgstr "Proportion of population aged between 3 and 5 years in %" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_total_3_5" +msgstr "Population aged between 3 and 5 years" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_tot_11_17" +msgstr "Population aged between 11 and 17 years" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_part_11_17" +msgstr "Proportion of population aged between 11 and 17 years in %" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_p_75_89" +msgstr "Proportion of population aged between 75 and 89 years in %" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_t_75_89" +msgstr "Population aged between 75 and 89 years" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_t_90" +msgstr "Population aged 90 and over" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_p_90" +msgstr "Proportion of population aged 90 and over in %" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_dep_jeunes" +msgstr "Youth dependency ratio (0-19 years)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_pers_jeune" +msgstr "Young people (0-19 years)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_age_trav" +msgstr "People of working age (20-64 years)" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_rapp_j_a" +msgstr "Total dependency ratio" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_pers_agees" +msgstr "Elderly people (65+ years)" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibatai" +msgstr "Singles" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibat_1" +msgstr "Proportion of singles in %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e_1" +msgstr "Proportion of married people/in civil partnership living people (%) " + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e__" +msgstr "Married people/in civil partnership living people" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_e" +msgstr "Divorced/separated people" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_1" +msgstr "Proportion of divorced/separated people in %" + +#: engineecadastre Layer:1563 RoleNone +msgid "f_age_moyen" +msgstr "Average age (both sexes combined)" + +#: engineecadastre Layer:1562 RoleNone +msgid "f_age_h" +msgstr "Average age of men" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_moins20" +msgstr "Population under 20 years of age" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_p_moins20" +msgstr "Proportion of population under 20 years of age in %" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_a20_64" +msgstr "Population aged between 20 and 64 years" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_p20_64" +msgstr "Proportion of population aged between 20 and 64 years in %" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_pole_urbai" +msgstr "Urban centre" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_Population_villes" +msgstr "Population" + +#: engineecadastre Layer:1576 RoleNone +msgid "f_Population_can" +msgstr "Population per canton" + +#: engineecadastre Layer:1578 RoleNone +msgid "f_prop_f" +msgstr "Proportion of women in %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_nbre" +msgstr "Population born in Luxembourg " + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_nbre" +msgstr "Population born abroad" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_pourcent" +msgstr "Proportion of population born abroad in %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_pourcent" +msgstr "Proportion of population born in Luxembourg in %" + +#: engineecadastre Layer:1561 RoleNone +msgid "f_age_f" +msgstr "Average age of women" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veuve" +msgstr "Widowers/widows" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veu_1" +msgstr "Proportion of widowers/widows in %" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Annee_fusi" +msgstr "Date of entry into force of the municipality fusion" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Nouv_comm" +msgstr "Name of the municiality after the fusion" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Anc_comm" +msgstr "Name of the municipality before the fusion" + +#: engineecadastre Layer:1598 RoleNone +msgid "f_F__des_nai" +msgstr "Proportion of births inside the mariage (%) (2013-2017)" + +#: engineecadastre Layer:1599 RoleNone +msgid "f_Age_moyen" +msgstr "Average age of a mother at the birth (average 2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_24" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_d" +msgstr "Average number of deaths (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_20" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_21" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_22" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_23" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissances" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_na" +msgstr "Average birth rate (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F10" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F11" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_po" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_3" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne__1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_2" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_na" +msgstr "Average number of births (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_mo" +msgstr "Average death rate (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_4" +msgstr "" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Taux de solde naturel moyen (‰)" +msgstr "Rate of average natural balance (‰) (2013-2017)" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Solde_natu" +msgstr "Average natural balance (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Solde_mi_5" +msgstr "Average intern migratory balance (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Taux de solde migratoire interne moyen (‰)" +msgstr "Rate of average intern migratory balance (‰) (2013-2017)" + +#: engineecadastre Layer:1605 RoleNone +msgid "f_Taux de solde migratoire total moyen (‰)" +msgstr "Average total migratory balance (‰) (2013-2017)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Ital_" +msgstr "Italian is the main language (%)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Italienisc" +msgstr "Italian is the main language (people)" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_a64plus" +msgstr "Population aged 65 and over" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_p64plus" +msgstr "Proportion of population aged 65 and over in %" + +#: engineecadastre Layer:1604 RoleNone +msgid "f_Taux de solde migratoire international moyen (‰)" +msgstr "Rate of average international migratory balance (‰) (2013-2017)" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_t_65_74" +msgstr "Population aged between 65 and 17 years" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_p_65_74" +msgstr "Proportion of population aged between 65 and 74 years in %" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Taux_de__1" +msgstr "Average mariage rate (‰) (2013-2017)" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Mariages_1" +msgstr "Average number of mariages (2013-2017)" + +#: engineecadastre Layer:1607 RoleNone +msgid "f_Age moyen des femmes au mariage" +msgstr "Average age of women at mariage (average 2013-2017)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (1981)" +msgstr "Number of inhabitants in 1981" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Taux_acc" +msgstr "Growth rate of the population in % (1981-2018)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (2018)" +msgstr "Number of inhabitants in 2018" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Densité_d" +msgstr "Population density in 2018 (inhab./km2)" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Chiffres_a" +msgstr "Number of inhabitants in 2018" + +#: engineecadastre Layer:1608 RoleNone +msgid "f_Age moyen des hommes au mariage" +msgstr "Average age of men at mariage (average 2013-2017)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Luxemburgi" +msgstr "Luxembourgish is the main language (people)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Lux_" +msgstr "Luxembourgish is the main language (%)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Französis" +msgstr "French is the main language (people)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Fran_" +msgstr "French is the main language (%)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deutsch" +msgstr "German is the main language (people)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deu_" +msgstr "German is the main language (%)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Portugiesi" +msgstr "Portuguese is the main language (people)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Port_" +msgstr "Portuguese is the main language (%)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Englisch" +msgstr "English is the main language (people)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Eng_" +msgstr "English is the main language (%)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_sonstige" +msgstr "Other language is the main language (people)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_Sonstige_" +msgstr "Other language is the main language (%)" + +#: engineecadastre Layer:1582 RoleNone +msgid "f_dep_age" +msgstr "Old-age dependency ratio (65+ years)" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_MEASU" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_CREAT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ELEVATION" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_POINT_CLAS" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_IMG_DIRECT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_Y_WG" +msgstr "Y coordinate" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID_STRING" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REFERENCE_" +msgstr "Designation" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_X_WG" +msgstr "X coordinate" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REMARQUE" +msgstr "Designation" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID" +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/ngeo.po b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/ngeo.po new file mode 100644 index 000000000..009e22a7c --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/en/LC_MESSAGES/ngeo.po @@ -0,0 +1,370 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/filter/component.html:64 +msgid "+ Add a new criteria" +msgstr "+ Add a new criteria" + +#: src/routing/routing.html:47 +msgid "Add via" +msgstr "Add via" + +#: src/filter/component.js:181 +msgid "All" +msgstr "All" + +#: src/filter/rulecomponent.html:210 +msgid "Apply" +msgstr "Apply" + +#: src/filter/component.html:94 +msgid "Apply filter" +msgstr "Apply filter" + +#: src/filter/component.js:185 +msgid "At least one" +msgstr "At least one" + +#: src/filter/ruleComponent.js:200 +msgid "Begins at" +msgstr "Begins at" + +#: src/filter/rulecomponent.html:288 +msgid "Between" +msgstr "Between" + +#: src/filter/rulecomponent.html:214 +msgid "Cancel" +msgstr "Cancel" + +#: src/draw/Controller.js:71 +msgid "Circle" +msgstr "Circle" + +#: src/routing/routing.html:41 +msgid "Clear" +msgstr "Clear" + +#: src/googlestreetview/component.html:1 +msgid "Click on a road on the map to start StreetView." +msgstr "Click on a road on the map to start StreetView." + +#: src/interaction/MeasureLength.js:32 +msgid "Click to continue drawing the line." +msgstr "Click to continue drawing the line." + +#: src/interaction/MeasureArea.js:37 +msgid "Click to continue drawing the polygon." +msgstr "Click to continue drawing the polygon." + +#: src/editing/createfeatureComponent.js:193 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" +"Click to continue drawing
Double-click or click last point to finish" + +#: src/editing/createfeatureComponent.js:211 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" +"Click to continue drawing
Double-click or click starting point to finish" + +#: src/measure/length.js:43 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" +"Click to continue drawing
Double-click or click last point to finish" + +#: src/measure/area.js:41 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" +"Click to continue drawing
Double-click or click starting point to finish" + +#: src/measure/azimut.js:45 +msgid "Click to finish" +msgstr "Click to finish" + +#: src/editing/createfeatureComponent.js:210 +msgid "Click to start drawing area" +msgstr "Click to start drawing area" + +#: src/measure/azimut.js:44 +msgid "Click to start drawing circle" +msgstr "Click to start drawing circle" + +#: src/editing/createfeatureComponent.js:192 +msgid "Click to start drawing length" +msgstr "Click to start drawing length" + +#: src/measure/length.js:42 +msgid "Click to start drawing line" +msgstr "Click to start drawing line" + +#: src/measure/area.js:40 +msgid "Click to start drawing polygon" +msgstr "Click to start drawing polygon" + +#: src/message/Disclaimer.js:157 +msgid "Close" +msgstr "Close" + +#: src/filter/ruleComponent.js:196 src/filter/ruleComponent.js:197 +msgid "Contains" +msgstr "Contains" + +#: src/filter/component.html:12 +msgid "Criteria taken into account" +msgstr "Criteria taken into account" + +#: src/misc/datepickerComponent.html:6 +msgid "Date:" +msgstr "Date:" + +#: src/routing/routing.html:88 +msgid "Distance" +msgstr "Distance" + +#: src/interaction/MeasureLength.js:34 +msgid "Double-click or click last point to finish." +msgstr "Double-click or click last point to finish." + +#: src/interaction/MeasureArea.js:39 +msgid "Double-click or click starting point to finish." +msgstr "Double-click or click starting point to finish." + +#: src/filter/rulecomponent.html:113 +msgid "Draw a circle on the map" +msgstr "Draw a circle on the map" + +#: src/filter/rulecomponent.html:148 +msgid "Draw a circle on the map." +msgstr "Draw a circle on the map." + +#: src/filter/rulecomponent.html:90 +msgid "Draw a line on the map" +msgstr "Draw a line on the map" + +#: src/filter/rulecomponent.html:142 +msgid "Draw a line string on the map." +msgstr "Draw a line string on the map." + +#: src/filter/rulecomponent.html:78 +msgid "Draw a point on the map" +msgstr "Draw a point on the map" + +#: src/filter/rulecomponent.html:139 +msgid "Draw a point on the map." +msgstr "Draw a point on the map." + +#: src/filter/rulecomponent.html:102 +msgid "Draw a polygon on the map" +msgstr "Draw a polygon on the map" + +#: src/filter/rulecomponent.html:145 +msgid "Draw a polygon on the map." +msgstr "Draw a polygon on the map." + +#: src/filter/rulecomponent.html:124 +msgid "Draw a rectangle on the map" +msgstr "Draw a rectangle on the map" + +#: src/filter/rulecomponent.html:151 +msgid "Draw a rectangle on the map." +msgstr "Draw a rectangle on the map." + +#: src/routing/routing.html:79 +msgid "Duration" +msgstr "Duration" + +#: src/filter/ruleComponent.js:201 +msgid "During" +msgstr "During" + +#: src/filter/ruleComponent.js:202 +msgid "Ends at" +msgstr "Ends at" + +#: src/filter/rulecomponent.html:241 +msgid "From" +msgstr "From" + +#: src/misc/datepickerComponent.html:5 +msgid "From:" +msgstr "From:" + +#: src/geolocation/mobile.js:145 +msgid "Geolocation: An unknown error occurred." +msgstr "Geolocation: An unknown error occurred." + +#: src/filter/component.html:103 +msgid "Get data" +msgstr "Get data" + +#: src/filter/ruleComponent.js:198 +msgid "Intersects" +msgstr "Intersects" + +#: src/filter/ruleComponent.js:188 src/filter/ruleComponent.js:203 +msgid "Is equal to" +msgstr "Is equal to" + +#: src/filter/ruleComponent.js:189 +msgid "Is greater than" +msgstr "Is greater than" + +#: src/filter/ruleComponent.js:190 +msgid "Is greater than or equal to" +msgstr "Is greater than or equal to" + +#: src/filter/ruleComponent.js:199 +msgid "Is inside of" +msgstr "Is inside of" + +#: src/filter/ruleComponent.js:192 +msgid "Is lesser than" +msgstr "Is lesser than" + +#: src/filter/ruleComponent.js:193 +msgid "Is lesser than or equal to" +msgstr "Is lesser than or equal to" + +#: src/filter/ruleComponent.js:195 +msgid "Is not equal to" +msgstr "Is not equal to" + +#: src/draw/Controller.js:69 +msgid "LineString" +msgstr "LineString" + +#: src/geolocation/mobile.js:139 +msgid "Location information is unavailable." +msgstr "Location information is unavailable." + +#: src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "M/d/yyyy" + +#: src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "M/yyyy" + +#: src/filter/ruleComponent.js:869 +msgid "Move" +msgstr "Move" + +#: src/filter/component.js:189 +msgid "None" +msgstr "None" + +#: src/misc/File.js:52 +msgid "Operation canceled" +msgstr "Operation canceled" + +#: src/draw/Controller.js:68 +msgid "Point" +msgstr "Point" + +#: src/draw/Controller.js:70 +msgid "Polygon" +msgstr "Polygon" + +#: src/routing/routing.html:56 +msgid "Profile" +msgstr "Profile" + +#: src/misc/File.js:52 +msgid "Read failed" +msgstr "Read failed" + +#: src/draw/Controller.js:72 +msgid "Rectangle" +msgstr "Rectangle" + +#: src/routing/routing.html:44 +msgid "Reverse" +msgstr "Reverse" + +#: src/filter/ruleComponent.js:878 +msgid "Rotate" +msgstr "Rotate" + +#: src/routing/routing.html:75 +msgid "Route statistics" +msgstr "Route statistics" + +#: src/routing/routingfeature.html:5 +msgid "Search..." +msgstr "Search..." + +#: src/filter/component.html:72 +msgid "Spatial filter" +msgstr "Spatial filter" + +#: src/googlestreetview/component.html:7 +msgid "Street View data not found for this location." +msgstr "Street View data not found for this location." + +#: src/draw/Controller.js:73 +msgid "Text" +msgstr "Text" + +#: src/geolocation/mobile.js:142 +msgid "The request to get user location timed out." +msgstr "The request to get user location timed out." + +#: src/editing/attributescomponent.html:116 +msgid "This field is required" +msgstr "This field is required" + +#: src/misc/datepickerComponent.html:12 +msgid "To:" +msgstr "To:" + +#: src/misc/File.js:85 +msgid "Upload failed" +msgstr "Upload failed" + +#: src/geolocation/mobile.js:136 +msgid "User denied the request for Geolocation." +msgstr "User denied the request for Geolocation." + +#: src/filter/rulecomponent.html:290 +msgid "and" +msgstr "and" + +#: src/misc/filters.js:365 +msgid "day" +msgid_plural "days" +msgstr[0] "day" +msgstr[1] "days" + +#: src/misc/filters.js:362 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hour" +msgstr[1] "hours" + +#: src/misc/filters.js:359 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minute" +msgstr[1] "minutes" + +#: src/misc/filters.js:356 +msgid "second" +msgid_plural "seconds" +msgstr[0] "second" +msgstr[1] "seconds" + +#: src/filter/rulecomponent.html:243 +msgid "to" +msgstr "to" + +#: src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "yyyy" diff --git a/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-client.po b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-client.po similarity index 55% rename from geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-client.po rename to geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-client.po index c1021b203..55bf6a6cc 100644 --- a/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-client.po +++ b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-client.po @@ -2,20 +2,25 @@ # Translators: # Andrea Donno , 2015-2016 # Andrea Donno , 2015 -# Andrea Donno , 2015-2017 +# Andrea Donno , 2015-2018 # Andrea Donno , 2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 # eRenaud Michaëlis , 2016 # Francis Kaell , 2015-2016 # Jeff Konnen , 2015-2016 -# Jeff Konnen , 2016-2017 +# Jeff Konnen , 2016-2018 # Jeff Konnen , 2015 +# Loubnabarra , 2017 +# Loubnabarra , 2017 # Patrick Weber , 2015 # Patrick Weber , 2015-2016 msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:25+0000\n" -"Last-Translator: Jeff Konnen \n" +"PO-Revision-Date: 2019-01-09 13:24+0000\n" +"Last-Translator: dhorper \n" "Language-Team: French (http://www.transifex.com/geoportail/geoportailv3-lu/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,13 +38,13 @@ msgstr "Δ -" #: geoportailv3/static/js/externaldata/externaldata.html:2 msgid "+ Add external Wms" -msgstr "+ Ajouter WMS externe" +msgstr "+ Ajouter WM(T)S externe" -#: geoportailv3/templates/index.html:99 +#: geoportailv3/templates/index.html:131 msgid "+ Add layers" msgstr "+ Ajouter une couche" -#: geoportailv3/templates/index.html:15 +#: geoportailv3/templates/index.html:17 msgid "- Geoportal Luxembourg" msgstr "Geoportail Luxembourg" @@ -47,66 +52,75 @@ msgstr "Geoportail Luxembourg" msgid "- link from geoportail.lu" msgstr "Carte du geoportail.lu" -#: geoportailv3/static/js/mymaps/mymaps.html:20 +#: geoportailv3/static/js/mymaps/mymaps.html:21 msgid "Aucune description" msgstr "Aucune description" -#: geoportailv3/templates/index.html:154 +#: geoportailv3/templates/index.html:49 +msgid "" +"You are currently disconnected.\n" +" Enable offline mode\n" +" \n" +" You are currently offline." +msgstr "Vous êtes actuellement hors-ligne.\n Activer mode hors-ligne\n \n Vous êtes actuellement hors-ligne." + +#: geoportailv3/templates/index.html:188 msgid "" "A right click (tap and hold on mobile) will display information " "about the current location." msgstr "Un clic droit (appuyez et maintenez sur mobile) affiche des informations sur l'emplacement actuel." -#: geoportailv3/templates/index.html:157 +#: geoportailv3/templates/index.html:191 msgid "" "A short click (tap on mobile) on a map feature will select the " "feature and show more information." msgstr "Un clic court (tap sur mobile) sur une caractéristique de la carte permet de sélectionner la caractéristique et de montrer plus d'informations" -#: geoportailv3/templates/index.html:221 +#: geoportailv3/templates/index.html:294 msgid "A Propos" msgstr "A Propos" -#: geoportailv3/static/js/print/printdirective.js:209 +#: geoportailv3/static/js/print/printdirective.js:218 msgid "A0 landscape" msgstr "A0 paysage" -#: geoportailv3/static/js/print/printdirective.js:210 +#: geoportailv3/static/js/print/printdirective.js:219 msgid "A0 portrait" msgstr "A0 portrait" -#: geoportailv3/static/js/print/printdirective.js:207 +#: geoportailv3/static/js/print/printdirective.js:216 msgid "A1 landscape" msgstr "A1 paysage" -#: geoportailv3/static/js/print/printdirective.js:208 +#: geoportailv3/static/js/print/printdirective.js:217 msgid "A1 portrait" msgstr "A1 portrait" -#: geoportailv3/static/js/print/printdirective.js:205 +#: geoportailv3/static/js/print/printdirective.js:214 msgid "A2 landscape" msgstr "A2 paysage" -#: geoportailv3/static/js/print/printdirective.js:206 +#: geoportailv3/static/js/print/printdirective.js:215 msgid "A2 portrait" msgstr "A2 portrait" -#: geoportailv3/static/js/print/printdirective.js:203 +#: geoportailv3/static/js/print/printdirective.js:212 msgid "A3 landscape" msgstr "A3 paysage" -#: geoportailv3/static/js/print/printdirective.js:204 +#: geoportailv3/static/js/print/printdirective.js:213 msgid "A3 portrait" msgstr "A3 portrait" -#: geoportailv3/static/js/print/printdirective.js:201 +#: geoportailv3/static/js/print/printdirective.js:210 msgid "A4 landscape" msgstr "A4 paysage" -#: geoportailv3/static/js/print/printdirective.js:202 +#: geoportailv3/static/js/print/printdirective.js:211 msgid "A4 portrait" msgstr "A4 portrait" +#: geoportailv3/static/js/offlineNgeoComponent.html:12 #: geoportailv3/static/js/print/print.html:45 msgid "Abort" msgstr "Abandonner" @@ -115,15 +129,26 @@ msgstr "Abandonner" msgid "Access constraints :" msgstr "Contraintes d'utilisation" +#: geoportailv3/static/js/offlineNgeoComponent.html:31 +msgid "Activate offline mode" +msgstr "Activer mode hors-ligne" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:58 +msgid "Activer Google Streetview" +msgstr "Activer Google Street View" + #: geoportailv3/static/js/externaldata/externaldata.html:8 msgid "Add external data" msgstr "Ajouter des données externes" -#: geoportailv3/static/js/search/searchdirective.js:399 +#: geoportailv3/static/js/routing/routingdirective.js:249 +#: geoportailv3/static/js/search/searchdirective.js:447 msgid "Addresses" msgstr "Addresses" +#: geoportailv3/static/js/query/casiporeport.html:8 #: geoportailv3/static/js/query/pagreport.html:8 +#: geoportailv3/static/js/query/pdsreport.html:8 msgid "Adresse Email" msgstr "Adresse Email" @@ -135,27 +160,47 @@ msgstr "Adresse la plus proche" msgid "Affaire" msgstr "Affaire" -#: geoportailv3/templates/index.html:222 +#: geoportailv3/templates/index.html:111 +msgid "Afficher les modèles 3D" +msgstr "" + +#: geoportailv3/templates/index.html:295 msgid "Aide" msgstr "Aide" +#: geoportailv3/static/js/routing/routing.html:45 +msgid "Ajouter une étape" +msgstr "Ajouter une étape" + #: geoportailv3/static/js/draw/featurepopup.html:88 msgid "Ajouter vignette" msgstr "Ajouter vignette" -#: geoportailv3/static/js/draw/styleediting.html:113 -#: geoportailv3/static/js/draw/styleediting.html:99 +#: geoportailv3/static/js/locationinfo/locationinfo.html:37 +#: geoportailv3/static/js/search/search.html:16 +msgid "Ajouter étape à mon itinéraire" +msgstr "Ajouter étape à mon itinéraire" + +#: node_modules/ngeo/src/filter/component.js:154 +msgid "All" +msgstr "Tous" + +#: geoportailv3/static/js/draw/styleediting.html:100 +#: geoportailv3/static/js/draw/styleediting.html:114 msgid "Angle" msgstr "Angle" #: geoportailv3/static/js/askredirect/askredirect.html:10 #: geoportailv3/static/js/draw/featurepopup.html:116 #: geoportailv3/static/js/draw/featurepopup.html:136 -#: geoportailv3/static/js/draw/styleediting.html:120 -#: geoportailv3/static/js/mymaps/mymaps.html:171 -#: geoportailv3/static/js/mymaps/mymaps.html:185 -#: geoportailv3/static/js/mymaps/mymaps.html:199 -#: geoportailv3/static/js/mymaps/mymaps.html:294 +#: geoportailv3/static/js/draw/styleediting.html:121 +#: geoportailv3/static/js/mymaps/mymaps.html:137 +#: geoportailv3/static/js/mymaps/mymaps.html:151 +#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:210 +#: geoportailv3/static/js/mymaps/mymaps.html:305 +#: geoportailv3/static/js/query/info.html:11 msgid "Annuler" msgstr "Annuler" @@ -163,7 +208,11 @@ msgstr "Annuler" msgid "Area:" msgstr "Surface:" -#: geoportailv3/static/js/mymaps/mymaps.html:25 +#: node_modules/ngeo/src/filter/component.js:158 +msgid "At least one" +msgstr "" + +#: geoportailv3/static/js/mymaps/mymaps.html:26 msgid "Attention!" msgstr "Attention!" @@ -172,6 +221,10 @@ msgid "Aucun symbole disponible" msgstr "Aucun symbole disponible" #: geoportailv3/static/js/query/default.html:20 +#: geoportailv3/static/js/query/default_no_prefix.html:20 +#: geoportailv3/static/js/query/default_table.html:28 +#: geoportailv3/static/js/query/default_table_no_prefix.html:28 +#: geoportailv3/static/js/query/sentier_nature.html:19 msgid "Aucune information disponible pour cette couche" msgstr "Aucune information disponible pour cette couche" @@ -183,15 +236,15 @@ msgstr "Aucune légende n'est disponible pour les couches sélectionnées." msgid "Azimut" msgstr "Azimut" -#: geoportailv3/static/js/search/searchdirective.js:375 +#: geoportailv3/static/js/search/searchdirective.js:426 msgid "Background" msgstr "Arrière-fond" -#: geoportailv3/static/js/search/searchdirective.js:363 +#: geoportailv3/static/js/search/searchdirective.js:414 msgid "Background Layers" msgstr "Couches d'arrière-fond" -#: geoportailv3/static/js/exclusionmanagerservice.js:125 +#: geoportailv3/static/js/exclusionmanagerservice.js:127 msgid "" "Background has been deactivated because the layer {{layer}} cannot be " "displayed on top of it." @@ -201,45 +254,58 @@ msgstr "La carte d'arrière-fond a été désactivée car elle ne peut pas être msgid "Background layer:" msgstr "Couche de fond:" +#: node_modules/ngeo/src/filter/rulecomponent.js:171 +msgid "Begins at" +msgstr "" + #: geoportailv3/static/js/draw/featurepopup.html:96 -#: geoportailv3/static/js/mymaps/mymaps.html:155 +#: geoportailv3/static/js/mymaps/mymaps.html:347 +#: geoportailv3/static/js/offlineNgeoComponent.html:105 +#: geoportailv3/static/js/offlineNgeoComponent.html:123 +#: geoportailv3/static/js/offlineNgeoComponent.html:74 msgid "Cancel" msgstr "Annuler" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:462 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:573 msgid "Carte copiée" msgstr "Carte copiée" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:714 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:952 msgid "Carte créée" msgstr "Carte créée" -#: geoportailv3/static/js/mymaps/mymaps.html:38 +#: geoportailv3/static/js/mymaps/mymaps.html:39 msgid "Carte créée par" msgstr "Carte créée par" -#: geoportailv3/templates/index.html:90 +#: geoportailv3/templates/index.html:121 msgid "Catalog" msgstr "Catalogue" -#: geoportailv3/static/js/mymaps/mymaps.html:256 +#: geoportailv3/static/js/mymaps/mymaps.html:267 msgid "Catégorie" msgstr "Catégorie" -#: geoportailv3/static/js/imageupload/imguploaddirective.js:118 +#: geoportailv3/static/js/imageupload/imguploaddirective.js:116 msgid "Ce format d'image n'est as supporté." msgstr "Ce format d'image n'est pas supporté." -#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:71 +#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:72 msgid "Ce thème est protégé. Veuillez vous connecter." msgstr "Ce thème est protégé. Veuillez vous connecter." +#: geoportailv3/static/js/layerpermalinkservice.js:324 +msgid "" +"Certaines couches sont protégées. Veuillez vous connecter avec un " +"utilisateur disposant les droits de visualiser cette couche." +msgstr "Certaines couches sont protégées. Veuillez vous connecter avec un utilisateur disposant les droits de visualiser cette couche." + #: geoportailv3/static/js/themeswitcher/themes.html:4 msgid "Changer" msgstr "Changer" #: geoportailv3/static/js/draw/featurepopup.html:64 -#: geoportailv3/static/js/draw/styleediting.html:72 +#: geoportailv3/static/js/draw/styleediting.html:73 msgid "Changer sens de la ligne" msgstr "Changer le sens de la ligne" @@ -249,63 +315,88 @@ msgstr "Chargement des informations" #: geoportailv3/static/js/externaldata/externaldata.html:15 msgid "Choose or write a WMS url" -msgstr "Choisissez ou saisissez une URL WMS" +msgstr "Choisissez ou saisissez une URL WM(T)S" #: geoportailv3/static/js/draw/draw.html:23 -#: geoportailv3/static/js/draw/drawdirective.js:694 +#: geoportailv3/static/js/draw/drawdirective.js:760 +#: node_modules/ngeo/src/draw/Controller.js:70 msgid "Circle" msgstr "Cercle" -#: geoportailv3/static/js/measure/measuredirective.js:147 +#: geoportailv3/static/js/measure/measuredirective.js:143 msgid "" "Click to continue drawing the line
Double-click or click last point to " "finish" msgstr "Cliquez pour continuer à tracer la ligne
Double cliquez pour finaliser" -#: geoportailv3/static/js/measure/measuredirective.js:189 +#: geoportailv3/static/js/measure/measuredirective.js:185 msgid "" "Click to continue drawing the polygon
Double-click or click last point to" " finish" msgstr "Cliquez pour continuer à tracer le polygone
Double cliquez pour finaliser" -#: geoportailv3/static/js/draw/drawdirective.js:489 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:196 +#: node_modules/ngeo/src/measure/length.js:45 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" + +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:213 +#: node_modules/ngeo/src/measure/area.js:44 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:534 msgid "Click to draw the point" msgstr "Cliquez pour placer le point" -#: geoportailv3/static/js/measure/measuredirective.js:210 +#: geoportailv3/static/js/measure/measuredirective.js:206 +#: node_modules/ngeo/src/measure/azimut.js:48 msgid "Click to finish" msgstr "Cliquez pour finir" -#: geoportailv3/static/js/draw/drawdirective.js:507 +#: geoportailv3/static/js/draw/drawdirective.js:552 msgid "Click to place the label" msgstr "Cliquez pour placer l'étiquette" -#: geoportailv3/static/js/measure/measuredirective.js:188 +#: geoportailv3/static/js/measure/measuredirective.js:184 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:212 msgid "Click to start drawing area" msgstr "Cliquez pour commencer à mesurer une aire" -#: geoportailv3/static/js/measure/measuredirective.js:209 +#: geoportailv3/static/js/measure/measuredirective.js:205 msgid "Click to start drawing azimut" msgstr "Cliquez pour commencer à mesurer un azimut" -#: geoportailv3/static/js/draw/drawdirective.js:503 +#: geoportailv3/static/js/draw/drawdirective.js:548 +#: node_modules/ngeo/src/measure/azimut.js:47 msgid "Click to start drawing circle" msgstr "Cliquez pour commencer à dessiner un cercle" -#: geoportailv3/static/js/measure/measuredirective.js:165 +#: geoportailv3/static/js/measure/measuredirective.js:161 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:195 msgid "Click to start drawing length" msgstr "Cliquez pour commencer à mesurer une distance" -#: geoportailv3/static/js/draw/drawdirective.js:493 +#: node_modules/ngeo/src/measure/length.js:44 +msgid "Click to start drawing line" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:538 msgid "Click to start drawing line
Double-click to finish" -msgstr "Cliquez pour commencer à dessiner la ligne
Faites un double-clic pour terminer" +msgstr "Cliquez pour commencer à dessiner la ligne
Faites un double-clic ou ESC pour terminer.
Tapez ⌫ pour enlever le dernier point dessiné
Activez la coche \"suivre les routes\" pour faire coller votre ligne au réseau routier existant" + +#: node_modules/ngeo/src/measure/area.js:43 +msgid "Click to start drawing polygon" +msgstr "" -#: geoportailv3/static/js/draw/drawdirective.js:498 +#: geoportailv3/static/js/draw/drawdirective.js:543 msgid "" "Click to start drawing polygon
Double-click or click last point to finish" -msgstr "Cliquez pour commencer à dessiner le polygone
Faites une double-clic ou cliquez sur le dernier point pour terminer" +msgstr "Cliquez pour commencer à dessiner le polygone
Faites un double-clic, typez ESC ou cliquez sur le dernier point pour terminer
Tapez ⌫ pour enlever le dernier point dessiné" -#: geoportailv3/static/js/measure/measuredirective.js:146 +#: geoportailv3/static/js/measure/measuredirective.js:142 msgid "Click to start drawing profile" msgstr "Cliquez pour commencer à mesurer un profil" @@ -314,7 +405,15 @@ msgstr "Cliquez pour commencer à mesurer un profil" msgid "Cliquez dans l'image pour agrandir" msgstr "Cliquez dans l'image pour agrandir" -#: geoportailv3/static/js/externaldata/externaldata.html:34 +#: geoportailv3/static/js/routing/routing.html:99 +msgid "" +"Cliquez droit (ou appui long sur mobile) à un endroit sur la carte pour " +"ajouter rapidement une adresse." +msgstr "Faites un clic droit à un endroit sur la carte pour ajouter rapidement une adresse.\nSur mobile, cliquez simplement un peu plus longtemps" + +#: geoportailv3/static/js/externaldata/externaldata.html:36 +#: geoportailv3/static/js/offlineNgeoComponent.html:24 +#: node_modules/ngeo/src/message/Disclaimer.js:154 msgid "Close" msgstr "Fermer" @@ -325,15 +424,21 @@ msgstr "Fermer" msgid "Color" msgstr "Couleur" +#: geoportailv3/static/js/query/info.html:12 +msgid "Commander" +msgstr "Commander" + #: geoportailv3/static/js/query/mo.html:8 msgid "Commander fichier GML" msgstr "Commander fichier GML" +#: geoportailv3/static/js/query/casiporeport.html:16 #: geoportailv3/static/js/query/pagreport.html:16 +#: geoportailv3/static/js/query/pdsreport.html:12 msgid "Commander rapport" msgstr "Commander le rapport" -#: geoportailv3/static/js/query/parcels.html:12 +#: geoportailv3/static/js/query/parcels.html:24 msgid "Commander un extrait" msgstr "Commander un extrait" @@ -361,15 +466,16 @@ msgstr "Configurables" msgid "Confirmation de redirection" msgstr "Confirmation de redirection" -#: geoportailv3/static/js/mymaps/mymaps.html:193 +#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/mymaps/mymaps.html:173 msgid "Confirmation de suppression de la carte" msgstr "Confirmation de suppression de la carte" -#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:131 msgid "Confirmation de suppression des dessins" msgstr "Confirmation de suppression des dessins" -#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:145 msgid "Confirmation de suppression des éléments de la carte" msgstr "Confirmation de suppression des éléments de la carte" @@ -378,10 +484,15 @@ msgid "Constitution de dossier de mesurage" msgstr "Constitution de dossier de mesurage" #: geoportailv3/static/js/layerinfo/popup.html:23 -#: geoportailv3/templates/index.html:223 +#: geoportailv3/templates/index.html:296 msgid "Contact" msgstr "Contact" +#: node_modules/ngeo/src/filter/rulecomponent.js:167 +#: node_modules/ngeo/src/filter/rulecomponent.js:168 +msgid "Contains" +msgstr "" + #: geoportailv3/static/js/query/parcels.html:7 #: geoportailv3/static/js/query/parcels_go.html:7 #: geoportailv3/static/js/query/parcels_prof.html:7 @@ -396,14 +507,19 @@ msgstr "Continuer la ligne" msgid "Contrainte d'utilisation" msgstr "Contrainte d'utilisation" -#: geoportailv3/static/js/mymaps/mymaps.html:93 +#: geoportailv3/static/js/mymaps/mymaps.html:100 msgid "Copier dans ma carte" msgstr "Copier dans ma carte" -#: geoportailv3/templates/index.html:207 +#: geoportailv3/templates/index.html:277 msgid "Couches" msgstr "Couches" +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Couper une ligne" +msgstr "Couper une ligne" + #: geoportailv3/static/js/authentication/authentication.html:12 msgid "Create a new user account" msgstr "Créer un nouvel utilisateur " @@ -420,7 +536,7 @@ msgstr "Croquis" msgid "Croquis indisponible" msgstr "Croquis indisponible" -#: geoportailv3/static/js/mymaps/mymaps.html:263 +#: geoportailv3/static/js/mymaps/mymaps.html:274 msgid "Créateur carte" msgstr "Créateur carte" @@ -428,16 +544,16 @@ msgstr "Créateur carte" msgid "Créer cercle concentrique" msgstr "Créer cercle concentrique" -#: geoportailv3/static/js/mymaps/mymaps.html:48 +#: geoportailv3/static/js/mymaps/mymaps.html:49 msgid "Créer une copie" msgstr "Créer une copie" -#: geoportailv3/static/js/mymaps/mymaps.html:46 -#: geoportailv3/static/js/mymaps/mymaps.html:9 +#: geoportailv3/static/js/mymaps/mymaps.html:10 +#: geoportailv3/static/js/mymaps/mymaps.html:47 msgid "Créer une nouvelle carte" msgstr "Créer une nouvelle carte" -#: geoportailv3/static/js/mymaps/mymaps.html:95 +#: geoportailv3/static/js/mymaps/mymaps.html:102 msgid "Créer une nouvelle carte à partir de ces dessins" msgstr "Créer une nouvelle carte à partir de ces dessins" @@ -449,17 +565,25 @@ msgstr "Traitillé" msgid "Date" msgstr "Date" -#: geoportailv3/static/js/print/printdirective.js:561 +#: geoportailv3/static/js/print/printdirective.js:580 msgid "Date d'impression:" msgstr "Date d'impression:" +#: geoportailv3/static/js/offlineNgeoComponent.html:36 +msgid "Deactivate offline mode" +msgstr "Désactiver le mode hors-ligne" + +#: geoportailv3/static/js/offlineNgeoComponent.html:48 +msgid "Delete data" +msgstr "Effacer les données" + #: geoportailv3/static/js/query/parcels.html:11 #: geoportailv3/static/js/query/parcels_go.html:11 #: geoportailv3/static/js/query/parcels_prof.html:11 msgid "Dernier mesurage" msgstr "Dernier mesurage" -#: geoportailv3/static/js/mymaps/mymaps.html:270 +#: geoportailv3/static/js/mymaps/mymaps.html:281 msgid "Dernière Actualisation" msgstr "Dernière actualisation" @@ -468,7 +592,8 @@ msgid "Describe the problem within the current map extent:" msgstr "Veuillez décrire le problème avec l'extrait de carte courant:" #: geoportailv3/static/js/layerinfo/popup.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:149 +#: geoportailv3/static/js/mymaps/mymaps.html:341 +#: geoportailv3/static/js/query/lignes_bus.html:3 #: geoportailv3/static/js/query/mymaps.html:7 msgid "Description" msgstr "Description" @@ -481,27 +606,61 @@ msgstr "Description du service" msgid "Description du service :" msgstr "Description du service :" -#: geoportailv3/templates/index.html:229 +#: geoportailv3/templates/index.html:302 msgid "Dessin" msgstr "Dessin" -#: geoportailv3/static/js/mymaps/mymaps.html:86 +#: geoportailv3/static/js/mymaps/mymaps.html:93 msgid "Dessins" msgstr "Dessins" +#: geoportailv3/static/js/routing/routing.html:60 +msgid "Distance" +msgstr "Distance" + #: geoportailv3/static/js/locationinfo/locationinfo.html:25 msgid "Distance approximative" msgstr "Distance approximative" +#: geoportailv3/static/js/offlineNgeoComponent.html:117 +#: geoportailv3/static/js/offlineNgeoComponent.html:99 +msgid "Do you really want to remove your data ?" +msgstr "Voulez-vous vraiment effacer vos données?" + #: geoportailv3/static/js/draw/styleediting.html:61 msgid "Dotted" msgstr "Pointillé" +#: geoportailv3/static/js/query/tracing.html:7 +msgid "DownStream" +msgstr "DownStream" + #: geoportailv3/static/js/profile/profile.html:13 msgid "Draw a line on the map to display an elevation profile." msgstr "Tracez une ligne sur la carte pour afficher le profil d'élévation" -#: geoportailv3/static/js/print/printdirective.js:562 +#: node_modules/ngeo/src/filter/rulecomponent.js:172 +msgid "During" +msgstr "" + +#: geoportailv3/static/js/routing/routing.html:70 +msgid "Dénivelé lors de votre trajet" +msgstr "Dénivelé lors de votre trajet" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:44 +msgid "Désactiver Google Streetview" +msgstr "Désactiver Google Street View" + +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Désactiver mode couper une ligne" +msgstr "Désactiver mode couper une ligne" + +#: geoportailv3/static/js/routing/routing.html:75 +msgid "Détail de votre trajet" +msgstr "Détail de votre trajet" + +#: geoportailv3/static/js/print/printdirective.js:581 msgid "Echelle approximative 1:" msgstr "Echelle approximative 1:" @@ -509,13 +668,15 @@ msgstr "Echelle approximative 1:" msgid "Editer l'objet" msgstr "Editer l'objet" -#: geoportailv3/static/js/mymaps/mymaps.html:172 -#: geoportailv3/static/js/mymaps/mymaps.html:186 -#: geoportailv3/static/js/mymaps/mymaps.html:200 +#: geoportailv3/static/js/mymaps/mymaps.html:138 +#: geoportailv3/static/js/mymaps/mymaps.html:152 +#: geoportailv3/static/js/mymaps/mymaps.html:166 +#: geoportailv3/static/js/mymaps/mymaps.html:180 +#: geoportailv3/static/js/query/tracing.html:8 msgid "Effacer" msgstr "Effacer" -#: geoportailv3/static/js/mymaps/mymaps.html:94 +#: geoportailv3/static/js/mymaps/mymaps.html:101 msgid "Effacer tous les dessins" msgstr "Effacer tous les dessins" @@ -532,6 +693,13 @@ msgstr "Élévation: {{ ctrl.featureElevation }}" msgid "Email" msgstr "Email" +#: geoportailv3/static/js/query/casiporeport.html:12 +msgid "" +"En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " +"les conditions générales " +"d'utilisation de ce site web." +msgstr "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté les conditions générales d'utilisation de ce site web." + #: geoportailv3/static/js/query/pagreport.html:12 msgid "" "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " @@ -539,54 +707,67 @@ msgid "" "de ce site web." msgstr "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté les conditions générales d'utilisation de ce site web." -#: geoportailv3/static/js/mymapsservice.js:841 +#: geoportailv3/templates/index.html:51 +msgid "Enable offline mode" +msgstr "Activer mode hors-ligne" + +#: node_modules/ngeo/src/filter/rulecomponent.js:173 +msgid "Ends at" +msgstr "" + +#: geoportailv3/static/js/mymapsservice.js:929 msgid "Erreur inattendue lors de la copie de votre carte." msgstr "Erreur inattendue lors de la copie de votre carte." -#: geoportailv3/static/js/mymapsservice.js:799 +#: geoportailv3/static/js/mymapsservice.js:887 msgid "Erreur inattendue lors de la création de votre carte." msgstr "Erreur inattendue lors de la création de votre carte." -#: geoportailv3/static/js/mymapsservice.js:1014 -#: geoportailv3/static/js/mymapsservice.js:964 +#: geoportailv3/static/js/mymapsservice.js:1052 +#: geoportailv3/static/js/mymapsservice.js:1102 msgid "Erreur inattendue lors de la mise à jour de votre carte." msgstr "Erreur inattendue lors de la mise à jour de votre carte." -#: geoportailv3/static/js/mymapsservice.js:1053 -#: geoportailv3/static/js/mymapsservice.js:1092 +#: geoportailv3/static/js/mymapsservice.js:1144 +#: geoportailv3/static/js/mymapsservice.js:1183 +#: geoportailv3/static/js/mymapsservice.js:1222 msgid "Erreur inattendue lors de la sauvegarde de votre modification." msgstr "Erreur inattendue lors de la sauvegarde de votre modification." -#: geoportailv3/static/js/mymapsservice.js:757 +#: geoportailv3/static/js/mymapsservice.js:845 msgid "Erreur inattendue lors de la suppression d'un élement." msgstr "Erreur inattendue lors de la suppression d'un élement." -#: geoportailv3/static/js/mymapsservice.js:869 +#: geoportailv3/static/js/mymapsservice.js:957 msgid "Erreur inattendue lors de la suppression de votre carte." msgstr "Erreur inattendue lors de la suppression de votre carte." -#: geoportailv3/static/js/mymapsservice.js:898 +#: geoportailv3/static/js/mymapsservice.js:986 msgid "Erreur inattendue lors de la suppression des objets de la carte." msgstr "Erreur inattendue lors de la suppression des objets de la carte." -#: geoportailv3/static/js/mymapsservice.js:467 +#: geoportailv3/static/js/mymapsservice.js:545 msgid "Erreur inattendue lors du chargement de vos cartes." msgstr "Erreur inattendue lors du chargement de vos cartes." -#: geoportailv3/static/js/mymapsservice.js:549 -#: geoportailv3/static/js/mymapsservice.js:727 +#: geoportailv3/static/js/mymapsservice.js:628 +#: geoportailv3/static/js/mymapsservice.js:815 msgid "Erreur inattendue lors du chargement de votre carte." msgstr "Erreur inattendue lors du chargement de votre carte." -#: geoportailv3/static/js/mymaps/mymaps.html:196 +#: geoportailv3/static/js/mymaps/mymaps.html:162 msgid "Etes-vous certain de vouloir effacer la carte courrante ?" msgstr "Êtes-vous certain de vouloir effacer la carte courante ?" -#: geoportailv3/static/js/mymaps/mymaps.html:168 +#: geoportailv3/static/js/mymaps/mymaps.html:176 +msgid "Etes-vous certain de vouloir effacer la carte intitulée :" +msgstr "Etes-vous certain de vouloir effacer la carte intitulée :" + +#: geoportailv3/static/js/mymaps/mymaps.html:134 msgid "Etes-vous certain de vouloir effacer tous les dessins ?" msgstr "Êtes-vous certain de vouloir effacer tous les dessins ?" -#: geoportailv3/static/js/mymaps/mymaps.html:182 +#: geoportailv3/static/js/mymaps/mymaps.html:148 msgid "Etes-vous certain de vouloir effacer tous les éléments de la carte ?" msgstr "Etes-vous certain de vouloir effacer tous les éléments de la carte ?" @@ -595,22 +776,30 @@ msgid "Export csv" msgstr "Exporter un CSV" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter GPX" msgstr "Exporter un GPX" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter KMl" msgstr "Exporter un KML" #: geoportailv3/static/js/draw/featurepopup.html:61 -#: geoportailv3/static/js/mymaps/mymaps.html:56 +#: geoportailv3/static/js/mymaps/mymaps.html:59 msgid "Exporter un GPX" msgstr "Exporter un GPX" #: geoportailv3/static/js/draw/featurepopup.html:62 -#: geoportailv3/static/js/mymaps/mymaps.html:57 +#: geoportailv3/static/js/mymaps/mymaps.html:60 msgid "Exporter un KML" msgstr "Exporter un KML" @@ -618,32 +807,42 @@ msgstr "Exporter un KML" msgid "Facebook" msgstr "Facebook" -#: geoportailv3/templates/index.html:181 geoportailv3/templates/index.html:220 +#: geoportailv3/templates/index.html:231 geoportailv3/templates/index.html:293 msgid "Feedback" msgstr "Feedback" -#: geoportailv3/static/js/feedback/feedbackdirective.js:200 +#: geoportailv3/static/js/feedback/feedbackdirective.js:199 msgid "Feedback could not be sent to " msgstr "Votre feedback n'a pas pu être envoyé à " -#: geoportailv3/static/js/feedback/feedbackdirective.js:194 +#: geoportailv3/static/js/feedback/feedbackdirective.js:193 msgid "Feedback sent to " msgstr "Feedback envoyé à " #: geoportailv3/static/js/draw/symbolselector.html:102 -#: geoportailv3/static/js/mymaps/mymaps.html:54 +#: geoportailv3/static/js/mymaps/mymaps.html:57 msgid "Fermer" msgstr "Fermer" -#: geoportailv3/static/js/mymaps/mymaps.html:222 +#: geoportailv3/static/js/mymaps/mymaps.html:233 msgid "Filter results by category" msgstr "Filtrer résultats par catégorie " -#: geoportailv3/static/js/mymaps/mymaps.html:234 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:768 +#: geoportailv3/static/js/mymaps/mymaps.html:245 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1006 msgid "Filter results by username" msgstr "Filtrer résultat par nom d'utilisateur" +#: geoportailv3/static/js/mymaps/mymaps.html:211 +msgid "Fusionner" +msgstr "Fusionner" + +#: geoportailv3/static/js/mymaps/mymaps.html:103 +#: geoportailv3/static/js/mymaps/mymaps.html:188 +#: geoportailv3/static/js/mymaps/mymaps.html:54 +msgid "Fusionner des lignes" +msgstr "Fusionner des lignes" + #: geoportailv3/static/js/query/pcn_pag.html:7 msgid "Generer Rapport (peut prendre 30 sec)" msgstr "Générer rapport (peut prendre 30 sec)" @@ -652,6 +851,10 @@ msgstr "Générer rapport (peut prendre 30 sec)" msgid "Generer un rapport pour toutes les selections" msgstr "Générer un rapport pour toutes les sélections" +#: node_modules/ngeo/src/geolocation/mobile.js:148 +msgid "Geolocation: An unknown error occurred." +msgstr "" + #: geoportailv3/static/js/query/affaires.html:6 msgid "Geometre" msgstr "Géomètre" @@ -664,51 +867,136 @@ msgstr "Obtenir les couches" msgid "Google Plus" msgstr "Google Plus" +#: geoportailv3/static/js/offlineNgeoComponent.html:45 +msgid "Hide extent" +msgstr "Cacher l'étendue" + #: geoportailv3/static/js/authentication/authentication.html:11 msgid "I lost my password" msgstr "J'ai perdu mon mot de passe" +#: geoportailv3/static/js/query/tracing.html:4 +msgid "ID" +msgstr "ID" + +#: geoportailv3/static/js/query/pdsreport.html:1 +msgid "" +"Ici vous pouvez commander l'attestation \"plans directeurs sectoriels\" par " +"rapport au terrain séctionné" +msgstr "Ici vous pouvez commander l'attestation \"plans directeurs sectoriels\" par rapport au terrain séctionné" + #: geoportailv3/static/js/query/pagreport.html:1 msgid "" "Ici vous pouvez commander le rapport relatif aux règles urbanistiques " "applicables au terrain séctionné" msgstr "Ici vous pouvez commander le rapport relatif aux règles urbanistiques applicables au terrain séctionné" +#: geoportailv3/static/js/query/casiporeport.html:1 +msgid "" +"Ici vous pouvez commander le rapport relatif aux site potentiellement " +"contaminés" +msgstr "Ici vous pouvez commander le rapport relatif aux site potentiellement contaminés" + #: geoportailv3/static/js/query/pcn_pag.html:6 msgid "Identifiant" msgstr "Identifiant" -#: geoportailv3/static/js/mymaps/mymaps.html:58 -msgid "Importer un GPX" -msgstr "Importer un GPX" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1186 +msgid "Il faut au moins 2 lignes disponibles pour pouvoir les fusionner." +msgstr "Il faut au moins 2 lignes disponibles pour pouvoir les fusionner." -#: geoportailv3/static/js/mymaps/mymaps.html:59 -msgid "Importer un KML" -msgstr "Importer un KML" +#: geoportailv3/static/js/streetview/streetview.html:4 +msgid "Il n'y a pas de panorama google disponible à cet endroit" +msgstr "Il n'y a pas de panorama Google disponible à cet endroit" + +#: geoportailv3/static/js/mymaps/mymaps.html:61 +msgid "Importer un GPX/KML/KMZ" +msgstr "Importer un fichier GPX/KML/KMZ" #: geoportailv3/static/js/draw/symbolselector.html:100 msgid "Importer un symbole" msgstr "Importer un symbole" -#: geoportailv3/templates/index.html:244 +#: geoportailv3/static/js/wmsservice.js:114 +msgid "Impossible de contacter ce WMS" +msgstr "Impossible de contacter ce WM(T)S" + +#: geoportailv3/static/js/wmtsservice.js:98 +msgid "Impossible de contacter ce WMTS" +msgstr "Impossible de contacter ce WMTS" + +#: geoportailv3/templates/index.html:317 msgid "Imprimer" msgstr "Imprimer" -#: geoportailv3/templates/index.html:213 +#: geoportailv3/static/js/routing/routing.html:27 +msgid "Indiquez une adresse, un lieu" +msgstr "Indiquez une adresse, un lieu" + +#: geoportailv3/templates/index.html:283 msgid "Infos(*)" msgstr "Infos(*)" +#: geoportailv3/static/js/routing/routing.html:37 +msgid "Insérez rapidement" +msgstr "Insérez rapidement" + +#: node_modules/ngeo/src/filter/rulecomponent.js:169 +msgid "Intersects" +msgstr "" + #: geoportailv3/static/js/usermanagerservice.js:128 #: geoportailv3/static/js/usermanagerservice.js:135 msgid "Invalid username or password." msgstr "Nom d’utilisateur ou mot de passe non valides" +#: node_modules/ngeo/src/filter/rulecomponent.js:159 +#: node_modules/ngeo/src/filter/rulecomponent.js:174 +msgid "Is equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:160 +msgid "Is greater than" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:161 +msgid "Is greater than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:170 +msgid "Is inside of" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:163 +msgid "Is lesser than" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:164 +msgid "Is lesser than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:166 +msgid "Is not equal to" +msgstr "" + +#: geoportailv3/templates/index.html:95 +msgid "Itinéraire en détail" +msgstr "Itinéraire en détail" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:31 +msgid "Itinéraire mobilitéit.lu depuis ici" +msgstr "Itinéraire mobilitéit.lu depuis ici" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:32 +msgid "Itinéraire mobilitéit.lu vers ici" +msgstr "Itinéraire mobilitéit.lu vers ici" + #: geoportailv3/static/js/layerinfo/popup.html:22 msgid "Keywords" msgstr "Mots clé" -#: geoportailv3/static/js/mymapsservice.js:544 -#: geoportailv3/static/js/mymapsservice.js:722 +#: geoportailv3/static/js/mymapsservice.js:623 +#: geoportailv3/static/js/mymapsservice.js:810 msgid "La carte demandée n'existe pas." msgstr "La carte demandée n'existe pas." @@ -719,19 +1007,27 @@ msgid "" msgstr "La geolocalisation n'est disponible que dans la version sécurisée du Geoportail (https). Voulez-vous être automatiquement redirigé?" #: geoportailv3/static/js/draw/draw.html:8 -#: geoportailv3/static/js/draw/drawdirective.js:684 +#: geoportailv3/static/js/draw/drawdirective.js:735 msgid "Label" msgstr "Étiquette" -#: geoportailv3/static/js/search/searchdirective.js:435 +#: geoportailv3/static/js/search/searchdirective.js:485 msgid "Layers" msgstr "Layers" -#: geoportailv3/static/js/print/printdirective.js:563 +#: geoportailv3/static/js/print/printdirective.js:582 msgid "Le géoportail national du Grand-Duché du Luxembourg" msgstr "Le géoportail national du Grand-Duché du Luxembourg" -#: geoportailv3/templates/index.html:224 +#: geoportailv3/static/js/routing/routing.html:51 +msgid "Le plus court" +msgstr "Le plus court" + +#: geoportailv3/static/js/routing/routing.html:50 +msgid "Le plus rapide" +msgstr "Le plus rapide" + +#: geoportailv3/templates/index.html:297 msgid "Legalites" msgstr "Aspects légaux" @@ -739,7 +1035,7 @@ msgstr "Aspects légaux" msgid "Legend" msgstr "avec légende" -#: geoportailv3/templates/index.html:216 +#: geoportailv3/templates/index.html:286 msgid "Legends" msgstr "Légendes" @@ -751,7 +1047,7 @@ msgstr "Longueur" msgid "Length:" msgstr "Longeur:" -#: geoportailv3/static/js/mymaps/mymaps.html:26 +#: geoportailv3/static/js/mymaps/mymaps.html:27 msgid "" "Les couches sélectionnées dans le catalogue sont différentes de celles " "chargées avec votre carte. Voulez vous sauvegarder ces modifications dans " @@ -763,22 +1059,28 @@ msgstr "Les couches sélectionnées dans le catalogue sont différentes de celle #: geoportailv3/static/js/query/affaires.html:11 #: geoportailv3/static/js/query/asta_esp.html:6 #: geoportailv3/static/js/query/batiments.html:4 -#: geoportailv3/static/js/query/bus.html:6 +#: geoportailv3/static/js/query/bus.html:7 +#: geoportailv3/static/js/query/bus_wo_title.html:5 #: geoportailv3/static/js/query/cfl_hecto.html:4 #: geoportailv3/static/js/query/default.html:23 +#: geoportailv3/static/js/query/default_no_prefix.html:23 +#: geoportailv3/static/js/query/default_table.html:31 +#: geoportailv3/static/js/query/default_table_no_prefix.html:31 #: geoportailv3/static/js/query/flik.html:6 #: geoportailv3/static/js/query/inst_pub.html:5 #: geoportailv3/static/js/query/meteo.html:5 #: geoportailv3/static/js/query/mo.html:9 -#: geoportailv3/static/js/query/mymaps.html:14 +#: geoportailv3/static/js/query/mymaps.html:15 #: geoportailv3/static/js/query/ng95.html:9 #: geoportailv3/static/js/query/ont_poi.html:5 -#: geoportailv3/static/js/query/parcels.html:13 +#: geoportailv3/static/js/query/parcels.html:25 #: geoportailv3/static/js/query/parcels_go.html:26 #: geoportailv3/static/js/query/parcels_prof.html:25 #: geoportailv3/static/js/query/pcn_pag.html:8 +#: geoportailv3/static/js/query/pegel.html:5 #: geoportailv3/static/js/query/poi.html:4 #: geoportailv3/static/js/query/remembrements.html:6 +#: geoportailv3/static/js/query/sentier_nature.html:22 #: geoportailv3/static/js/query/urplang.html:8 #: geoportailv3/static/js/query/viti_flik.html:7 #: geoportailv3/static/js/query/viti_kleinlage.html:4 @@ -787,10 +1089,15 @@ msgstr "Les couches sélectionnées dans le catalogue sont différentes de celle msgid "Lien direct vers cet objet" msgstr "Lien direct vers cet objet" -#: geoportailv3/static/js/query/mymaps.html:13 +#: geoportailv3/static/js/query/mymaps.html:14 msgid "Lien vers la carte" msgstr "Lien vers la carte" +#: geoportailv3/static/js/locationinfo/locationinfo.html:28 +msgid "Lien vers la démo lidar" +msgstr "Lien vers la démo LIDAR" + +#: geoportailv3/static/js/query/parcels.html:12 #: geoportailv3/static/js/query/parcels_go.html:14 #: geoportailv3/static/js/query/parcels_prof.html:13 msgid "Lien vers les mesurages" @@ -806,7 +1113,8 @@ msgstr "Lieudit" msgid "Line" msgstr "Ligne" -#: geoportailv3/static/js/draw/drawdirective.js:690 +#: geoportailv3/static/js/draw/drawdirective.js:756 +#: node_modules/ngeo/src/draw/Controller.js:68 msgid "LineString" msgstr "Ligne" @@ -818,6 +1126,10 @@ msgstr "Lien vers les metadonnées" msgid "Location Coordinates" msgstr "Coordonnées de position" +#: node_modules/ngeo/src/geolocation/mobile.js:142 +msgid "Location information is unavailable." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:4 msgid "Login" msgstr "Nom d'utilisateur" @@ -834,6 +1146,19 @@ msgstr "Longeur" msgid "Longueur" msgstr "Longueur" +#: geoportailv3/static/js/query/sentier_nature.html:7 +msgid "Longueur du parcours" +msgstr "Longueur du parcours" + +#: node_modules/ngeo/src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "" + +#: node_modules/ngeo/src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "" + +#: geoportailv3/static/js/query/parcels.html:16 #: geoportailv3/static/js/query/parcels_go.html:18 #: geoportailv3/static/js/query/parcels_go.html:19 #: geoportailv3/static/js/query/parcels_prof.html:17 @@ -841,8 +1166,8 @@ msgstr "Longueur" msgid "MES_TYPE_{{file.filename | limitTo : 1 :5}}" msgstr "MES_TYPE_{{file.filename | limitTo : 1 :5}}" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:660 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:926 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1165 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:896 msgid "Map without Title" msgstr "Carte sans titre" @@ -854,12 +1179,13 @@ msgstr "Mes symboles" msgid "Mesurage" msgstr "Mesurage" +#: geoportailv3/static/js/query/parcels.html:19 #: geoportailv3/static/js/query/parcels_go.html:22 #: geoportailv3/static/js/query/parcels_prof.html:21 msgid "Mesurage non disponible" msgstr "Mesurage non disponible" -#: geoportailv3/templates/index.html:237 +#: geoportailv3/templates/index.html:310 msgid "Mesurer" msgstr "Mesurer" @@ -867,11 +1193,15 @@ msgstr "Mesurer" msgid "Modification des informations" msgstr "Modification des informations" -#: geoportailv3/static/js/mymaps/mymaps.html:123 +#: geoportailv3/static/js/mymaps/mymaps.html:315 msgid "Modify title and description of the map" msgstr "Modification du titre et de la description de la carte" -#: geoportailv3/templates/index.html:210 +#: node_modules/ngeo/src/filter/rulecomponent.js:826 +msgid "Move" +msgstr "" + +#: geoportailv3/templates/index.html:280 msgid "My Maps(*)" msgstr "My Maps(*)" @@ -880,7 +1210,7 @@ msgstr "My Maps(*)" msgid "My account" msgstr "Mon compte" -#: geoportailv3/static/js/elevationservice.js:50 +#: geoportailv3/static/js/elevationservice.js:47 msgid "N/A" msgstr "N/A" @@ -900,6 +1230,10 @@ msgstr "Nature" msgid "No layer selected" msgstr "Pas de couche sélectionnée" +#: geoportailv3/static/js/offlineNgeoComponent.html:86 +msgid "No maps selected for saving." +msgstr "Il n'y a pas de carte à sauvegarder" + #: geoportailv3/static/js/draw/symbolselector.html:20 #: geoportailv3/static/js/query/cfl_hecto.html:3 #: geoportailv3/static/js/query/remembrements.html:3 @@ -908,11 +1242,32 @@ msgstr "Pas de couche sélectionnée" msgid "Nom" msgstr "Nom" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:983 +#: node_modules/ngeo/src/filter/component.js:162 +msgid "None" +msgstr "Aucun" + +#: geoportailv3/static/js/mymaps/mymaps.html:194 +msgid "Nouveau nom" +msgstr "Nouveau nom" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1246 msgid "Nouvelle carte créée" msgstr "Nouvelle carte créée" +#: geoportailv3/static/js/mymaps/mymaps.html:199 +msgid "Nouvelle description" +msgstr "Nouvelle description" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1180 +msgid "Nouvelle ligne" +msgstr "Nouvelle ligne" + +#: geoportailv3/static/js/query/lignes_bus.html:3 +msgid "Num ligne" +msgstr "Numéro de ligne" + #: geoportailv3/static/js/query/affaires.html:4 +#: geoportailv3/static/js/query/tracing.html:3 #: geoportailv3/static/js/query/viti_parcels.html:3 msgid "Numero" msgstr "Numéro" @@ -935,7 +1290,7 @@ msgstr "Numéro cadastral" #: geoportailv3/static/js/draw/featurepopup.html:119 #: geoportailv3/static/js/draw/featurepopup.html:139 -#: geoportailv3/static/js/draw/styleediting.html:123 +#: geoportailv3/static/js/draw/styleediting.html:124 msgid "OK" msgstr "OK" @@ -949,8 +1304,23 @@ msgstr "Obtenir le fichier sous format pdf" msgid "Occupation" msgstr "Occupation" +#: geoportailv3/static/js/offlineNgeoComponent.html:27 +msgid "Offline map" +msgstr "Carte hors-ligne" + +#: geoportailv3/static/js/offlineNgeoComponent.html:100 +#: geoportailv3/static/js/offlineNgeoComponent.html:118 +#: geoportailv3/static/js/offlineNgeoComponent.html:69 +#: geoportailv3/static/js/offlineNgeoComponent.html:87 +msgid "Ok" +msgstr "OK" + +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Operation canceled" +msgstr "Opération annulée" + #: geoportailv3/static/js/askredirect/askredirect.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:29 +#: geoportailv3/static/js/mymaps/mymaps.html:30 msgid "Oui" msgstr "Oui" @@ -959,20 +1329,20 @@ msgstr "Oui" msgid "Ouvrir la PF" msgstr "Ouvrir la PF" -#: geoportailv3/static/js/mymaps/mymaps.html:208 +#: geoportailv3/static/js/mymaps/mymaps.html:219 #: geoportailv3/static/js/mymaps/mymaps.html:6 msgid "Ouvrir une carte" msgstr "Ouvrir une carte" -#: geoportailv3/static/js/mymaps/mymaps.html:47 +#: geoportailv3/static/js/mymaps/mymaps.html:48 msgid "Ouvrir une carte existante" msgstr "Ouvrir une carte existante" -#: geoportailv3/templates/index.html:249 +#: geoportailv3/templates/index.html:324 msgid "Partager" msgstr "Partager" -#: geoportailv3/static/js/mymaps/mymaps.html:49 +#: geoportailv3/static/js/mymaps/mymaps.html:50 msgid "Partager la carte" msgstr "Partager la carte" @@ -984,6 +1354,10 @@ msgstr "Mot de passe" msgid "Perimetre" msgstr "Périmètre" +#: geoportailv3/static/js/routing/routing.html:98 +msgid "Petite astuce!" +msgstr "Petite astuce!" + #: geoportailv3/static/js/feedback/feedback.html:9 msgid "Pick layer where problem occurs" msgstr "Veuillez sélectionner la couche contenant le problème" @@ -992,12 +1366,12 @@ msgstr "Veuillez sélectionner la couche contenant le problème" msgid "Plain" msgstr "Continu" -#: geoportailv3/static/js/feedback/feedbackdirective.js:111 -#: geoportailv3/static/js/feedback/feedbackdirective.js:134 +#: geoportailv3/static/js/feedback/feedbackdirective.js:110 +#: geoportailv3/static/js/feedback/feedbackdirective.js:133 msgid "Please pick a layer" msgstr "Veuillez sélectionner la couche" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:802 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1040 msgid "Please select a Category" msgstr "Veuillez choisir une catégorie" @@ -1006,18 +1380,20 @@ msgid "Please wait, the profile is loading." msgstr "Veuillez attendre, le profil est chargé" #: geoportailv3/static/js/draw/draw.html:3 -#: geoportailv3/static/js/draw/drawdirective.js:686 +#: geoportailv3/static/js/draw/drawdirective.js:737 +#: node_modules/ngeo/src/draw/Controller.js:67 msgid "Point" msgstr "Point" #: geoportailv3/static/js/draw/draw.html:18 -#: geoportailv3/static/js/draw/drawdirective.js:696 +#: geoportailv3/static/js/draw/drawdirective.js:765 +#: node_modules/ngeo/src/draw/Controller.js:69 msgid "Polygon" msgstr "Polygone" #: geoportailv3/static/js/externaldata/externaldata.html:14 msgid "Predefined wms" -msgstr "WMS prédéfinis" +msgstr "WM(T)S prédéfinis" #: geoportailv3/static/js/measure/measure.html:15 msgid "Profile" @@ -1027,7 +1403,11 @@ msgstr "Profil en long" msgid "Proprietaire" msgstr "Propriétaire" -#: geoportailv3/static/js/mymaps/mymaps.html:136 +#: geoportailv3/static/js/query/info.html:5 +msgid "Prévisualisation du mesurage" +msgstr "Prévisualisation du mesurage" + +#: geoportailv3/static/js/mymaps/mymaps.html:328 msgid "Public Map" msgstr "Carte publique" @@ -1040,7 +1420,11 @@ msgstr "Publics" msgid "Rayon:" msgstr "Rayon:" -#: geoportailv3/static/js/search/search.html:6 +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Read failed" +msgstr "" + +#: geoportailv3/static/js/search/search.html:8 msgid "Recherche adresse, parcelles, couches ..." msgstr "Recherche adresse, parcelles, couches" @@ -1048,6 +1432,10 @@ msgstr "Recherche adresse, parcelles, couches" msgid "Rechercher un symbole" msgstr "Rechercher un symbole" +#: node_modules/ngeo/src/draw/Controller.js:71 +msgid "Rectangle" +msgstr "" + #: geoportailv3/static/js/query/affaires.html:7 msgid "Region" msgstr "Région" @@ -1056,7 +1444,7 @@ msgstr "Région" msgid "Report a map content problem:" msgstr "Signaler un problème de contenu de carte:" -#: geoportailv3/static/js/mymaps/mymaps.html:28 +#: geoportailv3/static/js/mymaps/mymaps.html:29 msgid "Reset" msgstr "Reset" @@ -1068,17 +1456,34 @@ msgstr "Retirer vignette" msgid "Revision date" msgstr "Date de révision" -#: geoportailv3/static/js/mymaps/mymaps.html:156 -#: geoportailv3/static/js/mymaps/mymaps.html:157 -#: geoportailv3/static/js/mymaps/mymaps.html:158 +#: node_modules/ngeo/src/filter/rulecomponent.js:835 +msgid "Rotate" +msgstr "" + +#: geoportailv3/static/js/routing/routingdirective.js:1100 +msgid "Route du" +msgstr "Route du" + +#: geoportailv3/templates/index.html:215 geoportailv3/templates/index.html:289 +msgid "Routing" +msgstr "Itinéraire" + +#: geoportailv3/static/js/mymaps/mymaps.html:348 +#: geoportailv3/static/js/mymaps/mymaps.html:349 +#: geoportailv3/static/js/mymaps/mymaps.html:350 msgid "Save changes" msgstr "Sauvegarder changements" -#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/offlineNgeoComponent.html:11 +msgid "Save map" +msgstr "Sauvegarder carte" + +#: geoportailv3/static/js/mymaps/mymaps.html:351 +#: geoportailv3/static/js/offlineNgeoComponent.html:55 msgid "Save new map" msgstr "Sauvegarder nouvelle carte" -#: geoportailv3/static/js/mymaps/mymaps.html:213 +#: geoportailv3/static/js/mymaps/mymaps.html:224 msgid "Search Maps" msgstr "Chercher carte" @@ -1106,6 +1511,10 @@ msgstr "Partager seulement le lien « mes cartes »" msgid "Short Url" msgstr "Url" +#: geoportailv3/static/js/offlineNgeoComponent.html:46 +msgid "Show extent" +msgstr "Afficher étendue" + #: geoportailv3/static/js/share/shorturl.html:12 msgid "Show long url" msgstr "Montrer URL longue" @@ -1114,8 +1523,8 @@ msgstr "Montrer URL longue" msgid "Show orientation" msgstr "Afficher orientation" -#: geoportailv3/static/js/draw/styleediting.html:107 -#: geoportailv3/static/js/draw/styleediting.html:93 +#: geoportailv3/static/js/draw/styleediting.html:108 +#: geoportailv3/static/js/draw/styleediting.html:94 msgid "Size" msgstr "Taille" @@ -1141,11 +1550,15 @@ msgstr "Définissez le style de votre dessin" msgid "Submit" msgstr "Soumettre" -#: geoportailv3/static/js/mymaps/mymaps.html:51 +#: geoportailv3/static/js/draw/draw.html:34 +msgid "Suivre la route" +msgstr "Suivre les routes" + +#: geoportailv3/static/js/mymaps/mymaps.html:52 msgid "Supprimer la carte" msgstr "Supprimer la carte" -#: geoportailv3/static/js/mymaps/mymaps.html:52 +#: geoportailv3/static/js/mymaps/mymaps.html:53 msgid "Supprimer tous les élements de la carte" msgstr "Supprimer tous les élements de la carte" @@ -1156,11 +1569,15 @@ msgstr "Supprimer tous les élements de la carte" msgid "Surface" msgstr "Surface" -#: geoportailv3/static/js/draw/styleediting.html:78 +#: geoportailv3/static/js/mymaps/mymaps.html:8 +msgid "Switch to 2D to create a map" +msgstr "Passez en mode 2D pour créer une carte" + +#: geoportailv3/static/js/draw/styleediting.html:79 msgid "Symbol" msgstr "Symbole" -#: geoportailv3/static/js/draw/styleediting.html:81 +#: geoportailv3/static/js/draw/styleediting.html:82 msgid "" "Symbol\n" " \n" @@ -1173,17 +1590,25 @@ msgstr "Symbol\n map link " "will be sent to our support team." msgstr "Ce lien sera envoyé à l'équipe de support." -#: geoportailv3/static/js/exclusionmanagerservice.js:138 +#: geoportailv3/static/js/exclusionmanagerservice.js:140 msgid "" "The layer {{layersToRemove}} has been removed because it cannot be " "displayed while the layer {{layer}} is displayed" @@ -1201,6 +1626,10 @@ msgstr "Pas de légende disponible pour cette couche" msgid "The metadata is right now not available" msgstr "Les métadonnées ne sont pas accessibles pour le moment" +#: node_modules/ngeo/src/geolocation/mobile.js:145 +msgid "The request to get user location timed out." +msgstr "" + #: geoportailv3/static/js/themeswitcher/themes.html:2 msgid "Theme" msgstr "Thème" @@ -1209,20 +1638,20 @@ msgstr "Thème" msgid "Title" msgstr "Titre" -#: geoportailv3/static/js/mymaps/mymaps.html:124 -#: geoportailv3/static/js/mymaps/mymaps.html:126 +#: geoportailv3/static/js/mymaps/mymaps.html:316 +#: geoportailv3/static/js/mymaps/mymaps.html:318 msgid "Title and description of the map" msgstr "Titre et description de la carte" -#: geoportailv3/static/js/mymaps/mymaps.html:125 +#: geoportailv3/static/js/mymaps/mymaps.html:317 msgid "Title and description of the map copy" msgstr "Title and description of the map copie" -#: geoportailv3/static/js/mymaps/mymaps.html:249 +#: geoportailv3/static/js/mymaps/mymaps.html:260 msgid "Titre" msgstr "Titre" -#: geoportailv3/static/js/mymaps/mymaps.html:131 +#: geoportailv3/static/js/mymaps/mymaps.html:323 msgid "Titre de la carte" msgstr "Titre de la carte" @@ -1241,15 +1670,39 @@ msgstr "Twitter" msgid "Type" msgstr "Type" -#: geoportailv3/static/js/usermanagerservice.js:152 -#: geoportailv3/static/js/usermanagerservice.js:160 +#: geoportailv3/static/js/routing/routing.html:77 +msgid "Télécharger" +msgstr "Télécharger" + +#: geoportailv3/static/js/query/sentier_nature.html:9 +msgid "Télécharger la brochure" +msgstr "Télécharger la brochure" + +#: geoportailv3/static/js/routing/routingdirective.js:1120 +msgid "Une copie de votre route a été enregistrée dans Mymaps." +msgstr "Une copie de votre route a été enregistrée dans vos cartes (My Maps)" + +#: geoportailv3/static/js/usermanagerservice.js:153 +#: geoportailv3/static/js/usermanagerservice.js:161 msgid "Une erreur est survenue durant la déconnexion." msgstr "Une erreur est survenue durant la déconnexion." +#: geoportailv3/static/js/query/tracing.html:6 +msgid "UpStream" +msgstr "UpStream" + +#: node_modules/ngeo/src/misc/File.js:87 +msgid "Upload failed" +msgstr "" + #: geoportailv3/static/js/layerinfo/popup.html:18 msgid "Url vers la resource" msgstr "URL vers la ressource" +#: node_modules/ngeo/src/geolocation/mobile.js:139 +msgid "User denied the request for Geolocation." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:7 msgid "Username" msgstr "Nom d'utilisateur" @@ -1262,7 +1715,8 @@ msgstr "Valider" msgid "Valider" msgstr "Valider" -#: geoportailv3/static/js/query/reportdirective.js:131 +#: geoportailv3/static/js/query/reportdirective.js:135 +#: geoportailv3/static/js/query/reportdirective.js:275 msgid "Veuillez accepter les termes du rapport" msgstr "Veuillez accepter les termes du rapport" @@ -1274,28 +1728,64 @@ msgstr "Veuillez choisir un symbole dans une des catégories" msgid "Veuillez entrer les caractéristiques de votre nouveau cercle" msgstr "Veuillez entrer les caractéristiques de votre nouveau cercle" -#: geoportailv3/static/js/query/reportdirective.js:126 +#: geoportailv3/static/js/query/reportdirective.js:130 +#: geoportailv3/static/js/query/reportdirective.js:270 +#: geoportailv3/static/js/query/reportdirective.js:410 msgid "Veuillez saisir une adresse email valide" msgstr "Veuillez saisir une adresse email valide" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:1068 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1336 +#: geoportailv3/static/js/routing/routingdirective.js:1132 msgid "Veuillez vous identifier afin d'accéder à vos cartes" msgstr "Veuillez vous identifier afin d'accéder à vos cartes" -#: geoportailv3/static/js/query/reportdirective.js:138 +#: geoportailv3/static/js/query/tracing.html:6 +#: geoportailv3/static/js/query/tracing.html:7 +msgid "Visualiser" +msgstr "Visualiser" + +#: geoportailv3/templates/index.html:225 +msgid "Voir le plan" +msgstr "Voir le plan" + +#: geoportailv3/static/js/query/reportdirective.js:419 +msgid "" +"Votre attestation est en train d'être généré. Un email vous sera envoyé à " +"l'adresse {{email}} dès qu'il sera disponible" +msgstr "Votre attestation est en train d'être généré. Un email vous sera envoyé à l'adresse {{email}} dès qu'il sera disponible" + +#: geoportailv3/static/js/query/reportdirective.js:142 +#: geoportailv3/static/js/query/reportdirective.js:282 msgid "" "Votre rapport est en train d'être généré. Un email vous sera envoyé à " "l'adresse {{email}} dès qu'il sera disponible" msgstr "Votre rapport est en train d'être généré. Un email vous sera envoyé à l'adresse {{email}} dès qu'il sera disponible" -#: geoportailv3/static/js/mymapsservice.js:1106 +#: geoportailv3/static/js/mymapsservice.js:1236 msgid "Votre utilisateur n'a pas les autorisations suffisantes." msgstr "Votre utilisateur n'a pas les autorisations suffisantes." +#: geoportailv3/static/js/mymaps/mymapsdirective.js:451 +msgid "" +"Vous êtes en mode découpage.
Veuillez cliquer sur une ligne pour la " +"couper en deux." +msgstr "Vous êtes en mode découpage.
Veuillez cliquer sur une ligne pour la couper en deux." + #: geoportailv3/static/js/usermanagerservice.js:123 msgid "Vous êtes maintenant correctement connecté." msgstr "Vous êtes maintenant correctement connecté." +#: geoportailv3/static/js/offlineNgeoComponent.html:114 +#: geoportailv3/static/js/offlineNgeoComponent.html:65 +#: geoportailv3/static/js/offlineNgeoComponent.html:83 +#: geoportailv3/static/js/offlineNgeoComponent.html:96 +msgid "Warning" +msgstr "" + +#: geoportailv3/static/js/search/searchdirective.js:538 +msgid "Website Pages" +msgstr "" + #: geoportailv3/static/js/print/print.html:13 msgid "With legend" msgstr "Avec légende" @@ -1307,7 +1797,7 @@ msgid "" "send to the support team." msgstr "Vous pouvez aussi activer les outils de dessin pour dessiner sur la carte envoyée à l'équipe de support." -#: geoportailv3/static/js/mymaps/mymapsdirective.js:907 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1146 msgid "You have no existing Maps, please create a New Map" msgstr "Vous n'avez pas de carte existante. Veuillez créer une carte" @@ -1463,31 +1953,35 @@ msgstr "bâtiment complété à partir d'un survol aérien" msgid "blank" msgstr "Fond blanc" +#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 +msgid "f_formatted_length" +msgstr "" + #: geoportailv3/static/js/query/attribute_values_for_translation.html:128 msgid "f_percentage" msgstr "Pourcentage" -#: geoportailv3/templates/index.html:132 +#: geoportailv3/templates/index.html:164 msgid "infos" msgstr "Infos" -#: geoportailv3/templates/index.html:48 +#: geoportailv3/templates/index.html:70 msgid "lang" msgstr "Langue" -#: geoportailv3/templates/index.html:77 +#: geoportailv3/templates/index.html:104 msgid "layers" msgstr "Couches" -#: geoportailv3/templates/index.html:167 +#: geoportailv3/templates/index.html:201 msgid "legends" msgstr "légendes" -#: geoportailv3/templates/index.html:85 +#: geoportailv3/templates/index.html:116 msgid "my_layers" msgstr "Mes couches" -#: geoportailv3/templates/index.html:113 +#: geoportailv3/templates/index.html:145 msgid "my_maps" msgstr "My Maps" @@ -1496,7 +1990,7 @@ msgstr "My Maps" msgid "mètres" msgstr "mètres" -#: geoportailv3/static/js/search/searchdirective.js:448 +#: geoportailv3/static/js/search/searchdirective.js:498 msgid "open in theme" msgstr "ouvrir dans le thème " @@ -1560,10 +2054,6 @@ msgstr "bâtiment bdtopo" msgid "pf_bâtiment commercial" msgstr "bâtiment commercial" -#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 -msgid "pf_bâtiment non défini" -msgstr "Bâtiment non défini" - #: geoportailv3/static/js/query/attribute_values_for_translation.html:94 msgid "pf_bâtiment public" msgstr "bâtiment public" @@ -1860,7 +2350,7 @@ msgstr "forestier" msgid "rem_typ_5002" msgstr "viticole" -#: geoportailv3/templates/index.html:39 +#: geoportailv3/templates/index.html:57 msgid "search" msgstr "Recherche" @@ -1868,11 +2358,15 @@ msgstr "Recherche" msgid "sentier" msgstr "Sentier:" -#: geoportailv3/templates/index.html:41 +#: geoportailv3/templates/index.html:63 msgid "user" msgstr "Utilisateur" -#: geoportailv3/static/js/print/printdirective.js:560 +#: geoportailv3/static/js/routing/routing.html:37 +msgid "votre position actuelle" +msgstr "votre position actuelle" + +#: geoportailv3/static/js/print/printdirective.js:579 msgid "" "www.geoportail.lu est un portail d'accès aux informations géolocalisées, " "données et services qui sont mis à disposition par les administrations " @@ -1884,6 +2378,10 @@ msgid "" "Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" msgstr "www.geoportail.lu est un portail d'accès aux informations géolocalisées, données et services qui sont mis à disposition par les administrations publiques luxembourgeoises. Responsabilité: Malgré la grande attention qu’elles portent à la justesse des informations diffusées sur ce site, les autorités ne peuvent endosser aucune responsabilité quant à la fidélité, à l’exactitude, à l’actualité, à la fiabilité et à l’intégralité de ces informations. Information dépourvue de foi publique. \nDroits d'auteur: Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" +#: node_modules/ngeo/src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "" + #: geoportailv3/static/js/query/batiments.html:3 msgid "{{(\"bat_\"+feature.attributes.type) | translate}}" msgstr "{{(\"bat_\"+feature.attributes.type) | translate}}" @@ -1896,6 +2394,23 @@ msgstr "{{(\"rem_status_\"+feature.attributes.K_STATUS) | translate}}" msgid "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" msgstr "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" +#: geoportailv3/static/js/query/lignes_bus.html:6 +#: geoportailv3/static/js/query/lignes_bus.html:7 +#: geoportailv3/static/js/query/lignes_bus.html:8 +msgid "{{feature.attributes.label}}" +msgstr "" + +#: geoportailv3/static/js/query/lignes_bus.html:9 +msgid "{{feature.attributes.map_description}}" +msgstr "" + +#: geoportailv3/static/js/offlineNgeoComponent.html:68 +msgid "" +"~{{$ctrl.estimatedLoadDataSize}}MB of maps will be downloaded - Don't lock " +"your device or navigate away from this site during the download process. " +"Deactivate \"private\" mode of your browser." +msgstr "~{{$ctrl.estimatedLoadDataSize}}MB de cartes seront téléchargés - Ne verrouillez pas votre appareil et ne quittez pas le site pendant le processus de téléchargement. Désactivez aussi le mode \"privé\" de votre navigateur." + #: geoportailv3/static/js/draw/featurepopup.html:113 msgid "Êtes-vous certain de vouloir effacer cet élément de la carte ?" msgstr "Êtes-vous certain de vouloir effacer cet élément de la carte ?" @@ -1952,7 +2467,7 @@ msgstr "API" msgid "arbed" msgstr "ARBED" -#: theme.114 group.253 +#: theme.114 msgid "commande" msgstr "commune" @@ -2050,7 +2565,7 @@ msgstr "Orthophoto Préizerdaul" #: lu_int_wms.138 msgid "asta_esp_lisiere" -msgstr "lisière de forêt" +msgstr "Lisières de forêt" #: lu_int_wms.139 msgid "asta_esp_esp" @@ -2086,7 +2601,7 @@ msgstr "Natura 2000" #: lu_int_wms.147 msgid "arrets_bus" -msgstr "Transport en commun" +msgstr "Transport en commun - Arrêts" #: lu_ext_wms.148 msgid "user_content_vtt" @@ -2122,7 +2637,7 @@ msgstr "Carte topographique 1:20k 1979 N/B" #: lu_int_wms.157 msgid "env_bruit_air_lden" -msgstr "Aéroport 2011 (LDEN)" +msgstr "Grand aéroport 2011 (Lden)" #: lu_ext_wms.158 msgid "tour_cfl" @@ -2154,7 +2669,7 @@ msgstr "Adresses" #: group.166 msgid "env_bruit" -msgstr "Bruit" +msgstr "Bruit environnemental" #: lu_int_wms.167 msgid "env_corine" @@ -2208,10 +2723,6 @@ msgstr "Sentiers locaux (non entretenus par la DG Tourisme)" msgid "anf_secteurs_ecologiques_group" msgstr "Secteurs écologiques" -#: l_wmts.181 -msgid "roads" -msgstr "Réseau routier" - #: l_wmts.182 msgid "ac_wellenstein_pag_zones" msgstr "Zones" @@ -2306,7 +2817,7 @@ msgstr "Données météorologiques" #: lu_ext_wms.205 msgid "tour_escape_ardenne" -msgstr "EscapArdenne" +msgstr "Escapardenne" #: l_wmts.206 msgid "topo_20k" @@ -2344,9 +2855,9 @@ msgstr "Parcelles" msgid "eau_new_Provisorische_ZPS" msgstr "ZPS provisoires" -#: l_wmts.216 -msgid "decoupage_communes" -msgstr "Code commune" +#: theme.1388 +msgid "sig_secours" +msgstr "Secours" #: l_wmts.217 msgid "TOPO_CARTESHISTO_1966-74_50k" @@ -2486,7 +2997,7 @@ msgstr "My Maps" #: lu_ext_wms.250 msgid "tour_DeLux" -msgstr "Naturwanderpark DeLux" +msgstr "Naturwanderpark Delux" #: l_wmts.251 msgid "ign_ortho" @@ -2700,10 +3211,6 @@ msgstr "Carte géologique, nouvelle édition" msgid "tour_mymaps" msgstr "Chemins de randonnée" -#: lu_ext_wms.316 lu_int_wms.749 -msgid "env_sentiersnature" -msgstr "Sentiers nature" - #: group.317 msgid "eau_topographie" msgstr "Topographie" @@ -2742,7 +3249,7 @@ msgstr "Environnement, biologie et géologie" #: lu_int_wms.327 msgid "env_bruit_air_lngt" -msgstr "Aéroport 2011 (LNGT)" +msgstr "Grand aéroport 2011 (Lngt)" #: l_wmts.328 msgid "1907_CAHANSEN" @@ -2820,10 +3327,6 @@ msgstr "Toutes les cartes publiques de mon compte mère" msgid "all_my_maps" msgstr "Toutes mes cartes publiques" -#: l_wmts.351 -msgid "roads_labels" -msgstr "Noms de rue" - #: lu_int_wms.352 msgid "cfl_hecto" msgstr "Kilométrage des tracés CFL" @@ -2896,7 +3399,7 @@ msgstr "Districts (Noms)" msgid "country" msgstr "Frontières" -#: lu_int_wms.256 +#: lu_int_wms.256 lu_int_wms.822 msgid "feuilles_cadastrales" msgstr "Feuilles cadastrales historiques" @@ -2910,23 +3413,23 @@ msgstr "Lieux-dits accessoires du vignoble" #: lu_int_wms.297 msgid "ivv_flik_parcels" -msgstr "Parcelles FLIK viticoles 2016" +msgstr "Parcelles FLIK viticoles 2017" #: l_wmts.326 msgid "env_bruit_axes_routiers_lden" -msgstr "Réseau routier 2011 (LDEN)" +msgstr "Routes principales 2011 (Lden)" #: l_wmts.255 msgid "env_bruit_axes_routiers_lngt" -msgstr "Réseau routier 2011 (LNGT)" +msgstr "Routes principales 2011 (Lngt)" #: l_wmts.259 msgid "env_bruit_axes_ferroviaires_lngt" -msgstr "Réseau ferroviaire 2011 (LNGT)" +msgstr "Chemins de fer principaux 2011 (Lngt)" #: l_wmts.310 msgid "env_bruit_axes_ferroviaires_lden" -msgstr "Réseau ferroviaire 2011 (LDEN)" +msgstr "Chemins de fer principaux 2011 (Lden)" #: lu_int_wms.367 msgid "natur_an_emwelt_terrains" @@ -2952,6 +3455,10 @@ msgstr "Eléments ponctuels" msgid "emwelt_biotop_kadaster_s" msgstr "Vergers" +#: group.253 +msgid "commande_grp" +msgstr "Commande" + #: group.373 msgid "eau_new_Trinkwasser_Schutzzonen_(ZPS)" msgstr "Zones de protection d'eau potable [ZPS]" @@ -3030,15 +3537,15 @@ msgstr "Gallo-Romain" #: group.392 msgid "at_pst" -msgstr "PS Transports" +msgstr "PDS Transports" #: group.393 msgid "at_pszae" -msgstr "PS Zones d'activités économiques" +msgstr "PDS Zones d'activités économiques" #: group.394 msgid "at_ps" -msgstr "Plans sectoriels (PS)" +msgstr "Projets de plans directeurs sectoriels (PDS)" #: lu_int_wms.395 msgid "at_psp_gep" @@ -3054,7 +3561,7 @@ msgstr "Zones multifonctionnelles (totalité)" #: group.398 msgid "at_psp" -msgstr "PS Paysages" +msgstr "PDS Paysages" #: group.399 msgid "at_psp_zm" @@ -3062,15 +3569,15 @@ msgstr "Zones multifonctionnelles" #: group.400 msgid "at_psl" -msgstr "PS Logement" +msgstr "PDS Logement" #: lu_int_wms.401 msgid "at_psl1" -msgstr "Zones pour projets d’envergure destinés à l'habitat" +msgstr "Zones prioritaires d’habitation" #: lu_int_wms.402 msgid "at_pszae2" -msgstr "Nouvelles ZAE et extensions" +msgstr "ZAE projetées" #: lu_int_wms.403 msgid "at_pszae3" @@ -3094,7 +3601,7 @@ msgstr "ZAE existantes" #: lu_int_wms.408 msgid "at_pst2" -msgstr "Couloirs réservés" +msgstr "Couloirs et zones superposés" #: lu_int_wms.409 msgid "at_psp_zvi" @@ -3108,18 +3615,6 @@ msgstr "Projets PST" msgid "ng" msgstr "Points de référence altimétriques" -#: l_wmts.412 -msgid "wg_hangneigung_map" -msgstr "Pente °" - -#: l_wmts.413 -msgid "wg_relief_map" -msgstr "Relief" - -#: l_wmts.414 -msgid "wg_exposition_map" -msgstr "Exposition" - #: l_wmts.415 msgid "wg_hohenlinien_10m_map" msgstr "Courbes de niveau 10m" @@ -3258,15 +3753,15 @@ msgstr "Parcelles cadastrales (Numéros)" #: group.450 msgid "eau_new_Gewaessernetz" -msgstr "Hydrographie" +msgstr "Réseau hydrographique" #: group.451 msgid "eau_new_Fischerei" msgstr "Service pêche" -#: group.452 -msgid "eau_new_Projekt_Hochwasserrisikokarten_2013" -msgstr "Cartes des risques d'inondation" +#: lu_int_wms.1387 +msgid "logt_bauluecken_2016_restricted" +msgstr "Baulücken 2016" #: group.453 msgid "eau_new_Messstationen" @@ -3284,9 +3779,9 @@ msgstr "Parcelles OLOS" msgid "topo_decoupage_5000_ed2015" msgstr "Découpage plan topographique 1:5000 édition 2015" -#: group.458 -msgid "eau_new_Risikobeurteilung_2021" -msgstr "Evaluation du risque 2021" +#: group.1389 +msgid "secours_act" +msgstr "ACT" #: group.459 msgid "eau_new_Oberflaechengewaesser_2021" @@ -3300,9 +3795,9 @@ msgstr "Stations climatologiques" msgid "eau_new_Historische_Ueberschwemmungsgebiete" msgstr "Crues historiques" -#: group.462 -msgid "eau_new_Projekt_Hochwassergefahrenkarten_2013" -msgstr "Cartes des zones inondables" +#: group.1391 +msgid "secours_age" +msgstr "AGE" #: group.463 msgid "eau_new_Zusaetzliche_Informationen" @@ -3318,7 +3813,7 @@ msgstr "Stations de mesures [DCE]" #: group.466 msgid "eau_new_Qualitaetskomponenten_des_oekologischen_Zustands_2015" -msgstr "éléments de qualité de l'état écologique 2015" +msgstr "Eléments de qualité de l'état écologique 2015" #: group.467 msgid "eau_new_Grundwasser_2021" @@ -3346,7 +3841,7 @@ msgstr "Stations eaux de surface" #: group.473 msgid "eau_new_Grundwasser_Messstationen" -msgstr "Stations Eau souterraine" +msgstr "Stations eaux souterraine" #: group.474 msgid "eau_new_Wasserrahmenrichtlinie" @@ -3378,7 +3873,7 @@ msgstr "Plan de gestion 2015" #: lu_int_wms.481 msgid "eau_new_Erhoehte_Trinkwasserknappheit_(Zustand_rot)" -msgstr "Aggravation pénurie eau potable ( phase \"rouge\")" +msgstr "Aggravation pénurie eau potable (phase \"rouge\")" #: group.482 msgid "eau_new_Nitratrichtlinie" @@ -3388,17 +3883,17 @@ msgstr "Directive Nitrates" msgid "eau_new_Grundwasser" msgstr "Eau souterraine" -#: group.484 -msgid "eau_new_Gewaesser" -msgstr "Cours d'eau" +#: lu_int_wms.1396 +msgid "siden_eaux_usees_dom_ind_sep" +msgstr "Eaux usées domestiques, industriels et séparatifs" #: group.485 msgid "eau_new_Hydrologische_Messstationen" msgstr "Stations hydrologiques" -#: group.486 -msgid "eau_new_Ueberschwemmungsgebiete_(UESG)" -msgstr "Zones inondables [Z.i.]" +#: lu_int_wms.1398 +msgid "siden_couvercles_regard" +msgstr "Couvercles de regard" #: group.487 msgid "eau_new_Stehende_Gewaesser_(usage_interne)" @@ -3412,9 +3907,9 @@ msgstr "Cartes historiques" msgid "tourisme_poi" msgstr "Points d'intérêt de l'ONT" -#: lu_int_wms.490 -msgid "eau_new_Sanitaere_Schutzzonen_Stausee" -msgstr "Zones de protection sanitaires du réservoir" +#: lu_int_wms.1400 +msgid "siden_eaux_usees_mixtes" +msgstr "Eaux usées mixtes" #: lu_int_wms.491 msgid "eau_new_Intensitaet_-_HQ_extrem_(usage_interne)" @@ -3424,6 +3919,14 @@ msgstr "Intensité crue extrême" msgid "eau_new_Gefaehrdete_Gebiete_(Nitratrichtlinie)" msgstr "Zones vulnérables [Directives Nitrates]" +#: lu_int_wms.153 +msgid "communes_cadastrales" +msgstr "Communes cadastrales" + +#: group.1404 +msgid "sebes_zones_protection" +msgstr "Zones de protection" + #: lu_int_wms.493 msgid "eau_new_Oberflaechenwasserabhaengige_Oekosysteme" msgstr "Biotopes terr. dép. d'eau de surface" @@ -3518,7 +4021,7 @@ msgstr "Banques" #: lu_int_wms.517 msgid "logt_bauluecken" -msgstr "Baulücken" +msgstr "Baulücken (toutes les communes)" #: group.518 msgid "logt" @@ -3556,10 +4059,6 @@ msgstr "Parcelles FLIK 2016" msgid "parcels_labels_go" msgstr "Parcelles cadastrales (Numéros)" -#: l_wmts.527 -msgid "asta_flik_parcels_2016" -msgstr "Parcelles FLIK 2016" - #: group.528 msgid "bglayers" msgstr "Arrière-fonds" @@ -3724,9 +4223,9 @@ msgstr "Classes des dangers" msgid "eau_new_Stausee_Sauer" msgstr "Lac de la Haute Sûre" -#: lu_int_wms.570 -msgid "eau_new_Grundwasser_(Nitratrichtlinie)" -msgstr "Eau souterraine [Directive Nitrates]" +#: l_wmts.527 +msgid "asta_flik_parcels" +msgstr "Parcelles FLIK 2018" #: lu_int_wms.571 msgid "eau_new_Kuenstliche_(Bassin)_(usage_interne)" @@ -3774,7 +4273,7 @@ msgstr "Eaux de baignade - qualité" #: lu_int_wms.582 msgid "eau_new_Messstationen_Grundwasser_-_Nitratrichtlinie" -msgstr "Monitoring eaux souterraines - Directive Nitrates" +msgstr "Concentrations en nitrates des eaux souterraines" #: lu_int_wms.583 msgid "eau_new_Physiko-Chemie_2015" @@ -3792,17 +4291,13 @@ msgstr "Etat global 2009" msgid "eau_new_Chemischer_Zustand_2009" msgstr "Etat chimique 2009" -#: lu_int_wms.587 -msgid "eau_new_Primaere_Gewaesser" -msgstr "Cours d'eau primaires" - #: lu_int_wms.588 msgid "eau_new_Typologie_Gewaesser_2015" msgstr "Types de cours d'eau 2015 " #: lu_int_wms.589 msgid "eau_new_Messstationen_Oberflaechengewaesser_-_Nitratrichtlinie" -msgstr "Monitoring eaux de surface - Directive Nitrates" +msgstr "Concentrations en nitrates des eaux de surface" #: lu_int_wms.590 msgid "eau_new_Hydromorphologischer_Zustand_2015" @@ -3840,10 +4335,6 @@ msgstr "Z.i. crue décennale" msgid "eau_new_Trinkwasserbehaelter" msgstr "Réservoirs d'eau potable" -#: lu_int_wms.599 -msgid "eau_new_Kilometrierung_sekundaere_Gewaesser" -msgstr "Kilométrage cours d'eau secondaires" - #: lu_int_wms.709 msgid "pag_ssmn" msgstr "Données des sites et monuments" @@ -3914,7 +4405,7 @@ msgstr "Radiation globale" #: lu_int_wms.617 msgid "eau_new_Trinkwasserknappheit_(Zustand_orange)" -msgstr "Pénurie eau potable ( phase \"orange\")" +msgstr "Pénurie eau potable (phase \"orange\")" #: lu_int_wms.618 msgid "eau_new_Wassertiefe_-_HQ_100_(usage_interne)" @@ -3922,16 +4413,12 @@ msgstr "Profondeur crue centennale" #: lu_int_wms.619 msgid "eau_new_Betrachtungsraeume_2015" -msgstr "Surfaces tributaires 2015" +msgstr "Zones d'étude 2015" #: lu_int_wms.620 msgid "eau_new_Bodentemperatur" msgstr "Température du sol" -#: lu_int_wms.621 -msgid "eau_new_Chemischer_Zustand_2015" -msgstr "Etat chimique 2015" - #: lu_int_wms.622 msgid "eau_new_Oekologischer_Zustand_2015" msgstr "Etat écologique 2015" @@ -3940,21 +4427,13 @@ msgstr "Etat écologique 2015" msgid "eau_new_Temporaer_fliessende_Baeche" msgstr "Cours d'eau tertiaires" -#: lu_int_wms.624 -msgid "eau_new_Kilometrierung_primaere_Gewaesser" -msgstr "Kilométrage cours d'eau primaires" - -#: lu_int_wms.625 -msgid "eau_new_Sekundaere_Gewaesser" -msgstr "Cours d'eau secondaires" - #: lu_int_wms.626 msgid "eau_new_Fischereiabschnitte" msgstr "Sections de pêche" #: lu_int_wms.627 msgid "eau_new_WRRL_-_Ueberblicksueberwachung" -msgstr "DCE - Contôle de surveillance" +msgstr "DCE - Contrôle de surveillance" #: lu_int_wms.628 msgid "eau_new_Bohrungen" @@ -3980,10 +4459,6 @@ msgstr "Etat chimique des ME souterraine 2015" msgid "eau_new_UESG_Sauer_1995" msgstr "Z.i. Sûre 1995" -#: lu_int_wms.634 -msgid "eau_new_Erheblich_veraenderte_OWK_2009" -msgstr "MES fortement modifiées 2009" - #: lu_int_wms.635 msgid "eau_new_Natuerliche_(Bassin)_(usage_interne)" msgstr "Bassin naturel" @@ -4060,10 +4535,6 @@ msgstr "Forages pompes à chaleur" msgid "eau_new_Alluvialer_Grundwasserspiegel" msgstr "Niveau de la nappe alluviale" -#: lu_int_wms.654 -msgid "eau_new_Nitratrichtlinie_Messstationen" -msgstr "Directive Nitrates" - #: lu_int_wms.655 msgid "eau_new_Wasserstand" msgstr "Niveau d'eau" @@ -4076,24 +4547,10 @@ msgstr "Eaux de baignade" msgid "eau_new_Zustand_der_WK_2009" msgstr "Etat des ME souterraine 2009" -#: lu_int_wms.658 -msgid "eau_new_Erheblich_veraenderte_WK_2015" -msgstr "ME fortement modifiées 2015" - #: lu_int_wms.659 msgid "eau_new_Grundwasserkoerper_2015" msgstr "Masses d'eau souterraine 2015" -#: lu_int_wms.660 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_chemischen_Zustandes" -msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état chimique" - -#: lu_int_wms.661 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_mengenmaessigen_Zustandes" -msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état quantitatif" - #: lu_int_wms.662 msgid "eau_new_Makrophyten_2015" msgstr "Macrophytes et phytobenthos 2015" @@ -4164,11 +4621,11 @@ msgstr "Stations biologiques" #: lu_int_wms.679 msgid "logt_bauluecken_restricted" -msgstr "Baulücken (restricted)" +msgstr "Baulücken 2013 (plus de feedback nécessaire)" #: lu_int_wms.680 msgid "aev_decharges" -msgstr "Décharges" +msgstr "Décharges (Internal)" #: lu_ext_wms.681 msgid "tour_moto" @@ -4252,7 +4709,7 @@ msgstr "Fond de plan (staging)" #: lu_ext_wms.701 msgid "logt_baul_feedback" -msgstr "Baulücken-Feedback" +msgstr "Baulücken-Feedback 2016" #: lu_int_wms.702 msgid "asta_pedologie_new" @@ -4302,10 +4759,6 @@ msgstr "Emplacements des radars fixes" msgid "pag_pap_approuves_staging" msgstr "PAP approuvés (staging)" -#: lu_int_wms.715 -msgid "parcels_daily" -msgstr "Parcelles cadastrales" - #: group.716 msgid "pag_at" msgstr "Aménagement du territoire" @@ -4330,9 +4783,9 @@ msgstr "Gestion de l'eau" msgid "cantons_labels" msgstr "Cantons (Noms)" -#: lu_int_wms.153 -msgid "communes_cadastrales" -msgstr "Communes cadastrales" +#: lu_int_wms.715 +msgid "parcels_daily_old" +msgstr "" #: lu_int_wms.302 msgid "communes" @@ -4356,7 +4809,7 @@ msgstr "Carte climatique du vignoble" #: lu_int_wms.510 msgid "ivv_parcels" -msgstr "Parcelles viticoles 2016" +msgstr "Parcelles viticoles 2017" #: l_wmts.420 msgid "eau_new_HQ100_mittlere_Wahrscheinlichkeit" @@ -4388,7 +4841,7 @@ msgstr "Nouvelles ZAE et extensions - Tests" #: lu_ext_wms.725 msgid "tour_tdl" -msgstr "Skoda Tour de Luxembourg 2016" +msgstr "Skoda Tour de Luxembourg 2018" #: group.727 msgid "contrats biodiversité MDDI" @@ -4430,10 +4883,6 @@ msgstr "Grille UTM" msgid "Catastrophe naturelle 22/07/16 (informations protégées)" msgstr "Catastrophe naturelle 22/07/16 (informations protégées)" -#: group.737 -msgid "Groupe canin" -msgstr "Groupe canin" - #: lu_ext_wms.736 msgid "police_group_canin" msgstr "police_group_canin" @@ -4477,3 +4926,2163 @@ msgstr "Parcs naturels" #: lu_int_wms.748 msgid "aero_1994_30k" msgstr " Images aériennes de 1994 (1:30k)" + +#: lu_int_wms.316 +msgid "env_sentiersnature" +msgstr "Sentiers nature" + +#: group.458 +msgid "eau_new_Risikobeurteilung" +msgstr "Evaluation du risque" + +#: group.462 +msgid "eau_new_Hochwassergefahrenkarten_2013" +msgstr "Cartes des zones inondables 2013" + +#: group.452 +msgid "eau_new_Hochwasserrisikokarten_2013" +msgstr "Cartes des risques d'inondation 2013" + +#: lu_int_wms.752 +msgid "eau_new_Bauwerke im Abwasserbereich" +msgstr "Ouvrages dans l'assainissement" + +#: lu_int_wms.753 +msgid "eau_new_Abwassernetze" +msgstr "Réseau d'assainissement" + +#: lu_int_wms.755 +msgid "eau_new_Gewässer mit einem signifikanten Hochwasserrisiko" +msgstr "Cours d'eau avec un risque d'inondation significatif" + +#: lu_int_wms.754 +msgid "eau_new_Abwassergebiet" +msgstr "Agglomérations dans l'assainissement" + +#: lu_int_wms.756 +msgid "eau_new_Hochwasser Brennpunkte" +msgstr "Territoires à risque d’inondation " + +#: lu_int_wms.757 +msgid "eau_new_Hochwasserschutzmassnahmen" +msgstr "Mesures de protection contre les inondations" + +#: lu_int_wms.758 +msgid "eau_new_Maßnahmens des Hochwasserrisikomanagementplans" +msgstr "Programme de mesures PGRI 2015" + +#: lu_int_wms.759 +msgid "eau_new_Strukturgütekartierung 2015 [7-stufige Bewertung]" +msgstr "Cartographie du milieu physique 2015 [évaluation en 7 classes]" + +#: lu_int_wms.760 +msgid "eau_new_Strukturgütekartierung 2015 [5-stufige Bewertung]" +msgstr "Cartographie du milieu physique 2015 [évaluation en 5 classes]" + +#: lu_int_wms.761 +msgid "eau_new_Struktukartierung 2015 in 5 Band [7-stufige Bewertung]" +msgstr "Cartographie du milieu physique 2015 en 5 bandes [évaluation en 7 classes]" + +#: lu_int_wms.763 +msgid "eau_new_Struktukartierung 2015 in 5 Band [5-stufige Bewertung]" +msgstr "Cartographie du milieu physique 2015 en 5 bandes [évaluation en 5 classes]" + +#: lu_int_wms.764 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2008/105/EG]" +msgstr "Etat chimique sans substances ubiquistes 2015 [Directive 2008/105/CE]" + +#: lu_int_wms.765 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2013/39/EU]" +msgstr "Etat chimique 2015 [Directive 2013/39/UE]" + +#: lu_int_wms.766 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2013/39/EU]" +msgstr "Etat chimique sans substances ubiquistes 2015 [Directive 2013/39/UE]" + +#: lu_int_wms.767 +msgid "eau_new_Hydromorphologische Gesamtbewertung 2015" +msgstr "Hydromorphologie appréciation globale 2015" + +#: lu_int_wms.749 +msgid "eau_new_Gewässer" +msgstr "Cours d'eau" + +#: lu_int_wms.750 +msgid "eau_new_Kilometrierung der Gewässer" +msgstr "Kilométrage des cours d'eau" + +#: lu_int_wms.751 +msgid "eau_new_ZPS provisorische Gutachten" +msgstr "ZPS dossier en traitement" + +#: lu_int_wms.768 +msgid "eau_new_Überwachungsprogramme - Resultate" +msgstr "Programmes de contrôle - Résultats" + +#: lu_int_wms.769 +msgid "eau_new_Morphologie 2015" +msgstr "Morphologie 2015" + +#: lu_int_wms.770 +msgid "eau_new_Durchgängigkeit 2015" +msgstr "Continuité 2015" + +#: lu_int_wms.771 +msgid "eau_new_Phytoplankton 2015" +msgstr "Phytoplancton 2015" + +#: group.772 lu_int_wms.775 +msgid "eau_new_Grundwasser 2027" +msgstr " Eau souterraine 2027" + +#: lu_int_wms.773 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2021" +msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état 2021" + +#: lu_int_wms.774 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2027" +msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état 2027" + +#: lu_int_wms.776 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2027" +msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état quantitatif 2027" + +#: lu_int_wms.777 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2027" +msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état chimique 2027" + +#: lu_int_wms.654 +msgid "eau_new_Oberflächengewässer Nitratrichtlinie 91/676/CEE" +msgstr "Eaux de surface Directive Nitrates 91/676/CEE" + +#: lu_int_wms.570 +msgid "eau_new_Grundwasser Nitratrichtlinie 91/676/CEE" +msgstr "Eaux souterraine Directive Nitrates 91/676/CEE" + +#: group.484 +msgid "eau_new_Hydrografie" +msgstr "Eaux de surface" + +#: lu_int_wms.490 +msgid "eau_new_Sanitäre Schutzzonen Stausee Esch/Sauer" +msgstr "Zones de protection sanitaires du barrage d'Esch-sur-Sûre" + +#: group.486 +msgid "eau_new_Hochwasserrisikomanagement-Richtlinie [HWRM-RL]" +msgstr "Directive inondation [DI]" + +#: lu_int_wms.634 +msgid "eau_new_Erheblich veränderte Wasserkörper 2009" +msgstr "Masses d'eau fortement modifiées 2009" + +#: lu_int_wms.658 +msgid "eau_new_Erheblich veränderte Wasserkörper 2015" +msgstr "Masses d'eau fortement modifiées 2015" + +#: lu_int_wms.621 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2008/105/EG]" +msgstr "Etat chimique 2015 [Directive 2008/105/CE]" + +#: lu_int_wms.661 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2021" +msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état quantitatif 2021" + +#: lu_int_wms.660 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2021" +msgstr "Evaluation des risques des ME en vue de l'atteinte du bon état chimique 2021" + +#: lu_int_wms.785 +msgid "eau_new_WRRL und HWRM-RL Massnahmen" +msgstr "Programme de mesures détaillé HY" + +#: group.784 +msgid "eau_new_Usage interne" +msgstr "Usage interne" + +#: lu_int_wms.779 +msgid "eau_new_Regionalisierte MNQ-Werte" +msgstr "Valeurs régionalisées des débits d'étiage" + +#: lu_int_wms.781 +msgid "eau_new_Regionalisierte MQ-Werte" +msgstr "Valeurs régionalisées des débits moyens" + +#: lu_int_wms.782 +msgid "eau_new_Regionalisierte HQ-Werte" +msgstr "Valeurs régionalisées des débits de crue" + +#: lu_int_wms.786 +msgid "Orthophoto_Infrarouge_2016" +msgstr "Orthophoto infrarouge 2016" + +#: lu_int_wms.787 +msgid "Orthophoto_Infrarouge_2013" +msgstr "Orthophoto infrarouge 2013" + +#: lu_int_wms.788 +msgid "Orthophoto_Infrarouge_2010" +msgstr "Orthophoto infrarouge 2010" + +#: lu_int_wms.789 +msgid "Orthophoto_Infrarouge" +msgstr "Orthophoto infrarouge" + +#: group.790 +msgid "Orthophotos Infrarouge" +msgstr "Orthophoto infrarouge" + +#: l_wmts.791 +msgid "ortho_2010_irc" +msgstr "Orthophoto 2010 infrarout" + +#: l_wmts.792 +msgid "ortho_2013_irc" +msgstr "Orthophoto 2013 infrarouge" + +#: l_wmts.793 +msgid "ortho_2016_irc" +msgstr "Orthophoto 2016 infrarouge" + +#: lu_ext_wms.794 +msgid "Scouts_Hikes" +msgstr "Scouts Hikes" + +#: group.795 +msgid "Scouts" +msgstr "Scouts" + +#: lu_ext_wms.796 +msgid "Schleck Gran Fondo" +msgstr "Schleck Gran Fondo" + +#: lu_int_wms.797 +msgid "eau_new_trockenheit_gelb" +msgstr "Phase vigilance (« phase jaune ») " + +#: lu_int_wms.798 +msgid "seveso" +msgstr "Sites SEVESO" + +#: l_wmts.799 +msgid "basemap_2015_global_old" +msgstr "Carte routière 2D" + +#: theme.800 +msgid "cadastre_hertzien" +msgstr "Cadastre GSM" + +#: lu_int_wms.802 +msgid "mat_points_mesure" +msgstr "Points de mesure" + +#: group.803 +msgid "cadastre_hertzien_group" +msgstr "Cadastre GSM" + +#: lu_int_wms.804 +msgid "anf_zpin_declarees" +msgstr "ZPIN déclarées" + +#: lu_int_wms.805 +msgid "anf_zpin_a_declarer" +msgstr "ZPIN à déclarer" + +#: lu_int_wms.806 +msgid "anf_zpin_en_procedure" +msgstr "ZPIN en procédure réglementaire" + +#: group.807 +msgid "zpin_group" +msgstr "Zones protégées d’intérêt national (ZPIN)" + +#: lu_int_wms.808 +msgid "velo_by_pch" +msgstr "Pistes cyclables nationales" + +#: lu_ext_wms.809 +msgid "lvi_circuits_cyclables" +msgstr "Circuits cyclables" + +#: lu_int_wms.810 +msgid "TOPO_CARTEHISTO_1950" +msgstr "Carte topographique 1:150k 1950" + +#: lu_int_wms.801 +msgid "mat_antennes_plus_50_watt" +msgstr "Stations de base pour réseaux publics de communications mobiles ≥ 50 Watt" + +#: lu_int_wms.811 +msgid "mat_antennes_moins_50_watt" +msgstr "Stations de base pour réseaux publics de communications mobiles < 50 Watt" + +#: lu_int_wms.813 +msgid "cdt_lignes_all" +msgstr "Transport en commun - Réseau" + +#: lu_ext_wms.814 +msgid "cdt_lignes_avl" +msgstr "Lignes de bus AVL" + +#: lu_ext_wms.815 +msgid "cdt_lignes_rgtr" +msgstr "Lignes de bus RGTR" + +#: lu_ext_wms.816 +msgid "cdt_lignes_tice" +msgstr "Lignes de bus TICE" + +#: lu_ext_wms.817 +msgid "cdt_lignes_cfl" +msgstr "Réseau de train CFL" + +#: group.812 +msgid "cdt_lignes_bus_par_operateur" +msgstr "Transport en commun par opérateur" + +#: theme.818 +msgid "API_ONLY" +msgstr "" + +#: lu_int_wms.819 lu_int_wms.1381 +msgid "chargy" +msgstr "Bornes Chargy" + +#: group.820 +msgid "API_ONLY_LAYERS" +msgstr "" + +#: lu_int_wms.821 lu_int_wms.823 +msgid "feuilles_cadastrales_urplang" +msgstr "Feuilles cadastrales" + +#: lu_int_wms.830 +msgid "lux_norm1971_2000_00_pluvio_sum" +msgstr "1971-2000 - Précipitations annuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.833 +msgid "lux_norm1971_2000_01_pluvio_sum" +msgstr "jan. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.836 +msgid "lux_norm1971_2000_02_pluvio_sum" +msgstr "fev. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.839 +msgid "lux_norm1971_2000_03_pluvio_sum" +msgstr "mars 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.842 +msgid "lux_norm1971_2000_04_pluvio_sum" +msgstr "avr. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.845 +msgid "lux_norm1971_2000_05_pluvio_sum" +msgstr "mai 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.848 +msgid "lux_norm1971_2000_06_pluvio_sum" +msgstr "juin 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.851 +msgid "lux_norm1971_2000_07_pluvio_sum" +msgstr "juill. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.854 +msgid "lux_norm1971_2000_08_pluvio_sum" +msgstr "août 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.857 +msgid "lux_norm1971_2000_09_pluvio_sum" +msgstr "sept. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.860 +msgid "lux_norm1971_2000_10_pluvio_sum" +msgstr "oct. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.863 +msgid "lux_norm1971_2000_11_pluvio_sum" +msgstr "nov. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.866 +msgid "lux_norm1971_2000_12_pluvio_sum" +msgstr "déc. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.872 +msgid "lux_2012_00_temp_minimum" +msgstr "2012 - Températures minimales moyennes annuelles [ºC] " + +#: lu_int_wms.875 +msgid "lux_2012_01_temp_minimum" +msgstr "jan. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.878 +msgid "lux_2012_02_temp_minimum" +msgstr "fev. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.881 +msgid "lux_2012_03_temp_minimum" +msgstr "mars 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.884 +msgid "lux_2012_04_temp_minimum" +msgstr "avr. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.887 +msgid "lux_2012_05_temp_minimum" +msgstr "mai 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.890 +msgid "lux_2012_06_temp_minimum" +msgstr "juin 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.893 +msgid "lux_2012_07_temp_minimum" +msgstr "juill. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.896 +msgid "lux_2012_08_temp_minimum" +msgstr "août 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.899 +msgid "lux_2012_09_temp_minimum" +msgstr "sept. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.902 +msgid "lux_2012_10_temp_minimum" +msgstr "oct. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.905 +msgid "lux_2012_11_temp_minimum" +msgstr "nov. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.908 +msgid "lux_2012_12_temp_minimum" +msgstr "déc. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.912 +msgid "lux_2012_00_temp_average" +msgstr "2012 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.915 +msgid "lux_2012_01_temp_average" +msgstr "jan. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.918 +msgid "lux_2012_02_temp_average" +msgstr "fev. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.921 +msgid "lux_2012_03_temp_average" +msgstr "mars 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.924 +msgid "lux_2012_04_temp_average" +msgstr "avr. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.927 +msgid "lux_2012_05_temp_average" +msgstr "mai 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.930 +msgid "lux_2012_06_temp_average" +msgstr "juin 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.933 +msgid "lux_2012_07_temp_average" +msgstr "juill. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.936 +msgid "lux_2012_08_temp_average" +msgstr "août 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.939 +msgid "lux_2012_09_temp_average" +msgstr "sept. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.942 +msgid "lux_2012_10_temp_average" +msgstr "oct. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.945 +msgid "lux_2012_11_temp_average" +msgstr "nov. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.948 +msgid "lux_2012_12_temp_average" +msgstr "déc. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.952 +msgid "lux_2012_00_temp_maximum" +msgstr "2012 - Températures maximales moyennes annuelles [ºC] " + +#: lu_int_wms.955 +msgid "lux_2012_01_temp_maximum" +msgstr "jan. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.958 +msgid "lux_2012_02_temp_maximum" +msgstr "fev. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.961 +msgid "lux_2012_03_temp_maximum" +msgstr "mars 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.964 +msgid "lux_2012_04_temp_maximum" +msgstr "avr. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.967 +msgid "lux_2012_05_temp_maximum" +msgstr "mai 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.970 +msgid "lux_2012_06_temp_maximum" +msgstr "juin 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.973 +msgid "lux_2012_07_temp_maximum" +msgstr "juill. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.976 +msgid "lux_2012_08_temp_maximum" +msgstr "août 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.979 +msgid "lux_2012_09_temp_maximum" +msgstr "sept. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.982 +msgid "lux_2012_10_temp_maximum" +msgstr "oct. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.985 +msgid "lux_2012_11_temp_maximum" +msgstr "nov. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.988 +msgid "lux_2012_12_temp_maximum" +msgstr "déc. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.993 +msgid "lux_2012_00_pluvio_sum" +msgstr "2012 - Précipitations annuelles [mm] " + +#: lu_int_wms.996 +msgid "lux_2012_01_pluvio_sum" +msgstr "jan. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.999 +msgid "lux_2012_02_pluvio_sum" +msgstr "fev. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1002 +msgid "lux_2012_03_pluvio_sum" +msgstr "mars 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1005 +msgid "lux_2012_04_pluvio_sum" +msgstr "avr. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1008 +msgid "lux_2012_05_pluvio_sum" +msgstr "mai 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1011 +msgid "lux_2012_06_pluvio_sum" +msgstr "juin 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1014 +msgid "lux_2012_07_pluvio_sum" +msgstr "juill. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1017 +msgid "lux_2012_08_pluvio_sum" +msgstr "août 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1020 +msgid "lux_2012_09_pluvio_sum" +msgstr "sept. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1023 +msgid "lux_2012_10_pluvio_sum" +msgstr "oct. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1026 +msgid "lux_2012_11_pluvio_sum" +msgstr "nov. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1029 +msgid "lux_2012_12_pluvio_sum" +msgstr "déc. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1036 +msgid "lux_2012_01_pluvio_diff_mm" +msgstr "jan. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1039 +msgid "lux_2012_02_pluvio_diff_mm" +msgstr "fev. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1042 +msgid "lux_2012_03_pluvio_diff_mm" +msgstr "mars 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1045 +msgid "lux_2012_04_pluvio_diff_mm" +msgstr "avr. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1048 +msgid "lux_2012_05_pluvio_diff_mm" +msgstr "mai 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1051 +msgid "lux_2012_06_pluvio_diff_mm" +msgstr "juin 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1054 +msgid "lux_2012_07_pluvio_diff_mm" +msgstr "juill. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1057 +msgid "lux_2012_08_pluvio_diff_mm" +msgstr "août 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1060 +msgid "lux_2012_09_pluvio_diff_mm" +msgstr "sept. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1063 +msgid "lux_2012_10_pluvio_diff_mm" +msgstr "oct. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1066 +msgid "lux_2012_11_pluvio_diff_mm" +msgstr "nov. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1069 +msgid "lux_2012_12_pluvio_diff_mm" +msgstr "déc. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1076 +msgid "lux_2012_01_pluvio_diff_perc" +msgstr "jan. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1079 +msgid "lux_2012_02_pluvio_diff_perc" +msgstr "fev. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1082 +msgid "lux_2012_03_pluvio_diff_perc" +msgstr "mars 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1085 +msgid "lux_2012_04_pluvio_diff_perc" +msgstr "avr. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1088 +msgid "lux_2012_05_pluvio_diff_perc" +msgstr "mai 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1091 +msgid "lux_2012_06_pluvio_diff_perc" +msgstr "juin 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1094 +msgid "lux_2012_07_pluvio_diff_perc" +msgstr "juill. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1097 +msgid "lux_2012_08_pluvio_diff_perc" +msgstr "août 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1100 +msgid "lux_2012_09_pluvio_diff_perc" +msgstr "sept. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: theme.824 +msgid "ahc" +msgstr "Atlas hydro-climatologique" + +#: lu_int_wms.1103 +msgid "lux_2012_10_pluvio_diff_perc" +msgstr "oct. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1106 +msgid "lux_2012_11_pluvio_diff_perc" +msgstr "nov. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1109 +msgid "lux_2012_12_pluvio_diff_perc" +msgstr "déc. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1115 +msgid "lux_2013_00_temp_minimum" +msgstr "2013 - Températures minimales moyennes annuelles [ºC] " + +#: lu_int_wms.1118 +msgid "lux_2013_01_temp_minimum" +msgstr "jan. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1121 +msgid "lux_2013_02_temp_minimum" +msgstr "fev. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1124 +msgid "lux_2013_03_temp_minimum" +msgstr "mars 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1127 +msgid "lux_2013_04_temp_minimum" +msgstr "avr. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1130 +msgid "lux_2013_05_temp_minimum" +msgstr "mai 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1133 +msgid "lux_2013_06_temp_minimum" +msgstr "juin 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1136 +msgid "lux_2013_07_temp_minimum" +msgstr "juill. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1139 +msgid "lux_2013_08_temp_minimum" +msgstr "août 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1142 +msgid "lux_2013_09_temp_minimum" +msgstr "sept. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1145 +msgid "lux_2013_10_temp_minimum" +msgstr "oct. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1148 +msgid "lux_2013_11_temp_minimum" +msgstr "nov. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1151 +msgid "lux_2013_12_temp_minimum" +msgstr "déc. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1155 +msgid "lux_2013_00_temp_average" +msgstr "2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1158 +msgid "lux_2013_01_temp_average" +msgstr "jan. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1161 +msgid "lux_2013_02_temp_average" +msgstr "fev. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1164 +msgid "lux_2013_03_temp_average" +msgstr "mars 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1167 +msgid "lux_2013_04_temp_average" +msgstr "avr. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1170 +msgid "lux_2013_05_temp_average" +msgstr "mai 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1173 +msgid "lux_2013_06_temp_average" +msgstr "juin 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1176 +msgid "lux_2013_07_temp_average" +msgstr "juill. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1179 +msgid "lux_2013_08_temp_average" +msgstr "août 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1182 +msgid "lux_2013_09_temp_average" +msgstr "sept. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1185 +msgid "lux_2013_10_temp_average" +msgstr "oct. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1188 +msgid "lux_2013_11_temp_average" +msgstr "nov. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1191 +msgid "lux_2013_12_temp_average" +msgstr "déc. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1195 +msgid "lux_2013_00_temp_maximum" +msgstr "2013 - Températures maximales moyennes annuelles [ºC] " + +#: lu_int_wms.1198 +msgid "lux_2013_01_temp_maximum" +msgstr "jan. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1201 +msgid "lux_2013_02_temp_maximum" +msgstr "fev. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1204 +msgid "lux_2013_03_temp_maximum" +msgstr "mars 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1207 +msgid "lux_2013_04_temp_maximum" +msgstr "avr. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1210 +msgid "lux_2013_05_temp_maximum" +msgstr "mai 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1213 +msgid "lux_2013_06_temp_maximum" +msgstr "juin 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1216 +msgid "lux_2013_07_temp_maximum" +msgstr "juill. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1219 +msgid "lux_2013_08_temp_maximum" +msgstr "août 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1222 +msgid "lux_2013_09_temp_maximum" +msgstr "sept. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1225 +msgid "lux_2013_10_temp_maximum" +msgstr "oct. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1228 +msgid "lux_2013_11_temp_maximum" +msgstr "nov. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1231 +msgid "lux_2013_12_temp_maximum" +msgstr "déc. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1236 +msgid "lux_2013_00_pluvio_sum" +msgstr "2013 - Précipitations annuelles [mm] " + +#: lu_int_wms.1239 +msgid "lux_2013_01_pluvio_sum" +msgstr "jan. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1242 +msgid "lux_2013_02_pluvio_sum" +msgstr "fev. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1245 +msgid "lux_2013_03_pluvio_sum" +msgstr "mars 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1248 +msgid "lux_2013_04_pluvio_sum" +msgstr "avr. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1251 +msgid "lux_2013_05_pluvio_sum" +msgstr "mai 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1254 +msgid "lux_2013_06_pluvio_sum" +msgstr "juin 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1257 +msgid "lux_2013_07_pluvio_sum" +msgstr "juill. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1260 +msgid "lux_2013_08_pluvio_sum" +msgstr "août 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1263 +msgid "lux_2013_09_pluvio_sum" +msgstr "sept. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1266 +msgid "lux_2013_10_pluvio_sum" +msgstr "oct. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1269 +msgid "lux_2013_11_pluvio_sum" +msgstr "nov. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1272 +msgid "lux_2013_12_pluvio_sum" +msgstr "déc. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1279 +msgid "lux_2013_01_pluvio_diff_mm" +msgstr "jan. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1282 +msgid "lux_2013_02_pluvio_diff_mm" +msgstr "fev. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1285 +msgid "lux_2013_03_pluvio_diff_mm" +msgstr "mars 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1288 +msgid "lux_2013_04_pluvio_diff_mm" +msgstr "avr. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1291 +msgid "lux_2013_05_pluvio_diff_mm" +msgstr "mai 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1294 +msgid "lux_2013_06_pluvio_diff_mm" +msgstr "juin 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1297 +msgid "lux_2013_07_pluvio_diff_mm" +msgstr "juill. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1300 +msgid "lux_2013_08_pluvio_diff_mm" +msgstr "août 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1303 +msgid "lux_2013_09_pluvio_diff_mm" +msgstr "sept. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1306 +msgid "lux_2013_10_pluvio_diff_mm" +msgstr "oct. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1309 +msgid "lux_2013_11_pluvio_diff_mm" +msgstr "nov. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1312 +msgid "lux_2013_12_pluvio_diff_mm" +msgstr "déc. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1319 +msgid "lux_2013_01_pluvio_diff_perc" +msgstr "jan. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1322 +msgid "lux_2013_02_pluvio_diff_perc" +msgstr "fev. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1325 +msgid "lux_2013_03_pluvio_diff_perc" +msgstr "mars 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1328 +msgid "lux_2013_04_pluvio_diff_perc" +msgstr "avr. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1331 +msgid "lux_2013_05_pluvio_diff_perc" +msgstr "mai 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1334 +msgid "lux_2013_06_pluvio_diff_perc" +msgstr "juin 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1337 +msgid "lux_2013_07_pluvio_diff_perc" +msgstr "juill. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1340 +msgid "lux_2013_08_pluvio_diff_perc" +msgstr "août 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1343 +msgid "lux_2013_09_pluvio_diff_perc" +msgstr "sept. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1346 +msgid "lux_2013_10_pluvio_diff_perc" +msgstr "oct. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1349 +msgid "lux_2013_11_pluvio_diff_perc" +msgstr "nov. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1352 +msgid "lux_2013_12_pluvio_diff_perc" +msgstr "déc. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1033 +msgid "lux_2012_00_pluvio_diff_mm" +msgstr "2012 - Précipitations annuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1073 +msgid "lux_2012_00_pluvio_diff_perc" +msgstr "2012 - Précipitations annuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1276 +msgid "lux_2013_00_pluvio_diff_mm" +msgstr "2013 - Précipitations annuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1316 +msgid "lux_2013_00_pluvio_diff_perc" +msgstr "2013 - Précipitations annuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: group.826 +msgid "30 years reference period 1971-2000" +msgstr "période de référence de 30 années 1971-2000" + +#: group.827 group.990 group.1233 +msgid "Precipitation" +msgstr "Précipitation" + +#: group.828 +msgid "lux_norm1971_2000_pluvio_sum" +msgstr "Précipitations normale climatique 1971-2000 [mm]" + +#: group.868 +msgid "2012" +msgstr "2012" + +#: group.869 group.1112 +msgid "Temperature" +msgstr "Température" + +#: group.870 +msgid "lux_2012_temp_minimum" +msgstr "Températures minimales moyennes [ºC]" + +#: group.910 +msgid "lux_2012_temp_average" +msgstr "Températures moyennes [ºC]" + +#: group.950 +msgid "lux_2012_temp_maximum" +msgstr "Températures maximales moyennes [ºC]" + +#: group.991 +msgid "lux_2012_pluvio_sum" +msgstr "Précipitations [mm]" + +#: group.1031 +msgid "lux_2012_pluvio_diff_mm" +msgstr "Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm]" + +#: group.1071 +msgid "lux_2012_pluvio_diff_perc" +msgstr "Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%]" + +#: group.1111 +msgid "2013" +msgstr "2013" + +#: group.1113 +msgid "lux_2013_temp_minimum" +msgstr "Températures minimales moyennes [ºC]" + +#: group.1153 +msgid "lux_2013_temp_average" +msgstr "Températures moyennes [ºC]" + +#: group.1193 +msgid "lux_2013_temp_maximum" +msgstr "Températures maximales moyennes [ºC]" + +#: group.1234 +msgid "lux_2013_pluvio_sum" +msgstr "Précipitations [mm]" + +#: group.1274 +msgid "lux_2013_pluvio_diff_mm" +msgstr "Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm]" + +#: group.1314 +msgid "lux_2013_pluvio_diff_perc" +msgstr "Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%]" + +#: group.1355 +msgid "aev_qualite_air" +msgstr "Qualité de l'air" + +#: group.1356 +msgid "aev_eoliennes" +msgstr "Éoliennes (Internal)" + +#: lu_int_wms.1357 +msgid "aev_reseau_telemetrique" +msgstr "Réseau télémétrique" + +#: lu_int_wms.1358 +msgid "aev_poussieres_fines" +msgstr "Particules fines (Méthode de référence sur filtres)" + +#: lu_int_wms.1359 +msgid "aev_reseau_bergerhoff" +msgstr "Retombées de poussières (Réseau Bergerhoff)" + +#: lu_int_wms.1360 +msgid "aev_emplacements_eoliennes" +msgstr "Éoliennes (Internal)" + +#: group.1361 +msgid "aev_casipo_group" +msgstr "CASIPO (Internal)" + +#: lu_int_wms.1362 +msgid "aev_casipo" +msgstr "Cadastre des sites potentiellement pollués (Internal) " + +#: lu_int_wms.1363 +msgid "reagis" +msgstr "" + +#: lu_int_wms.1364 +msgid "act_frontieres_isodistances" +msgstr "Distances autour de la frontière" + +#: lu_ext_wms.1365 +msgid "sentiers_thematiques" +msgstr "Sentiers thématiques" + +#: lu_int_wms.1366 +msgid "pag_infos_supp" +msgstr "Informations supplémentaires" + +#: lu_int_wms.1367 +msgid "anf_biotopes_points" +msgstr "Eléments ponctuels" + +#: lu_int_wms.1368 +msgid "anf_biotopes_vergers" +msgstr "Vergers" + +#: lu_int_wms.1369 +msgid "anf_biotopes_surfaces" +msgstr "Surfaces à l'exception des vergers" + +#: lu_int_wms.1370 +msgid "anf_biotopes_tampons" +msgstr "Zones tampons" + +#: l_wmts.1371 +msgid "ortho_2017" +msgstr "Orthophoto 2017" + +#: l_wmts.1372 +msgid "ortho_2017_irc" +msgstr "Orthophoto 2017 infrarouge" + +#: lu_int_wms.1373 +msgid "pag_infos_supp_staging" +msgstr "" + +#: lu_ext_wms.1374 +msgid "cdt_lignes_tram" +msgstr "Lignes de tram" + +#: lu_int_wms.1375 +msgid "makerspaces" +msgstr "" + +#: lu_int_wms.1376 +msgid "parcels_daily" +msgstr "Parcelles cadastrales" + +#: lu_int_wms.216 +msgid "decoupage_communes" +msgstr "Code commune" + +#: lu_int_wms.1377 +msgid "lidar_mns" +msgstr "Modèle numérique de surface de la région Nordstad" + +#: lu_int_wms.1378 +msgid "lidar_mnt" +msgstr "Modèle numérique de terrain de la région Nordstad" + +#: lu_int_wms.1379 +msgid "lidar_ortho" +msgstr "Image aérienne haute résolution de la région Nordstad" + +#: group.1380 +msgid "lidar_prototype" +msgstr "Résultats du prototype LIDAR de l'A.C.T." + +#: lu_int_wms.1383 +msgid "aev_zones_calmes_rurales" +msgstr "Zones calmes rurales potentielles " + +#: lu_int_wms.1384 +msgid "aev_zones_calmes_urbaines" +msgstr "Zones calmes urbaines potentielles" + +#: lu_int_wms.1385 +msgid "aev_oases_urbaines" +msgstr "Oases urbaines calmes potentielles" + +#: group.1382 +msgid "aev_zones_calmes" +msgstr "Zones calmes" + +#: lu_int_wms.1386 +msgid "mobiliteit_livebikes" +msgstr "Vélos en libre service (temps réel)" + +#: group.1390 +msgid "secours_siden" +msgstr "SIDEN" + +#: group.1392 +msgid "secours_sebes" +msgstr "SEBES" + +#: group.1393 +msgid "secours_pch" +msgstr "PCH" + +#: group.1394 +msgid "siden_canalisation" +msgstr "Canalisation" + +#: lu_int_wms.1395 +msgid "siden_conduites_de_refoulement" +msgstr "Conduites de refoulement" + +#: lu_int_wms.1397 +msgid "siden_ouvrages" +msgstr "Ouvrages" + +#: lu_int_wms.1399 +msgid "siden_eaux_pluviales" +msgstr "Eaux pluviales" + +#: group.1401 +msgid "sebes_reseau_adduction" +msgstr "Réseau d'adduction" + +#: group.1402 +msgid "sebes_lac_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1403 +msgid "sebes_bassins_versants" +msgstr "Bassins versants" + +#: lu_int_wms.1405 +msgid "sebes_reseau_adduction_sebes" +msgstr "Réseau d'adduction SEBES" + +#: lu_int_wms.1406 +msgid "sebes_volume_structure_lac" +msgstr "Volume et structure du lac" + +#: lu_int_wms.1407 +msgid "sebes_bassinversant_sure_lux_bel" +msgstr "Bassin versant luxembourgeois et belge pour la Sûre" + +#: lu_int_wms.1408 +msgid "sebes_bassinversant_sure_bel" +msgstr "Bassin versant belge" + +#: lu_int_wms.1409 +msgid "sebes_bassinversant_sous_bassins" +msgstr "Sous-bassins versants" + +#: lu_int_wms.1410 +msgid "sebes_zoneprotection_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1411 +msgid "pch_infrastructure" +msgstr "Infrastructure" + +#: group.1412 +msgid "pch_origine_pollution" +msgstr "Origine de la pollution" + +#: lu_int_wms.1413 +msgid "pch_reseau_routier_avec_pk" +msgstr "Réseau routier " + +#: lu_int_wms.1414 +msgid "pch_chemins_acces" +msgstr "Chemins d'accès" + +#: lu_int_wms.1415 +msgid "pch_ancrage_barrage_flottant" +msgstr "Points d'ancrage pour barrage flottant" + +#: lu_int_wms.1416 +msgid "pch_zones_acces" +msgstr "Zones d'accès" + +#: lu_int_wms.1417 +msgid "pch_ouvrages_art_eau" +msgstr "Ouvrages d'art sur cours d'eau" + +#: lu_int_wms.1419 +msgid "pch_camion_pompe" +msgstr "Camion pompe" + +#: lu_int_wms.1420 +msgid "pch_stockage_materiaux_depolluants" +msgstr "Stockage de matériaux dépolluants" + +#: lu_int_wms.1421 +msgid "pch_place_potentielle_retenue_antipollution" +msgstr "Place potentielle de retenue antipollution" + +#: lu_int_wms.1422 +msgid "pch_stations_services" +msgstr "Stations-services" + +#: group.1423 +msgid "secours_basisdaten" +msgstr "" + +#: lu_int_wms.181 +msgid "roads" +msgstr "Réseau routier" + +#: lu_int_wms.351 +msgid "roads_labels" +msgstr "Noms de rue" + +#: lu_ext_wms.1424 +msgid "logt_baul_feedback_2013" +msgstr "Baulücken-Feedback 2013" + +#: lu_int_wms.1426 +msgid "aev_reseau_biosurveillance" +msgstr "Réseau de biosurveillance (Internal)" + +#: lu_int_wms.1427 +msgid "aev_mesures_tubes_passifs" +msgstr "Réseau de mesure par tubes à diffusion passive (Internal)" + +#: lu_int_wms.1425 +msgid "air_quality_pm10" +msgstr "Interpolation géostatistique PM10" + +#: lu_int_wms.1429 +msgid "air_quality_no2" +msgstr "Interpolation géostatistique NO2" + +#: lu_int_wms.1430 +msgid "air_quality_o3" +msgstr "Interpolation géostatistique O3" + +#: group.737 +msgid "Groupes canins" +msgstr "" + +#: lu_ext_wms.1431 +msgid "cgdis_groupe_cynotechnique" +msgstr "" + +#: lu_int_wms.1432 +msgid "air_quality_global" +msgstr "" + +#: lu_int_wms.1434 +msgid "at_pst_droit_preemption" +msgstr "Droit de préemption" + +#: lu_int_wms.1435 +msgid "at_pszae_droit_preemption" +msgstr "Droit de préemption" + +#: lu_int_wms.1436 +msgid "at_psl_droit_preemption" +msgstr "Droit de préemption" + +#: lu_int_wms.1438 +msgid "Habitations" +msgstr "" + +#: group.1440 +msgid "APRG Zones de protection du Lac de la Haute Sûre" +msgstr "" + +#: lu_int_wms.1441 +msgid "Zones urbanisées" +msgstr "" + +#: lu_int_wms.1442 +msgid "Bâtiments industriels / commerciaux" +msgstr "" + +#: group.1444 +msgid "Altlasten" +msgstr "" + +#: lu_int_wms.1446 +msgid "Sites potentiellement contaminés" +msgstr "" + +#: lu_int_wms.1447 +msgid "Axes routiers" +msgstr "" + +#: lu_int_wms.1448 +msgid "Zones de protection d'eaux de surfaces" +msgstr "" + +#: lu_int_wms.1449 +msgid "Vulnérabilité selon méthode SIRIS" +msgstr "" + +#: lu_int_wms.1451 +msgid "Sites de baignade" +msgstr "" + +#: lu_int_wms.1452 +msgid "Etang à poissons" +msgstr "" + +#: lu_int_wms.1453 +msgid "Chemin risque de contamination des eaux par chiens promenés" +msgstr "" + +#: lu_int_wms.1454 +msgid "Pêche" +msgstr "" + +#: lu_int_wms.1455 +msgid "Trafic bateaux " +msgstr "" + +#: lu_int_wms.1445 +msgid "Sites contaminés" +msgstr "" + +#: group.1456 +msgid "Autres utilisations" +msgstr "" + +#: l_wmts.1457 lu_int_wms.1458 lu_ext_wms.1459 +msgid "OSM_MQ" +msgstr "" + +#: lu_int_wms.1463 +msgid "lidar_mnh" +msgstr "Modèle numérique de la hauteur" + +#: lu_int_wms.1462 +msgid "wg_exposition_map" +msgstr "Exposition" + +#: lu_int_wms.1461 +msgid "wg_hangneigung_map" +msgstr "Pente °" + +#: lu_int_wms.1460 +msgid "wg_relief_map" +msgstr "Relief" + +#: lu_int_wms.1464 +msgid "eau_prgd_zones_protection_lac" +msgstr "Projet de règlement grand-ducal délimitant les zones de protection autour du lac de la Haute-Sûre" + +#: lu_int_wms.1465 +msgid "aev_medium_combustion_plants" +msgstr "" + +#: group.1466 +msgid "aev_facilities_registers" +msgstr "" + +#: group.1467 +msgid "radon" +msgstr "" + +#: lu_int_wms.1468 +msgid "carte_radon_communes" +msgstr "Concentrations de radon par commune" + +#: lu_int_wms.1469 +msgid "eau_strahlwirkungskonzept" +msgstr "Concept de la connectivité des habitats aquatiques" + +#: lu_int_wms.1470 +msgid "eau_fliessgewaessertypen_2015" +msgstr "Types de cours d'eau 2015 (LAWA)" + +#: lu_int_wms.1471 +msgid "eau_detailliertes_massnahmenprogramm_sww" +msgstr "Programme de mesures détaillé SWW" + +#: group.1472 +msgid "aev_modelisation" +msgstr "Modélisation" + +#: group.1473 +msgid "aev_air_mesures" +msgstr "Réseaux de mesures" + +#: lu_int_wms.1474 +msgid "cantons_voodoo_test" +msgstr "" + +#: lu_int_wms.1475 +msgid "env_bruit_axes_routiers_hotspots" +msgstr "Zones prioritaires de gestion du bruit routier 2011" + +#: lu_int_wms.1476 +msgid "env_bruit_axes_ferroviaires_hotspots" +msgstr "Zones prioritaires de gestion du bruit ferroviaire 2011" + +#: lu_int_wms.1477 +msgid "aev_pacte_climat_2018" +msgstr "Pacte climat 2018 - NO2 (Internal)" + +#: group.1478 +msgid "aev_air_campagnes_mesure" +msgstr "Hotspots NO2 (Internal)" + +#: lu_int_wms.1479 +msgid "aev_casipo_attributs_internes" +msgstr "" + +#: lu_int_wms.1480 +msgid "air_quality_pm2_5" +msgstr "Interpolation géostatistique PM2.5" + +#: group.1481 +msgid "asta_projet_rgd" +msgstr "Projet de règlement grand-ducal délimitant les zones de protection autour du lac de la Haute-Sûre" + +#: lu_int_wms.1482 +msgid "asta_contrainte_stockage_engrais" +msgstr "Contraintes pour le stockage d’engrais organiques et de silos taupinières (pentes > 5%)" + +#: lu_int_wms.1483 +msgid "asta_contrainte_utilisation_engrais" +msgstr "Contraintes pour l’épandage d’engrais organiques à action rapide et mesures contre l’érosion (pentes > 10%)" + +#: lu_int_wms.1484 +msgid "eau_asta_prgd_zones_protection_lac" +msgstr "Zones de protection" + +#: lu_int_wms.1485 +msgid "env_bruit_axes_routiers_agglomeration" +msgstr "Zones prioritaires de gestion du bruit routier 2011 - agglomération" + +#: lu_int_wms.1486 +msgid "env_bruit_routes_lden_2016" +msgstr "Routes principales 2016 (Lden) (Internal)" + +#: lu_int_wms.1487 +msgid "env_bruit_routes_lngt_2016" +msgstr "Routes principales 2016 (Lngt) (Internal)" + +#: lu_int_wms.1488 +msgid "env_bruit_ferroviaire_lden_2016" +msgstr "Chemins de fer principaux 2016 (Lden) (Internal)" + +#: lu_int_wms.1489 +msgid "env_bruit_ferroviaire_lngt_2016" +msgstr "Chemins de fer principaux 2016 (Lngt) (Internal)" + +#: lu_int_wms.1490 +msgid "env_bruit_air_lden_2016" +msgstr "Grand aéroport 2016 (Lden) (Internal)" + +#: lu_int_wms.1491 +msgid "env_bruit_air_lngt_2016" +msgstr "Grand aéroport 2016 (Lngt) (Internal)" + +#: lu_int_wms.1492 +msgid "at_pds_parcels" +msgstr "Attestation PDS" + +#: group.1493 +msgid "at_pds_parcels_group" +msgstr "PDS Documents supplémentaires" + +#: lu_int_wms.1494 +msgid "gaz_naturel" +msgstr "Disponibilité de gaz naturel" + +#: group.1495 +msgid "fourniture_energie" +msgstr "Fourniture d'énergie" + +#: lu_int_wms.1496 +msgid "anf_centre_ramassage" +msgstr "Centres de ramassage pour gibier (trouvé mort et viscères)" + +#: l_wmts.1497 +msgid "env_bruit2016_axes_routiers_lden" +msgstr "Routes principales 2016 (Lden)" + +#: l_wmts.1498 +msgid "env_bruit2016_axes_ferroviaires_lden" +msgstr "Chemins de fer principaux 2016 (Lden)" + +#: l_wmts.1499 +msgid "env_bruit2016_axes_aeroport_lngt" +msgstr "Grand aéroport 2016 (Lngt)" + +#: l_wmts.1500 +msgid "env_bruit2016_axes_routiers_lngt" +msgstr "Routes principales 2016 (Lngt)" + +#: l_wmts.1501 +msgid "env_bruit2016_axes_aeroport_lden" +msgstr "Grand aéroport 2016 (Lden)" + +#: l_wmts.1502 +msgid "env_bruit2016_axes_ferroviaires_lngt" +msgstr "Chemins de fer principaux 2016 (Lngt)" + +#: lu_int_wms.1503 +msgid "env_bruit_axes_ferroviaires_hotspots_2016" +msgstr "Zones prioritaires de gestion du bruit ferroviaire 2016 (Internal)" + +#: lu_int_wms.1504 +msgid "env_bruit_axes_routiers_hotspots_2016" +msgstr "Zones prioritaires de gestion du bruit routier 2016 (Internal)" + +#: lu_int_wms.1505 +msgid "env_bruit_axes_routiers_agglomeration_2016" +msgstr "Zones prioritaires de gestion du bruit routier 2016 - agglomération (Internal)" + +#: lu_int_wms.1506 +msgid "aev_dechets_composting" +msgstr "" + +#: lu_int_wms.1507 +msgid "aev_dechets_inert_waste" +msgstr "" + +#: lu_int_wms.1508 +msgid "aev_dechets_recycling" +msgstr "" + +#: lu_int_wms.1509 +msgid "aev_dechets_biogas" +msgstr "" + +#: group.1510 +msgid "aev_dechets" +msgstr "" + +#: lu_int_wms.1511 +msgid "asta_prairies_permanentes" +msgstr "Statut Prairies permanentes" + +#: lu_int_wms.1512 +msgid "aev_no2_grobscreening_2016" +msgstr "NO2 Grobscreening 2016" + +#: lu_ext_wms.1513 +msgid "tourisme_neue_nationale_wanderwege" +msgstr "Neue Nationale Wanderwege" + +#: lu_int_wms.1514 +msgid "anf_forets_publiques_fsc_pefc" +msgstr "Forêts publiques certifiées FSC et/ou PEFC" + +#: lu_ext_wms.1515 +msgid "tourisme_ortal_belaege" +msgstr "Beläge" + +#: lu_ext_wms.1516 +msgid "tourisme_ortal_escapardenne" +msgstr "Escapardenne" + +#: lu_ext_wms.1517 +msgid "tourisme_ortal_naturwanderpark_delux" +msgstr "NaturWanderPark delux" + +#: lu_ext_wms.1518 +msgid "tourisme_ortal_qualitaetstouren" +msgstr "Qualitätstouren" + +#: lu_ext_wms.1519 +msgid "tourisme_ortal_lokale_wanderwege" +msgstr "Lokale Wanderwege" + +#: lu_ext_wms.1520 +msgid "tourisme_ortal_grosse_lokale_wanderwege" +msgstr "Große lokale Wanderwege" + +#: lu_ext_wms.1521 +msgid "tourisme_ortal_kleine_lokale_wanderwege" +msgstr "Kleine lokale Wanderwege POI" + +#: lu_ext_wms.1522 +msgid "tourisme_ortal_autopedestres" +msgstr "Auto-Pédestre Wanderwege" + +#: lu_ext_wms.1523 +msgid "tourisme_ortal_cfl" +msgstr "CFL-Bahnwanderwege" + +#: lu_ext_wms.1524 +msgid "tourisme_ortal_wanderwege_thema" +msgstr "Wanderwege mit Thema " + +#: lu_ext_wms.1525 +msgid "tourisme_ortal_themenwege" +msgstr "Themenwege" + +#: group.1526 +msgid "tourisme_wanderwege_ortal" +msgstr "Qualitätswanderregion Éislek" + +#: l_wmts.1527 +msgid "ortho_2018" +msgstr "Orthophoto 2018" + +#: lu_int_wms.1529 +msgid "ortho2018_IR" +msgstr "Orthophoto 2018 infrarouge" + +#: theme.1528 +msgid "atlas_demographique_old" +msgstr "" + +#: theme.1530 +msgid "atlas_demographique" +msgstr "" + +#: lu_int_wms.1531 +msgid "ad_fusions_communes" +msgstr "Historique des fusions communales à partir de 1920" + +#: lu_int_wms.1532 +msgid "ad_communes_cantons" +msgstr "Les 12 cantons et 102 communes au 1er janvier 2018" + +#: lu_int_wms.1533 +msgid "ad_evol_pop_1981_2018" +msgstr "Évolution de la population" + +#: lu_int_wms.1534 +msgid "ad_part_francais_commune" +msgstr "Français" + +#: lu_int_wms.1535 +msgid "ad_densite_pop_comm" +msgstr "Densité de population par commune au 1er janvier 2018" + +#: lu_int_wms.1536 +msgid "ad_part_portugais_commune" +msgstr "Portugais" + +#: lu_int_wms.1537 +msgid "ad_part_africains_commune" +msgstr "Africains" + +#: lu_int_wms.1538 +msgid "ad_part_allemands_commune" +msgstr "Allemands" + +#: lu_int_wms.1539 +msgid "ad_part_americains_commune" +msgstr "Américains" + +#: lu_int_wms.1540 +msgid "ad_part_asiates_commune" +msgstr "Asiatiques et Océaniens" + +#: lu_int_wms.1541 +msgid "ad_part_belges_commune" +msgstr "Belges" + +#: lu_int_wms.1542 +msgid "ad_part_nonUE28_commune" +msgstr "Européens non UE-28" + +#: lu_int_wms.1543 +msgid "ad_part_UE28_commune" +msgstr "Européens UE-28 " + +#: lu_int_wms.1544 +msgid "ad_part_italiens_commune" +msgstr "Italiens" + +#: group.1545 +msgid "ad_part_etrangers_comm" +msgstr "Part des étrangers parmi la population" + +#: group.1546 +msgid "ad_org_territoriale" +msgstr "Organisation territoriale" + +#: group.1547 +msgid "ad_org_terr_lux" +msgstr "Organisation du territoire luxembourgeois" + +#: group.1548 +msgid "ad_etat_population" +msgstr "Etat de la population" + +#: group.1549 +msgid "ad_population_stock_evolution_densite" +msgstr "Stock, évolution et densité de la population" + +#: group.1550 +msgid "ad_evolution_pop_comm" +msgstr "Evolution de la population par commune entre 1981 et 2018" + +#: group.1551 +msgid "ad_densite_pop" +msgstr "Densité de population par commune au 1er janvier 2018" + +#: group.1552 +msgid "ad_rapport_hommes_femmes" +msgstr "Rapport hommes-femmes" + +#: group.1553 +msgid "ad_prop_femmes_comm_2018_group" +msgstr "" + +#: group.1554 +msgid "ad_etrangers_lieu_naissance" +msgstr "Nationalités étrangères et lieu de naissance" + +#: group.1555 +msgid "ad_nationalites_commune_2018" +msgstr "Nationalités les plus présentes par commune au 1er janvier 2018" + +#: group.1556 +msgid "ad_structure_age" +msgstr "Structure d'âge" + +#: group.1557 +msgid "ad_age_moyen" +msgstr "Âge moyen par sexe et en total, par commune au 1er janvier 2018" + +#: group.1558 +msgid "ad_proportion_classes_age" +msgstr "Proportion des différentes classes d'âge par commune au 1er janvier 2018" + +#: group.1559 +msgid "ad_proportion_jeunes" +msgstr "Proportion de jeunes (-18 ans) selon différentes classes par commune au 1er janvier 2018" + +#: group.1560 +msgid "ad_proportion_ages" +msgstr "Proportion de personnes âgées (65+) selon différentes classes par commune au 1er janvier 2018" + +#: lu_int_wms.1561 +msgid "ad_age_moyen_femmes" +msgstr "Âge moyen des femmes" + +#: lu_int_wms.1562 +msgid "ad_age_moyen_hommes" +msgstr "Âge moyen des hommes" + +#: lu_int_wms.1563 +msgid "ad_age_moyen_2" +msgstr "Âge moyen des deux sexes confondus" + +#: lu_int_wms.1564 +msgid "ad_moins20" +msgstr "Proportion des personnes de moins de 20 ans " + +#: lu_int_wms.1565 +msgid "ad_20_64" +msgstr "Proportion des personnes de 20 à 64 ans" + +#: lu_int_wms.1566 +msgid "ad_65plus" +msgstr "Proportion des personnes de 65 ans et plus" + +#: lu_int_wms.1567 +msgid "ad_moins3" +msgstr "Proportion des personnes de moins de 3 ans" + +#: lu_int_wms.1568 +msgid "ad_3_5" +msgstr "Proportion des personnes de 3 à 5" + +#: lu_int_wms.1569 +msgid "ad_6_10" +msgstr "Proportion des personnes de 6 à 10 ans" + +#: lu_int_wms.1570 +msgid "ad_11_17" +msgstr "Proportion des personnes de 11 à 17 ans" + +#: lu_int_wms.1571 +msgid "ad_65_74" +msgstr "Proportion des personnes de 65 à 74 ans" + +#: lu_int_wms.1572 +msgid "ad_75_89" +msgstr "Proportion des personnes de 75 à 89 ans" + +#: lu_int_wms.1573 +msgid "ad_90plus" +msgstr "Proportion des personnes de 90 ans et plus" + +#: lu_int_wms.1574 +msgid "ad_poles_urbains" +msgstr "Les trois pôles urbains au Luxembourg" + +#: group.1575 +msgid "ad_population_commune_canton" +msgstr "Population par canton et commune au 1er janvier 2018" + +#: lu_int_wms.1576 +msgid "ad_population_canton" +msgstr "Population par canton" + +#: lu_int_wms.1577 +msgid "ad_population_commune" +msgstr "Population par commune" + +#: lu_int_wms.1578 +msgid "ad_prop_femmes_comm_2018" +msgstr "Proportion de femmes par commune au 1er janvier 2018" + +#: lu_int_wms.1579 +msgid "ad_structure_pop_comm" +msgstr "Structure de la population par commune au 1er janvier 2018" + +#: group.1580 +msgid "ad_lieu_naissance_lux_etr" +msgstr "Lieu de naissance (Luxembourg/étranger)" + +#: lu_int_wms.1581 +msgid "ad_lieu_naissance_commune" +msgstr "Lieu de naissance par commune au 1er janvier 2018" + +#: lu_int_wms.1582 +msgid "ad_rapport_dependance_personnes_agees" +msgstr "Rapport de dépendance des personnes âgées" + +#: lu_int_wms.1583 +msgid "ad_rapport_dependance_jeunes" +msgstr "Rapport de dépendance des jeunes" + +#: lu_int_wms.1584 +msgid "ad_rapport_dependance_total" +msgstr "Rapport de dépendance total" + +#: lu_int_wms.1585 +msgid "ad_celibataires" +msgstr "Célibataires" + +#: lu_int_wms.1586 +msgid "ad_maries_pacses" +msgstr "Mariés/pacsés" + +#: lu_int_wms.1587 +msgid "ad_divorces_separes" +msgstr "Divorcés/séparés" + +#: lu_int_wms.1588 +msgid "ad_veufs_veuves" +msgstr "Veufs/veuves" + +#: group.1589 +msgid "ad_rapport_dependance" +msgstr "Rapport de dépendance par commune au 1er janvier 2018" + +#: group.1590 +msgid "ad_situation_matrimoniale" +msgstr "Situation matrimoniale des adultes (18+)" + +#: group.1591 +msgid "ad_mouvement_population" +msgstr "Mouvement de la population" + +#: group.1592 +msgid "ad_naissances" +msgstr "Naissances" + +#: group.1593 +msgid "ad_deces" +msgstr "Décès" + +#: group.1594 +msgid "ad_solde_naturel" +msgstr "Solde naturel" + +#: group.1595 +msgid "ad_migrations" +msgstr "Migrations" + +#: group.1596 +msgid "ad_mariages" +msgstr "Mariages" + +#: lu_int_wms.1597 +msgid "ad_naissances_taux_natalite" +msgstr "Nombre absolu de naissances et taux de natalité par commune (moyenne entre 2013 et 2017)" + +#: lu_int_wms.1598 +msgid "ad_naissances_mariage" +msgstr "Part des naissances dans le mariage par commune (moyenne entre 2013 et 2017)" + +#: lu_int_wms.1599 +msgid "ad_naissances_age_maternite" +msgstr "Âge moyen à la maternité par commune (moyenne entre 2013 et 2017)" + +#: lu_int_wms.1600 +msgid "ad_deces_taux_mortalite" +msgstr "Nombre absolu de décès et taux de mortalité par commune (moyenne entre 2013 et 2017)" + +#: lu_int_wms.1601 +msgid "ad_solde_naturel_nombre_absolu" +msgstr "Nombre absolu et taux de solde naturel moyens par commune (entre 2013 et 2017)" + +#: group.1602 +msgid "ad_langues_lux" +msgstr "Langues au Luxembourg" + +#: lu_int_wms.1603 +msgid "ad_migrations_solde_interne" +msgstr "Nombre absolu et taux de solde migratoire interne moyens par commune (entre 2013 et 2017)" + +#: lu_int_wms.1604 +msgid "ad_migrations_solde_international" +msgstr "Nombre absolu et taux de solde migratoire international moyens par commune (entre 2013 et 2017)" + +#: lu_int_wms.1605 +msgid "ad_migrations_solde_total" +msgstr "Nombre absolu et taux de solde migratoire total moyens par commune (entre 2013 et 2017)" + +#: lu_int_wms.1606 +msgid "ad_mariages_taux_nuptialite" +msgstr "Nombre absolu de mariages et taux de nuptialité moyens par commune (entre 2013 et 2017)" + +#: lu_int_wms.1607 +msgid "ad_mariages_age_femme" +msgstr "Âge moyen de la femme au mariage (moyenne entre 2013 et 2017)" + +#: lu_int_wms.1608 +msgid "ad_mariage_age_hommes" +msgstr "Âge moyen de l’homme au mariage (moyenne entre 2013 et 2017)" + +#: lu_int_wms.1609 +msgid "ad_langues_luxembourgeois" +msgstr "Luxembourgeois" + +#: lu_int_wms.1610 +msgid "ad_langues_francais" +msgstr "Français" + +#: lu_int_wms.1611 +msgid "ad_langues_allemand" +msgstr "Allemand" + +#: lu_int_wms.1612 +msgid "ad_langues_portugais" +msgstr "Portugais" + +#: lu_int_wms.1613 +msgid "ad_langues_italien" +msgstr "Italien" + +#: lu_int_wms.1614 +msgid "ad_langues_anglais" +msgstr "Anglais" + +#: lu_int_wms.1615 +msgid "ad_langues_autre" +msgstr "Autre langue" + +#: group.1616 +msgid "ad_langue_principale_2018" +msgstr "Langue principale par commune au 1er janvier 2018" + +#: lu_ext_wms.1617 +msgid "levee_sans_operation" +msgstr "" + +#: group.1620 +msgid "points_sauvetage_group" +msgstr "Points de secours" + +#: lu_int_wms.1621 +msgid "points_sauvetage_vdl" +msgstr "Points de secours - Ville de Luxembourg" + +#: group.1622 +msgid "ortal_kriterienauswertung" +msgstr "Kriterienauswertung" + +#: group.1623 +msgid "ortal_wanderwege" +msgstr "Wanderwege" + +#: lu_ext_wms.1624 +msgid "tourisme_ortal_5_strasse" +msgstr "Kriterium 5% auf Straße" + +#: lu_ext_wms.1625 +msgid "tourisme_ortal_10_nebenstrasse" +msgstr "Kriterium 10% neben Straße" + +#: lu_ext_wms.1626 +msgid "tourisme_ortal_75_abdeckung" +msgstr "Kriterium 75% Abdeckung" + +#: lu_ext_wms.1627 +msgid "tourisme_ortal_schlecht_begehbar" +msgstr "Kriterium schlecht begehbar" + +#: lu_ext_wms.1628 +msgid "tourisme_ortal_ausgangspunkte" +msgstr "Kriterium Ausgangspunkte" + +#: lu_ext_wms.1629 +msgid "tourisme_ortal_knotenpunkte" +msgstr "Kriterium Knotenpunkte" + +#: lu_ext_wms.1630 +msgid "tourisme_ortal_wegweiserstandorte" +msgstr "Kriterium Wegweiserstandorte " + +#: lu_ext_wms.1631 +msgid "tourisme_ortal_verpflegung" +msgstr "Kriterium Verpflegung" + +#: lu_ext_wms.1632 +msgid "tourisme_ortal_gastgeber" +msgstr "Kriterium Gastgeber" + +#: lu_ext_wms.1633 +msgid "tourisme_ortal_touristinfo" +msgstr "Kriterium Tourist-Informationen" + +#: lu_ext_wms.1634 +msgid "tourisme_ortal_wanderziele" +msgstr "Wanderziele & Sehnsuchtsorte" + +#: lu_ext_wms.1635 +msgid "tourisme_ortal_mobilitaet" +msgstr "Kriterium Mobilität" + +#: lu_ext_wms.1636 +msgid "tourisme_ortal_servicestellen" +msgstr "Kriterium Servicestellen" diff --git a/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-server.po b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-server.po similarity index 69% rename from geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-server.po rename to geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-server.po index ccae06e6c..5492665d0 100644 --- a/geoportailv3/locale/fr/LC_MESSAGES/geoportailv3-server.po +++ b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-server.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:15+0000\n" +"PO-Revision-Date: 2019-01-07 08:28+0000\n" "Last-Translator: Jeff Konnen \n" "Language-Team: French (http://www.transifex.com/geoportail/geoportailv3-lu/language/fr/)\n" "MIME-Version: 1.0\n" @@ -16,7 +16,7 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ./geoportailv3/views/pag.py:120 +#: ./geoportailv3/views/pag.py:124 #, python-format msgid "PAG webservice response ${email}" msgstr "Votre rapport est en train d'être généré.\n
Un email vous sera envoyé à l'adresse ${email} dès qu'il sera disponible" @@ -30,106 +30,123 @@ msgstr "Bonjour!\n
\nil y a eu un souci avec la génération de votre rapport msgid "PAG Mail the report link ${link}" msgstr "Bonjour!\n
\n
\nVotre rapport PAG est finalisé.\n
\n
\nCliquez-ici pour télécharger le résultat.\n
\n
\nMeilleures salutations\n
\nL'équipe du géoportail et du Ministère de l'Intérieur" -#: ./geoportailv3/views/luxprintproxy.py:147 +#: ./geoportailv3/views/luxprintproxy.py:215 msgid "Access constraints" msgstr "Limitations d'accès" #: ./geoportailv3/models.py:27 -msgid "Allowed measurement for a user" -msgstr "Allowed measurement for a user" +msgid "Base url for download" +msgstr "" -#: ./geoportailv3/models.py:38 +#: ./geoportailv3/models.py:42 +msgid "Allowed surveying for a user" +msgstr "" + +#: ./geoportailv3/models.py:54 +msgid "Surveying file config" +msgstr "" + +#: ./geoportailv3/models.py:67 msgid "Internal WMS layer" msgstr "Internal WMS layer" -#: ./geoportailv3/models.py:39 +#: ./geoportailv3/models.py:68 msgid "Internal WMS layers" msgstr "Internal WMS layers" -#: ./geoportailv3/models.py:60 +#: ./geoportailv3/models.py:89 msgid "External WMS layer" msgstr "External WMS layer" -#: ./geoportailv3/models.py:61 +#: ./geoportailv3/models.py:90 msgid "External WMS layers" msgstr "External WMS layers" -#: ./geoportailv3/models.py:52 +#: ./geoportailv3/models.py:37 ./geoportailv3/models.py:81 +#: ./geoportailv3/models.py:167 msgid "Url" msgstr "Url" -#: ./geoportailv3/models.py:53 +#: ./geoportailv3/models.py:38 +msgid "Only connected user can download" +msgstr "" + +#: ./geoportailv3/models.py:82 msgid "Layers" msgstr "Layers" -#: ./geoportailv3/models.py:54 +#: ./geoportailv3/models.py:83 msgid "Is a POI" msgstr "Is a POI" -#: ./geoportailv3/models.py:55 +#: ./geoportailv3/models.py:84 msgid "Collection ID" msgstr "Collection ID" -#: ./geoportailv3/models.py:56 +#: ./geoportailv3/models.py:85 msgid "REST url" msgstr "REST url" -#: ./geoportailv3/models.py:74 +#: ./geoportailv3/models.py:103 msgid "Category ID" msgstr "Category ID" -#: ./geoportailv3/models.py:87 +#: ./geoportailv3/models.py:116 msgid "Table name" msgstr "Table name" -#: ./geoportailv3/models.py:88 +#: ./geoportailv3/models.py:117 msgid "URL Rest" msgstr "URL Rest" -#: ./geoportailv3/models.py:89 +#: ./geoportailv3/models.py:118 msgid "Engine" msgstr "Engine" -#: ./geoportailv3/models.py:90 +#: ./geoportailv3/models.py:119 msgid "Layer" msgstr "Layer" -#: ./geoportailv3/models.py:91 +#: ./geoportailv3/models.py:120 msgid "Template file name" msgstr "Template file name" -#: ./geoportailv3/models.py:93 +#: ./geoportailv3/models.py:122 msgid "Is the template local or remote" msgstr "Is the template local or remote" -#: ./geoportailv3/models.py:94 +#: ./geoportailv3/models.py:123 msgid "Python function" msgstr "Python function" -#: ./geoportailv3/models.py:95 +#: ./geoportailv3/models.py:124 msgid "Role" msgstr "Role" -#: ./geoportailv3/models.py:96 -msgid "Attributes to keep" -msgstr "Attributes to keep" +#: ./geoportailv3/models.py:125 +msgid "Attributes to remove" +msgstr "" -#: ./geoportailv3/models.py:97 +#: ./geoportailv3/models.py:126 msgid "Id of the poi collection" msgstr "Id of the poi collection" -#: ./geoportailv3/models.py:98 +#: ./geoportailv3/models.py:127 msgid "Geometry column name" msgstr "Geometry column name" -#: ./geoportailv3/models.py:99 +#: ./geoportailv3/models.py:128 msgid "Order of columns" msgstr "Order of columns" -#: ./geoportailv3/models.py:100 +#: ./geoportailv3/models.py:129 msgid "ID column name" msgstr "ID column name" -#: ./geoportailv3/models.py:102 +#: ./geoportailv3/models.py:131 msgid "Is a profile displayed in template ?" msgstr "" + +#: ./geoportailv3/models.py:133 +msgid "Limit the results. If < 0 then not limit." +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-tooltips.po b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-tooltips.po new file mode 100644 index 000000000..01fb70893 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/geoportailv3_geoportal-tooltips.po @@ -0,0 +1,2444 @@ +# +# Translators: +# Andrea Donno , 2015-2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 +# Jeff Konnen , 2015 +# Jeff Konnen , 2015-2018 +# Jeff Konnen , 2015 +# Loubnabarra , 2017 +# Loubnabarra , 2017 +# Patrick Weber , 2015 +# Patrick Weber , 2015-2016 +msgid "" +msgstr "" +"Project-Id-Version: portail\n" +"PO-Revision-Date: 2019-01-11 14:27+0000\n" +"Last-Translator: dhorper \n" +"Language-Team: French (http://www.transifex.com/geoportail/geoportailv3-lu/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Nom" +msgstr "Nom" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Code national" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Photo" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Hyperlinks" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Abschnitt" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Cours eau" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Profil en travers" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Fiche descriptive" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Type LAWA" +msgstr "" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_name" +msgstr "Label" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_address" +msgstr "Adresse" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_bikes" +msgstr "Vélos disponibles" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_ebikes" +msgstr "Vélos électriques disponibles" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_docks" +msgstr "Ancrages vélos disponibles" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_docks" +msgstr "Ancrages vélos" + +#: engineecadastre Layer:265 RoleNone +msgid "f_numero" +msgstr "Numéro" + +#: engineecadastre Layer:457 RoleNone +msgid "f_tiff" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_nom" +msgstr "Nom" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_geoloc_type" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_fr" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_gr" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_nuts5" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_canton" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_habitants" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_chef_lieu" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_district" +msgstr "" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_commune" +msgstr "Nom actuel de la commune abritant la plus grande partie du biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_code" +msgstr "Type du biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_url_fiche" +msgstr "Fiche descriptive" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_biotope" +msgstr "Code unique du biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_annee_evaluation" +msgstr "Année de l’inventaire initial " + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_fr" +msgstr "Nom français du biotope" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_de" +msgstr "Nom allemand du biotope " + +#: engineecadastre Layer:1367 Role:664 +msgid "f_evaluation" +msgstr "Evaluation globale du biotope" + +#: engineecadastre Layer:1368 RoleNone +msgid "f_surface_ares" +msgstr "Surfaces en ares (100m2) arrondie au mètre-carré" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_Etat" +msgstr "Etat" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_P_kW" +msgstr "Puissance électrique nominale (kVA)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_D_rotor_m" +msgstr "Diamètre de l'hélice (mètres)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_H_Moy_m" +msgstr "Hauteur du moyeu (mètres)" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Exploitant" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Code" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Nom(s) du/des captages(s) concerné(s)" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Projet de Règlement grand-ducal" +msgstr "" + +#: engineecadastre Layer:647 RoleNone +msgid "f_Photo station" +msgstr "" + +#: engineecadastre Layer:573 RoleNone +msgid "f_Publication du règlement grand-duca" +msgstr "" + +#: engineecadastre Layer:797 RoleNone +msgid "f_site de la commune" +msgstr "" + +#: engineecadastre Layer:805 RoleNone +msgid "f_no_zpin" +msgstr "Numéro" + +#: engineecadastre Layer:805 RoleNone +msgid "f_interets_principaux" +msgstr "Intérêts principaux" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_c" +msgstr "Interdiction zone C" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_a" +msgstr "Interdiction zone A" + +#: engineecadastre Layer:804 RoleNone +msgid "f_date_classement" +msgstr "Date de classement" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_b" +msgstr "Interdiction zone B" + +#: engineecadastre Layer:804 RoleNone +msgid "f_commentaire" +msgstr "Commentaire" + +#: engineecadastre Layer:804 RoleNone +msgid "f_sous_zone" +msgstr "Sous-zone" + +#: engineecadastre Layer:804 RoleNone +msgid "f_link" +msgstr "Lien" + +#: engineecadastre Layer:804 RoleNone +msgid "f_code_national" +msgstr "Code national" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_Name" +msgstr "Nom" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_description" +msgstr "Description" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastrePa" +msgstr "Parcelle cadastrale" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastreSe" +msgstr "Section cadastrale" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteAEV" +msgstr "Autorisation du Ministre de l’Environnement / Commodo" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Installati" +msgstr "Installation" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArretNum" +msgstr "Numéro Arrêté" + +#: engineecadastre Layer:801 RoleNone +msgid "f_SiteOperat" +msgstr "Site Opérateur" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Adresse" +msgstr "Adresse" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception" +msgstr "Réception" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Explicatio" +msgstr "Explications générales" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteITM" +msgstr "Autorisation du Ministre du Travail" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception2" +msgstr "Réception 2" + +#: engineecadastre Layer:802 RoleNone +msgid "f_PointMesur" +msgstr "" + +#: engineecadastre Layer:802 RoleNone +msgid "f_URL" +msgstr "" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Km2" +msgstr "Surface (km2)" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Steckbri_1" +msgstr "Fiche descriptive" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Legende" +msgstr "Type Zone" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Id" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Code masse eau" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Fiches descriptives" +msgstr "" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Operateur" +msgstr "Opérateur" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Commune" +msgstr "Commune" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Technologi" +msgstr "Technologie" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Site" +msgstr "Site" + +#: engineecadastre Layer:427 RoleNone +msgid "f_fax" +msgstr "Fax" + +#: engineecadastre Layer:427 RoleNone +msgid "f_code_postal" +msgstr "Code postal" + +#: engineecadastre Layer:427 RoleNone +msgid "f_telephone" +msgstr "Téléphone" + +#: engineecadastre Layer:427 RoleNone +msgid "f_rue" +msgstr "Rue" + +#: engineecadastre Layer:427 RoleNone +msgid "f_boite_postale" +msgstr "Boîte postale" + +#: engineecadastre Layer:427 RoleNone +msgid "f_localite" +msgstr "Localité" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_AQIAPP_ID" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_RPT_FILE" +msgstr "Rapport annuel (complété mensuellement)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_X" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_Y" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_CITY" +msgstr "Localité" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO_RAW" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_F_ACTIVE" +msgstr "Etat (en service = 1, hors service =0)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_NUM_STREET" +msgstr "Numéro" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_CODE" +msgstr "Code" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_STREET" +msgstr "Rue" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_pm10_index_w_leg" +msgstr "Sous-indice PM10" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_date_et_heure" +msgstr "Date et heure" + +#: engineecadastre Layer:355 RoleNone +msgid "f_nom_section" +msgstr "" + +#: engineecadastre Layer:355 RoleNone +msgid "f_district" +msgstr "District" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_cad" +msgstr "Commune cadastrale" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_admin" +msgstr "Commune" + +#: engineecadastre Layer:355 RoleNone +msgid "f_code_section" +msgstr "Section" + +#: engineecadastre Layer:355 RoleNone +msgid "f_canton" +msgstr "Canton" + +#: engineecadastre Layer:540 RoleNone +msgid "f_InspireID" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_CODE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_FID" +msgstr "FID" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITENAME" +msgstr "Nom" + +#: engineecadastre Layer:540 RoleNone +msgid "f_TYPE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITECODE" +msgstr "Code" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nom_Projet" +msgstr "Projet" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nr_Projet" +msgstr "N° Projet" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PERIMETER" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Reclasseme" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Classement" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ORIG_FID" +msgstr "" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_communeDDP" +msgstr "Commune" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_plan" +msgstr "Plan" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_num_cadast" +msgstr "Numéro cadastral" + +#: engineecadastre Layer:401 RoleNone +msgid "f_Nom_Site" +msgstr "Nom Site" + +#: engineecadastre Layer:401 RoleNone +msgid "f_SurfaceHa" +msgstr "Surface en ha" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Projet" +msgstr "Projet" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Type" +msgstr "Type" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Priorite" +msgstr "Priorité" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code cours eau" +msgstr "" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code station" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_Operator" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_OBJECTID" +msgstr "" + +#: engineecadastre Layer:407 RoleNone +msgid "f_Categorie" +msgstr "Catégorie" + +#: engineecadastre Layer:402 RoleNone +msgid "f_Remarque" +msgstr "Remarque" + +#: engineecadastre Layer:655 Role:1 +msgid "f_Fiche station" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_lot" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_Gewaesser" +msgstr "" + +#: engineecadastre Layer:768 RoleNone +msgid "f_Résultats" +msgstr "" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Nbre_mes" +msgstr "Nombre de mesures" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_min" +msgstr "Activité min." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Activite" +msgstr "Activité moyenne" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_CANTON" +msgstr "Canton" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_max" +msgstr "Activité max." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_LAU2" +msgstr "Code LAU2" + +#: engineecadastre Layer:582 RoleNone +msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Drkg_Wtr_Prot_Zone" +msgstr "" + +#: engineecadastre Layer:582 RoleNone +msgid "f_Nitrates (mg/l)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Années de construction" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Type conduite" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Longueur géométrique (m)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Matériel conduite" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Cycle_pdm" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Nr" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Bezeich" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Planungszu" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Projekt_Co" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_result__Ge" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_RW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Lux_ID" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_F8" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Bezeichnun" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Kurzbezeic" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Maßnahmen" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_HW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Fiche" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Superficie (km²)" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Code AGE du point d'analyse" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Cours d'eau" +msgstr "Cours d'eau" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Profil" +msgstr "" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Nom de la station" +msgstr "" + +#: engineecadastre Layer:682 RoleNone +msgid "f_localisation" +msgstr "Localisation" + +#: engineecadastre Layer:682 RoleNone +msgid "f_parkup" +msgstr "Parking vélo double étage" + +#: engineecadastre Layer:682 RoleNone +msgid "f_capacity_inside" +msgstr "Capacité" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Tronçon" +msgstr "Tronçon" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Numéro" +msgstr "ID Site" + +#: engineecadastre Layer:713 RoleNone +msgid "f_YEAR" +msgstr "Année" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_line" +msgstr "LABEL_LINE" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_section" +msgstr "LABEL_SECTION" + +#: engineecadastre Layer:539 RoleNone +msgid "f_label" +msgstr "Parcelle " + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligneshort" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_no_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk_text" +msgstr "" + +#: engineecadastre Layer:428 RoleNone +msgid "f_heures_appel" +msgstr "Heures d'appel" + +#: engineecadastre Layer:428 RoleNone +msgid "f_arrondissement" +msgstr "Arrondissement" + +#: engineecadastre Layer:428 RoleNone +msgid "f_preposes_forestiers" +msgstr "Préposés forestiers" + +#: engineecadastre Layer:428 RoleNone +msgid "f_gsm" +msgstr "Gsm" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SelectTest" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_essence" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_propriete" +msgstr "PROPRIETE" + +#: engineecadastre Layer:690 RoleNone +msgid "f_secteur" +msgstr "SECTEUR" + +#: engineecadastre Layer:690 RoleNone +msgid "f_region" +msgstr "REGION" + +#: engineecadastre Layer:645 RoleNone +msgid "f_Analyses" +msgstr "" + +#: engineecadastre Layer:645 RoleNone +msgid "f_CAPA" +msgstr "" + +#: engineecadastre Layer:163 RoleNone +msgid "f_LEG_FR" +msgstr "Type" + +#: engineecadastre Layer:331 RoleNone +msgid "f_type" +msgstr "Type" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_la" +msgstr "Essence (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_de" +msgstr "Nom (all)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_la" +msgstr "Nom (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_fr" +msgstr "Essence (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_abreviation" +msgstr "Abbréviation" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_fr" +msgstr "Nom (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_de" +msgstr "Essence (all)" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChiro" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChir" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Ext_Nouv" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SUP2017" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Join_Count" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Area_ha" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Print0719" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Leng" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_OBJECTID_1" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone" +msgstr "Nom Zone" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_TARGET_FID" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PrintModif" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NumeroRGD" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA_DEF" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Specifique" +msgstr "Remarque" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Select_" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone2" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ElimComp" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Le_1" +msgstr "" + +#: engineecadastre Layer:680 RoleNone +msgid "f_No" +msgstr "Numéro" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Niveau d'assainissement" +msgstr "Niveau d'assainissement" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Contamination résiduelle" +msgstr "Contamination résiduelle" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Ancien No" +msgstr "Ancien numéro" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Description" +msgstr "Description" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Nom du site" +msgstr "Nom du site" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Année de saisie" +msgstr "Année de saisie" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Commentaire" +msgstr "Commentaire" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Identifiant surface" +msgstr "Identifiant de surface" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Méthode" +msgstr "Méthode" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Fr" +msgstr "Code de la zone tampon en français : \"ZT\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Gr" +msgstr "Code de la zone tampon en allemand : \"PZ\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Buffer_Id" +msgstr "Code unique de la zone tampon" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKGemeinde" +msgstr "Nom de la commune de l’année de l'inventaire" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Code" +msgstr "Code du premier biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_Shape_ares" +msgstr "Surface en ares (100m²) arrondie au mètre-carré" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEOCODE" +msgstr "Code unique du biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Nom" +msgstr "Nom français du troisième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Code" +msgstr "Code du deuxième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKJahr" +msgstr "Année de l'inventaire" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Nom" +msgstr "Nom français du deuxième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Name" +msgstr "Nom allemand du premier biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Code" +msgstr "Code du troisième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG3" +msgstr "Évaluation totale du troisième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG2" +msgstr "Évaluation totale du deuxième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG1" +msgstr "Évaluation totale du premier biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Name" +msgstr "Nom allemand du troisième biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Nom" +msgstr "Nom français du premier biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEMEINDE" +msgstr "Nom actuel de la commune abritant la plus grande partie du biotope" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Name" +msgstr "Nom allemand du deuxième biotope" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Partie numéro" +msgstr "" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Loi" +msgstr "" + +#: engineecadastre Layer:670 RoleNone +msgid "f_COMMUNE" +msgstr "Commune" + +#: engineecadastre Layer:670 RoleNone +msgid "f_UHD3" +msgstr "" + +#: engineecadastre Layer:493 RoleNone +msgid "f_Nom écosystème" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_y" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_arbre_baum" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_x" +msgstr "" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_name" +msgstr "Nom" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_description" +msgstr "Description" + +#: engineecadastre Layer:678 RoleNone +msgid "f_station_biologique" +msgstr "Station biologique" + +#: engineecadastre Layer:581 RoleNone +msgid "f_Qualité" +msgstr "" + +#: engineecadastre Layer:581 RoleNone +msgid "f_messstationen.GISADMIN.Badegewaesser.Baignade" +msgstr "" + +#: engineecadastre Layer:157 RoleNone +msgid "f_LDEN" +msgstr "dB" + +#: engineecadastre Layer:627 RoleNone +msgid "f_Station" +msgstr "" + +#: engineecadastre Layer:691 RoleNone +msgid "f_lot_numero" +msgstr "NUMERO" + +#: engineecadastre Layer:167 RoleNone +msgid "f_CodeDesc" +msgstr "Type" + +#: engineecadastre Layer:255 RoleNone +msgid "f_LNGT" +msgstr "dB" + +#: engineecadastre Layer:367 RoleNone +msgid "f_flurname" +msgstr "Lieu-dit" + +#: engineecadastre Layer:367 RoleNone +msgid "f_vendeur" +msgstr "Vendeur" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem_p" +msgstr "Remarque Bail" + +#: engineecadastre Layer:367 RoleNone +msgid "f_datum" +msgstr "Date d''achat" + +#: engineecadastre Layer:367 RoleNone +msgid "f_notar" +msgstr "Notaire" + +#: engineecadastre Layer:367 RoleNone +msgid "f_paechter" +msgstr "Exploitant" + +#: engineecadastre Layer:367 RoleNone +msgid "f_id" +msgstr "PF" + +#: engineecadastre Layer:367 RoleNone +msgid "f_jagdlos" +msgstr "Lot de chasse" + +#: engineecadastre Layer:367 RoleNone +msgid "f_sektion" +msgstr "Section" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fischereil" +msgstr "Lot de peche" + +#: engineecadastre Layer:367 RoleNone +msgid "f_num_flik" +msgstr "Num. FLIK" + +#: engineecadastre Layer:367 RoleNone +msgid "f_aff" +msgstr "Affectation" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fl_che" +msgstr "Surface cadastrale" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem" +msgstr "Remarque" + +#: engineecadastre Layer:367 RoleNone +msgid "f_gemeinde" +msgstr "Commune" + +#: engineecadastre Layer:367 RoleNone +msgid "f_kadasternu" +msgstr "Num. cadastral" + +#: engineecadastre Layer:378 RoleNone +msgid "f_voiture_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection1" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_cout" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_station" +msgstr "Station" + +#: engineecadastre Layer:378 RoleNone +msgid "f_operateur" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_open" +msgstr "" + +#: engineecadastre Layer:368 RoleNone +msgid "f_systeme" +msgstr "Service" + +#: engineecadastre Layer:368 RoleNone +msgid "f_adress" +msgstr "Adresse" + +#: engineecadastre Layer:368 RoleNone +msgid "f_reservation" +msgstr "Réservation" + +#: engineecadastre Layer:368 RoleNone +msgid "f_bornes" +msgstr "Bornes" + +#: engineecadastre Layer:368 RoleNone +msgid "f_ouvert" +msgstr "Disponible" + +#: engineecadastre Layer:643 RoleNone +msgid "f_Syndicat" +msgstr "" + +#: engineecadastre Layer:659 RoleNone +msgid "f_NAME" +msgstr "Nom" + +#: engineecadastre Layer:441 RoleNone +msgid "f_Cause mauvais etat" +msgstr "" + +#: engineecadastre Layer:536 RoleNone +msgid "f_km2" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_index_w_leg" +msgstr "Sous-indice NO2" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index_w_leg" +msgstr "Sous-indice O3" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index" +msgstr "Sous-Indice O3" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_value" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_value" +msgstr "Concentration O3 (ug/m3)" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm10_value" +msgstr "Concentration de particules PM10 (ug/m3) - Moyenne 24h glissante" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index_w_leg" +msgstr "Sous-indice PM2.5" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_value" +msgstr "Concentration de dioxyde d'azote NO2 (ug/m3) - Moyenne horaire" + +#: engineecadastre Layer:726 RoleNone +msgid "f_code_dossier" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_fin" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_annexe" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_debut" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_etat_libelle" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_aide" +msgstr "" + +#: engineecadastre Layer:747 RoleNone +msgid "f_Naturpark" +msgstr "Parc naturel" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_ru" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_b_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_easting" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_owner" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_northing" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_bois" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_numero_arr" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_ins" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_decommissi" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_master" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode_de" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_mazout" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_cha" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_nu" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_apres_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_no" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_latitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installa_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_gaz_nature" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_longitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonn_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_code_nace" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_conforme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_remarque" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonnee" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_local" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installate" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_artis" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_mot" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_co" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_diesel" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_rapport" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot5" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_biogaz" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_comme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_lo" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_batiment" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_rue" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_date" +msgstr "Date" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_indus" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_admin" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_exemption" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_avant_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_code_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_chau" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_numer" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges_mo" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_ITINERAIRE" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_N_PC" +msgstr "Numéro" + +#: engineecadastre Layer:808 RoleNone +msgid "f_NOM PC" +msgstr "Nom" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWA" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_E75N" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_UCZ" +msgstr "ID du point noir" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWC" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Code de l'élément fonctionnel" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Elément fonctionnel" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Code de la masse eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Type de mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_ID de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Nom de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Taille de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Description de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Type de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Longueur (m)" +msgstr "" + +#: engineecadastre Layer:1471 RoleNone +msgid "f_Code de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:669 RoleNone +msgid "f_UHD2" +msgstr "" + +#: engineecadastre Layer:1359 RoleNone +msgid "f_RPT_FILE_NEW" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E70N" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E75L" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E65N" +msgstr "" + +#: engineecadastre Layer:671 RoleNone +msgid "f_UHD1" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_LienMemori" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_nom_fichier" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_Area" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_NomProjet" +msgstr "" + +#: engineecadastre Layer:1503 RoleNone +msgid "f_UCEden" +msgstr "Exposition UCEden" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_street" +msgstr "Rue" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_link_to_emwelt" +msgstr "Lien" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_pm10_value_w_leg" +msgstr "Concentration de particules PM10 (ug/m3) - Moyenne 24h glissante" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_city" +msgstr "Localité" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value" +msgstr "Concentration d'ozone O3 (ug/m3) - Moyenne horaire" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_index" +msgstr "Indice global" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_index_w_leg" +msgstr "Sous-Indice O3" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_no2_value_w_leg" +msgstr "Concentration de dioxyde d'azote NO2 (ug/m3) - Moyenne horaire" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value_w_leg" +msgstr "Concentration d'ozone O3 (ug/m3) - Moyenne horaire" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_x" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_y" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Publiée" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Abandonné" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Séquence" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Catégorie d'SPC" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé par" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Traité" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Effacé" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_area(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Type de surface" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_length(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Sous type" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié par" +msgstr "" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_fournisseur" +msgstr "Gestionnaire de réseau" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_texte_fr" +msgstr " Démarche" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_rdv" +msgstr "Rendez-vous" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_adresse" +msgstr "Adresse" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_responsable" +msgstr "Responsable" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_horaire" +msgstr "Horaire" + +#: engineecadastre Layer:1507 RoleNone +msgid "f_Descrip" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Field1" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Code_posta" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Longitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Latitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Addresse" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Centre_de" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Y" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_X" +msgstr "" + +#: engineecadastre Layer:1509 RoleNone +msgid "f_F1" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_IdAEV" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_X" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Moy2018" +msgstr "Moyenne NO2 (ug/m3)" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_Y" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Localité" +msgstr "Localité" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_AGE" +msgstr "Nombre d‘années d‘enherbement" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_FLAECHE_AR" +msgstr "Surface (en are)" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_Allemands" +msgstr "Population allemande" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_F__Alleman" +msgstr "Part des Allemands en %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_F__Afrique" +msgstr "Part des ressortissants d'Afrique en %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_Afrique" +msgstr "Population africaine" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_type_proprietaire" +msgstr "Type de propriétaire" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_nom_proprietaire" +msgstr "Nom du propriétaire" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_annee_inventaire" +msgstr "Année inventaire d'aménagement" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_NO2_I1G" +msgstr "NO2 (ug/m3)" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_STR_NAME" +msgstr "Rue" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_F__Portuga" +msgstr "Part des Portuguais" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_Portugais" +msgstr "Population portugaise" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_Amérique" +msgstr "Population américaine" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_F__Amériq" +msgstr "Part des ressortissants d'Amérique en %" + +#: engineecadastre Layer:1532 RoleNone +msgid "f_CODE_LAU2" +msgstr "Code LAU2" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Etranger" +msgstr "Population étrangère" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__étrang" +msgstr "Part des étrangers en %" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Luxembourg" +msgstr "Population luxembourgeoise" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__luxembo" +msgstr "Part des Luxembourgeois en %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_F__Italien" +msgstr "Part des Italiens en %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_Italiens" +msgstr "Population italienne" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_F__UE28" +msgstr "Part des Européens (UE-28) en %" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_UE28" +msgstr "Population UE-28" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_Européens" +msgstr "Population européenne (non UE-28)" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_F__non_UE" +msgstr "Part des Européens (non UE-28) en %" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_Belges" +msgstr "Population belge" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_F__Belges" +msgstr "Part des Belges en %" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_AsieOcéan" +msgstr "Population asiatique et océanienne" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_F__Asie_et" +msgstr "Part des ressortissants d'Asie et d'Océanie en %" + +#: engineecadastre Layer:1577 RoleNone +msgid "f_Population_com" +msgstr "Population par commune" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_F__França" +msgstr "Part des Français en %" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_Français" +msgstr "Population française" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_total_m_3" +msgstr "Population âgée de moins de 3 ans" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_part_m_3" +msgstr "Part de la population âgée de moins de 3 ans" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_part_6_10" +msgstr "Part de la population âgée entre 6 et 10 ans" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_total_6_10" +msgstr "Population âgée entre 6 et 10 ans" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_part_3_5" +msgstr "Part de la population âgée entre 3 et 5 ans" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_total_3_5" +msgstr "Population âgée entre 3 et 5 ans" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_tot_11_17" +msgstr "Population âgée entre 11 et 17 ans" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_part_11_17" +msgstr "Part de la population âgée entre 11 et 17 ans" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_p_75_89" +msgstr "Part de la population âgée entre 75 et 89 ans" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_t_75_89" +msgstr "Population âgée entre 75 et 89 ans" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_t_90" +msgstr "Population âgée de 90 ans et plus" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_p_90" +msgstr "Part de la population âgée de 90 ans et plus" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_dep_jeunes" +msgstr "Rapport de dépendance des jeunes (0-19 ans)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_pers_jeune" +msgstr "Personnes jeunes (0-19 ans)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_age_trav" +msgstr "Personnes en âge de travailler (20-64 ans)" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_rapp_j_a" +msgstr "Rapport de dépendance total" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_pers_agees" +msgstr "Personnes âgées (65+ ans)" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibatai" +msgstr "Célibataires" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibat_1" +msgstr "Part des célibataires en %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e_1" +msgstr "Part des personnes mariées/pacsées en %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e__" +msgstr "Personnes mariées/pacsées" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_e" +msgstr "Personnes divorcées/séparées" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_1" +msgstr "Part des personnes divorcées/séparées en %" + +#: engineecadastre Layer:1563 RoleNone +msgid "f_age_moyen" +msgstr "Âge moyen (deux sexes confondus)" + +#: engineecadastre Layer:1562 RoleNone +msgid "f_age_h" +msgstr "Âge moyen des hommes" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_moins20" +msgstr "Population de moins de 20 ans" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_p_moins20" +msgstr "Part de la population de moins de 20 ans en %" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_a20_64" +msgstr "Population âgée entre 20 et 64 ans" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_p20_64" +msgstr "Part de la population âgée entre 20 et 64 ans en %" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_pole_urbai" +msgstr "Pôle urbain" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_Population_villes" +msgstr "Population" + +#: engineecadastre Layer:1576 RoleNone +msgid "f_Population_can" +msgstr "Population par canton" + +#: engineecadastre Layer:1578 RoleNone +msgid "f_prop_f" +msgstr "Proportion de femmes en %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_nbre" +msgstr "Population née au Luxembourg" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_nbre" +msgstr "Population née à l'étranger" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_pourcent" +msgstr "Part de la population née à l'étranger" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_pourcent" +msgstr "Part de la population née au Luxembourg en %" + +#: engineecadastre Layer:1561 RoleNone +msgid "f_age_f" +msgstr "Âge moyen des femmes" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veuve" +msgstr "Veufs/veuves" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veu_1" +msgstr "Part des veufs/veuves en %" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Annee_fusi" +msgstr "Date d'entrée en vigueur de la fusion communale" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Nouv_comm" +msgstr "Nom de la commune après fusion" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Anc_comm" +msgstr "Nom de la commune avant fusion" + +#: engineecadastre Layer:1598 RoleNone +msgid "f_F__des_nai" +msgstr "Part des naissances dans le mariage (%) (2013-2017)" + +#: engineecadastre Layer:1599 RoleNone +msgid "f_Age_moyen" +msgstr "Age moyen à la maternité (moyenne 2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_24" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_d" +msgstr "Nombre de décès moyen (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_20" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_21" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_22" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_23" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissances" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_na" +msgstr "Taux de natalité moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F10" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F11" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_po" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_3" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne__1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_2" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_na" +msgstr "Nombre de naissances moyen (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_mo" +msgstr "Taux de mortalité moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_4" +msgstr "" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Taux de solde naturel moyen (‰)" +msgstr "Taux de solde naturel moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Solde_natu" +msgstr "Solde naturel moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Solde_mi_5" +msgstr "Solde migratoire interne moyen (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Taux de solde migratoire interne moyen (‰)" +msgstr "Taux de solde migratoire interne moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1605 RoleNone +msgid "f_Taux de solde migratoire total moyen (‰)" +msgstr "Solde migratoire total moyen (2013-2017)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Ital_" +msgstr "Italien est la langue principale (%)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Italienisc" +msgstr "Italien est la langue principale (personnes)" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_a64plus" +msgstr "Population âgée de 65 ans et plus" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_p64plus" +msgstr "Part de la population âgée de 65 ans et plus" + +#: engineecadastre Layer:1604 RoleNone +msgid "f_Taux de solde migratoire international moyen (‰)" +msgstr "Taux de solde migratoire international moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_t_65_74" +msgstr "Population âgée entre 65 et 74 ans" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_p_65_74" +msgstr "Part de la population âgée entre 65 et 74 ans" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Taux_de__1" +msgstr "Taux de nuptialité moyen (‰) (2013-2017)" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Mariages_1" +msgstr "Nombre de mariages moyen (2013-2017)" + +#: engineecadastre Layer:1607 RoleNone +msgid "f_Age moyen des femmes au mariage" +msgstr "Age moyen des femmes au mariage (moyenne 2013-2017)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (1981)" +msgstr "Nombre d'habitants en 1981" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Taux_acc" +msgstr "Taux d'accroissement de la population en % (1981-2018)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (2018)" +msgstr "Nombre d'habitants en 2018" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Densité_d" +msgstr "Densité de population en 2018 (hab./km2)" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Chiffres_a" +msgstr "Nombre d'habitants en 2018" + +#: engineecadastre Layer:1608 RoleNone +msgid "f_Age moyen des hommes au mariage" +msgstr "Age moyen des hommes au mariage (moyenne 2013-2017)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Luxemburgi" +msgstr "Luxembourgeois est la langue principale (personnes)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Lux_" +msgstr "Luxembourgeois est la langue principale (%)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Französis" +msgstr "Français est la langue principale (personnes)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Fran_" +msgstr "Français est la langue principale (%)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deutsch" +msgstr "Allemand est la langue principale (personnes)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deu_" +msgstr "Allemand est la langue principale (%)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Portugiesi" +msgstr "Portugais est la langue principale (personnes)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Port_" +msgstr "Portugais est la langue principale (%)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Englisch" +msgstr "Anglais est la langue principale (personnes)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Eng_" +msgstr "Anglais est la langue principale (%)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_sonstige" +msgstr "Autre langue est la langue principale (personnes)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_Sonstige_" +msgstr "Autre langue est la langue principale (%)" + +#: engineecadastre Layer:1582 RoleNone +msgid "f_dep_age" +msgstr "Rapport de dépendance des personnes âgées (65+ ans)" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_MEASU" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_CREAT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ELEVATION" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_POINT_CLAS" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_IMG_DIRECT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_Y_WG" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID_STRING" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REFERENCE_" +msgstr "Dénomination" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_X_WG" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REMARQUE" +msgstr "Dénomination" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID" +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/ngeo.po b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/ngeo.po new file mode 100644 index 000000000..e1768df17 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/fr/LC_MESSAGES/ngeo.po @@ -0,0 +1,383 @@ +# Translators: +# Frédéric Junod , 2017 +# Jacolin , 2018 +# Stéphane Brunner , 2018 +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Last-Translator: Stéphane Brunner , 2018\n" +"Language-Team: French (https://www.transifex.com/camptocamp/teams/36764/fr/)\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/filter/component.html:64 +msgid "+ Add a new criteria" +msgstr "Ajouter un nouveau critère" + +#: src/routing/routing.html:47 +msgid "Add via" +msgstr "Ajouter point de passage" + +#: src/filter/component.js:181 +msgid "All" +msgstr "Tout" + +#: src/filter/rulecomponent.html:210 +msgid "Apply" +msgstr "Appliquer" + +#: src/filter/component.html:94 +msgid "Apply filter" +msgstr "Appliquer filtre" + +#: src/filter/component.js:185 +msgid "At least one" +msgstr "Au moins un" + +#: src/filter/ruleComponent.js:200 +msgid "Begins at" +msgstr "Commence à" + +#: src/filter/rulecomponent.html:288 +msgid "Between" +msgstr "Entre" + +#: src/filter/rulecomponent.html:214 +msgid "Cancel" +msgstr "Annuler" + +#: src/draw/Controller.js:71 +msgid "Circle" +msgstr "Cercle" + +#: src/routing/routing.html:41 +msgid "Clear" +msgstr "Réinitialiser" + +#: src/googlestreetview/component.html:1 +msgid "Click on a road on the map to start StreetView." +msgstr "" +"Cliquer sur une route dans la carte pour afficher les images StreetView " + +#: src/interaction/MeasureLength.js:32 +msgid "Click to continue drawing the line." +msgstr "Cliquez pour continuer le dessin de la ligne." + +#: src/interaction/MeasureArea.js:37 +msgid "Click to continue drawing the polygon." +msgstr "Cliquez pour continuer le dessin du poligone." + +#: src/editing/createfeatureComponent.js:193 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" +"Cliquer pour continuer le dessin
Double cliquer ou cliquer sur le " +"dernier point pour finir le dessin" + +#: src/editing/createfeatureComponent.js:211 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" +"Cliquez pour continuer le dessin
Double cliquez ou cliquez sur le point" +" de départ pour finir terminer" + +#: src/measure/length.js:43 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" +"Cliquer pour continuer le dessin
Double cliquer ou cliquer sur le " +"dernier point pour finir le dessin" + +#: src/measure/area.js:41 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" +"Cliquer pour continuer le dessin
Double cliquer ou cliquer sur le " +"dernier point de départ pour finir le dessin" + +#: src/measure/azimut.js:45 +msgid "Click to finish" +msgstr "Cliquez pour finir" + +#: src/editing/createfeatureComponent.js:210 +msgid "Click to start drawing area" +msgstr "Cliquez pour commencer la zone de dessin" + +#: src/measure/azimut.js:44 +msgid "Click to start drawing circle" +msgstr "Cliquez pour commencer à dessiner un circle" + +#: src/editing/createfeatureComponent.js:192 +msgid "Click to start drawing length" +msgstr "Cliquez pour commencer à dessiner une longueur" + +#: src/measure/length.js:42 +msgid "Click to start drawing line" +msgstr "Cliquez pour commencer à dessiner une ligne" + +#: src/measure/area.js:40 +msgid "Click to start drawing polygon" +msgstr "Cliquez pour commencer à dessiner un polygone" + +#: src/message/Disclaimer.js:157 +msgid "Close" +msgstr "Fermer" + +#: src/filter/ruleComponent.js:196 src/filter/ruleComponent.js:197 +msgid "Contains" +msgstr "Contient" + +#: src/filter/component.html:12 +msgid "Criteria taken into account" +msgstr "Critère pris en compte" + +#: src/misc/datepickerComponent.html:6 +msgid "Date:" +msgstr "Date :" + +#: src/routing/routing.html:88 +msgid "Distance" +msgstr "Distance" + +#: src/interaction/MeasureLength.js:34 +msgid "Double-click or click last point to finish." +msgstr "Double cliquer ou cliquer sur le dernier point pour terminer." + +#: src/interaction/MeasureArea.js:39 +msgid "Double-click or click starting point to finish." +msgstr "Double cliquer ou cliquer sur le premier point pour terminer." + +#: src/filter/rulecomponent.html:113 +msgid "Draw a circle on the map" +msgstr "Dessiner un cercle" + +#: src/filter/rulecomponent.html:148 +msgid "Draw a circle on the map." +msgstr "Dessiner un cercle." + +#: src/filter/rulecomponent.html:90 +msgid "Draw a line on the map" +msgstr "Dessiner une ligne" + +#: src/filter/rulecomponent.html:142 +msgid "Draw a line string on the map." +msgstr "Dessiner une ligne." + +#: src/filter/rulecomponent.html:78 +msgid "Draw a point on the map" +msgstr "Dessiner un point" + +#: src/filter/rulecomponent.html:139 +msgid "Draw a point on the map." +msgstr "Dessiner un point." + +#: src/filter/rulecomponent.html:102 +msgid "Draw a polygon on the map" +msgstr "Dessiner un polygone" + +#: src/filter/rulecomponent.html:145 +msgid "Draw a polygon on the map." +msgstr "Dessiner un polygone." + +#: src/filter/rulecomponent.html:124 +msgid "Draw a rectangle on the map" +msgstr "Dessiner un rectangle" + +#: src/filter/rulecomponent.html:151 +msgid "Draw a rectangle on the map." +msgstr "Dessiner un rectangle." + +#: src/routing/routing.html:79 +msgid "Duration" +msgstr "Durée" + +#: src/filter/ruleComponent.js:201 +msgid "During" +msgstr "Durant" + +#: src/filter/ruleComponent.js:202 +msgid "Ends at" +msgstr "Se termine à" + +#: src/filter/rulecomponent.html:241 +msgid "From" +msgstr "Depuis" + +#: src/misc/datepickerComponent.html:5 +msgid "From:" +msgstr "De :" + +#: src/geolocation/mobile.js:145 +msgid "Geolocation: An unknown error occurred." +msgstr "Géolocalisation: Délais de recherche dépassé." + +#: src/filter/component.html:103 +msgid "Get data" +msgstr "Obtenir données" + +#: src/filter/ruleComponent.js:198 +msgid "Intersects" +msgstr "Intersection avec" + +#: src/filter/ruleComponent.js:188 src/filter/ruleComponent.js:203 +msgid "Is equal to" +msgstr "Est equal à" + +#: src/filter/ruleComponent.js:189 +msgid "Is greater than" +msgstr "Est plus grand que" + +#: src/filter/ruleComponent.js:190 +msgid "Is greater than or equal to" +msgstr "Est plus grand ou égal à" + +#: src/filter/ruleComponent.js:199 +msgid "Is inside of" +msgstr "Est à l'intérieur de" + +#: src/filter/ruleComponent.js:192 +msgid "Is lesser than" +msgstr "Est plus petit que" + +#: src/filter/ruleComponent.js:193 +msgid "Is lesser than or equal to" +msgstr "Est plus petit ou égal à" + +#: src/filter/ruleComponent.js:195 +msgid "Is not equal to" +msgstr "N'est pas égal à" + +#: src/draw/Controller.js:69 +msgid "LineString" +msgstr "Ligne" + +#: src/geolocation/mobile.js:139 +msgid "Location information is unavailable." +msgstr "Géolocalisation: Délais de recherche dépassé." + +#: src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "d-M-yyyy" + +#: src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "M-yyyy" + +#: src/filter/ruleComponent.js:869 +msgid "Move" +msgstr "Déplacer" + +#: src/filter/component.js:189 +msgid "None" +msgstr "Aucun" + +#: src/misc/File.js:52 +msgid "Operation canceled" +msgstr "Opération annulée" + +#: src/draw/Controller.js:68 +msgid "Point" +msgstr "Point" + +#: src/draw/Controller.js:70 +msgid "Polygon" +msgstr "Polygone" + +#: src/routing/routing.html:56 +msgid "Profile" +msgstr "Profil" + +#: src/misc/File.js:52 +msgid "Read failed" +msgstr "Échec de lecture" + +#: src/draw/Controller.js:72 +msgid "Rectangle" +msgstr "Rectangle" + +#: src/routing/routing.html:44 +msgid "Reverse" +msgstr "Inverser" + +#: src/filter/ruleComponent.js:878 +msgid "Rotate" +msgstr "Rotation" + +#: src/routing/routing.html:75 +msgid "Route statistics" +msgstr "Statistiques" + +#: src/routing/routingfeature.html:5 +msgid "Search..." +msgstr "Recherche…" + +#: src/filter/component.html:72 +msgid "Spatial filter" +msgstr "Filtre spatial" + +#: src/googlestreetview/component.html:7 +msgid "Street View data not found for this location." +msgstr "Données Street View non trouvées pour cette position." + +#: src/draw/Controller.js:73 +msgid "Text" +msgstr "Texte" + +#: src/geolocation/mobile.js:142 +msgid "The request to get user location timed out." +msgstr "Géolocalisation: Délais de recherche dépassé." + +#: src/editing/attributescomponent.html:116 +msgid "This field is required" +msgstr "Ce champ est requis" + +#: src/misc/datepickerComponent.html:12 +msgid "To:" +msgstr "À :" + +#: src/misc/File.js:85 +msgid "Upload failed" +msgstr "Envoie échoué" + +#: src/geolocation/mobile.js:136 +msgid "User denied the request for Geolocation." +msgstr "Géolocalisation: Vous n’avez pas donné la permission." + +#: src/filter/rulecomponent.html:290 +msgid "and" +msgstr "et" + +#: src/misc/filters.js:365 +msgid "day" +msgid_plural "days" +msgstr[0] "jour" +msgstr[1] "jours" + +#: src/misc/filters.js:362 +msgid "hour" +msgid_plural "hours" +msgstr[0] "heure" +msgstr[1] "heures" + +#: src/misc/filters.js:359 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minute" +msgstr[1] "minutes" + +#: src/misc/filters.js:356 +msgid "second" +msgid_plural "seconds" +msgstr[0] "seconde" +msgstr[1] "secondes" + +#: src/filter/rulecomponent.html:243 +msgid "to" +msgstr "à" + +#: src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "yyyy" diff --git a/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-client.po b/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-client.po similarity index 54% rename from geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-client.po rename to geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-client.po index 18b391196..b7f166770 100644 --- a/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-client.po +++ b/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-client.po @@ -2,19 +2,24 @@ # Translators: # Andrea Donno , 2015-2016 # Andrea Donno , 2015 -# Andrea Donno , 2015-2017 +# Andrea Donno , 2015-2018 # Andrea Donno , 2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 # eRenaud Michaëlis , 2016 # Francis Kaell , 2015 # Jeff Konnen , 2015-2016 -# Jeff Konnen , 2016-2017 +# Jeff Konnen , 2016-2018 +# Loubnabarra , 2017 +# Loubnabarra , 2017 # Patrick Weber , 2015 # Patrick Weber , 2015 msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:24+0000\n" -"Last-Translator: Jeff Konnen \n" +"PO-Revision-Date: 2019-01-09 13:24+0000\n" +"Last-Translator: dhorper \n" "Language-Team: Luxembourgish (http://www.transifex.com/geoportail/geoportailv3-lu/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,13 +37,13 @@ msgstr "Δ -" #: geoportailv3/static/js/externaldata/externaldata.html:2 msgid "+ Add external Wms" -msgstr "+ Externe WMS bäisetzen" +msgstr "+ Externe WM(T)S bäisetzen" -#: geoportailv3/templates/index.html:99 +#: geoportailv3/templates/index.html:131 msgid "+ Add layers" msgstr "+ Layeren bäisetzen" -#: geoportailv3/templates/index.html:15 +#: geoportailv3/templates/index.html:17 msgid "- Geoportal Luxembourg" msgstr "- Geoportail Letzebuerg" @@ -46,66 +51,75 @@ msgstr "- Geoportail Letzebuerg" msgid "- link from geoportail.lu" msgstr "link aus dem geoportail.lu" -#: geoportailv3/static/js/mymaps/mymaps.html:20 +#: geoportailv3/static/js/mymaps/mymaps.html:21 msgid "Aucune description" msgstr "Keng Beschreiwung" -#: geoportailv3/templates/index.html:154 +#: geoportailv3/templates/index.html:49 +msgid "" +"You are currently disconnected.\n" +" Enable offline mode\n" +" \n" +" You are currently offline." +msgstr "Dir hudd am Moment keng Internetverbindung.\n Offline-Modus aktivéiren\n \n Dir hudd am Moment keng Internetverbindung." + +#: geoportailv3/templates/index.html:188 msgid "" "A right click (tap and hold on mobile) will display information " "about the current location." msgstr "Duerch Rietsklick (tippen an gedréckt haalen op mobil) ginn d'Informatiounen iwwert déi aktuell Positioun ugewisen" -#: geoportailv3/templates/index.html:157 +#: geoportailv3/templates/index.html:191 msgid "" "A short click (tap on mobile) on a map feature will select the " "feature and show more information." msgstr "Duerch Klick (tippen op mobil) op eng Funktioun gëtt dës ausgewielt an méi Informatiounen ugewisen" -#: geoportailv3/templates/index.html:221 +#: geoportailv3/templates/index.html:294 msgid "A Propos" msgstr "Iwwert Eis" -#: geoportailv3/static/js/print/printdirective.js:209 +#: geoportailv3/static/js/print/printdirective.js:218 msgid "A0 landscape" msgstr "A0 Landschaft" -#: geoportailv3/static/js/print/printdirective.js:210 +#: geoportailv3/static/js/print/printdirective.js:219 msgid "A0 portrait" msgstr "A0 Portrait" -#: geoportailv3/static/js/print/printdirective.js:207 +#: geoportailv3/static/js/print/printdirective.js:216 msgid "A1 landscape" msgstr "A1 Landschaft" -#: geoportailv3/static/js/print/printdirective.js:208 +#: geoportailv3/static/js/print/printdirective.js:217 msgid "A1 portrait" msgstr "A1 Portrait" -#: geoportailv3/static/js/print/printdirective.js:205 +#: geoportailv3/static/js/print/printdirective.js:214 msgid "A2 landscape" msgstr "A2 Landschaft" -#: geoportailv3/static/js/print/printdirective.js:206 +#: geoportailv3/static/js/print/printdirective.js:215 msgid "A2 portrait" msgstr "A2 Portrait" -#: geoportailv3/static/js/print/printdirective.js:203 +#: geoportailv3/static/js/print/printdirective.js:212 msgid "A3 landscape" msgstr "A3 Landschaft" -#: geoportailv3/static/js/print/printdirective.js:204 +#: geoportailv3/static/js/print/printdirective.js:213 msgid "A3 portrait" msgstr "A3 Portrait" -#: geoportailv3/static/js/print/printdirective.js:201 +#: geoportailv3/static/js/print/printdirective.js:210 msgid "A4 landscape" msgstr "A4 Landschaft" -#: geoportailv3/static/js/print/printdirective.js:202 +#: geoportailv3/static/js/print/printdirective.js:211 msgid "A4 portrait" msgstr "A4 Portrait" +#: geoportailv3/static/js/offlineNgeoComponent.html:12 #: geoportailv3/static/js/print/print.html:45 msgid "Abort" msgstr "Ënnerbriechen" @@ -114,15 +128,26 @@ msgstr "Ënnerbriechen" msgid "Access constraints :" msgstr "Zougangslimitatiounen :" +#: geoportailv3/static/js/offlineNgeoComponent.html:31 +msgid "Activate offline mode" +msgstr "Offline-Modus aktivéiren" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:58 +msgid "Activer Google Streetview" +msgstr "Aktivéiert Google Street View" + #: geoportailv3/static/js/externaldata/externaldata.html:8 msgid "Add external data" msgstr "Extern Date bäilueden" -#: geoportailv3/static/js/search/searchdirective.js:399 +#: geoportailv3/static/js/routing/routingdirective.js:249 +#: geoportailv3/static/js/search/searchdirective.js:447 msgid "Addresses" msgstr "Adressen" +#: geoportailv3/static/js/query/casiporeport.html:8 #: geoportailv3/static/js/query/pagreport.html:8 +#: geoportailv3/static/js/query/pdsreport.html:8 msgid "Adresse Email" msgstr "Email Adress" @@ -134,27 +159,47 @@ msgstr "Noosten Adress" msgid "Affaire" msgstr "Affaire" -#: geoportailv3/templates/index.html:222 +#: geoportailv3/templates/index.html:111 +msgid "Afficher les modèles 3D" +msgstr "3D Modeller weisen" + +#: geoportailv3/templates/index.html:295 msgid "Aide" msgstr "Hëllef" +#: geoportailv3/static/js/routing/routing.html:45 +msgid "Ajouter une étape" +msgstr "Tëschestopp bäisetzen" + #: geoportailv3/static/js/draw/featurepopup.html:88 msgid "Ajouter vignette" msgstr "Vignette bäisetzen" -#: geoportailv3/static/js/draw/styleediting.html:113 -#: geoportailv3/static/js/draw/styleediting.html:99 +#: geoportailv3/static/js/locationinfo/locationinfo.html:37 +#: geoportailv3/static/js/search/search.html:16 +msgid "Ajouter étape à mon itinéraire" +msgstr "Tëschestopp bäisetzen" + +#: node_modules/ngeo/src/filter/component.js:154 +msgid "All" +msgstr "All" + +#: geoportailv3/static/js/draw/styleediting.html:100 +#: geoportailv3/static/js/draw/styleediting.html:114 msgid "Angle" msgstr "Wénkel" #: geoportailv3/static/js/askredirect/askredirect.html:10 #: geoportailv3/static/js/draw/featurepopup.html:116 #: geoportailv3/static/js/draw/featurepopup.html:136 -#: geoportailv3/static/js/draw/styleediting.html:120 -#: geoportailv3/static/js/mymaps/mymaps.html:171 -#: geoportailv3/static/js/mymaps/mymaps.html:185 -#: geoportailv3/static/js/mymaps/mymaps.html:199 -#: geoportailv3/static/js/mymaps/mymaps.html:294 +#: geoportailv3/static/js/draw/styleediting.html:121 +#: geoportailv3/static/js/mymaps/mymaps.html:137 +#: geoportailv3/static/js/mymaps/mymaps.html:151 +#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:210 +#: geoportailv3/static/js/mymaps/mymaps.html:305 +#: geoportailv3/static/js/query/info.html:11 msgid "Annuler" msgstr "annuléieren" @@ -162,7 +207,11 @@ msgstr "annuléieren" msgid "Area:" msgstr "Fläch:" -#: geoportailv3/static/js/mymaps/mymaps.html:25 +#: node_modules/ngeo/src/filter/component.js:158 +msgid "At least one" +msgstr "" + +#: geoportailv3/static/js/mymaps/mymaps.html:26 msgid "Attention!" msgstr "Opgepasst!" @@ -171,6 +220,10 @@ msgid "Aucun symbole disponible" msgstr "Erstellt, späichert an deelt är Kaarten" #: geoportailv3/static/js/query/default.html:20 +#: geoportailv3/static/js/query/default_no_prefix.html:20 +#: geoportailv3/static/js/query/default_table.html:28 +#: geoportailv3/static/js/query/default_table_no_prefix.html:28 +#: geoportailv3/static/js/query/sentier_nature.html:19 msgid "Aucune information disponible pour cette couche" msgstr "Keng Informatiounen vun dëser Couche disponibel" @@ -182,15 +235,15 @@ msgstr "Et ass keng Legend fir déi ausgewielte Layer definéiert" msgid "Azimut" msgstr "Azimut" -#: geoportailv3/static/js/search/searchdirective.js:375 +#: geoportailv3/static/js/search/searchdirective.js:426 msgid "Background" msgstr "Hannergrond" -#: geoportailv3/static/js/search/searchdirective.js:363 +#: geoportailv3/static/js/search/searchdirective.js:414 msgid "Background Layers" msgstr "Hannergrond Kaarten" -#: geoportailv3/static/js/exclusionmanagerservice.js:125 +#: geoportailv3/static/js/exclusionmanagerservice.js:127 msgid "" "Background has been deactivated because the layer {{layer}} cannot be " "displayed on top of it." @@ -200,45 +253,58 @@ msgstr "D' Hannergrondkaart gouf ausgeschalt well se net mam Layer {{layer}} kan msgid "Background layer:" msgstr "Hannergrondlayer:" +#: node_modules/ngeo/src/filter/rulecomponent.js:171 +msgid "Begins at" +msgstr "" + #: geoportailv3/static/js/draw/featurepopup.html:96 -#: geoportailv3/static/js/mymaps/mymaps.html:155 +#: geoportailv3/static/js/mymaps/mymaps.html:347 +#: geoportailv3/static/js/offlineNgeoComponent.html:105 +#: geoportailv3/static/js/offlineNgeoComponent.html:123 +#: geoportailv3/static/js/offlineNgeoComponent.html:74 msgid "Cancel" msgstr "Annuléieren" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:462 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:573 msgid "Carte copiée" msgstr "Kaart kopéiert" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:714 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:952 msgid "Carte créée" msgstr "Kaart erstallt" -#: geoportailv3/static/js/mymaps/mymaps.html:38 +#: geoportailv3/static/js/mymaps/mymaps.html:39 msgid "Carte créée par" msgstr "Kaart erstallt vun: " -#: geoportailv3/templates/index.html:90 +#: geoportailv3/templates/index.html:121 msgid "Catalog" msgstr "Katalog" -#: geoportailv3/static/js/mymaps/mymaps.html:256 +#: geoportailv3/static/js/mymaps/mymaps.html:267 msgid "Catégorie" msgstr "Kategorie" -#: geoportailv3/static/js/imageupload/imguploaddirective.js:118 +#: geoportailv3/static/js/imageupload/imguploaddirective.js:116 msgid "Ce format d'image n'est as supporté." msgstr "Dëst Format gëtt net ennerstëtzt" -#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:71 +#: geoportailv3/static/js/themeswitcher/themeswitcherdirective.js:72 msgid "Ce thème est protégé. Veuillez vous connecter." msgstr "Dëst Thema as geschützt. Loggt Iech w.e.g an" +#: geoportailv3/static/js/layerpermalinkservice.js:324 +msgid "" +"Certaines couches sont protégées. Veuillez vous connecter avec un " +"utilisateur disposant les droits de visualiser cette couche." +msgstr "Verschidden Layeren sinn geschützt. Mellt Iech w.e.g. mat engem Benotzer un, deen berechtegt ass dës Layeren ze gesinn." + #: geoportailv3/static/js/themeswitcher/themes.html:4 msgid "Changer" msgstr "Wiesselen" #: geoportailv3/static/js/draw/featurepopup.html:64 -#: geoportailv3/static/js/draw/styleediting.html:72 +#: geoportailv3/static/js/draw/styleediting.html:73 msgid "Changer sens de la ligne" msgstr "Richtung vun der Linn änneren" @@ -248,63 +314,88 @@ msgstr "Luede vun Informatiounen" #: geoportailv3/static/js/externaldata/externaldata.html:15 msgid "Choose or write a WMS url" -msgstr "WMS URS auswielen oder erfaassen" +msgstr "WM(T)S URS auswielen oder erfaassen" #: geoportailv3/static/js/draw/draw.html:23 -#: geoportailv3/static/js/draw/drawdirective.js:694 +#: geoportailv3/static/js/draw/drawdirective.js:760 +#: node_modules/ngeo/src/draw/Controller.js:70 msgid "Circle" msgstr "Krees" -#: geoportailv3/static/js/measure/measuredirective.js:147 +#: geoportailv3/static/js/measure/measuredirective.js:143 msgid "" "Click to continue drawing the line
Double-click or click last point to " "finish" msgstr "Klickt fir mam Zeechnen vun der Linn weiderzefueren
Duebelklick fir ofzeschléissen" -#: geoportailv3/static/js/measure/measuredirective.js:189 +#: geoportailv3/static/js/measure/measuredirective.js:185 msgid "" "Click to continue drawing the polygon
Double-click or click last point to" " finish" msgstr "Klickt fir mam Zeechnen vum Polygon weiderzefueren
Duebelklick fir ofzeschléissen" -#: geoportailv3/static/js/draw/drawdirective.js:489 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:196 +#: node_modules/ngeo/src/measure/length.js:45 +msgid "" +"Click to continue drawing
Double-click or click last point to finish" +msgstr "" + +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:213 +#: node_modules/ngeo/src/measure/area.js:44 +msgid "" +"Click to continue drawing
Double-click or click starting point to finish" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:534 msgid "Click to draw the point" msgstr "Klickt fir de Punkt ze setzen" -#: geoportailv3/static/js/measure/measuredirective.js:210 +#: geoportailv3/static/js/measure/measuredirective.js:206 +#: node_modules/ngeo/src/measure/azimut.js:48 msgid "Click to finish" msgstr "Klickt fir ofzeschléissen" -#: geoportailv3/static/js/draw/drawdirective.js:507 +#: geoportailv3/static/js/draw/drawdirective.js:552 msgid "Click to place the label" msgstr "Klickt fir den Text ze setzen" -#: geoportailv3/static/js/measure/measuredirective.js:188 +#: geoportailv3/static/js/measure/measuredirective.js:184 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:212 msgid "Click to start drawing area" msgstr "Klickt fir mam Moossen vun enger Fläch unzefänken" -#: geoportailv3/static/js/measure/measuredirective.js:209 +#: geoportailv3/static/js/measure/measuredirective.js:205 msgid "Click to start drawing azimut" msgstr "Klickt fir mam Moossen vun engem Azimut unzefänken" -#: geoportailv3/static/js/draw/drawdirective.js:503 +#: geoportailv3/static/js/draw/drawdirective.js:548 +#: node_modules/ngeo/src/measure/azimut.js:47 msgid "Click to start drawing circle" msgstr "Klickt, fir unzefänken, ee Krees ze zeechnen" -#: geoportailv3/static/js/measure/measuredirective.js:165 +#: geoportailv3/static/js/measure/measuredirective.js:161 +#: node_modules/ngeo/src/editing/createfeaturecomponent.js:195 msgid "Click to start drawing length" msgstr "Klickt fir mam Moossen vun enger Längt unzefänken" -#: geoportailv3/static/js/draw/drawdirective.js:493 +#: node_modules/ngeo/src/measure/length.js:44 +msgid "Click to start drawing line" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:538 msgid "Click to start drawing line
Double-click to finish" -msgstr "Klickt fir unzefenken, eng Linn ze zeechnen
Maat een Duebel-Klickt fir ofzeschléissen" +msgstr "Klickt fir unzefenken, eng Linn ze zeechnen
Maat een Duebel-Klickt fir ofzeschléissen
Dréckt ⌫ fir dee leschte Punkt ze annuléiren
Wielt d'Option \"Stroossen nogoen\" fir är Linn op den bestehende Stroossereseau unzepassen" -#: geoportailv3/static/js/draw/drawdirective.js:498 +#: node_modules/ngeo/src/measure/area.js:43 +msgid "Click to start drawing polygon" +msgstr "" + +#: geoportailv3/static/js/draw/drawdirective.js:543 msgid "" "Click to start drawing polygon
Double-click or click last point to finish" -msgstr "Klickt fir unzefenken, ee Polygon ze zeechnen
Maat een Duebelklick oder klickt op de leschten Punkt fir ofzeschléissen" +msgstr "Klickt fir unzefenken, ee Polygon ze zeechnen
Maat een Duebelklick, dréckt ESC oder klickt op de leschten Punkt fir ofzeschléissen
Dréckt ⌫ fir deen als läscht gesaten Punkt ze löschen" -#: geoportailv3/static/js/measure/measuredirective.js:146 +#: geoportailv3/static/js/measure/measuredirective.js:142 msgid "Click to start drawing profile" msgstr "Klickt fir mam Moossen vun engem Profil unzefänken" @@ -313,7 +404,15 @@ msgstr "Klickt fir mam Moossen vun engem Profil unzefänken" msgid "Cliquez dans l'image pour agrandir" msgstr "Klickt an d'Bild fir et ze vergréisseren" -#: geoportailv3/static/js/externaldata/externaldata.html:34 +#: geoportailv3/static/js/routing/routing.html:99 +msgid "" +"Cliquez droit (ou appui long sur mobile) à un endroit sur la carte pour " +"ajouter rapidement une adresse." +msgstr "Maat ee Rietsklick an d'Kaart fir séier eng Adress bäizesetzen.\nOp engem mobile Gerät kënnt der einfach e bësse mi laang klicken" + +#: geoportailv3/static/js/externaldata/externaldata.html:36 +#: geoportailv3/static/js/offlineNgeoComponent.html:24 +#: node_modules/ngeo/src/message/Disclaimer.js:154 msgid "Close" msgstr "Zoumaachen" @@ -324,15 +423,21 @@ msgstr "Zoumaachen" msgid "Color" msgstr "Faarf" +#: geoportailv3/static/js/query/info.html:12 +msgid "Commander" +msgstr "Bestellen" + #: geoportailv3/static/js/query/mo.html:8 msgid "Commander fichier GML" msgstr "GML Fichier bestellen" +#: geoportailv3/static/js/query/casiporeport.html:16 #: geoportailv3/static/js/query/pagreport.html:16 +#: geoportailv3/static/js/query/pdsreport.html:12 msgid "Commander rapport" msgstr "Rapport bestellen" -#: geoportailv3/static/js/query/parcels.html:12 +#: geoportailv3/static/js/query/parcels.html:24 msgid "Commander un extrait" msgstr "Extrait bestellen" @@ -360,15 +465,16 @@ msgstr "Konfiguréierbar" msgid "Confirmation de redirection" msgstr "Ëmleedung" -#: geoportailv3/static/js/mymaps/mymaps.html:193 +#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/mymaps/mymaps.html:173 msgid "Confirmation de suppression de la carte" msgstr "Kaart wierklech läschen?" -#: geoportailv3/static/js/mymaps/mymaps.html:165 +#: geoportailv3/static/js/mymaps/mymaps.html:131 msgid "Confirmation de suppression des dessins" msgstr "Zeechnungen wierklech läschen?" -#: geoportailv3/static/js/mymaps/mymaps.html:179 +#: geoportailv3/static/js/mymaps/mymaps.html:145 msgid "Confirmation de suppression des éléments de la carte" msgstr "Bestägegung fir d'Löschen vun allen Elementer aus der Kaart" @@ -377,10 +483,15 @@ msgid "Constitution de dossier de mesurage" msgstr "Vermoossungsdossier uleeën" #: geoportailv3/static/js/layerinfo/popup.html:23 -#: geoportailv3/templates/index.html:223 +#: geoportailv3/templates/index.html:296 msgid "Contact" msgstr "Kontakt" +#: node_modules/ngeo/src/filter/rulecomponent.js:167 +#: node_modules/ngeo/src/filter/rulecomponent.js:168 +msgid "Contains" +msgstr "" + #: geoportailv3/static/js/query/parcels.html:7 #: geoportailv3/static/js/query/parcels_go.html:7 #: geoportailv3/static/js/query/parcels_prof.html:7 @@ -395,14 +506,19 @@ msgstr "Mat der Linn weiderfueren" msgid "Contrainte d'utilisation" msgstr "Notzungsbedingungen" -#: geoportailv3/static/js/mymaps/mymaps.html:93 +#: geoportailv3/static/js/mymaps/mymaps.html:100 msgid "Copier dans ma carte" msgstr "A méng Kaart kopéieren" -#: geoportailv3/templates/index.html:207 +#: geoportailv3/templates/index.html:277 msgid "Couches" msgstr "Layeren" +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Couper une ligne" +msgstr "Eng Linn schneiden" + #: geoportailv3/static/js/authentication/authentication.html:12 msgid "Create a new user account" msgstr "E neien Benotzerkont opmaachen" @@ -419,7 +535,7 @@ msgstr "Croquis" msgid "Croquis indisponible" msgstr "Keen Croquis disponibel" -#: geoportailv3/static/js/mymaps/mymaps.html:263 +#: geoportailv3/static/js/mymaps/mymaps.html:274 msgid "Créateur carte" msgstr "Ersteller vun der Kaart" @@ -427,16 +543,16 @@ msgstr "Ersteller vun der Kaart" msgid "Créer cercle concentrique" msgstr "Konzentrésche Krees erstellen" -#: geoportailv3/static/js/mymaps/mymaps.html:48 +#: geoportailv3/static/js/mymaps/mymaps.html:49 msgid "Créer une copie" msgstr "Eng Kopie erstellen" -#: geoportailv3/static/js/mymaps/mymaps.html:46 -#: geoportailv3/static/js/mymaps/mymaps.html:9 +#: geoportailv3/static/js/mymaps/mymaps.html:10 +#: geoportailv3/static/js/mymaps/mymaps.html:47 msgid "Créer une nouvelle carte" msgstr "Eng nei Kaart erstellen" -#: geoportailv3/static/js/mymaps/mymaps.html:95 +#: geoportailv3/static/js/mymaps/mymaps.html:102 msgid "Créer une nouvelle carte à partir de ces dessins" msgstr "Nei Kaart aus dësen Zeechnungen erstellen" @@ -448,17 +564,25 @@ msgstr "gestréchelt" msgid "Date" msgstr "Datum" -#: geoportailv3/static/js/print/printdirective.js:561 +#: geoportailv3/static/js/print/printdirective.js:580 msgid "Date d'impression:" msgstr "Printdatum:" +#: geoportailv3/static/js/offlineNgeoComponent.html:36 +msgid "Deactivate offline mode" +msgstr "Offline-Modus deaktivéiren" + +#: geoportailv3/static/js/offlineNgeoComponent.html:48 +msgid "Delete data" +msgstr "Date löschen" + #: geoportailv3/static/js/query/parcels.html:11 #: geoportailv3/static/js/query/parcels_go.html:11 #: geoportailv3/static/js/query/parcels_prof.html:11 msgid "Dernier mesurage" msgstr "Leschten Mesurage" -#: geoportailv3/static/js/mymaps/mymaps.html:270 +#: geoportailv3/static/js/mymaps/mymaps.html:281 msgid "Dernière Actualisation" msgstr "leschten Update" @@ -467,7 +591,8 @@ msgid "Describe the problem within the current map extent:" msgstr "Beschreift de Problem, deen an dem aktuelle Kartenauszuch virkënnt:" #: geoportailv3/static/js/layerinfo/popup.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:149 +#: geoportailv3/static/js/mymaps/mymaps.html:341 +#: geoportailv3/static/js/query/lignes_bus.html:3 #: geoportailv3/static/js/query/mymaps.html:7 msgid "Description" msgstr "Beschreiwung" @@ -480,27 +605,61 @@ msgstr "Beschreiwung vum Déngscht" msgid "Description du service :" msgstr "Beschreiwung vum Déngscht :" -#: geoportailv3/templates/index.html:229 +#: geoportailv3/templates/index.html:302 msgid "Dessin" msgstr "Zeechnen" -#: geoportailv3/static/js/mymaps/mymaps.html:86 +#: geoportailv3/static/js/mymaps/mymaps.html:93 msgid "Dessins" msgstr "Zeechnungen" +#: geoportailv3/static/js/routing/routing.html:60 +msgid "Distance" +msgstr "Distanz" + #: geoportailv3/static/js/locationinfo/locationinfo.html:25 msgid "Distance approximative" msgstr "geschätzten Distanz" +#: geoportailv3/static/js/offlineNgeoComponent.html:117 +#: geoportailv3/static/js/offlineNgeoComponent.html:99 +msgid "Do you really want to remove your data ?" +msgstr "Wëllt dir wierklech är Daten löschen?" + #: geoportailv3/static/js/draw/styleediting.html:61 msgid "Dotted" msgstr "gepunktelt" +#: geoportailv3/static/js/query/tracing.html:7 +msgid "DownStream" +msgstr "DownStream" + #: geoportailv3/static/js/profile/profile.html:13 msgid "Draw a line on the map to display an elevation profile." msgstr "Zeechent eng Linn op der Kaart fir den Héichtenprofil unzeweisen" -#: geoportailv3/static/js/print/printdirective.js:562 +#: node_modules/ngeo/src/filter/rulecomponent.js:172 +msgid "During" +msgstr "" + +#: geoportailv3/static/js/routing/routing.html:70 +msgid "Dénivelé lors de votre trajet" +msgstr "Héichtenënnerscheed op ärem Wee" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:44 +msgid "Désactiver Google Streetview" +msgstr "Desaktivéiert Google Street View" + +#: geoportailv3/static/js/mymaps/mymaps.html:104 +#: geoportailv3/static/js/mymaps/mymaps.html:55 +msgid "Désactiver mode couper une ligne" +msgstr "Schneidmodus ausmaan" + +#: geoportailv3/static/js/routing/routing.html:75 +msgid "Détail de votre trajet" +msgstr "Détail vum Wee" + +#: geoportailv3/static/js/print/printdirective.js:581 msgid "Echelle approximative 1:" msgstr "Ongeféiere Moossstaf 1:" @@ -508,13 +667,15 @@ msgstr "Ongeféiere Moossstaf 1:" msgid "Editer l'objet" msgstr "Objekt éditeieren" -#: geoportailv3/static/js/mymaps/mymaps.html:172 -#: geoportailv3/static/js/mymaps/mymaps.html:186 -#: geoportailv3/static/js/mymaps/mymaps.html:200 +#: geoportailv3/static/js/mymaps/mymaps.html:138 +#: geoportailv3/static/js/mymaps/mymaps.html:152 +#: geoportailv3/static/js/mymaps/mymaps.html:166 +#: geoportailv3/static/js/mymaps/mymaps.html:180 +#: geoportailv3/static/js/query/tracing.html:8 msgid "Effacer" msgstr "Läschen" -#: geoportailv3/static/js/mymaps/mymaps.html:94 +#: geoportailv3/static/js/mymaps/mymaps.html:101 msgid "Effacer tous les dessins" msgstr "all d'Zeechnunge läschen" @@ -531,6 +692,13 @@ msgstr "Héicht: {{ ctrl.featureElevation }}" msgid "Email" msgstr "Email" +#: geoportailv3/static/js/query/casiporeport.html:12 +msgid "" +"En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " +"les conditions générales " +"d'utilisation de ce site web." +msgstr "" + #: geoportailv3/static/js/query/pagreport.html:12 msgid "" "En cochant cette case, l'utilisateur déclare avoir lu, compris et accepté " @@ -538,54 +706,67 @@ msgid "" "de ce site web." msgstr "Heimat erklärt der, déi allgemeng Geschäftsbedingungen vun dësem Site gelies an akzeptéiert ze hunn." -#: geoportailv3/static/js/mymapsservice.js:841 +#: geoportailv3/templates/index.html:51 +msgid "Enable offline mode" +msgstr "Offline-Modus aktivéiren" + +#: node_modules/ngeo/src/filter/rulecomponent.js:173 +msgid "Ends at" +msgstr "" + +#: geoportailv3/static/js/mymapsservice.js:929 msgid "Erreur inattendue lors de la copie de votre carte." msgstr "Onerwaartenen Fehler beim Kopéieren vun ärer Kaart" -#: geoportailv3/static/js/mymapsservice.js:799 +#: geoportailv3/static/js/mymapsservice.js:887 msgid "Erreur inattendue lors de la création de votre carte." msgstr "Onerwaartenen Fehler beim Erstellen vun ärer Kaart" -#: geoportailv3/static/js/mymapsservice.js:1014 -#: geoportailv3/static/js/mymapsservice.js:964 +#: geoportailv3/static/js/mymapsservice.js:1052 +#: geoportailv3/static/js/mymapsservice.js:1102 msgid "Erreur inattendue lors de la mise à jour de votre carte." msgstr "Onerwaartenen Fehler beim Updaten vun ärer Kaart" -#: geoportailv3/static/js/mymapsservice.js:1053 -#: geoportailv3/static/js/mymapsservice.js:1092 +#: geoportailv3/static/js/mymapsservice.js:1144 +#: geoportailv3/static/js/mymapsservice.js:1183 +#: geoportailv3/static/js/mymapsservice.js:1222 msgid "Erreur inattendue lors de la sauvegarde de votre modification." msgstr "Onerwaartenen Fehler beim Spaicheren vun ärer Ännerung" -#: geoportailv3/static/js/mymapsservice.js:757 +#: geoportailv3/static/js/mymapsservice.js:845 msgid "Erreur inattendue lors de la suppression d'un élement." msgstr "Onerwaartenen Fehler beim Läschen vun engem Objet" -#: geoportailv3/static/js/mymapsservice.js:869 +#: geoportailv3/static/js/mymapsservice.js:957 msgid "Erreur inattendue lors de la suppression de votre carte." msgstr "Onerwaartenen Fehler beim Läschen vun ärer Kaart" -#: geoportailv3/static/js/mymapsservice.js:898 +#: geoportailv3/static/js/mymapsservice.js:986 msgid "Erreur inattendue lors de la suppression des objets de la carte." msgstr "Onerwaarte Fehler beim Löschen vun den Elementer aus der Kaart" -#: geoportailv3/static/js/mymapsservice.js:467 +#: geoportailv3/static/js/mymapsservice.js:545 msgid "Erreur inattendue lors du chargement de vos cartes." msgstr "Onerwaartenen Fehler beim Lueden vun äre Kaarten" -#: geoportailv3/static/js/mymapsservice.js:549 -#: geoportailv3/static/js/mymapsservice.js:727 +#: geoportailv3/static/js/mymapsservice.js:628 +#: geoportailv3/static/js/mymapsservice.js:815 msgid "Erreur inattendue lors du chargement de votre carte." msgstr "Onerwaartenen Fehler beim Lueden vun ärer Kaart" -#: geoportailv3/static/js/mymaps/mymaps.html:196 +#: geoportailv3/static/js/mymaps/mymaps.html:162 msgid "Etes-vous certain de vouloir effacer la carte courrante ?" msgstr "Wëllt dir är Kaart wierklech löschen?" -#: geoportailv3/static/js/mymaps/mymaps.html:168 +#: geoportailv3/static/js/mymaps/mymaps.html:176 +msgid "Etes-vous certain de vouloir effacer la carte intitulée :" +msgstr "Wëllt dir déi Kaart wierklech löschen: " + +#: geoportailv3/static/js/mymaps/mymaps.html:134 msgid "Etes-vous certain de vouloir effacer tous les dessins ?" msgstr "Wëllt dir är Zeechnungen wierklech löschen?" -#: geoportailv3/static/js/mymaps/mymaps.html:182 +#: geoportailv3/static/js/mymaps/mymaps.html:148 msgid "Etes-vous certain de vouloir effacer tous les éléments de la carte ?" msgstr "Sidd die sécher, datt dir wëllt all d'Elementer aus der Kaart löschen?" @@ -594,22 +775,30 @@ msgid "Export csv" msgstr "CSV exportéieren " #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter GPX" msgstr "GPX exportéiren" #: geoportailv3/static/js/query/default.html:17 +#: geoportailv3/static/js/query/default_no_prefix.html:17 +#: geoportailv3/static/js/query/default_table.html:25 +#: geoportailv3/static/js/query/default_table_no_prefix.html:25 #: geoportailv3/static/js/query/mymaps.html:12 +#: geoportailv3/static/js/query/sentier_nature.html:16 msgid "Exporter KMl" msgstr "KML exportéiren" #: geoportailv3/static/js/draw/featurepopup.html:61 -#: geoportailv3/static/js/mymaps/mymaps.html:56 +#: geoportailv3/static/js/mymaps/mymaps.html:59 msgid "Exporter un GPX" msgstr "GPX exportéieren " #: geoportailv3/static/js/draw/featurepopup.html:62 -#: geoportailv3/static/js/mymaps/mymaps.html:57 +#: geoportailv3/static/js/mymaps/mymaps.html:60 msgid "Exporter un KML" msgstr "KML exportéieren " @@ -617,32 +806,42 @@ msgstr "KML exportéieren " msgid "Facebook" msgstr "Facebook" -#: geoportailv3/templates/index.html:181 geoportailv3/templates/index.html:220 +#: geoportailv3/templates/index.html:231 geoportailv3/templates/index.html:293 msgid "Feedback" msgstr "Feedback" -#: geoportailv3/static/js/feedback/feedbackdirective.js:200 +#: geoportailv3/static/js/feedback/feedbackdirective.js:199 msgid "Feedback could not be sent to " msgstr "De Feedback konnt net op geschéckt ginn" -#: geoportailv3/static/js/feedback/feedbackdirective.js:194 +#: geoportailv3/static/js/feedback/feedbackdirective.js:193 msgid "Feedback sent to " msgstr "Feedback op geschéckt" #: geoportailv3/static/js/draw/symbolselector.html:102 -#: geoportailv3/static/js/mymaps/mymaps.html:54 +#: geoportailv3/static/js/mymaps/mymaps.html:57 msgid "Fermer" msgstr "Zoumaachen" -#: geoportailv3/static/js/mymaps/mymaps.html:222 +#: geoportailv3/static/js/mymaps/mymaps.html:233 msgid "Filter results by category" msgstr "Filter: Katégorie" -#: geoportailv3/static/js/mymaps/mymaps.html:234 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:768 +#: geoportailv3/static/js/mymaps/mymaps.html:245 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1006 msgid "Filter results by username" msgstr "Filter: Benutzernumm" +#: geoportailv3/static/js/mymaps/mymaps.html:211 +msgid "Fusionner" +msgstr "Zesummesetzen" + +#: geoportailv3/static/js/mymaps/mymaps.html:103 +#: geoportailv3/static/js/mymaps/mymaps.html:188 +#: geoportailv3/static/js/mymaps/mymaps.html:54 +msgid "Fusionner des lignes" +msgstr "Linnen zesummesetzen" + #: geoportailv3/static/js/query/pcn_pag.html:7 msgid "Generer Rapport (peut prendre 30 sec)" msgstr "Rapport generéieren (kann bis zu 30 Sek daueren)" @@ -651,6 +850,10 @@ msgstr "Rapport generéieren (kann bis zu 30 Sek daueren)" msgid "Generer un rapport pour toutes les selections" msgstr "Rapport fir d'Gesamtauswal generéieren" +#: node_modules/ngeo/src/geolocation/mobile.js:148 +msgid "Geolocation: An unknown error occurred." +msgstr "" + #: geoportailv3/static/js/query/affaires.html:6 msgid "Geometre" msgstr "Geometer" @@ -663,51 +866,136 @@ msgstr "Layeren ufroen" msgid "Google Plus" msgstr "Google Plus" +#: geoportailv3/static/js/offlineNgeoComponent.html:45 +msgid "Hide extent" +msgstr "Ausdehnung verstoppen" + #: geoportailv3/static/js/authentication/authentication.html:11 msgid "I lost my password" msgstr "Ech hu mäi Passwuert verluer" +#: geoportailv3/static/js/query/tracing.html:4 +msgid "ID" +msgstr "ID" + +#: geoportailv3/static/js/query/pdsreport.html:1 +msgid "" +"Ici vous pouvez commander l'attestation \"plans directeurs sectoriels\" par " +"rapport au terrain séctionné" +msgstr "" + #: geoportailv3/static/js/query/pagreport.html:1 msgid "" "Ici vous pouvez commander le rapport relatif aux règles urbanistiques " "applicables au terrain séctionné" msgstr "Hei kënnt der Iech en Rapport zu den Baureegelen fir een ausgewielten Terrain erstellen loossen." +#: geoportailv3/static/js/query/casiporeport.html:1 +msgid "" +"Ici vous pouvez commander le rapport relatif aux site potentiellement " +"contaminés" +msgstr "" + #: geoportailv3/static/js/query/pcn_pag.html:6 msgid "Identifiant" msgstr "Benotzer ID" -#: geoportailv3/static/js/mymaps/mymaps.html:58 -msgid "Importer un GPX" -msgstr "GPX importéieren" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1186 +msgid "Il faut au moins 2 lignes disponibles pour pouvoir les fusionner." +msgstr "Dir musst op d'mannst 2 disponibel Linnen auswielen, fir se zesummesetzen ze kënnen" -#: geoportailv3/static/js/mymaps/mymaps.html:59 -msgid "Importer un KML" -msgstr "KML importéieren" +#: geoportailv3/static/js/streetview/streetview.html:4 +msgid "Il n'y a pas de panorama google disponible à cet endroit" +msgstr "Et gëtt keen Google Panorama op dëser Plaz" + +#: geoportailv3/static/js/mymaps/mymaps.html:61 +msgid "Importer un GPX/KML/KMZ" +msgstr "Eng GPX/KML/KMZ Datei importéiren" #: geoportailv3/static/js/draw/symbolselector.html:100 msgid "Importer un symbole" msgstr "Symbol importéieren" -#: geoportailv3/templates/index.html:244 +#: geoportailv3/static/js/wmsservice.js:114 +msgid "Impossible de contacter ce WMS" +msgstr "De WM(T)S Server kann net kontaktéiert ginn" + +#: geoportailv3/static/js/wmtsservice.js:98 +msgid "Impossible de contacter ce WMTS" +msgstr "Momentan kann dëse WMTS leider net erreecht ginn" + +#: geoportailv3/templates/index.html:317 msgid "Imprimer" msgstr "Drécken" -#: geoportailv3/templates/index.html:213 +#: geoportailv3/static/js/routing/routing.html:27 +msgid "Indiquez une adresse, un lieu" +msgstr "Gitt eng Adress oder eng Plaz un" + +#: geoportailv3/templates/index.html:283 msgid "Infos(*)" msgstr "Info(*)" +#: geoportailv3/static/js/routing/routing.html:37 +msgid "Insérez rapidement" +msgstr "Séier bäisetzen" + +#: node_modules/ngeo/src/filter/rulecomponent.js:169 +msgid "Intersects" +msgstr "" + #: geoportailv3/static/js/usermanagerservice.js:128 #: geoportailv3/static/js/usermanagerservice.js:135 msgid "Invalid username or password." msgstr "Passwuert oder Benotzernum ongëlteg" +#: node_modules/ngeo/src/filter/rulecomponent.js:159 +#: node_modules/ngeo/src/filter/rulecomponent.js:174 +msgid "Is equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:160 +msgid "Is greater than" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:161 +msgid "Is greater than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:170 +msgid "Is inside of" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:163 +msgid "Is lesser than" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:164 +msgid "Is lesser than or equal to" +msgstr "" + +#: node_modules/ngeo/src/filter/rulecomponent.js:166 +msgid "Is not equal to" +msgstr "" + +#: geoportailv3/templates/index.html:95 +msgid "Itinéraire en détail" +msgstr "Détail vum Wee" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:31 +msgid "Itinéraire mobilitéit.lu depuis ici" +msgstr "" + +#: geoportailv3/static/js/locationinfo/locationinfo.html:32 +msgid "Itinéraire mobilitéit.lu vers ici" +msgstr "" + #: geoportailv3/static/js/layerinfo/popup.html:22 msgid "Keywords" msgstr "Stëchwieder" -#: geoportailv3/static/js/mymapsservice.js:544 -#: geoportailv3/static/js/mymapsservice.js:722 +#: geoportailv3/static/js/mymapsservice.js:623 +#: geoportailv3/static/js/mymapsservice.js:810 msgid "La carte demandée n'existe pas." msgstr "Die vun Iech ausgewielte Kaart gëtt et net." @@ -718,19 +1006,27 @@ msgid "" msgstr "D'Geolokaliséirung ass nëmmen an der sécherer Versioun vum Geoportal verfügbar (https).\nWëllt der automatesch ëmgeleet ginn?" #: geoportailv3/static/js/draw/draw.html:8 -#: geoportailv3/static/js/draw/drawdirective.js:684 +#: geoportailv3/static/js/draw/drawdirective.js:735 msgid "Label" msgstr "Beschréftung" -#: geoportailv3/static/js/search/searchdirective.js:435 +#: geoportailv3/static/js/search/searchdirective.js:485 msgid "Layers" msgstr "Layer" -#: geoportailv3/static/js/print/printdirective.js:563 +#: geoportailv3/static/js/print/printdirective.js:582 msgid "Le géoportail national du Grand-Duché du Luxembourg" msgstr "Den offizielle Geoportal vu Lëtzebuerg" -#: geoportailv3/templates/index.html:224 +#: geoportailv3/static/js/routing/routing.html:51 +msgid "Le plus court" +msgstr "Kierzte Wee" + +#: geoportailv3/static/js/routing/routing.html:50 +msgid "Le plus rapide" +msgstr "Séierste Wee" + +#: geoportailv3/templates/index.html:297 msgid "Legalites" msgstr "Legales" @@ -738,7 +1034,7 @@ msgstr "Legales" msgid "Legend" msgstr "mat Legend" -#: geoportailv3/templates/index.html:216 +#: geoportailv3/templates/index.html:286 msgid "Legends" msgstr "Legenden" @@ -750,7 +1046,7 @@ msgstr "Längt" msgid "Length:" msgstr "Längt: " -#: geoportailv3/static/js/mymaps/mymaps.html:26 +#: geoportailv3/static/js/mymaps/mymaps.html:27 msgid "" "Les couches sélectionnées dans le catalogue sont différentes de celles " "chargées avec votre carte. Voulez vous sauvegarder ces modifications dans " @@ -762,22 +1058,28 @@ msgstr "Déi ausgewielte Layeren am Katalog sin anescht wéi déi vun ärer Kaar #: geoportailv3/static/js/query/affaires.html:11 #: geoportailv3/static/js/query/asta_esp.html:6 #: geoportailv3/static/js/query/batiments.html:4 -#: geoportailv3/static/js/query/bus.html:6 +#: geoportailv3/static/js/query/bus.html:7 +#: geoportailv3/static/js/query/bus_wo_title.html:5 #: geoportailv3/static/js/query/cfl_hecto.html:4 #: geoportailv3/static/js/query/default.html:23 +#: geoportailv3/static/js/query/default_no_prefix.html:23 +#: geoportailv3/static/js/query/default_table.html:31 +#: geoportailv3/static/js/query/default_table_no_prefix.html:31 #: geoportailv3/static/js/query/flik.html:6 #: geoportailv3/static/js/query/inst_pub.html:5 #: geoportailv3/static/js/query/meteo.html:5 #: geoportailv3/static/js/query/mo.html:9 -#: geoportailv3/static/js/query/mymaps.html:14 +#: geoportailv3/static/js/query/mymaps.html:15 #: geoportailv3/static/js/query/ng95.html:9 #: geoportailv3/static/js/query/ont_poi.html:5 -#: geoportailv3/static/js/query/parcels.html:13 +#: geoportailv3/static/js/query/parcels.html:25 #: geoportailv3/static/js/query/parcels_go.html:26 #: geoportailv3/static/js/query/parcels_prof.html:25 #: geoportailv3/static/js/query/pcn_pag.html:8 +#: geoportailv3/static/js/query/pegel.html:5 #: geoportailv3/static/js/query/poi.html:4 #: geoportailv3/static/js/query/remembrements.html:6 +#: geoportailv3/static/js/query/sentier_nature.html:22 #: geoportailv3/static/js/query/urplang.html:8 #: geoportailv3/static/js/query/viti_flik.html:7 #: geoportailv3/static/js/query/viti_kleinlage.html:4 @@ -786,10 +1088,15 @@ msgstr "Déi ausgewielte Layeren am Katalog sin anescht wéi déi vun ärer Kaar msgid "Lien direct vers cet objet" msgstr "Direktlink zu dësem Objet" -#: geoportailv3/static/js/query/mymaps.html:13 +#: geoportailv3/static/js/query/mymaps.html:14 msgid "Lien vers la carte" msgstr "Link op d'Kaart" +#: geoportailv3/static/js/locationinfo/locationinfo.html:28 +msgid "Lien vers la démo lidar" +msgstr "Link op d'LIDAR Demo" + +#: geoportailv3/static/js/query/parcels.html:12 #: geoportailv3/static/js/query/parcels_go.html:14 #: geoportailv3/static/js/query/parcels_prof.html:13 msgid "Lien vers les mesurages" @@ -805,7 +1112,8 @@ msgstr "Flouernumm" msgid "Line" msgstr "Linn" -#: geoportailv3/static/js/draw/drawdirective.js:690 +#: geoportailv3/static/js/draw/drawdirective.js:756 +#: node_modules/ngeo/src/draw/Controller.js:68 msgid "LineString" msgstr "Linn" @@ -817,6 +1125,10 @@ msgstr "Link op d'Metadaten" msgid "Location Coordinates" msgstr "Positiounskoordinaten" +#: node_modules/ngeo/src/geolocation/mobile.js:142 +msgid "Location information is unavailable." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:4 msgid "Login" msgstr "Benotzernumm" @@ -833,6 +1145,19 @@ msgstr "Längt" msgid "Longueur" msgstr "Längt" +#: geoportailv3/static/js/query/sentier_nature.html:7 +msgid "Longueur du parcours" +msgstr "Längt vum Parcours" + +#: node_modules/ngeo/src/misc/WMSTime.js:62 +msgid "M/d/yyyy" +msgstr "" + +#: node_modules/ngeo/src/misc/WMSTime.js:61 +msgid "M/yyyy" +msgstr "" + +#: geoportailv3/static/js/query/parcels.html:16 #: geoportailv3/static/js/query/parcels_go.html:18 #: geoportailv3/static/js/query/parcels_go.html:19 #: geoportailv3/static/js/query/parcels_prof.html:17 @@ -840,8 +1165,8 @@ msgstr "Längt" msgid "MES_TYPE_{{file.filename | limitTo : 1 :5}}" msgstr "MES_TYPE_{{file.filename | limitTo : 1 :5}}" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:660 -#: geoportailv3/static/js/mymaps/mymapsdirective.js:926 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1165 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:896 msgid "Map without Title" msgstr "Kaart ouni Titel" @@ -853,12 +1178,13 @@ msgstr "Meng Symboler" msgid "Mesurage" msgstr "Vermoossung" +#: geoportailv3/static/js/query/parcels.html:19 #: geoportailv3/static/js/query/parcels_go.html:22 #: geoportailv3/static/js/query/parcels_prof.html:21 msgid "Mesurage non disponible" msgstr "Mesurage net verfügbar" -#: geoportailv3/templates/index.html:237 +#: geoportailv3/templates/index.html:310 msgid "Mesurer" msgstr "Moossen" @@ -866,11 +1192,15 @@ msgstr "Moossen" msgid "Modification des informations" msgstr "Informatiounen änneren" -#: geoportailv3/static/js/mymaps/mymaps.html:123 +#: geoportailv3/static/js/mymaps/mymaps.html:315 msgid "Modify title and description of the map" msgstr "Titel an Beschreiwung änneren" -#: geoportailv3/templates/index.html:210 +#: node_modules/ngeo/src/filter/rulecomponent.js:826 +msgid "Move" +msgstr "" + +#: geoportailv3/templates/index.html:280 msgid "My Maps(*)" msgstr "My Maps(*)" @@ -879,7 +1209,7 @@ msgstr "My Maps(*)" msgid "My account" msgstr "Mäi Kont" -#: geoportailv3/static/js/elevationservice.js:50 +#: geoportailv3/static/js/elevationservice.js:47 msgid "N/A" msgstr "N/A" @@ -899,6 +1229,10 @@ msgstr "Notzung" msgid "No layer selected" msgstr "Keen Layer ausgewielt" +#: geoportailv3/static/js/offlineNgeoComponent.html:86 +msgid "No maps selected for saving." +msgstr "Et ass keng Kaart ausgewielt, déi kinnt ofgespäichert ginn." + #: geoportailv3/static/js/draw/symbolselector.html:20 #: geoportailv3/static/js/query/cfl_hecto.html:3 #: geoportailv3/static/js/query/remembrements.html:3 @@ -907,11 +1241,32 @@ msgstr "Keen Layer ausgewielt" msgid "Nom" msgstr "Numm" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:983 +#: node_modules/ngeo/src/filter/component.js:162 +msgid "None" +msgstr "Keng" + +#: geoportailv3/static/js/mymaps/mymaps.html:194 +msgid "Nouveau nom" +msgstr "Neien Numm" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1246 msgid "Nouvelle carte créée" msgstr "Nei Kaart erstallt" +#: geoportailv3/static/js/mymaps/mymaps.html:199 +msgid "Nouvelle description" +msgstr "Nei Beschreiwung" + +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1180 +msgid "Nouvelle ligne" +msgstr "Nei Linn" + +#: geoportailv3/static/js/query/lignes_bus.html:3 +msgid "Num ligne" +msgstr "Nummer vun der Linn" + #: geoportailv3/static/js/query/affaires.html:4 +#: geoportailv3/static/js/query/tracing.html:3 #: geoportailv3/static/js/query/viti_parcels.html:3 msgid "Numero" msgstr "Nummer" @@ -934,7 +1289,7 @@ msgstr "Parzellennummer" #: geoportailv3/static/js/draw/featurepopup.html:119 #: geoportailv3/static/js/draw/featurepopup.html:139 -#: geoportailv3/static/js/draw/styleediting.html:123 +#: geoportailv3/static/js/draw/styleediting.html:124 msgid "OK" msgstr "OK" @@ -948,8 +1303,23 @@ msgstr "Den Fichier als PDF eroflueden" msgid "Occupation" msgstr "Bebauung" +#: geoportailv3/static/js/offlineNgeoComponent.html:27 +msgid "Offline map" +msgstr "Offline Kaart" + +#: geoportailv3/static/js/offlineNgeoComponent.html:100 +#: geoportailv3/static/js/offlineNgeoComponent.html:118 +#: geoportailv3/static/js/offlineNgeoComponent.html:69 +#: geoportailv3/static/js/offlineNgeoComponent.html:87 +msgid "Ok" +msgstr "Ok" + +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Operation canceled" +msgstr "Operatioun ofgebrach" + #: geoportailv3/static/js/askredirect/askredirect.html:11 -#: geoportailv3/static/js/mymaps/mymaps.html:29 +#: geoportailv3/static/js/mymaps/mymaps.html:30 msgid "Oui" msgstr "Jo" @@ -958,20 +1328,20 @@ msgstr "Jo" msgid "Ouvrir la PF" msgstr "PF opmaan" -#: geoportailv3/static/js/mymaps/mymaps.html:208 +#: geoportailv3/static/js/mymaps/mymaps.html:219 #: geoportailv3/static/js/mymaps/mymaps.html:6 msgid "Ouvrir une carte" msgstr "eng Kaart opmaachen" -#: geoportailv3/static/js/mymaps/mymaps.html:47 +#: geoportailv3/static/js/mymaps/mymaps.html:48 msgid "Ouvrir une carte existante" msgstr "eng bestehend Kaart opmaachen" -#: geoportailv3/templates/index.html:249 +#: geoportailv3/templates/index.html:324 msgid "Partager" msgstr "Deelen" -#: geoportailv3/static/js/mymaps/mymaps.html:49 +#: geoportailv3/static/js/mymaps/mymaps.html:50 msgid "Partager la carte" msgstr "Kaart deelen" @@ -983,6 +1353,10 @@ msgstr "Passwuert" msgid "Perimetre" msgstr "Perimeter" +#: geoportailv3/static/js/routing/routing.html:98 +msgid "Petite astuce!" +msgstr "Klengen Tip!" + #: geoportailv3/static/js/feedback/feedback.html:9 msgid "Pick layer where problem occurs" msgstr "Wielt de Layer aus, an deem de Problem virkënnt" @@ -991,12 +1365,12 @@ msgstr "Wielt de Layer aus, an deem de Problem virkënnt" msgid "Plain" msgstr "duerchgezunn" -#: geoportailv3/static/js/feedback/feedbackdirective.js:111 -#: geoportailv3/static/js/feedback/feedbackdirective.js:134 +#: geoportailv3/static/js/feedback/feedbackdirective.js:110 +#: geoportailv3/static/js/feedback/feedbackdirective.js:133 msgid "Please pick a layer" msgstr "Wielt weg ee Layer aus" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:802 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1040 msgid "Please select a Category" msgstr "Wielt w.e.g. eng Kategorie aus" @@ -1005,18 +1379,20 @@ msgid "Please wait, the profile is loading." msgstr "Waart weg, de Profil gëtt gelueden" #: geoportailv3/static/js/draw/draw.html:3 -#: geoportailv3/static/js/draw/drawdirective.js:686 +#: geoportailv3/static/js/draw/drawdirective.js:737 +#: node_modules/ngeo/src/draw/Controller.js:67 msgid "Point" msgstr "Punkt" #: geoportailv3/static/js/draw/draw.html:18 -#: geoportailv3/static/js/draw/drawdirective.js:696 +#: geoportailv3/static/js/draw/drawdirective.js:765 +#: node_modules/ngeo/src/draw/Controller.js:69 msgid "Polygon" msgstr "Polygon" #: geoportailv3/static/js/externaldata/externaldata.html:14 msgid "Predefined wms" -msgstr "Virdefinéiert WMS" +msgstr "Virdefinéiert WM(T)S" #: geoportailv3/static/js/measure/measure.html:15 msgid "Profile" @@ -1026,7 +1402,11 @@ msgstr "Héichteprofil" msgid "Proprietaire" msgstr "Proprietär" -#: geoportailv3/static/js/mymaps/mymaps.html:136 +#: geoportailv3/static/js/query/info.html:5 +msgid "Prévisualisation du mesurage" +msgstr "Mesurageplang prévisualiséiren" + +#: geoportailv3/static/js/mymaps/mymaps.html:328 msgid "Public Map" msgstr "Ëffentlech Kaart" @@ -1039,7 +1419,11 @@ msgstr "ëffentlech" msgid "Rayon:" msgstr "Radius:" -#: geoportailv3/static/js/search/search.html:6 +#: node_modules/ngeo/src/misc/File.js:54 +msgid "Read failed" +msgstr "" + +#: geoportailv3/static/js/search/search.html:8 msgid "Recherche adresse, parcelles, couches ..." msgstr "Sich Adressen, Parzellen, Layeren ... " @@ -1047,6 +1431,10 @@ msgstr "Sich Adressen, Parzellen, Layeren ... " msgid "Rechercher un symbole" msgstr "e Symbol sichen" +#: node_modules/ngeo/src/draw/Controller.js:71 +msgid "Rectangle" +msgstr "" + #: geoportailv3/static/js/query/affaires.html:7 msgid "Region" msgstr "Region" @@ -1055,7 +1443,7 @@ msgstr "Region" msgid "Report a map content problem:" msgstr "E Problem op der Kaart melden:" -#: geoportailv3/static/js/mymaps/mymaps.html:28 +#: geoportailv3/static/js/mymaps/mymaps.html:29 msgid "Reset" msgstr "Reset" @@ -1067,17 +1455,34 @@ msgstr "Vignette wechhuelen" msgid "Revision date" msgstr "Revisiounsdatum" -#: geoportailv3/static/js/mymaps/mymaps.html:156 -#: geoportailv3/static/js/mymaps/mymaps.html:157 -#: geoportailv3/static/js/mymaps/mymaps.html:158 +#: node_modules/ngeo/src/filter/rulecomponent.js:835 +msgid "Rotate" +msgstr "" + +#: geoportailv3/static/js/routing/routingdirective.js:1100 +msgid "Route du" +msgstr "Wee vum" + +#: geoportailv3/templates/index.html:215 geoportailv3/templates/index.html:289 +msgid "Routing" +msgstr "Routing" + +#: geoportailv3/static/js/mymaps/mymaps.html:348 +#: geoportailv3/static/js/mymaps/mymaps.html:349 +#: geoportailv3/static/js/mymaps/mymaps.html:350 msgid "Save changes" msgstr "Ännerunge späicheren" -#: geoportailv3/static/js/mymaps/mymaps.html:159 +#: geoportailv3/static/js/offlineNgeoComponent.html:11 +msgid "Save map" +msgstr "Kaart speicheren" + +#: geoportailv3/static/js/mymaps/mymaps.html:351 +#: geoportailv3/static/js/offlineNgeoComponent.html:55 msgid "Save new map" msgstr "nei Kaart späicheren" -#: geoportailv3/static/js/mymaps/mymaps.html:213 +#: geoportailv3/static/js/mymaps/mymaps.html:224 msgid "Search Maps" msgstr "Kaarten sichen" @@ -1105,6 +1510,10 @@ msgstr "Nëmmen den „Méng Kaarten“ – Link deelen" msgid "Short Url" msgstr "Url" +#: geoportailv3/static/js/offlineNgeoComponent.html:46 +msgid "Show extent" +msgstr "Ausdehnung uweisen" + #: geoportailv3/static/js/share/shorturl.html:12 msgid "Show long url" msgstr "Laang URL uweisen" @@ -1113,8 +1522,8 @@ msgstr "Laang URL uweisen" msgid "Show orientation" msgstr "Orientatioun uweisen" -#: geoportailv3/static/js/draw/styleediting.html:107 -#: geoportailv3/static/js/draw/styleediting.html:93 +#: geoportailv3/static/js/draw/styleediting.html:108 +#: geoportailv3/static/js/draw/styleediting.html:94 msgid "Size" msgstr "Gréisst" @@ -1140,11 +1549,15 @@ msgstr "Ärer Zeechnung e Styl ginn" msgid "Submit" msgstr "Aloggen" -#: geoportailv3/static/js/mymaps/mymaps.html:51 +#: geoportailv3/static/js/draw/draw.html:34 +msgid "Suivre la route" +msgstr "Stroossen nogoen" + +#: geoportailv3/static/js/mymaps/mymaps.html:52 msgid "Supprimer la carte" msgstr "Kaart läschen" -#: geoportailv3/static/js/mymaps/mymaps.html:52 +#: geoportailv3/static/js/mymaps/mymaps.html:53 msgid "Supprimer tous les élements de la carte" msgstr "All d'Elementer aus der Kaart löschen" @@ -1155,11 +1568,15 @@ msgstr "All d'Elementer aus der Kaart löschen" msgid "Surface" msgstr "Fläch" -#: geoportailv3/static/js/draw/styleediting.html:78 +#: geoportailv3/static/js/mymaps/mymaps.html:8 +msgid "Switch to 2D to create a map" +msgstr "Wiesselt an den 2D Modus, fir eng Kaart ze erstellen" + +#: geoportailv3/static/js/draw/styleediting.html:79 msgid "Symbol" msgstr "Symbol" -#: geoportailv3/static/js/draw/styleediting.html:81 +#: geoportailv3/static/js/draw/styleediting.html:82 msgid "" "Symbol\n" " \n" @@ -1172,17 +1589,25 @@ msgstr "Symbol\n map link " "will be sent to our support team." msgstr "De folgende Kaartelink gëtt un d'Supportteam geschéckt." -#: geoportailv3/static/js/exclusionmanagerservice.js:138 +#: geoportailv3/static/js/exclusionmanagerservice.js:140 msgid "" "The layer {{layersToRemove}} has been removed because it cannot be " "displayed while the layer {{layer}} is displayed" @@ -1200,6 +1625,10 @@ msgstr "Keng spezifesch Legend fir dëse Layer" msgid "The metadata is right now not available" msgstr "Et gi keng Metadaten fir dëse Layer" +#: node_modules/ngeo/src/geolocation/mobile.js:145 +msgid "The request to get user location timed out." +msgstr "" + #: geoportailv3/static/js/themeswitcher/themes.html:2 msgid "Theme" msgstr "Thema" @@ -1208,20 +1637,20 @@ msgstr "Thema" msgid "Title" msgstr "Titel" -#: geoportailv3/static/js/mymaps/mymaps.html:124 -#: geoportailv3/static/js/mymaps/mymaps.html:126 +#: geoportailv3/static/js/mymaps/mymaps.html:316 +#: geoportailv3/static/js/mymaps/mymaps.html:318 msgid "Title and description of the map" msgstr "Titel a Beschreiwung vun der Kaart" -#: geoportailv3/static/js/mymaps/mymaps.html:125 +#: geoportailv3/static/js/mymaps/mymaps.html:317 msgid "Title and description of the map copy" msgstr "Titel a Beschreiwung vun der Kopie" -#: geoportailv3/static/js/mymaps/mymaps.html:249 +#: geoportailv3/static/js/mymaps/mymaps.html:260 msgid "Titre" msgstr "Titel" -#: geoportailv3/static/js/mymaps/mymaps.html:131 +#: geoportailv3/static/js/mymaps/mymaps.html:323 msgid "Titre de la carte" msgstr "Titel vun der Kaart" @@ -1240,15 +1669,39 @@ msgstr "Twitter" msgid "Type" msgstr "Typ" -#: geoportailv3/static/js/usermanagerservice.js:152 -#: geoportailv3/static/js/usermanagerservice.js:160 +#: geoportailv3/static/js/routing/routing.html:77 +msgid "Télécharger" +msgstr "Eroflueden" + +#: geoportailv3/static/js/query/sentier_nature.html:9 +msgid "Télécharger la brochure" +msgstr "Flyer roflueden" + +#: geoportailv3/static/js/routing/routingdirective.js:1120 +msgid "Une copie de votre route a été enregistrée dans Mymaps." +msgstr "Eng Kopie vun ärem Wee gouf an äre Kaarten (My maps) ofgespäichert." + +#: geoportailv3/static/js/usermanagerservice.js:153 +#: geoportailv3/static/js/usermanagerservice.js:161 msgid "Une erreur est survenue durant la déconnexion." msgstr "E Fehler ass während der Verbindung opgetrueden" +#: geoportailv3/static/js/query/tracing.html:6 +msgid "UpStream" +msgstr "UpStream" + +#: node_modules/ngeo/src/misc/File.js:87 +msgid "Upload failed" +msgstr "" + #: geoportailv3/static/js/layerinfo/popup.html:18 msgid "Url vers la resource" msgstr "URL vun der Ressource" +#: node_modules/ngeo/src/geolocation/mobile.js:139 +msgid "User denied the request for Geolocation." +msgstr "" + #: geoportailv3/static/js/authentication/authentication.html:7 msgid "Username" msgstr "Benotzernumm" @@ -1261,7 +1714,8 @@ msgstr "Validéieren" msgid "Valider" msgstr "Validéiren" -#: geoportailv3/static/js/query/reportdirective.js:131 +#: geoportailv3/static/js/query/reportdirective.js:135 +#: geoportailv3/static/js/query/reportdirective.js:275 msgid "Veuillez accepter les termes du rapport" msgstr "Huelt weg d'Bedingungen vum Rapport un" @@ -1273,28 +1727,64 @@ msgstr "Sicht Iech ee Symbol an enger vun de Kategorie raus" msgid "Veuillez entrer les caractéristiques de votre nouveau cercle" msgstr "Gitt w.e.g. d'Eegenschaften vun ärem neie Krees an" -#: geoportailv3/static/js/query/reportdirective.js:126 +#: geoportailv3/static/js/query/reportdirective.js:130 +#: geoportailv3/static/js/query/reportdirective.js:270 +#: geoportailv3/static/js/query/reportdirective.js:410 msgid "Veuillez saisir une adresse email valide" msgstr "Erfaasst weg eng valid Email-Adress" -#: geoportailv3/static/js/mymaps/mymapsdirective.js:1068 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1336 +#: geoportailv3/static/js/routing/routingdirective.js:1132 msgid "Veuillez vous identifier afin d'accéder à vos cartes" msgstr "Loggt Iech w.e.g. an fir op Är Kaarten zeréckzegräifen" -#: geoportailv3/static/js/query/reportdirective.js:138 +#: geoportailv3/static/js/query/tracing.html:6 +#: geoportailv3/static/js/query/tracing.html:7 +msgid "Visualiser" +msgstr "Uweisen" + +#: geoportailv3/templates/index.html:225 +msgid "Voir le plan" +msgstr "Plang kucken" + +#: geoportailv3/static/js/query/reportdirective.js:419 +msgid "" +"Votre attestation est en train d'être généré. Un email vous sera envoyé à " +"l'adresse {{email}} dès qu'il sera disponible" +msgstr "" + +#: geoportailv3/static/js/query/reportdirective.js:142 +#: geoportailv3/static/js/query/reportdirective.js:282 msgid "" "Votre rapport est en train d'être généré. Un email vous sera envoyé à " "l'adresse {{email}} dès qu'il sera disponible" msgstr "Äre Rapport gëtt generéiert. Dir kritt eng Email op d'Adress {{email}} subaal e fäerdeg ass." -#: geoportailv3/static/js/mymapsservice.js:1106 +#: geoportailv3/static/js/mymapsservice.js:1236 msgid "Votre utilisateur n'a pas les autorisations suffisantes." msgstr "Ären Benotzer huet net dei néideg Autorisatiounen" +#: geoportailv3/static/js/mymaps/mymapsdirective.js:451 +msgid "" +"Vous êtes en mode découpage.
Veuillez cliquer sur une ligne pour la " +"couper en deux." +msgstr "Dir sidd am Schneidmodus
Klickt w.e.g. op eng Linn fir se an Zwee ze schneiden." + #: geoportailv3/static/js/usermanagerservice.js:123 msgid "Vous êtes maintenant correctement connecté." msgstr "Dir sidd elo ageloggt" +#: geoportailv3/static/js/offlineNgeoComponent.html:114 +#: geoportailv3/static/js/offlineNgeoComponent.html:65 +#: geoportailv3/static/js/offlineNgeoComponent.html:83 +#: geoportailv3/static/js/offlineNgeoComponent.html:96 +msgid "Warning" +msgstr "" + +#: geoportailv3/static/js/search/searchdirective.js:538 +msgid "Website Pages" +msgstr "" + #: geoportailv3/static/js/print/print.html:13 msgid "With legend" msgstr "Mat Legend" @@ -1306,7 +1796,7 @@ msgid "" "send to the support team." msgstr "Dir kënnt och d'Zeechfonktioune benotzen, fir d'Kaart ze kommentéiren." -#: geoportailv3/static/js/mymaps/mymapsdirective.js:907 +#: geoportailv3/static/js/mymaps/mymapsdirective.js:1146 msgid "You have no existing Maps, please create a New Map" msgstr "Dir hudd keng Kaarten, erstellt w.e.g eng nei Kaart" @@ -1462,31 +1952,35 @@ msgstr "Gebai dat op Basis vu Loftopnahmen komplétéiert ass" msgid "blank" msgstr "Keen Hannergrond" +#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 +msgid "f_formatted_length" +msgstr "" + #: geoportailv3/static/js/query/attribute_values_for_translation.html:128 msgid "f_percentage" msgstr "Prozentsaz" -#: geoportailv3/templates/index.html:132 +#: geoportailv3/templates/index.html:164 msgid "infos" msgstr "Info" -#: geoportailv3/templates/index.html:48 +#: geoportailv3/templates/index.html:70 msgid "lang" msgstr "Sprooch" -#: geoportailv3/templates/index.html:77 +#: geoportailv3/templates/index.html:104 msgid "layers" msgstr "Layeren" -#: geoportailv3/templates/index.html:167 +#: geoportailv3/templates/index.html:201 msgid "legends" msgstr "Legenden" -#: geoportailv3/templates/index.html:85 +#: geoportailv3/templates/index.html:116 msgid "my_layers" msgstr "Méng Layeren" -#: geoportailv3/templates/index.html:113 +#: geoportailv3/templates/index.html:145 msgid "my_maps" msgstr "My Maps" @@ -1495,7 +1989,7 @@ msgstr "My Maps" msgid "mètres" msgstr "Meter" -#: geoportailv3/static/js/search/searchdirective.js:448 +#: geoportailv3/static/js/search/searchdirective.js:498 msgid "open in theme" msgstr "am Thema opmaachen" @@ -1559,10 +2053,6 @@ msgstr "BD Topo Gebai" msgid "pf_bâtiment commercial" msgstr "Geschäftsgebai" -#: geoportailv3/static/js/query/attribute_values_for_translation.html:129 -msgid "pf_bâtiment non défini" -msgstr "Onbestëmmtent Gebai" - #: geoportailv3/static/js/query/attribute_values_for_translation.html:94 msgid "pf_bâtiment public" msgstr "Ëffentlecht Gebäi" @@ -1859,7 +2349,7 @@ msgstr "Forstwirtschaft" msgid "rem_typ_5002" msgstr "Wäibau" -#: geoportailv3/templates/index.html:39 +#: geoportailv3/templates/index.html:57 msgid "search" msgstr "Sich" @@ -1867,11 +2357,15 @@ msgstr "Sich" msgid "sentier" msgstr "Wee" -#: geoportailv3/templates/index.html:41 +#: geoportailv3/templates/index.html:63 msgid "user" msgstr "Benotzer" -#: geoportailv3/static/js/print/printdirective.js:560 +#: geoportailv3/static/js/routing/routing.html:37 +msgid "votre position actuelle" +msgstr "Är aktuell Positioun" + +#: geoportailv3/static/js/print/printdirective.js:579 msgid "" "www.geoportail.lu est un portail d'accès aux informations géolocalisées, " "données et services qui sont mis à disposition par les administrations " @@ -1883,6 +2377,10 @@ msgid "" "Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" msgstr "www.geoportal.lu ass ee Portal fier geolokaliséiert Informatiounen, Daten an Déngschter, déi vun den ëffentlechen Lëtzebuerger Instanzen zur Verfügung gestallt ginn, ze visualiséieren. Responsabilitéit: Obwuel d'Behörden mat groussem Soin op d'Richtegkeet vun den verëffentlechten Informatiounen oppassen, kann keng Garantie hisichtlech inhaltlech Richtegkeet, Genauegkeet, Aktualitéit, Zouverlässegkeet an Vollstännegkeet vun den Informatiounen gi ginn. Informatiounen ouni rechtleche Wäert. \nCopyright: Administration du Cadastre et de la Topographie. http://g-o.lu/copyright" +#: node_modules/ngeo/src/misc/WMSTime.js:60 +msgid "yyyy" +msgstr "" + #: geoportailv3/static/js/query/batiments.html:3 msgid "{{(\"bat_\"+feature.attributes.type) | translate}}" msgstr "{{(\"bat_\"+feature.attributes.type) | translate}}" @@ -1895,6 +2393,23 @@ msgstr "{{(\"rem_status_\"+feature.attributes.K_STATUS) | translate}}" msgid "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" msgstr "{{(\"rem_typ_\"+feature.attributes.K_TYP) | translate}}" +#: geoportailv3/static/js/query/lignes_bus.html:6 +#: geoportailv3/static/js/query/lignes_bus.html:7 +#: geoportailv3/static/js/query/lignes_bus.html:8 +msgid "{{feature.attributes.label}}" +msgstr "" + +#: geoportailv3/static/js/query/lignes_bus.html:9 +msgid "{{feature.attributes.map_description}}" +msgstr "" + +#: geoportailv3/static/js/offlineNgeoComponent.html:68 +msgid "" +"~{{$ctrl.estimatedLoadDataSize}}MB of maps will be downloaded - Don't lock " +"your device or navigate away from this site during the download process. " +"Deactivate \"private\" mode of your browser." +msgstr "Et ginn ~{{$ctrl.estimatedLoadDataSize}}MB \nKaartematerial rofgelueden. - Spärt äre Computer net, a verloosst des Säit net während dem Download. Deaktivéiert weg och den \"private\" Modus vun ärem Browser." + #: geoportailv3/static/js/draw/featurepopup.html:113 msgid "Êtes-vous certain de vouloir effacer cet élément de la carte ?" msgstr "Wëllt dir wierklech dëst Element aus der Kaart löschen?" @@ -1951,7 +2466,7 @@ msgstr "API" msgid "arbed" msgstr "ARBED" -#: theme.114 group.253 +#: theme.114 msgid "commande" msgstr "Bestellung" @@ -2085,7 +2600,7 @@ msgstr "Natura 2000" #: lu_int_wms.147 msgid "arrets_bus" -msgstr "Ëffentlechen Transport" +msgstr "Ëffentlechen Transport - Haltestellen" #: lu_ext_wms.148 msgid "user_content_vtt" @@ -2121,7 +2636,7 @@ msgstr "Topografesch Kaart 1:20k 1979 S/W" #: lu_int_wms.157 msgid "env_bruit_air_lden" -msgstr "Fluchhafen 2011 (LDEN)" +msgstr "Groussflughafen 2011 (Lden)" #: lu_ext_wms.158 msgid "tour_cfl" @@ -2153,7 +2668,7 @@ msgstr "Adressen" #: group.166 msgid "env_bruit" -msgstr "Kaméidi" +msgstr "Emweltkaméidi" #: lu_int_wms.167 msgid "env_corine" @@ -2193,7 +2708,7 @@ msgstr "Autopédestres" #: lu_ext_wms.177 msgid "tour_sentiers_communaux" -msgstr "Gememgeweeër" +msgstr "Gemengeweeër" #: group.178 msgid "luft_und_satellitenbilder" @@ -2207,10 +2722,6 @@ msgstr "Lokal Wanderweeër (nët vun der DG Tourismus ënnerhalen)" msgid "anf_secteurs_ecologiques_group" msgstr "Ökologesch Gebidder" -#: l_wmts.181 -msgid "roads" -msgstr "Stroossennnetz" - #: l_wmts.182 msgid "ac_wellenstein_pag_zones" msgstr "Zonen" @@ -2305,7 +2816,7 @@ msgstr "Wiederdaten" #: lu_ext_wms.205 msgid "tour_escape_ardenne" -msgstr "EscapArdenne" +msgstr "Escapardenne" #: l_wmts.206 msgid "topo_20k" @@ -2343,9 +2854,9 @@ msgstr "Kadasterparzellen" msgid "eau_new_Provisorische_ZPS" msgstr "Provisoresch ZPS" -#: l_wmts.216 -msgid "decoupage_communes" -msgstr "Gemengecode" +#: theme.1388 +msgid "sig_secours" +msgstr "Secours" #: l_wmts.217 msgid "TOPO_CARTESHISTO_1966-74_50k" @@ -2425,11 +2936,11 @@ msgstr "Lagen am Weibau" #: l_wmts.215 msgid "env_obs2007" -msgstr "Biotoptypenkartéirung 2007" +msgstr "Buedemnotzung 2007" #: l_wmts.163 msgid "env_obs1999" -msgstr "Biotoptypenkartéirung 1999" +msgstr "Buedemnotzung 1999" #: group.236 msgid "group_ac_remich_pag" @@ -2469,7 +2980,7 @@ msgstr "Schutzgebidder" #: lu_ext_wms.246 msgid "tour_sentiers_syndicats" -msgstr "Syncdicats d'initiative - Weeër" +msgstr "Syndicats d'initiative - Weeër" #: group.247 msgid "infrastrucktur_une_kommunikation_prof" @@ -2485,7 +2996,7 @@ msgstr "My Maps" #: lu_ext_wms.250 msgid "tour_DeLux" -msgstr "Naturwanderpark DeLux" +msgstr "Naturwanderpark Delux" #: l_wmts.251 msgid "ign_ortho" @@ -2699,10 +3210,6 @@ msgstr "Geologësch Kaart, nei Editioun" msgid "tour_mymaps" msgstr "Wanderweeër" -#: lu_ext_wms.316 lu_int_wms.749 -msgid "env_sentiersnature" -msgstr "Naturpied" - #: group.317 msgid "eau_topographie" msgstr "Topographie" @@ -2741,7 +3248,7 @@ msgstr "Ëmwelt, Biologie a Geologie" #: lu_int_wms.327 msgid "env_bruit_air_lngt" -msgstr "Fluchhafen 2011 (LNGT)" +msgstr "Groussflughafen 2011 (Lngt)" #: l_wmts.328 msgid "1907_CAHANSEN" @@ -2819,10 +3326,6 @@ msgstr "All ëffentlech Kaarten vun méngem Haaptkont" msgid "all_my_maps" msgstr "All méng ëffentlech Kaarten" -#: l_wmts.351 -msgid "roads_labels" -msgstr "Stroossennimm" - #: lu_int_wms.352 msgid "cfl_hecto" msgstr "Kilometréirung vun den CFL-Strecken" @@ -2895,7 +3398,7 @@ msgstr "Distrikter (Nimm)" msgid "country" msgstr "Landesgrenzen" -#: lu_int_wms.256 +#: lu_int_wms.256 lu_int_wms.822 msgid "feuilles_cadastrales" msgstr "Kadaster Urpläng" @@ -2909,23 +3412,23 @@ msgstr "Klenglagen am Weibau" #: lu_int_wms.297 msgid "ivv_flik_parcels" -msgstr "FLIK Referenzparzellen Weibau 2016" +msgstr "FLIK Referenzparzellen Weibau 2017" #: l_wmts.326 msgid "env_bruit_axes_routiers_lden" -msgstr "Stroossen 2011 (LDEN)" +msgstr "Haaptverkéiersstroossen 2011 (Lden)" #: l_wmts.255 msgid "env_bruit_axes_routiers_lngt" -msgstr "Stroossen 2011(LNGT)" +msgstr "Haaptverkéiersstroossen 2011 (Lngt)" #: l_wmts.259 msgid "env_bruit_axes_ferroviaires_lngt" -msgstr "Eisebunn 2011 (LNGT)" +msgstr "Haapteisenbunnsstrecken 2011 (Lngt)" #: l_wmts.310 msgid "env_bruit_axes_ferroviaires_lden" -msgstr "Eisebunn 2011 (LDEN)" +msgstr "Haapteisenbunnsstrecken 2011 (Lden)" #: lu_int_wms.367 msgid "natur_an_emwelt_terrains" @@ -2951,6 +3454,10 @@ msgstr "Punktelementer" msgid "emwelt_biotop_kadaster_s" msgstr "Bongerten" +#: group.253 +msgid "commande_grp" +msgstr "Commande" + #: group.373 msgid "eau_new_Trinkwasser_Schutzzonen_(ZPS)" msgstr "Drénkwaasserschutzgebidder [ZPS]" @@ -3029,15 +3536,15 @@ msgstr "Gallo-Romain" #: group.392 msgid "at_pst" -msgstr "SP Transport" +msgstr "PDS Transport" #: group.393 msgid "at_pszae" -msgstr "SP Aktivitéitszonen" +msgstr "PDS Aktivitéitszonen" #: group.394 msgid "at_ps" -msgstr "Sektoriell Pläng (SP)" +msgstr "Plans Directeurs Sectoriels (PDS) - Projet'en" #: lu_int_wms.395 msgid "at_psp_gep" @@ -3053,7 +3560,7 @@ msgstr "Multifunktional Zonen (Totalitéit)" #: group.398 msgid "at_psp" -msgstr "SP Landschaften" +msgstr "PDS Landschaften" #: group.399 msgid "at_psp_zm" @@ -3061,15 +3568,15 @@ msgstr "Multifunktional Zonen" #: group.400 msgid "at_psl" -msgstr "SP Logement" +msgstr "PDS Logement" #: lu_int_wms.401 msgid "at_psl1" -msgstr "Zonen fir gréisser Wunnengsbauprojeten" +msgstr "Prioritär Zonen fir Wunnen" #: lu_int_wms.402 msgid "at_pszae2" -msgstr "Nei Aktivitéitszonen an Erweiderungen" +msgstr "Geplangten Aktivitéitszonen" #: lu_int_wms.403 msgid "at_pszae3" @@ -3093,7 +3600,7 @@ msgstr "Bestehend Aktivitéitszonen" #: lu_int_wms.408 msgid "at_pst2" -msgstr "Réservéiert Couloiren" +msgstr "Superposéiert Korridoren an Zonen" #: lu_int_wms.409 msgid "at_psp_zvi" @@ -3107,18 +3614,6 @@ msgstr "SPT-Projeten" msgid "ng" msgstr "Héichtereferenzpunkten" -#: l_wmts.412 -msgid "wg_hangneigung_map" -msgstr "Hangneigung" - -#: l_wmts.413 -msgid "wg_relief_map" -msgstr "Relief" - -#: l_wmts.414 -msgid "wg_exposition_map" -msgstr "Expositioun" - #: l_wmts.415 msgid "wg_hohenlinien_10m_map" msgstr "Héichtelinnen 10m" @@ -3263,9 +3758,9 @@ msgstr "Gewässernetz" msgid "eau_new_Fischerei" msgstr "Fëschereidëngscht" -#: group.452 -msgid "eau_new_Projekt_Hochwasserrisikokarten_2013" -msgstr "Héichwaasserrisikokaarten" +#: lu_int_wms.1387 +msgid "logt_bauluecken_2016_restricted" +msgstr "Baulücken 2016" #: group.453 msgid "eau_new_Messstationen" @@ -3283,9 +3778,9 @@ msgstr "Parcelles OLOS" msgid "topo_decoupage_5000_ed2015" msgstr "Blatschnëtt topographesche Plang 1:5000 Editioun 2015" -#: group.458 -msgid "eau_new_Risikobeurteilung_2021" -msgstr "Risikobewertung 2021" +#: group.1389 +msgid "secours_act" +msgstr "ACT" #: group.459 msgid "eau_new_Oberflaechengewaesser_2021" @@ -3299,9 +3794,9 @@ msgstr "Nidderschlagsmiessstatiounen" msgid "eau_new_Historische_Ueberschwemmungsgebiete" msgstr "Historech Iwwerschwemmungsgebidder" -#: group.462 -msgid "eau_new_Projekt_Hochwassergefahrenkarten_2013" -msgstr "Héichwaassergeforekaarten" +#: group.1391 +msgid "secours_age" +msgstr "AGE" #: group.463 msgid "eau_new_Zusaetzliche_Informationen" @@ -3387,17 +3882,17 @@ msgstr "Nitratdirektive" msgid "eau_new_Grundwasser" msgstr "Grondwaasser" -#: group.484 -msgid "eau_new_Gewaesser" -msgstr "Gewässer" +#: lu_int_wms.1396 +msgid "siden_eaux_usees_dom_ind_sep" +msgstr "Eaux usées domestiques, industriels et séparatifs" #: group.485 msgid "eau_new_Hydrologische_Messstationen" msgstr "Hydrologesch Miessstatiounen" -#: group.486 -msgid "eau_new_Ueberschwemmungsgebiete_(UESG)" -msgstr "Iwwerschwemmungsgebidder [ISG]" +#: lu_int_wms.1398 +msgid "siden_couvercles_regard" +msgstr "Couvercles de regard" #: group.487 msgid "eau_new_Stehende_Gewaesser_(usage_interne)" @@ -3411,9 +3906,9 @@ msgstr "Historesch Kaarten" msgid "tourisme_poi" msgstr "Interessant Plazen vum ONT" -#: lu_int_wms.490 -msgid "eau_new_Sanitaere_Schutzzonen_Stausee" -msgstr "Sanitär Schutzzone Stauséi" +#: lu_int_wms.1400 +msgid "siden_eaux_usees_mixtes" +msgstr "Eaux usées mixtes" #: lu_int_wms.491 msgid "eau_new_Intensitaet_-_HQ_extrem_(usage_interne)" @@ -3423,6 +3918,14 @@ msgstr "Intensitéit extremt HW" msgid "eau_new_Gefaehrdete_Gebiete_(Nitratrichtlinie)" msgstr "Vulnérabel Gebidder [Nitratdirective]" +#: lu_int_wms.153 +msgid "communes_cadastrales" +msgstr "Kadastergemengen" + +#: group.1404 +msgid "sebes_zones_protection" +msgstr "Zones de protection" + #: lu_int_wms.493 msgid "eau_new_Oberflaechenwasserabhaengige_Oekosysteme" msgstr "UW ofhängeg Ökosystemer" @@ -3517,7 +4020,7 @@ msgstr "Banken" #: lu_int_wms.517 msgid "logt_bauluecken" -msgstr "Baulücken" +msgstr "Baulücken (all Gemengen)" #: group.518 msgid "logt" @@ -3555,10 +4058,6 @@ msgstr "FLIK Parzellen 2016" msgid "parcels_labels_go" msgstr "Kadasterparzellen (Nummeren)" -#: l_wmts.527 -msgid "asta_flik_parcels_2016" -msgstr "FLIK Parzellen 2016" - #: group.528 msgid "bglayers" msgstr "Hannergrondlayer" @@ -3723,9 +4222,9 @@ msgstr "Geforeklassen" msgid "eau_new_Stausee_Sauer" msgstr "Öewersauer-Stauséi" -#: lu_int_wms.570 -msgid "eau_new_Grundwasser_(Nitratrichtlinie)" -msgstr "Grondwaasser [Nitratdirektive]" +#: l_wmts.527 +msgid "asta_flik_parcels" +msgstr "FLIK Parzellen 2018" #: lu_int_wms.571 msgid "eau_new_Kuenstliche_(Bassin)_(usage_interne)" @@ -3773,7 +4272,7 @@ msgstr "Badegewässerqualitéit" #: lu_int_wms.582 msgid "eau_new_Messstationen_Grundwasser_-_Nitratrichtlinie" -msgstr "Miesstatiounen Grondwaasser - Nitratdirektive" +msgstr "Nitratkonzentratiounen Grondwaasser" #: lu_int_wms.583 msgid "eau_new_Physiko-Chemie_2015" @@ -3791,17 +4290,13 @@ msgstr "Gesamtzoustand 2009" msgid "eau_new_Chemischer_Zustand_2009" msgstr "Chemeschen Zoustand 2009" -#: lu_int_wms.587 -msgid "eau_new_Primaere_Gewaesser" -msgstr "Haaptgewässer" - #: lu_int_wms.588 msgid "eau_new_Typologie_Gewaesser_2015" msgstr "Fléissgewässertypen 2015" #: lu_int_wms.589 msgid "eau_new_Messstationen_Oberflaechengewaesser_-_Nitratrichtlinie" -msgstr "Miessstatiounen Iwwerflächengewässer - Nitratdirektive" +msgstr "Nitratkonzentratiounen Iwwerflächegewässer" #: lu_int_wms.590 msgid "eau_new_Hydromorphologischer_Zustand_2015" @@ -3809,11 +4304,11 @@ msgstr "Hydromorphologeschen Zoustand 2015" #: lu_int_wms.591 msgid "eau_new_Zustand_der_WK_2015" -msgstr " Zoustand vun den WK 2015" +msgstr " Zoustand vun de WK 2015" #: lu_int_wms.592 msgid "eau_new_Quantitativer_Zustand_der_WK_2015" -msgstr "Quantitativen Zoustand vun den WK 2015" +msgstr "Quantitativen Zoustand vun de WK 2015" #: lu_int_wms.593 msgid "eau_new_Hydromorphologischer_Zustand_2009" @@ -3839,10 +4334,6 @@ msgstr "ISG 10-jäerlech" msgid "eau_new_Trinkwasserbehaelter" msgstr "Drénkwaasserbehälter" -#: lu_int_wms.599 -msgid "eau_new_Kilometrierung_sekundaere_Gewaesser" -msgstr "Kilometréierung Niewegewässer" - #: lu_int_wms.709 msgid "pag_ssmn" msgstr "nationaler Denkmalschutz " @@ -3927,10 +4418,6 @@ msgstr "Betruechtungsräim 2015" msgid "eau_new_Bodentemperatur" msgstr "Buedemtemperatur" -#: lu_int_wms.621 -msgid "eau_new_Chemischer_Zustand_2015" -msgstr "Chemeschen Zoustand 2015" - #: lu_int_wms.622 msgid "eau_new_Oekologischer_Zustand_2015" msgstr "Ökologeschen Zoustand 2015" @@ -3939,14 +4426,6 @@ msgstr "Ökologeschen Zoustand 2015" msgid "eau_new_Temporaer_fliessende_Baeche" msgstr "Temporär Baachen" -#: lu_int_wms.624 -msgid "eau_new_Kilometrierung_primaere_Gewaesser" -msgstr "Kilometréierung Haaptgewässer" - -#: lu_int_wms.625 -msgid "eau_new_Sekundaere_Gewaesser" -msgstr "Niewegewässer" - #: lu_int_wms.626 msgid "eau_new_Fischereiabschnitte" msgstr "Fëschereiofschnëtter" @@ -3979,10 +4458,6 @@ msgstr "Chemeschen Zoustand vun de WK 2015" msgid "eau_new_UESG_Sauer_1995" msgstr "ISG Sauer 1995" -#: lu_int_wms.634 -msgid "eau_new_Erheblich_veraenderte_OWK_2009" -msgstr "Staark modifizéiert OWK 2009" - #: lu_int_wms.635 msgid "eau_new_Natuerliche_(Bassin)_(usage_interne)" msgstr "Natierleche Baseng" @@ -4059,10 +4534,6 @@ msgstr "Wärmepompel" msgid "eau_new_Alluvialer_Grundwasserspiegel" msgstr "Alluvialen Grondwaasserspigel" -#: lu_int_wms.654 -msgid "eau_new_Nitratrichtlinie_Messstationen" -msgstr "Nitratdirektive" - #: lu_int_wms.655 msgid "eau_new_Wasserstand" msgstr "Waasserstand" @@ -4075,24 +4546,10 @@ msgstr "Badegewässer" msgid "eau_new_Zustand_der_WK_2009" msgstr " Zoustand vun den WK 2009" -#: lu_int_wms.658 -msgid "eau_new_Erheblich_veraenderte_WK_2015" -msgstr "Staark modifizéiert WK 2015" - #: lu_int_wms.659 msgid "eau_new_Grundwasserkoerper_2015" msgstr "Grondwaasserkierper 2015" -#: lu_int_wms.660 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_chemischen_Zustandes" -msgstr "Risikobeurteleeung fir dass d'WK de gudde chemeschen Zoustand erreechen" - -#: lu_int_wms.661 -msgid "" -"eau_new_Risikobeurteilung_des_WK_hinsichtlich_der_Verfehlung_des_guten_mengenmaessigen_Zustandes" -msgstr "Risikobeurteleeung fir dass d'WK de gudde quantitativen Zoustand erreechen" - #: lu_int_wms.662 msgid "eau_new_Makrophyten_2015" msgstr "Makrophyten a Phytobenthos 2015" @@ -4163,11 +4620,11 @@ msgstr "Biologesch Statiounen" #: lu_int_wms.679 msgid "logt_bauluecken_restricted" -msgstr "Baulücken (restricted)" +msgstr "Baulücken 2013 (kee Feedback méi noutwenneg)" #: lu_int_wms.680 msgid "aev_decharges" -msgstr "Décharges" +msgstr "Dechargen (Internal)" #: lu_ext_wms.681 msgid "tour_moto" @@ -4251,7 +4708,7 @@ msgstr "Fond de plan (staging)" #: lu_ext_wms.701 msgid "logt_baul_feedback" -msgstr "Baulücken-Feedback" +msgstr "Baulücken-Feedback 2016" #: lu_int_wms.702 msgid "asta_pedologie_new" @@ -4301,10 +4758,6 @@ msgstr "Lokaliséirung vun de fixe Radaren" msgid "pag_pap_approuves_staging" msgstr "PAP approuvés (staging)" -#: lu_int_wms.715 -msgid "parcels_daily" -msgstr "Kadasterparzellen" - #: group.716 msgid "pag_at" msgstr "Landesplanung" @@ -4329,9 +4782,9 @@ msgstr "Waasserschutz" msgid "cantons_labels" msgstr "Kantoner (Nimm)" -#: lu_int_wms.153 -msgid "communes_cadastrales" -msgstr "Kadastergemengen" +#: lu_int_wms.715 +msgid "parcels_daily_old" +msgstr "" #: lu_int_wms.302 msgid "communes" @@ -4355,7 +4808,7 @@ msgstr "Klimakaart" #: lu_int_wms.510 msgid "ivv_parcels" -msgstr "Wengerten 2016" +msgstr "Wengerten 2017" #: l_wmts.420 msgid "eau_new_HQ100_mittlere_Wahrscheinlichkeit" @@ -4387,7 +4840,7 @@ msgstr "Nei an vergréissert ZAE - Tests" #: lu_ext_wms.725 msgid "tour_tdl" -msgstr "Skoda Tour de Luxembourg 2016" +msgstr "Skoda Tour de Luxembourg 2018" #: group.727 msgid "contrats biodiversité MDDI" @@ -4429,10 +4882,6 @@ msgstr "UTM Grid" msgid "Catastrophe naturelle 22/07/16 (informations protégées)" msgstr "Catastrophe naturelle 22/07/16 (informations protégées)" -#: group.737 -msgid "Groupe canin" -msgstr "Groupe canin" - #: lu_ext_wms.736 msgid "police_group_canin" msgstr "police_group_canin" @@ -4447,11 +4896,11 @@ msgstr "Grünlandkartierung" #: lu_ext_wms.741 msgid "Données saisies par l'armée luxembourgeoise" -msgstr "" +msgstr "Données saisies par l'armée luxembourgeoise" #: group.742 msgid "Armée luxembourgeoise" -msgstr "" +msgstr "Armée luxembourgeoise" #: lu_int_wms.743 msgid "aero_1987_30k" @@ -4476,3 +4925,2163 @@ msgstr "Naturparken" #: lu_int_wms.748 msgid "aero_1994_30k" msgstr "Loftbiller vun 1994 (1:30k)" + +#: lu_int_wms.316 +msgid "env_sentiersnature" +msgstr "Naturpied" + +#: group.458 +msgid "eau_new_Risikobeurteilung" +msgstr "Risikobewertung" + +#: group.462 +msgid "eau_new_Hochwassergefahrenkarten_2013" +msgstr "Héichwaassergeforekaarten 2013" + +#: group.452 +msgid "eau_new_Hochwasserrisikokarten_2013" +msgstr "Héichwaasserrisikokaarten 2013" + +#: lu_int_wms.752 +msgid "eau_new_Bauwerke im Abwasserbereich" +msgstr "Bauwierker am Oofwaasserbereich" + +#: lu_int_wms.753 +msgid "eau_new_Abwassernetze" +msgstr "Oofwaassernetzer" + +#: lu_int_wms.755 +msgid "eau_new_Gewässer mit einem signifikanten Hochwasserrisiko" +msgstr "Gewässer mat engem signifikativen Héichwaasserrisiko" + +#: lu_int_wms.754 +msgid "eau_new_Abwassergebiet" +msgstr "Oofwaassergebitt" + +#: lu_int_wms.756 +msgid "eau_new_Hochwasser Brennpunkte" +msgstr "Héichwaasser Brennpunkten" + +#: lu_int_wms.757 +msgid "eau_new_Hochwasserschutzmassnahmen" +msgstr "Héichwaasser Schutz Moossnahmen" + +#: lu_int_wms.758 +msgid "eau_new_Maßnahmens des Hochwasserrisikomanagementplans" +msgstr "Moossnameprogramm HWRM-Plang 2015" + +#: lu_int_wms.759 +msgid "eau_new_Strukturgütekartierung 2015 [7-stufige Bewertung]" +msgstr "Strukturgütekartéirung 2015 [7-stufeg Bewertung]" + +#: lu_int_wms.760 +msgid "eau_new_Strukturgütekartierung 2015 [5-stufige Bewertung]" +msgstr "Strukturgütekartéirung 2015 [5-stufeg Bewertung]" + +#: lu_int_wms.761 +msgid "eau_new_Struktukartierung 2015 in 5 Band [7-stufige Bewertung]" +msgstr "Strukturgütekartéirung 2015 a 5 Band [7-stufeg Bewertung]" + +#: lu_int_wms.763 +msgid "eau_new_Struktukartierung 2015 in 5 Band [5-stufige Bewertung]" +msgstr "Strukturgütekartéirung 2015 a 5 Band [5-stufeg Bewertung]" + +#: lu_int_wms.764 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2008/105/EG]" +msgstr "Chemeschen Zoustand ouni ubiquitär Substanzen 2015 [Richtlinn 2008/105/EG]" + +#: lu_int_wms.765 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2013/39/EU]" +msgstr "Chemeschen Zoustand 2015 [Richtlinn 2013/39/EU]" + +#: lu_int_wms.766 +msgid "" +"eau_new_Chemischer Zustand ohne ubiquitäre Stoffe 2015 [Richtlinie " +"2013/39/EU]" +msgstr "Chemeschen Zoustand ouni ubiquitär Substanzen 2015 [Richtlinn 2013/39/EU]" + +#: lu_int_wms.767 +msgid "eau_new_Hydromorphologische Gesamtbewertung 2015" +msgstr "Hydromorphologie 2015" + +#: lu_int_wms.749 +msgid "eau_new_Gewässer" +msgstr "Gewässer" + +#: lu_int_wms.750 +msgid "eau_new_Kilometrierung der Gewässer" +msgstr "Kilometréierung vun de Gewässer" + +#: lu_int_wms.751 +msgid "eau_new_ZPS provisorische Gutachten" +msgstr "ZPS provisoresch Gutachten" + +#: lu_int_wms.768 +msgid "eau_new_Überwachungsprogramme - Resultate" +msgstr "Monitoringprogrammer - Resultater" + +#: lu_int_wms.769 +msgid "eau_new_Morphologie 2015" +msgstr "Morphologie 2015" + +#: lu_int_wms.770 +msgid "eau_new_Durchgängigkeit 2015" +msgstr "Durchgängegkeet 2015" + +#: lu_int_wms.771 +msgid "eau_new_Phytoplankton 2015" +msgstr "Phytoplankton 2015" + +#: group.772 lu_int_wms.775 +msgid "eau_new_Grundwasser 2027" +msgstr "Grondwaasser 2027" + +#: lu_int_wms.773 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2021" +msgstr "Risikobeurteleeung fir dass d'WK de gudde Zoustand erreechen 2021" + +#: lu_int_wms.774 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"Zustandes 2027" +msgstr "Risikobeurteleeung fir dass d'WK de gudde Zoustand erreechen 2027" + +#: lu_int_wms.776 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2027" +msgstr "Risikobeurteleeung fir dass d'WK de gudde quantitativen Zoustand erreechen 2027" + +#: lu_int_wms.777 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2027" +msgstr "Risikobeurteleeung fir dass d'WK de gudde chemeschen Zoustand erreechen 2027" + +#: lu_int_wms.654 +msgid "eau_new_Oberflächengewässer Nitratrichtlinie 91/676/CEE" +msgstr "Iwwerflächegewässer Nitratrichtlinn 91/676/CEE" + +#: lu_int_wms.570 +msgid "eau_new_Grundwasser Nitratrichtlinie 91/676/CEE" +msgstr "Grondwaasser Nitratrichtlinn 91/676/CEE" + +#: group.484 +msgid "eau_new_Hydrografie" +msgstr "Iwwerflächegewässer" + +#: lu_int_wms.490 +msgid "eau_new_Sanitäre Schutzzonen Stausee Esch/Sauer" +msgstr "Sanitär Schutzzone vum Stauséi Esch/Sauer" + +#: group.486 +msgid "eau_new_Hochwasserrisikomanagement-Richtlinie [HWRM-RL]" +msgstr "Héichwaasserrisikomanagementrichtlinn [HWRM-RL]" + +#: lu_int_wms.634 +msgid "eau_new_Erheblich veränderte Wasserkörper 2009" +msgstr "Staark modifizéiert Waasserkierper 2009" + +#: lu_int_wms.658 +msgid "eau_new_Erheblich veränderte Wasserkörper 2015" +msgstr "Staark modifizéiert Waasserkierper 2015" + +#: lu_int_wms.621 +msgid "eau_new_Chemischer Zustand 2015 [Richtlinie 2008/105/EG]" +msgstr "Chemeschen Zoustand 2015 [Richtlinn 2008/105/EG]" + +#: lu_int_wms.661 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"mengenmäßigen Zustandes 2021" +msgstr "Risikobeurteleeung fir dass d'WK de gudde quantitativen Zoustand erreechen 2021" + +#: lu_int_wms.660 +msgid "" +"eau_new_Risikobeurteilung des WK hinsichtlich der Verfehlung des guten " +"chemischen Zustandes 2021" +msgstr "Risikobeurteleeung fir dass d'WK de gudde chemeschen Zoustand erreechen 2021" + +#: lu_int_wms.785 +msgid "eau_new_WRRL und HWRM-RL Massnahmen" +msgstr "Detailléierte Moossnameprogramm HY" + +#: group.784 +msgid "eau_new_Usage interne" +msgstr "Usage interne" + +#: lu_int_wms.779 +msgid "eau_new_Regionalisierte MNQ-Werte" +msgstr "Regionaliséiert MNQ-Werter" + +#: lu_int_wms.781 +msgid "eau_new_Regionalisierte MQ-Werte" +msgstr "Regionaliséiert MQ-Werter" + +#: lu_int_wms.782 +msgid "eau_new_Regionalisierte HQ-Werte" +msgstr "Regionaliséiert HQ-Werter" + +#: lu_int_wms.786 +msgid "Orthophoto_Infrarouge_2016" +msgstr "Infrarout Orthophotoen 2016" + +#: lu_int_wms.787 +msgid "Orthophoto_Infrarouge_2013" +msgstr "Infrarout Orthophotoen 2013" + +#: lu_int_wms.788 +msgid "Orthophoto_Infrarouge_2010" +msgstr "Infrarout Orthophotoen 2010" + +#: lu_int_wms.789 +msgid "Orthophoto_Infrarouge" +msgstr "Orthophoto infrarout" + +#: group.790 +msgid "Orthophotos Infrarouge" +msgstr "Orthophoto infrarout" + +#: l_wmts.791 +msgid "ortho_2010_irc" +msgstr "Orthophoto 2010 infrarout" + +#: l_wmts.792 +msgid "ortho_2013_irc" +msgstr "Orthophoto 2013 infrarout" + +#: l_wmts.793 +msgid "ortho_2016_irc" +msgstr "Orthophoto 2016 infrarout" + +#: lu_ext_wms.794 +msgid "Scouts_Hikes" +msgstr "Scouts Hikes" + +#: group.795 +msgid "Scouts" +msgstr "Scouts" + +#: lu_ext_wms.796 +msgid "Schleck Gran Fondo" +msgstr "Schleck Gran Fondo" + +#: lu_int_wms.797 +msgid "eau_new_trockenheit_gelb" +msgstr "Preventiv Phase (« Phase giel »)" + +#: lu_int_wms.798 +msgid "seveso" +msgstr "SEVESO Siten" + +#: l_wmts.799 +msgid "basemap_2015_global_old" +msgstr "Stroossenkaart 2D" + +#: theme.800 +msgid "cadastre_hertzien" +msgstr "GSM-Kadaster" + +#: lu_int_wms.802 +msgid "mat_points_mesure" +msgstr "Miesspunkten" + +#: group.803 +msgid "cadastre_hertzien_group" +msgstr "GSM-Kadaster" + +#: lu_int_wms.804 +msgid "anf_zpin_declarees" +msgstr "Ausgewisen Naturschutzgebidder" + +#: lu_int_wms.805 +msgid "anf_zpin_a_declarer" +msgstr "Naturschutzgebidder en vue vun enger Ausweisung" + +#: lu_int_wms.806 +msgid "anf_zpin_en_procedure" +msgstr "Naturschutzgebidder an der Ausweisungprozedur" + +#: group.807 +msgid "zpin_group" +msgstr "Naturschutzgebidder vun nationalem Intérêt" + +#: lu_int_wms.808 +msgid "velo_by_pch" +msgstr "National Velosweeër" + +#: lu_ext_wms.809 +msgid "lvi_circuits_cyclables" +msgstr "Velostueren" + +#: lu_int_wms.810 +msgid "TOPO_CARTEHISTO_1950" +msgstr "Topografesch Kaart 1:150k 1950" + +#: lu_int_wms.801 +msgid "mat_antennes_plus_50_watt" +msgstr "Basisstatiounen vun den ëffentlechen Mobilfunknetzer ≥ 50 Watt" + +#: lu_int_wms.811 +msgid "mat_antennes_moins_50_watt" +msgstr "Basisstatiounen vun den ëffentlechen Mobilfunknetzer < 50 Watt" + +#: lu_int_wms.813 +msgid "cdt_lignes_all" +msgstr "Ëffentlechen Transport - Réseau" + +#: lu_ext_wms.814 +msgid "cdt_lignes_avl" +msgstr "Buslinnen AVL" + +#: lu_ext_wms.815 +msgid "cdt_lignes_rgtr" +msgstr "Buslinnen RGTR" + +#: lu_ext_wms.816 +msgid "cdt_lignes_tice" +msgstr "Buslinnen TICE" + +#: lu_ext_wms.817 +msgid "cdt_lignes_cfl" +msgstr "Zuchlinnen CFL" + +#: group.812 +msgid "cdt_lignes_bus_par_operateur" +msgstr "Ëffentlechen Transport pro Opérateur" + +#: theme.818 +msgid "API_ONLY" +msgstr "" + +#: lu_int_wms.819 lu_int_wms.1381 +msgid "chargy" +msgstr "Chargy Bornen" + +#: group.820 +msgid "API_ONLY_LAYERS" +msgstr "" + +#: lu_int_wms.821 lu_int_wms.823 +msgid "feuilles_cadastrales_urplang" +msgstr "Kadaster Urpläng" + +#: lu_int_wms.830 +msgid "lux_norm1971_2000_00_pluvio_sum" +msgstr "1971-2000 - Précipitations annuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.833 +msgid "lux_norm1971_2000_01_pluvio_sum" +msgstr "jan. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.836 +msgid "lux_norm1971_2000_02_pluvio_sum" +msgstr "fev. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.839 +msgid "lux_norm1971_2000_03_pluvio_sum" +msgstr "mars 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.842 +msgid "lux_norm1971_2000_04_pluvio_sum" +msgstr "avr. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.845 +msgid "lux_norm1971_2000_05_pluvio_sum" +msgstr "mai 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.848 +msgid "lux_norm1971_2000_06_pluvio_sum" +msgstr "juin 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.851 +msgid "lux_norm1971_2000_07_pluvio_sum" +msgstr "juill. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.854 +msgid "lux_norm1971_2000_08_pluvio_sum" +msgstr "août 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.857 +msgid "lux_norm1971_2000_09_pluvio_sum" +msgstr "sept. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.860 +msgid "lux_norm1971_2000_10_pluvio_sum" +msgstr "oct. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.863 +msgid "lux_norm1971_2000_11_pluvio_sum" +msgstr "nov. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.866 +msgid "lux_norm1971_2000_12_pluvio_sum" +msgstr "déc. 1971-2000 - Précipitations mensuelles normale climatique 1971-2000 [mm] " + +#: lu_int_wms.872 +msgid "lux_2012_00_temp_minimum" +msgstr "2012 - Températures minimales moyennes annuelles [ºC] " + +#: lu_int_wms.875 +msgid "lux_2012_01_temp_minimum" +msgstr "jan. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.878 +msgid "lux_2012_02_temp_minimum" +msgstr "fev. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.881 +msgid "lux_2012_03_temp_minimum" +msgstr "mars 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.884 +msgid "lux_2012_04_temp_minimum" +msgstr "avr. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.887 +msgid "lux_2012_05_temp_minimum" +msgstr "mai 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.890 +msgid "lux_2012_06_temp_minimum" +msgstr "juin 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.893 +msgid "lux_2012_07_temp_minimum" +msgstr "juill. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.896 +msgid "lux_2012_08_temp_minimum" +msgstr "août 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.899 +msgid "lux_2012_09_temp_minimum" +msgstr "sept. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.902 +msgid "lux_2012_10_temp_minimum" +msgstr "oct. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.905 +msgid "lux_2012_11_temp_minimum" +msgstr "nov. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.908 +msgid "lux_2012_12_temp_minimum" +msgstr "déc. 2012 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.912 +msgid "lux_2012_00_temp_average" +msgstr "2012 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.915 +msgid "lux_2012_01_temp_average" +msgstr "jan. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.918 +msgid "lux_2012_02_temp_average" +msgstr "fev. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.921 +msgid "lux_2012_03_temp_average" +msgstr "mars 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.924 +msgid "lux_2012_04_temp_average" +msgstr "avr. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.927 +msgid "lux_2012_05_temp_average" +msgstr "mai 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.930 +msgid "lux_2012_06_temp_average" +msgstr "juin 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.933 +msgid "lux_2012_07_temp_average" +msgstr "juill. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.936 +msgid "lux_2012_08_temp_average" +msgstr "août 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.939 +msgid "lux_2012_09_temp_average" +msgstr "sept. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.942 +msgid "lux_2012_10_temp_average" +msgstr "oct. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.945 +msgid "lux_2012_11_temp_average" +msgstr "nov. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.948 +msgid "lux_2012_12_temp_average" +msgstr "déc. 2012 - Températures moyennes mensuelles [ºC] " + +#: lu_int_wms.952 +msgid "lux_2012_00_temp_maximum" +msgstr "2012 - Températures maximales moyennes annuelles [ºC] " + +#: lu_int_wms.955 +msgid "lux_2012_01_temp_maximum" +msgstr "jan. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.958 +msgid "lux_2012_02_temp_maximum" +msgstr "fev. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.961 +msgid "lux_2012_03_temp_maximum" +msgstr "mars 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.964 +msgid "lux_2012_04_temp_maximum" +msgstr "avr. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.967 +msgid "lux_2012_05_temp_maximum" +msgstr "mai 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.970 +msgid "lux_2012_06_temp_maximum" +msgstr "juin 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.973 +msgid "lux_2012_07_temp_maximum" +msgstr "juill. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.976 +msgid "lux_2012_08_temp_maximum" +msgstr "août 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.979 +msgid "lux_2012_09_temp_maximum" +msgstr "sept. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.982 +msgid "lux_2012_10_temp_maximum" +msgstr "oct. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.985 +msgid "lux_2012_11_temp_maximum" +msgstr "nov. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.988 +msgid "lux_2012_12_temp_maximum" +msgstr "déc. 2012 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.993 +msgid "lux_2012_00_pluvio_sum" +msgstr "2012 - Précipitations annuelles [mm] " + +#: lu_int_wms.996 +msgid "lux_2012_01_pluvio_sum" +msgstr "jan. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.999 +msgid "lux_2012_02_pluvio_sum" +msgstr "fev. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1002 +msgid "lux_2012_03_pluvio_sum" +msgstr "mars 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1005 +msgid "lux_2012_04_pluvio_sum" +msgstr "avr. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1008 +msgid "lux_2012_05_pluvio_sum" +msgstr "mai 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1011 +msgid "lux_2012_06_pluvio_sum" +msgstr "juin 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1014 +msgid "lux_2012_07_pluvio_sum" +msgstr "juill. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1017 +msgid "lux_2012_08_pluvio_sum" +msgstr "août 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1020 +msgid "lux_2012_09_pluvio_sum" +msgstr "sept. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1023 +msgid "lux_2012_10_pluvio_sum" +msgstr "oct. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1026 +msgid "lux_2012_11_pluvio_sum" +msgstr "nov. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1029 +msgid "lux_2012_12_pluvio_sum" +msgstr "déc. 2012 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1036 +msgid "lux_2012_01_pluvio_diff_mm" +msgstr "jan. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1039 +msgid "lux_2012_02_pluvio_diff_mm" +msgstr "fev. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1042 +msgid "lux_2012_03_pluvio_diff_mm" +msgstr "mars 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1045 +msgid "lux_2012_04_pluvio_diff_mm" +msgstr "avr. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1048 +msgid "lux_2012_05_pluvio_diff_mm" +msgstr "mai 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1051 +msgid "lux_2012_06_pluvio_diff_mm" +msgstr "juin 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1054 +msgid "lux_2012_07_pluvio_diff_mm" +msgstr "juill. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1057 +msgid "lux_2012_08_pluvio_diff_mm" +msgstr "août 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1060 +msgid "lux_2012_09_pluvio_diff_mm" +msgstr "sept. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1063 +msgid "lux_2012_10_pluvio_diff_mm" +msgstr "oct. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1066 +msgid "lux_2012_11_pluvio_diff_mm" +msgstr "nov. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1069 +msgid "lux_2012_12_pluvio_diff_mm" +msgstr "déc. 2012 - Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1076 +msgid "lux_2012_01_pluvio_diff_perc" +msgstr "jan. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1079 +msgid "lux_2012_02_pluvio_diff_perc" +msgstr "fev. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1082 +msgid "lux_2012_03_pluvio_diff_perc" +msgstr "mars 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1085 +msgid "lux_2012_04_pluvio_diff_perc" +msgstr "avr. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1088 +msgid "lux_2012_05_pluvio_diff_perc" +msgstr "mai 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1091 +msgid "lux_2012_06_pluvio_diff_perc" +msgstr "juin 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1094 +msgid "lux_2012_07_pluvio_diff_perc" +msgstr "juill. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1097 +msgid "lux_2012_08_pluvio_diff_perc" +msgstr "août 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1100 +msgid "lux_2012_09_pluvio_diff_perc" +msgstr "sept. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: theme.824 +msgid "ahc" +msgstr "Hydroklim. Atlas" + +#: lu_int_wms.1103 +msgid "lux_2012_10_pluvio_diff_perc" +msgstr "oct. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1106 +msgid "lux_2012_11_pluvio_diff_perc" +msgstr "nov. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1109 +msgid "lux_2012_12_pluvio_diff_perc" +msgstr "déc. 2012 - Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1115 +msgid "lux_2013_00_temp_minimum" +msgstr "2013 - Températures minimales moyennes annuelles [ºC] " + +#: lu_int_wms.1118 +msgid "lux_2013_01_temp_minimum" +msgstr "jan. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1121 +msgid "lux_2013_02_temp_minimum" +msgstr "fev. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1124 +msgid "lux_2013_03_temp_minimum" +msgstr "mars 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1127 +msgid "lux_2013_04_temp_minimum" +msgstr "avr. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1130 +msgid "lux_2013_05_temp_minimum" +msgstr "mai 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1133 +msgid "lux_2013_06_temp_minimum" +msgstr "juin 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1136 +msgid "lux_2013_07_temp_minimum" +msgstr "juill. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1139 +msgid "lux_2013_08_temp_minimum" +msgstr "août 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1142 +msgid "lux_2013_09_temp_minimum" +msgstr "sept. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1145 +msgid "lux_2013_10_temp_minimum" +msgstr "oct. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1148 +msgid "lux_2013_11_temp_minimum" +msgstr "nov. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1151 +msgid "lux_2013_12_temp_minimum" +msgstr "déc. 2013 - Températures minimales moyennes mensuelles [ºC] " + +#: lu_int_wms.1155 +msgid "lux_2013_00_temp_average" +msgstr "2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1158 +msgid "lux_2013_01_temp_average" +msgstr "jan. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1161 +msgid "lux_2013_02_temp_average" +msgstr "fev. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1164 +msgid "lux_2013_03_temp_average" +msgstr "mars 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1167 +msgid "lux_2013_04_temp_average" +msgstr "avr. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1170 +msgid "lux_2013_05_temp_average" +msgstr "mai 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1173 +msgid "lux_2013_06_temp_average" +msgstr "juin 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1176 +msgid "lux_2013_07_temp_average" +msgstr "juill. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1179 +msgid "lux_2013_08_temp_average" +msgstr "août 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1182 +msgid "lux_2013_09_temp_average" +msgstr "sept. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1185 +msgid "lux_2013_10_temp_average" +msgstr "oct. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1188 +msgid "lux_2013_11_temp_average" +msgstr "nov. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1191 +msgid "lux_2013_12_temp_average" +msgstr "déc. 2013 - Températures moyennes annuelles [ºC] " + +#: lu_int_wms.1195 +msgid "lux_2013_00_temp_maximum" +msgstr "2013 - Températures maximales moyennes annuelles [ºC] " + +#: lu_int_wms.1198 +msgid "lux_2013_01_temp_maximum" +msgstr "jan. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1201 +msgid "lux_2013_02_temp_maximum" +msgstr "fev. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1204 +msgid "lux_2013_03_temp_maximum" +msgstr "mars 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1207 +msgid "lux_2013_04_temp_maximum" +msgstr "avr. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1210 +msgid "lux_2013_05_temp_maximum" +msgstr "mai 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1213 +msgid "lux_2013_06_temp_maximum" +msgstr "juin 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1216 +msgid "lux_2013_07_temp_maximum" +msgstr "juill. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1219 +msgid "lux_2013_08_temp_maximum" +msgstr "août 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1222 +msgid "lux_2013_09_temp_maximum" +msgstr "sept. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1225 +msgid "lux_2013_10_temp_maximum" +msgstr "oct. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1228 +msgid "lux_2013_11_temp_maximum" +msgstr "nov. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1231 +msgid "lux_2013_12_temp_maximum" +msgstr "déc. 2013 - Températures maximales moyennes mensuelles [ºC] " + +#: lu_int_wms.1236 +msgid "lux_2013_00_pluvio_sum" +msgstr "2013 - Précipitations annuelles [mm] " + +#: lu_int_wms.1239 +msgid "lux_2013_01_pluvio_sum" +msgstr "jan. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1242 +msgid "lux_2013_02_pluvio_sum" +msgstr "fev. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1245 +msgid "lux_2013_03_pluvio_sum" +msgstr "mars 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1248 +msgid "lux_2013_04_pluvio_sum" +msgstr "avr. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1251 +msgid "lux_2013_05_pluvio_sum" +msgstr "mai 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1254 +msgid "lux_2013_06_pluvio_sum" +msgstr "juin 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1257 +msgid "lux_2013_07_pluvio_sum" +msgstr "juill. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1260 +msgid "lux_2013_08_pluvio_sum" +msgstr "août 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1263 +msgid "lux_2013_09_pluvio_sum" +msgstr "sept. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1266 +msgid "lux_2013_10_pluvio_sum" +msgstr "oct. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1269 +msgid "lux_2013_11_pluvio_sum" +msgstr "nov. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1272 +msgid "lux_2013_12_pluvio_sum" +msgstr "déc. 2013 - Précipitations mensuelles [mm] " + +#: lu_int_wms.1279 +msgid "lux_2013_01_pluvio_diff_mm" +msgstr "jan. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1282 +msgid "lux_2013_02_pluvio_diff_mm" +msgstr "fev. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1285 +msgid "lux_2013_03_pluvio_diff_mm" +msgstr "mars 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1288 +msgid "lux_2013_04_pluvio_diff_mm" +msgstr "avr. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1291 +msgid "lux_2013_05_pluvio_diff_mm" +msgstr "mai 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1294 +msgid "lux_2013_06_pluvio_diff_mm" +msgstr "juin 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1297 +msgid "lux_2013_07_pluvio_diff_mm" +msgstr "juill. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1300 +msgid "lux_2013_08_pluvio_diff_mm" +msgstr "août 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1303 +msgid "lux_2013_09_pluvio_diff_mm" +msgstr "sept. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1306 +msgid "lux_2013_10_pluvio_diff_mm" +msgstr "oct. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1309 +msgid "lux_2013_11_pluvio_diff_mm" +msgstr "nov. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1312 +msgid "lux_2013_12_pluvio_diff_mm" +msgstr "déc. 2013 - Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1319 +msgid "lux_2013_01_pluvio_diff_perc" +msgstr "jan. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1322 +msgid "lux_2013_02_pluvio_diff_perc" +msgstr "fev. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1325 +msgid "lux_2013_03_pluvio_diff_perc" +msgstr "mars 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1328 +msgid "lux_2013_04_pluvio_diff_perc" +msgstr "avr. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1331 +msgid "lux_2013_05_pluvio_diff_perc" +msgstr "mai 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1334 +msgid "lux_2013_06_pluvio_diff_perc" +msgstr "juin 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1337 +msgid "lux_2013_07_pluvio_diff_perc" +msgstr "juill. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1340 +msgid "lux_2013_08_pluvio_diff_perc" +msgstr "août 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1343 +msgid "lux_2013_09_pluvio_diff_perc" +msgstr "sept. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1346 +msgid "lux_2013_10_pluvio_diff_perc" +msgstr "oct. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1349 +msgid "lux_2013_11_pluvio_diff_perc" +msgstr "nov. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1352 +msgid "lux_2013_12_pluvio_diff_perc" +msgstr "déc. 2013 - Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1033 +msgid "lux_2012_00_pluvio_diff_mm" +msgstr "2012 - Précipitations annuelles écart de 2012 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1073 +msgid "lux_2012_00_pluvio_diff_perc" +msgstr "2012 - Précipitations annuelles rapport de 2012 à la normale climatique 1971-2000 [%] " + +#: lu_int_wms.1276 +msgid "lux_2013_00_pluvio_diff_mm" +msgstr "2013 - Précipitations annuelles écart de 2013 à la normale climatique 1971-2000 [mm] " + +#: lu_int_wms.1316 +msgid "lux_2013_00_pluvio_diff_perc" +msgstr "2013 - Précipitations annuelles rapport de 2013 à la normale climatique 1971-2000 [%] " + +#: group.826 +msgid "30 years reference period 1971-2000" +msgstr "période de référence de 30 années 1971-2000" + +#: group.827 group.990 group.1233 +msgid "Precipitation" +msgstr "Précipitation" + +#: group.828 +msgid "lux_norm1971_2000_pluvio_sum" +msgstr "Précipitations normale climatique 1971-2000 [mm]" + +#: group.868 +msgid "2012" +msgstr "2012" + +#: group.869 group.1112 +msgid "Temperature" +msgstr "Température" + +#: group.870 +msgid "lux_2012_temp_minimum" +msgstr "Températures minimales moyennes [ºC]" + +#: group.910 +msgid "lux_2012_temp_average" +msgstr "Températures moyennes [ºC]" + +#: group.950 +msgid "lux_2012_temp_maximum" +msgstr "Températures maximales moyennes [ºC]" + +#: group.991 +msgid "lux_2012_pluvio_sum" +msgstr "Précipitations [mm]" + +#: group.1031 +msgid "lux_2012_pluvio_diff_mm" +msgstr "Précipitations mensuelles écart de 2012 à la normale climatique 1971-2000 [mm]" + +#: group.1071 +msgid "lux_2012_pluvio_diff_perc" +msgstr "Précipitations mensuelles rapport de 2012 à la normale climatique 1971-2000 [%]" + +#: group.1111 +msgid "2013" +msgstr "2013" + +#: group.1113 +msgid "lux_2013_temp_minimum" +msgstr "Températures minimales moyennes [ºC]" + +#: group.1153 +msgid "lux_2013_temp_average" +msgstr "Températures moyennes [ºC]" + +#: group.1193 +msgid "lux_2013_temp_maximum" +msgstr "Températures maximales moyennes [ºC]" + +#: group.1234 +msgid "lux_2013_pluvio_sum" +msgstr "Précipitations [mm]" + +#: group.1274 +msgid "lux_2013_pluvio_diff_mm" +msgstr "Précipitations mensuelles écart de 2013 à la normale climatique 1971-2000 [mm]" + +#: group.1314 +msgid "lux_2013_pluvio_diff_perc" +msgstr "Précipitations mensuelles rapport de 2013 à la normale climatique 1971-2000 [%]" + +#: group.1355 +msgid "aev_qualite_air" +msgstr "Loftqualitéit" + +#: group.1356 +msgid "aev_eoliennes" +msgstr "Wandmillen (Internal)" + +#: lu_int_wms.1357 +msgid "aev_reseau_telemetrique" +msgstr "Telemetreschen Reseau" + +#: lu_int_wms.1358 +msgid "aev_poussieres_fines" +msgstr "Feinstaub (Referenzmethod mat Filter)" + +#: lu_int_wms.1359 +msgid "aev_reseau_bergerhoff" +msgstr "Stëbsnidderschlag (Bergerhoff Reseau)" + +#: lu_int_wms.1360 +msgid "aev_emplacements_eoliennes" +msgstr "Wandmillen (Internal)" + +#: group.1361 +msgid "aev_casipo_group" +msgstr "CASIPO (Internal)" + +#: lu_int_wms.1362 +msgid "aev_casipo" +msgstr "Cadastre des sites potentiellement pollués (Internal) " + +#: lu_int_wms.1363 +msgid "reagis" +msgstr "" + +#: lu_int_wms.1364 +msgid "act_frontieres_isodistances" +msgstr "Distanzen vun der Landesgrenz" + +#: lu_ext_wms.1365 +msgid "sentiers_thematiques" +msgstr "Thematesch Weeër" + +#: lu_int_wms.1366 +msgid "pag_infos_supp" +msgstr "Zousätzlech Informatiounen" + +#: lu_int_wms.1367 +msgid "anf_biotopes_points" +msgstr "Punktelementer" + +#: lu_int_wms.1368 +msgid "anf_biotopes_vergers" +msgstr "Bongerten" + +#: lu_int_wms.1369 +msgid "anf_biotopes_surfaces" +msgstr "Flächenelementer ouni Bongerten" + +#: lu_int_wms.1370 +msgid "anf_biotopes_tampons" +msgstr "Pufferzone" + +#: l_wmts.1371 +msgid "ortho_2017" +msgstr "Orthophoto 2017" + +#: l_wmts.1372 +msgid "ortho_2017_irc" +msgstr "Orthophoto 2017 infrarout" + +#: lu_int_wms.1373 +msgid "pag_infos_supp_staging" +msgstr "" + +#: lu_ext_wms.1374 +msgid "cdt_lignes_tram" +msgstr "Tramlinnen" + +#: lu_int_wms.1375 +msgid "makerspaces" +msgstr "" + +#: lu_int_wms.1376 +msgid "parcels_daily" +msgstr "Kadasterparzellen" + +#: lu_int_wms.216 +msgid "decoupage_communes" +msgstr "Gemengecode" + +#: lu_int_wms.1377 +msgid "lidar_mns" +msgstr "Digitalen Oberflächemodell vun der Regioun Nordstad" + +#: lu_int_wms.1378 +msgid "lidar_mnt" +msgstr "Digitalen Héichtemodell vun der Regioun Nordstad " + +#: lu_int_wms.1379 +msgid "lidar_ortho" +msgstr "Héichopléisend Loftbild vun der Regioun Nordstad" + +#: group.1380 +msgid "lidar_prototype" +msgstr "Resultater vun dem LIDAR Protoyp vum Kadaster" + +#: lu_int_wms.1383 +msgid "aev_zones_calmes_rurales" +msgstr "Potentiell roueg Gebidder am ländlechen Raum" + +#: lu_int_wms.1384 +msgid "aev_zones_calmes_urbaines" +msgstr "Potentiell roueg urban Gebidder" + +#: lu_int_wms.1385 +msgid "aev_oases_urbaines" +msgstr "Potentiell roueg urban Oasen" + +#: group.1382 +msgid "aev_zones_calmes" +msgstr "Roueg Gebidder" + +#: lu_int_wms.1386 +msgid "mobiliteit_livebikes" +msgstr "Vëlolocatiouns-Systemer (Live)" + +#: group.1390 +msgid "secours_siden" +msgstr "SIDEN" + +#: group.1392 +msgid "secours_sebes" +msgstr "SEBES" + +#: group.1393 +msgid "secours_pch" +msgstr "PCH" + +#: group.1394 +msgid "siden_canalisation" +msgstr "Canalisation" + +#: lu_int_wms.1395 +msgid "siden_conduites_de_refoulement" +msgstr "Conduites de refoulement" + +#: lu_int_wms.1397 +msgid "siden_ouvrages" +msgstr "Ouvrages" + +#: lu_int_wms.1399 +msgid "siden_eaux_pluviales" +msgstr "Eaux pluviales" + +#: group.1401 +msgid "sebes_reseau_adduction" +msgstr "Réseau d'adduction" + +#: group.1402 +msgid "sebes_lac_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1403 +msgid "sebes_bassins_versants" +msgstr "Bassins versants" + +#: lu_int_wms.1405 +msgid "sebes_reseau_adduction_sebes" +msgstr "Réseau d'adduction SEBES" + +#: lu_int_wms.1406 +msgid "sebes_volume_structure_lac" +msgstr "Volume et structure du lac" + +#: lu_int_wms.1407 +msgid "sebes_bassinversant_sure_lux_bel" +msgstr "Bassin versant luxembourgeois et belge pour la Sûre" + +#: lu_int_wms.1408 +msgid "sebes_bassinversant_sure_bel" +msgstr "Bassin versant belge" + +#: lu_int_wms.1409 +msgid "sebes_bassinversant_sous_bassins" +msgstr "Sous-bassins versants" + +#: lu_int_wms.1410 +msgid "sebes_zoneprotection_haute_sure" +msgstr "Lac de la Haute-Sûre" + +#: group.1411 +msgid "pch_infrastructure" +msgstr "Infrastructure" + +#: group.1412 +msgid "pch_origine_pollution" +msgstr "Origine de la pollution" + +#: lu_int_wms.1413 +msgid "pch_reseau_routier_avec_pk" +msgstr "Réseau routier " + +#: lu_int_wms.1414 +msgid "pch_chemins_acces" +msgstr "Chemins d'accès" + +#: lu_int_wms.1415 +msgid "pch_ancrage_barrage_flottant" +msgstr "Points d'ancrage pour barrage flottant" + +#: lu_int_wms.1416 +msgid "pch_zones_acces" +msgstr "Zones d'accès" + +#: lu_int_wms.1417 +msgid "pch_ouvrages_art_eau" +msgstr "Ouvrages d'art sur cours d'eau" + +#: lu_int_wms.1419 +msgid "pch_camion_pompe" +msgstr "Camion pompe" + +#: lu_int_wms.1420 +msgid "pch_stockage_materiaux_depolluants" +msgstr "Stockage de matériaux dépolluants" + +#: lu_int_wms.1421 +msgid "pch_place_potentielle_retenue_antipollution" +msgstr "Place potentielle de retenue antipollution" + +#: lu_int_wms.1422 +msgid "pch_stations_services" +msgstr "Stations-services" + +#: group.1423 +msgid "secours_basisdaten" +msgstr "" + +#: lu_int_wms.181 +msgid "roads" +msgstr "Stroossennnetz" + +#: lu_int_wms.351 +msgid "roads_labels" +msgstr "Stroossennimm" + +#: lu_ext_wms.1424 +msgid "logt_baul_feedback_2013" +msgstr "Baulücken-Feedback 2013" + +#: lu_int_wms.1426 +msgid "aev_reseau_biosurveillance" +msgstr "Biomonitoring Miessnetz (Internal)" + +#: lu_int_wms.1427 +msgid "aev_mesures_tubes_passifs" +msgstr "Passivsammler-Miessnetz (Internal)" + +#: lu_int_wms.1425 +msgid "air_quality_pm10" +msgstr "Geostatistesch Interpolatioun PM10" + +#: lu_int_wms.1429 +msgid "air_quality_no2" +msgstr "Geostatistesch Interpolatioun NO2" + +#: lu_int_wms.1430 +msgid "air_quality_o3" +msgstr "Geostatistesch Interpolatioun O3" + +#: group.737 +msgid "Groupes canins" +msgstr "" + +#: lu_ext_wms.1431 +msgid "cgdis_groupe_cynotechnique" +msgstr "" + +#: lu_int_wms.1432 +msgid "air_quality_global" +msgstr "" + +#: lu_int_wms.1434 +msgid "at_pst_droit_preemption" +msgstr "Virkafsrecht" + +#: lu_int_wms.1435 +msgid "at_pszae_droit_preemption" +msgstr "Virkafsrecht" + +#: lu_int_wms.1436 +msgid "at_psl_droit_preemption" +msgstr "Virkafsrecht" + +#: lu_int_wms.1438 +msgid "Habitations" +msgstr "" + +#: group.1440 +msgid "APRG Zones de protection du Lac de la Haute Sûre" +msgstr "" + +#: lu_int_wms.1441 +msgid "Zones urbanisées" +msgstr "" + +#: lu_int_wms.1442 +msgid "Bâtiments industriels / commerciaux" +msgstr "" + +#: group.1444 +msgid "Altlasten" +msgstr "" + +#: lu_int_wms.1446 +msgid "Sites potentiellement contaminés" +msgstr "" + +#: lu_int_wms.1447 +msgid "Axes routiers" +msgstr "" + +#: lu_int_wms.1448 +msgid "Zones de protection d'eaux de surfaces" +msgstr "" + +#: lu_int_wms.1449 +msgid "Vulnérabilité selon méthode SIRIS" +msgstr "" + +#: lu_int_wms.1451 +msgid "Sites de baignade" +msgstr "" + +#: lu_int_wms.1452 +msgid "Etang à poissons" +msgstr "" + +#: lu_int_wms.1453 +msgid "Chemin risque de contamination des eaux par chiens promenés" +msgstr "" + +#: lu_int_wms.1454 +msgid "Pêche" +msgstr "" + +#: lu_int_wms.1455 +msgid "Trafic bateaux " +msgstr "" + +#: lu_int_wms.1445 +msgid "Sites contaminés" +msgstr "" + +#: group.1456 +msgid "Autres utilisations" +msgstr "" + +#: l_wmts.1457 lu_int_wms.1458 lu_ext_wms.1459 +msgid "OSM_MQ" +msgstr "" + +#: lu_int_wms.1463 +msgid "lidar_mnh" +msgstr "Digitalen Objekthéischtenmodell " + +#: lu_int_wms.1462 +msgid "wg_exposition_map" +msgstr "Expositioun" + +#: lu_int_wms.1461 +msgid "wg_hangneigung_map" +msgstr "Hangneigung" + +#: lu_int_wms.1460 +msgid "wg_relief_map" +msgstr "Relief" + +#: lu_int_wms.1464 +msgid "eau_prgd_zones_protection_lac" +msgstr "Projet vum groussherzogleche Reglement fir d'Ausweisung vun de Schutzzonen ronderëm de Stauséi Uewersauer" + +#: lu_int_wms.1465 +msgid "aev_medium_combustion_plants" +msgstr "" + +#: group.1466 +msgid "aev_facilities_registers" +msgstr "" + +#: group.1467 +msgid "radon" +msgstr "" + +#: lu_int_wms.1468 +msgid "carte_radon_communes" +msgstr "Radon-Konzentratiounen pro Gemeng" + +#: lu_int_wms.1469 +msgid "eau_strahlwirkungskonzept" +msgstr "Strahlwirkungskonzept" + +#: lu_int_wms.1470 +msgid "eau_fliessgewaessertypen_2015" +msgstr "Fléissgewässertypen 2015 (LAWA)" + +#: lu_int_wms.1471 +msgid "eau_detailliertes_massnahmenprogramm_sww" +msgstr "Detailléierte Moossnameprogramm SWW" + +#: group.1472 +msgid "aev_modelisation" +msgstr "Modeléierung" + +#: group.1473 +msgid "aev_air_mesures" +msgstr "Miessréseaux" + +#: lu_int_wms.1474 +msgid "cantons_voodoo_test" +msgstr "" + +#: lu_int_wms.1475 +msgid "env_bruit_axes_routiers_hotspots" +msgstr "Prioritär Hotspots - Strossenkaméidi 2011" + +#: lu_int_wms.1476 +msgid "env_bruit_axes_ferroviaires_hotspots" +msgstr "Prioritär Hotspots - Schinnenkaméidi 2011" + +#: lu_int_wms.1477 +msgid "aev_pacte_climat_2018" +msgstr "Klimapakt 2018 - NO2 (Internal)" + +#: group.1478 +msgid "aev_air_campagnes_mesure" +msgstr "NO2 Hotspots (Internal)" + +#: lu_int_wms.1479 +msgid "aev_casipo_attributs_internes" +msgstr "" + +#: lu_int_wms.1480 +msgid "air_quality_pm2_5" +msgstr "Geostatistesch Interpolatioun PM2.5" + +#: group.1481 +msgid "asta_projet_rgd" +msgstr "Projet vum groussherzogleche Reglement fir d'Ausweisung vun de Schutzzonen ronderëm de Stauséi Uewersauer" + +#: lu_int_wms.1482 +msgid "asta_contrainte_stockage_engrais" +msgstr "Einschränkungen für die Lagerung organischer Dünger und Silofeldmieten (Hangneigung > 5%)" + +#: lu_int_wms.1483 +msgid "asta_contrainte_utilisation_engrais" +msgstr "Einschränkungen für die Ausbringung organischer Flüssigdünger und Maßnahmen gegen die Erosion (Hangneigung > 10%)" + +#: lu_int_wms.1484 +msgid "eau_asta_prgd_zones_protection_lac" +msgstr "Schutzzonen" + +#: lu_int_wms.1485 +msgid "env_bruit_axes_routiers_agglomeration" +msgstr "Prioritär Hotspots - Strossenkaméidi 2011 Agglomération" + +#: lu_int_wms.1486 +msgid "env_bruit_routes_lden_2016" +msgstr "Haaptverkéiersstroossen 2016 (Lden) (Internal)" + +#: lu_int_wms.1487 +msgid "env_bruit_routes_lngt_2016" +msgstr "Haaptverkéiersstroossen 2016 (Lngt) (Internal)" + +#: lu_int_wms.1488 +msgid "env_bruit_ferroviaire_lden_2016" +msgstr "Haapteisenbunnsstrecken 2016 (Lden) (Internal)" + +#: lu_int_wms.1489 +msgid "env_bruit_ferroviaire_lngt_2016" +msgstr "Haapteisenbunnsstrecken 2016 (Lngt) (Internal)" + +#: lu_int_wms.1490 +msgid "env_bruit_air_lden_2016" +msgstr "Groussflughafen 2016 (Lden) (Internal)" + +#: lu_int_wms.1491 +msgid "env_bruit_air_lngt_2016" +msgstr "Groussflughafen 2016 (Lngt) (Internal)" + +#: lu_int_wms.1492 +msgid "at_pds_parcels" +msgstr "Attestatioun SPT" + +#: group.1493 +msgid "at_pds_parcels_group" +msgstr "SPT Zousätzlech Dokumenter" + +#: lu_int_wms.1494 +msgid "gaz_naturel" +msgstr "Disponibilitéit vun Erdgas" + +#: group.1495 +msgid "fourniture_energie" +msgstr "Energieversuergung" + +#: lu_int_wms.1496 +msgid "anf_centre_ramassage" +msgstr "Centre fir doudeg wëll Déieren an Opbroch ofzeginn" + +#: l_wmts.1497 +msgid "env_bruit2016_axes_routiers_lden" +msgstr "Haaptverkéiersstroossen 2016 (Lden)" + +#: l_wmts.1498 +msgid "env_bruit2016_axes_ferroviaires_lden" +msgstr "Haapteisenbunnsstrecken 2016 (Lden)" + +#: l_wmts.1499 +msgid "env_bruit2016_axes_aeroport_lngt" +msgstr "Groussflughafen 2016 (Lngt)" + +#: l_wmts.1500 +msgid "env_bruit2016_axes_routiers_lngt" +msgstr "Haaptverkéiersstroossen 2016 (Lngt)" + +#: l_wmts.1501 +msgid "env_bruit2016_axes_aeroport_lden" +msgstr "Groussflughafen 2016 (Lden)" + +#: l_wmts.1502 +msgid "env_bruit2016_axes_ferroviaires_lngt" +msgstr "Haapteisenbunnsstrecken 2016 (Lngt)" + +#: lu_int_wms.1503 +msgid "env_bruit_axes_ferroviaires_hotspots_2016" +msgstr "Prioritär Hotspots - Schinnenkaméidi 2016 (Internal)" + +#: lu_int_wms.1504 +msgid "env_bruit_axes_routiers_hotspots_2016" +msgstr "Prioritär Hotspots - Strossenkaméidi 2016 (Internal)" + +#: lu_int_wms.1505 +msgid "env_bruit_axes_routiers_agglomeration_2016" +msgstr "Prioritär Hotspots - Strossenkaméidi 2016 Agglomération (Internal)" + +#: lu_int_wms.1506 +msgid "aev_dechets_composting" +msgstr "" + +#: lu_int_wms.1507 +msgid "aev_dechets_inert_waste" +msgstr "" + +#: lu_int_wms.1508 +msgid "aev_dechets_recycling" +msgstr "" + +#: lu_int_wms.1509 +msgid "aev_dechets_biogas" +msgstr "" + +#: group.1510 +msgid "aev_dechets" +msgstr "" + +#: lu_int_wms.1511 +msgid "asta_prairies_permanentes" +msgstr "Dauergrénglandstatut" + +#: lu_int_wms.1512 +msgid "aev_no2_grobscreening_2016" +msgstr "NO2 Grobscreening 2016" + +#: lu_ext_wms.1513 +msgid "tourisme_neue_nationale_wanderwege" +msgstr "Neue Nationale Wanderwege" + +#: lu_int_wms.1514 +msgid "anf_forets_publiques_fsc_pefc" +msgstr "Ëffentlech zertifizéiert Bëscher FSC an/oder PEFC" + +#: lu_ext_wms.1515 +msgid "tourisme_ortal_belaege" +msgstr "Beläge " + +#: lu_ext_wms.1516 +msgid "tourisme_ortal_escapardenne" +msgstr "Escapardenne" + +#: lu_ext_wms.1517 +msgid "tourisme_ortal_naturwanderpark_delux" +msgstr "NaturWanderPark delux" + +#: lu_ext_wms.1518 +msgid "tourisme_ortal_qualitaetstouren" +msgstr "Qualitätstouren" + +#: lu_ext_wms.1519 +msgid "tourisme_ortal_lokale_wanderwege" +msgstr "Lokale Wanderwege" + +#: lu_ext_wms.1520 +msgid "tourisme_ortal_grosse_lokale_wanderwege" +msgstr "Große lokale Wanderwege" + +#: lu_ext_wms.1521 +msgid "tourisme_ortal_kleine_lokale_wanderwege" +msgstr "Kleine lokale Wanderwege POI" + +#: lu_ext_wms.1522 +msgid "tourisme_ortal_autopedestres" +msgstr "Auto-Pédestre Wanderwege" + +#: lu_ext_wms.1523 +msgid "tourisme_ortal_cfl" +msgstr "CFL-Bahnwanderwege" + +#: lu_ext_wms.1524 +msgid "tourisme_ortal_wanderwege_thema" +msgstr "Wanderwege mit Thema " + +#: lu_ext_wms.1525 +msgid "tourisme_ortal_themenwege" +msgstr "Themenwege" + +#: group.1526 +msgid "tourisme_wanderwege_ortal" +msgstr "Qualitätswanderregion Éislek" + +#: l_wmts.1527 +msgid "ortho_2018" +msgstr "Orthophoto 2018" + +#: lu_int_wms.1529 +msgid "ortho2018_IR" +msgstr "Orthophoto 2018 infrarout" + +#: theme.1528 +msgid "atlas_demographique_old" +msgstr "" + +#: theme.1530 +msgid "atlas_demographique" +msgstr "" + +#: lu_int_wms.1531 +msgid "ad_fusions_communes" +msgstr "Iwwerbléck vun de Gemengefusiounen säit 1920" + +#: lu_int_wms.1532 +msgid "ad_communes_cantons" +msgstr "Die 12 Kantone und 102 Gemeinden am 1. Januar 2018" + +#: lu_int_wms.1533 +msgid "ad_evol_pop_1981_2018" +msgstr "Bevëlkerungsentwécklung" + +#: lu_int_wms.1534 +msgid "ad_part_francais_commune" +msgstr "Fransousen" + +#: lu_int_wms.1535 +msgid "ad_densite_pop_comm" +msgstr "Bevëlkerungsdicht pro Gemeng um 1. Januar 2018" + +#: lu_int_wms.1536 +msgid "ad_part_portugais_commune" +msgstr "Portugisen" + +#: lu_int_wms.1537 +msgid "ad_part_africains_commune" +msgstr "Afrikaner" + +#: lu_int_wms.1538 +msgid "ad_part_allemands_commune" +msgstr "Däitscher" + +#: lu_int_wms.1539 +msgid "ad_part_americains_commune" +msgstr "Amerikaner" + +#: lu_int_wms.1540 +msgid "ad_part_asiates_commune" +msgstr "Asiaten an Ozanier" + +#: lu_int_wms.1541 +msgid "ad_part_belges_commune" +msgstr "Belsch" + +#: lu_int_wms.1542 +msgid "ad_part_nonUE28_commune" +msgstr "Europäer (net EU-28)" + +#: lu_int_wms.1543 +msgid "ad_part_UE28_commune" +msgstr "Europäer (EU-28)" + +#: lu_int_wms.1544 +msgid "ad_part_italiens_commune" +msgstr "Italiener" + +#: group.1545 +msgid "ad_part_etrangers_comm" +msgstr "Undeel vun Auslänner an der Bevëlkerung" + +#: group.1546 +msgid "ad_org_territoriale" +msgstr "Territorial Organisatioun" + +#: group.1547 +msgid "ad_org_terr_lux" +msgstr "Territorial Organisatioun vu Lëtzebuerg" + +#: group.1548 +msgid "ad_etat_population" +msgstr "Stand vun der Bevëlkerung" + +#: group.1549 +msgid "ad_population_stock_evolution_densite" +msgstr "Bestand, Entwécklung a Dicht vun der Bevëlkerung" + +#: group.1550 +msgid "ad_evolution_pop_comm" +msgstr "Entwécklung vun der Bevëlkerung pro Gemeng tëschent 1981 an 2018" + +#: group.1551 +msgid "ad_densite_pop" +msgstr "Dicht vun der Bevëlkerung pro Gemeng um 1. Januar 2018" + +#: group.1552 +msgid "ad_rapport_hommes_femmes" +msgstr "Undeel vu Fraen" + +#: group.1553 +msgid "ad_prop_femmes_comm_2018_group" +msgstr "" + +#: group.1554 +msgid "ad_etrangers_lieu_naissance" +msgstr "Auslännesch Nationalitéit a Gebuertsuert" + +#: group.1555 +msgid "ad_nationalites_commune_2018" +msgstr "Heefegst Nationalitéiten pro Gemeng um 1. Januar 2018" + +#: group.1556 +msgid "ad_structure_age" +msgstr "Altersstruktur" + +#: group.1557 +msgid "ad_age_moyen" +msgstr "Duerchschnëttsalter pro Geschlecht a gesamt, pro Gemeng um 1. Januar 2018" + +#: group.1558 +msgid "ad_proportion_classes_age" +msgstr "Undeel vun de verschiddenen Altersgruppen pro Gemeng um 1. Januar 2018" + +#: group.1559 +msgid "ad_proportion_jeunes" +msgstr "Undeel vun de jonke Persounen (-18) no verschiddenen Altergruppen pro Gemeng um 1. Januar 2018" + +#: group.1560 +msgid "ad_proportion_ages" +msgstr "Undeel vun den alen Persounen (+65) no verschiddenen Altersgruppen pro Gemeng um 1. Januar 2018" + +#: lu_int_wms.1561 +msgid "ad_age_moyen_femmes" +msgstr "Duerchschnëttsalter vun de Fraen" + +#: lu_int_wms.1562 +msgid "ad_age_moyen_hommes" +msgstr "Duerchschnëttsalter vun de Männer" + +#: lu_int_wms.1563 +msgid "ad_age_moyen_2" +msgstr "Duerchschnëttsalter (gesamt)" + +#: lu_int_wms.1564 +msgid "ad_moins20" +msgstr "Undeel vun de Persounen ënner 20 Joer" + +#: lu_int_wms.1565 +msgid "ad_20_64" +msgstr "Undeel vun den 20-64 Järegen" + +#: lu_int_wms.1566 +msgid "ad_65plus" +msgstr "Undeel vun de Persounen ab 65 Joer" + +#: lu_int_wms.1567 +msgid "ad_moins3" +msgstr "Undeel vun de Persounen ënner 3 Joer" + +#: lu_int_wms.1568 +msgid "ad_3_5" +msgstr "Undeel vun den 3-5 Järegen" + +#: lu_int_wms.1569 +msgid "ad_6_10" +msgstr "Undeel vun den 6-10 Järegen" + +#: lu_int_wms.1570 +msgid "ad_11_17" +msgstr "Undeel vun den 11-17 Järegen" + +#: lu_int_wms.1571 +msgid "ad_65_74" +msgstr "Undeel vun den 65-74 Järegen" + +#: lu_int_wms.1572 +msgid "ad_75_89" +msgstr "Undeel vun den 75-89 Järegen" + +#: lu_int_wms.1573 +msgid "ad_90plus" +msgstr "Undeel vun de Persounen ab 90 Joer" + +#: lu_int_wms.1574 +msgid "ad_poles_urbains" +msgstr "Déi dräi urban Zentren zu Lëtzebuerg" + +#: group.1575 +msgid "ad_population_commune_canton" +msgstr "Bevëlkerung pro Kanton an Gemeng um 1. Januar 2018" + +#: lu_int_wms.1576 +msgid "ad_population_canton" +msgstr "Bevëlkerung pro Kanton" + +#: lu_int_wms.1577 +msgid "ad_population_commune" +msgstr "Bevëlkerung pro Gemeng" + +#: lu_int_wms.1578 +msgid "ad_prop_femmes_comm_2018" +msgstr "Undeel vu Fraen pro Gemeng um 1. Januar 2018" + +#: lu_int_wms.1579 +msgid "ad_structure_pop_comm" +msgstr "Altersstruktur pro Gemeng um 1. Januar 2018" + +#: group.1580 +msgid "ad_lieu_naissance_lux_etr" +msgstr "Gebuertsuert (Lëtzebuerg/Ausland)" + +#: lu_int_wms.1581 +msgid "ad_lieu_naissance_commune" +msgstr "Gebuertsuert pro Gemeng um 1. Januar 2018" + +#: lu_int_wms.1582 +msgid "ad_rapport_dependance_personnes_agees" +msgstr "Ofhängegkeetsrapport vun den ale Persounen" + +#: lu_int_wms.1583 +msgid "ad_rapport_dependance_jeunes" +msgstr "Ofhängegkeetsrapport vun de jonken Persounen" + +#: lu_int_wms.1584 +msgid "ad_rapport_dependance_total" +msgstr "Ofhängegkeetsrapport (gesamt)" + +#: lu_int_wms.1585 +msgid "ad_celibataires" +msgstr "Leedeg Persounen" + +#: lu_int_wms.1586 +msgid "ad_maries_pacses" +msgstr "Bestuet/gepacst Persounen" + +#: lu_int_wms.1587 +msgid "ad_divorces_separes" +msgstr "Gescheed/getrennt Persounen" + +#: lu_int_wms.1588 +msgid "ad_veufs_veuves" +msgstr "Wittmann/Wittfra" + +#: group.1589 +msgid "ad_rapport_dependance" +msgstr "Ofhängegkeetsrapport pro Gemeng um 1. Januar 2018" + +#: group.1590 +msgid "ad_situation_matrimoniale" +msgstr "Familljestand vun de Volljähregen (18+)" + +#: group.1591 +msgid "ad_mouvement_population" +msgstr "Bevëlkerungsbeweegung" + +#: group.1592 +msgid "ad_naissances" +msgstr "Gebuerten" + +#: group.1593 +msgid "ad_deces" +msgstr "Stierffäll" + +#: group.1594 +msgid "ad_solde_naturel" +msgstr "Natierlech Balance" + +#: group.1595 +msgid "ad_migrations" +msgstr "Migratiounen" + +#: group.1596 +msgid "ad_mariages" +msgstr "Bestietnisser" + +#: lu_int_wms.1597 +msgid "ad_naissances_taux_natalite" +msgstr "Gebuerten a Gebuerterat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1598 +msgid "ad_naissances_mariage" +msgstr "Undeel vun de Gebuerten am Bestietnis pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1599 +msgid "ad_naissances_age_maternite" +msgstr "Duerchschnëttsalter bei der Gebuert pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1600 +msgid "ad_deces_taux_mortalite" +msgstr "Stierffäll a Stierflechkeetsrat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1601 +msgid "ad_solde_naturel_nombre_absolu" +msgstr "Natierlech Balance a natierlech Balance-Rat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: group.1602 +msgid "ad_langues_lux" +msgstr "Sproochen zu Lëtzebuerg" + +#: lu_int_wms.1603 +msgid "ad_migrations_solde_interne" +msgstr "Interne Migratiounssaldo an intern Migratiounssaldo-Rat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1604 +msgid "ad_migrations_solde_international" +msgstr "Internationale Migratiounssaldo an international Migratiounssaldo-Rat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1605 +msgid "ad_migrations_solde_total" +msgstr "Gesamte Migratiounssaldo a gesamt Migratiounssaldo-Rat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1606 +msgid "ad_mariages_taux_nuptialite" +msgstr "Bestietnisser a Bestietnesrat pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1607 +msgid "ad_mariages_age_femme" +msgstr "Duerchschnëttsalter vun de Fraen beim Bestietnis pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1608 +msgid "ad_mariage_age_hommes" +msgstr "Duerchschnëttsalter vun de Männer beim Bestietnis pro Gemeng (Duerchschnëtt 2013-2017)" + +#: lu_int_wms.1609 +msgid "ad_langues_luxembourgeois" +msgstr "Lëtzebuergesch" + +#: lu_int_wms.1610 +msgid "ad_langues_francais" +msgstr "Franséisch" + +#: lu_int_wms.1611 +msgid "ad_langues_allemand" +msgstr "Däitsch" + +#: lu_int_wms.1612 +msgid "ad_langues_portugais" +msgstr "Portugisesch" + +#: lu_int_wms.1613 +msgid "ad_langues_italien" +msgstr "Italienesch" + +#: lu_int_wms.1614 +msgid "ad_langues_anglais" +msgstr "Englesch" + +#: lu_int_wms.1615 +msgid "ad_langues_autre" +msgstr "Aner Sprooch" + +#: group.1616 +msgid "ad_langue_principale_2018" +msgstr "Haaptsprooch" + +#: lu_ext_wms.1617 +msgid "levee_sans_operation" +msgstr "" + +#: group.1620 +msgid "points_sauvetage_group" +msgstr "Rettungspunkten" + +#: lu_int_wms.1621 +msgid "points_sauvetage_vdl" +msgstr "Rettungspunkten - Stad Lëtzebuerg" + +#: group.1622 +msgid "ortal_kriterienauswertung" +msgstr "Kriterienauswertung" + +#: group.1623 +msgid "ortal_wanderwege" +msgstr "Wanderwege" + +#: lu_ext_wms.1624 +msgid "tourisme_ortal_5_strasse" +msgstr "Kriterium 5% auf Straße" + +#: lu_ext_wms.1625 +msgid "tourisme_ortal_10_nebenstrasse" +msgstr "Kriterium 10% neben Straße" + +#: lu_ext_wms.1626 +msgid "tourisme_ortal_75_abdeckung" +msgstr "Kriterium 75% Abdeckung" + +#: lu_ext_wms.1627 +msgid "tourisme_ortal_schlecht_begehbar" +msgstr "Kriterium schlecht begehbar" + +#: lu_ext_wms.1628 +msgid "tourisme_ortal_ausgangspunkte" +msgstr "Kriterium Ausgangspunkte" + +#: lu_ext_wms.1629 +msgid "tourisme_ortal_knotenpunkte" +msgstr "Kriterium Knotenpunkte" + +#: lu_ext_wms.1630 +msgid "tourisme_ortal_wegweiserstandorte" +msgstr "Kriterium Wegweiserstandorte" + +#: lu_ext_wms.1631 +msgid "tourisme_ortal_verpflegung" +msgstr "Kriterium Verpflegung" + +#: lu_ext_wms.1632 +msgid "tourisme_ortal_gastgeber" +msgstr "Kriterium Gastgeber" + +#: lu_ext_wms.1633 +msgid "tourisme_ortal_touristinfo" +msgstr "Kriterium Tourist-Informationen" + +#: lu_ext_wms.1634 +msgid "tourisme_ortal_wanderziele" +msgstr "Wanderziele & Sehnsuchtsorte" + +#: lu_ext_wms.1635 +msgid "tourisme_ortal_mobilitaet" +msgstr "Kriterium Mobilität" + +#: lu_ext_wms.1636 +msgid "tourisme_ortal_servicestellen" +msgstr "Kriterium Servicestellen" diff --git a/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-server.po b/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-server.po similarity index 69% rename from geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-server.po rename to geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-server.po index 8da205ac5..f6e8788a7 100644 --- a/geoportailv3/locale/lb/LC_MESSAGES/geoportailv3-server.po +++ b/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-server.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: portail\n" -"PO-Revision-Date: 2017-01-30 16:15+0000\n" +"PO-Revision-Date: 2019-01-07 08:28+0000\n" "Last-Translator: Jeff Konnen \n" "Language-Team: Luxembourgish (http://www.transifex.com/geoportail/geoportailv3-lu/language/lb/)\n" "MIME-Version: 1.0\n" @@ -18,7 +18,7 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ./geoportailv3/views/pag.py:120 +#: ./geoportailv3/views/pag.py:124 #, python-format msgid "PAG webservice response ${email}" msgstr "Votre rapport est en train d'être généré.\n
Un email vous sera envoyé à l'adresse ${email} dès qu'il sera disponible" @@ -32,106 +32,123 @@ msgstr "Bonjour!\n
\nil y a eu un souci avec la génération de votre rapport msgid "PAG Mail the report link ${link}" msgstr "Bonjour!\n
\n
\nVotre rapport PAG est finalisé.\n
\n
\nCliquez-ici pour télécharger le résultat.\n
\n
\nMeilleures salutations\n
\nL'équipe du géoportail et du Ministère de l'Intérieur" -#: ./geoportailv3/views/luxprintproxy.py:147 +#: ./geoportailv3/views/luxprintproxy.py:215 msgid "Access constraints" msgstr "Zougangslimitatiounen" #: ./geoportailv3/models.py:27 -msgid "Allowed measurement for a user" -msgstr "Allowed measurement for a user" +msgid "Base url for download" +msgstr "" -#: ./geoportailv3/models.py:38 +#: ./geoportailv3/models.py:42 +msgid "Allowed surveying for a user" +msgstr "" + +#: ./geoportailv3/models.py:54 +msgid "Surveying file config" +msgstr "" + +#: ./geoportailv3/models.py:67 msgid "Internal WMS layer" msgstr "Internal WMS layer" -#: ./geoportailv3/models.py:39 +#: ./geoportailv3/models.py:68 msgid "Internal WMS layers" msgstr "Internal WMS layers" -#: ./geoportailv3/models.py:60 +#: ./geoportailv3/models.py:89 msgid "External WMS layer" msgstr "External WMS layer" -#: ./geoportailv3/models.py:61 +#: ./geoportailv3/models.py:90 msgid "External WMS layers" msgstr "External WMS layers" -#: ./geoportailv3/models.py:52 +#: ./geoportailv3/models.py:37 ./geoportailv3/models.py:81 +#: ./geoportailv3/models.py:167 msgid "Url" msgstr "Url" -#: ./geoportailv3/models.py:53 +#: ./geoportailv3/models.py:38 +msgid "Only connected user can download" +msgstr "" + +#: ./geoportailv3/models.py:82 msgid "Layers" msgstr "Couchen" -#: ./geoportailv3/models.py:54 +#: ./geoportailv3/models.py:83 msgid "Is a POI" msgstr "Is a POI" -#: ./geoportailv3/models.py:55 +#: ./geoportailv3/models.py:84 msgid "Collection ID" msgstr "Collection ID" -#: ./geoportailv3/models.py:56 +#: ./geoportailv3/models.py:85 msgid "REST url" msgstr "REST url" -#: ./geoportailv3/models.py:74 +#: ./geoportailv3/models.py:103 msgid "Category ID" msgstr "Category ID" -#: ./geoportailv3/models.py:87 +#: ./geoportailv3/models.py:116 msgid "Table name" msgstr "Table name" -#: ./geoportailv3/models.py:88 +#: ./geoportailv3/models.py:117 msgid "URL Rest" msgstr "URL Rest" -#: ./geoportailv3/models.py:89 +#: ./geoportailv3/models.py:118 msgid "Engine" msgstr "Engine" -#: ./geoportailv3/models.py:90 +#: ./geoportailv3/models.py:119 msgid "Layer" msgstr "Layer" -#: ./geoportailv3/models.py:91 +#: ./geoportailv3/models.py:120 msgid "Template file name" msgstr "Template file name" -#: ./geoportailv3/models.py:93 +#: ./geoportailv3/models.py:122 msgid "Is the template local or remote" msgstr "Is the template local or remote" -#: ./geoportailv3/models.py:94 +#: ./geoportailv3/models.py:123 msgid "Python function" msgstr "Python function" -#: ./geoportailv3/models.py:95 +#: ./geoportailv3/models.py:124 msgid "Role" msgstr "Role" -#: ./geoportailv3/models.py:96 -msgid "Attributes to keep" -msgstr "Attributes to keep" +#: ./geoportailv3/models.py:125 +msgid "Attributes to remove" +msgstr "" -#: ./geoportailv3/models.py:97 +#: ./geoportailv3/models.py:126 msgid "Id of the poi collection" msgstr "Id of the poi collection" -#: ./geoportailv3/models.py:98 +#: ./geoportailv3/models.py:127 msgid "Geometry column name" msgstr "Geometry column name" -#: ./geoportailv3/models.py:99 +#: ./geoportailv3/models.py:128 msgid "Order of columns" msgstr "Order of columns" -#: ./geoportailv3/models.py:100 +#: ./geoportailv3/models.py:129 msgid "ID column name" msgstr "ID column name" -#: ./geoportailv3/models.py:102 +#: ./geoportailv3/models.py:131 msgid "Is a profile displayed in template ?" msgstr "" + +#: ./geoportailv3/models.py:133 +msgid "Limit the results. If < 0 then not limit." +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-tooltips.po b/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-tooltips.po new file mode 100644 index 000000000..ca3ce98eb --- /dev/null +++ b/geoportal/geoportailv3_geoportal/locale/lb/LC_MESSAGES/geoportailv3_geoportal-tooltips.po @@ -0,0 +1,2444 @@ +# +# Translators: +# Andrea Donno , 2015-2016 +# dhorper , 2017-2019 +# dhorper , 2017 +# dhorper , 2017 +# Francis Kaell , 2015 +# Jeff Konnen , 2015 +# Jeff Konnen , 2015-2018 +# Loubnabarra , 2017 +# Loubnabarra , 2017 +# Patrick Weber , 2015 +# Patrick Weber , 2015 +msgid "" +msgstr "" +"Project-Id-Version: portail\n" +"PO-Revision-Date: 2019-01-11 14:29+0000\n" +"Last-Translator: dhorper \n" +"Language-Team: Luxembourgish (http://www.transifex.com/geoportail/geoportailv3-lu/language/lb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Nom" +msgstr "Numm" + +#: engineecadastre Layer:537 RoleNone +msgid "f_Code national" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Photo" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Hyperlinks" +msgstr "" + +#: engineecadastre Layer:763 RoleNone +msgid "f_Abschnitt" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Cours eau" +msgstr "" + +#: engineecadastre Layer:584 RoleNone +msgid "f_Profil en travers" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Fiche descriptive" +msgstr "" + +#: engineecadastre Layer:607 RoleNone +msgid "f_Type LAWA" +msgstr "" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_name" +msgstr "Numm" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_address" +msgstr "Adress" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_bikes" +msgstr "Verfügbar Veloën" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_ebikes" +msgstr "Verfügbar E-Bikes" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_available_docks" +msgstr "Verfügbar Statiounen" + +#: engineecadastre Layer:1386 RoleNone +msgid "f_docks" +msgstr "Total Statiounen" + +#: engineecadastre Layer:265 RoleNone +msgid "f_numero" +msgstr "Nummer" + +#: engineecadastre Layer:457 RoleNone +msgid "f_tiff" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_nom" +msgstr "Numm" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_geoloc_type" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_fr" +msgstr "" + +#: engineecadastre Layer:1370 RoleNone +msgid "f_leg_gr" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_nuts5" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_canton" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_habitants" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_chef_lieu" +msgstr "" + +#: engineecadastre Layer:216 RoleNone +msgid "f_c_district" +msgstr "" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_commune" +msgstr "Aktuellen Numm vun der Gemeng, an där sech den gréissten Deel vum Biotop befënnt" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_code" +msgstr "Type vum Biotop" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_url_fiche" +msgstr "Informatiounsfiche" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_biotope" +msgstr "Eendeitege Code vum Biotop" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_annee_evaluation" +msgstr "Joer vum initialen Inventar " + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_fr" +msgstr "Franséischen Numm vum Biotop" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_label_de" +msgstr "Däitschen Numm vum Biotop" + +#: engineecadastre Layer:1367 Role:664 +msgid "f_evaluation" +msgstr "Gesamtbewertung vum Biotop" + +#: engineecadastre Layer:1368 RoleNone +msgid "f_surface_ares" +msgstr "Fläech an Ar (100m²) opgeronnt op de Meter-Carré " + +#: engineecadastre Layer:1360 RoleNone +msgid "f_Etat" +msgstr "Status" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_P_kW" +msgstr "Elektresch Nennleeschtung (kVA)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_D_rotor_m" +msgstr "Duerchmiesser vum Propeller (Meter)" + +#: engineecadastre Layer:1360 RoleNone +msgid "f_H_Moy_m" +msgstr "Nabenhéicht (Meter)" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Exploitant" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Code" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Nom(s) du/des captages(s) concerné(s)" +msgstr "" + +#: engineecadastre Layer:664 RoleNone +msgid "f_Projet de Règlement grand-ducal" +msgstr "" + +#: engineecadastre Layer:647 RoleNone +msgid "f_Photo station" +msgstr "" + +#: engineecadastre Layer:573 RoleNone +msgid "f_Publication du règlement grand-duca" +msgstr "" + +#: engineecadastre Layer:797 RoleNone +msgid "f_site de la commune" +msgstr "" + +#: engineecadastre Layer:805 RoleNone +msgid "f_no_zpin" +msgstr "Nummer" + +#: engineecadastre Layer:805 RoleNone +msgid "f_interets_principaux" +msgstr "Haapt Interêten" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_c" +msgstr "Verbuet Zone C" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_a" +msgstr "Verbuet Zone A" + +#: engineecadastre Layer:804 RoleNone +msgid "f_date_classement" +msgstr "Datum vun der Klasséirung" + +#: engineecadastre Layer:804 RoleNone +msgid "f_interdiction_zone_b" +msgstr "Verbuet Zone B" + +#: engineecadastre Layer:804 RoleNone +msgid "f_commentaire" +msgstr "Kommentar" + +#: engineecadastre Layer:804 RoleNone +msgid "f_sous_zone" +msgstr "Ënner-zon" + +#: engineecadastre Layer:804 RoleNone +msgid "f_link" +msgstr "Link" + +#: engineecadastre Layer:804 RoleNone +msgid "f_code_national" +msgstr "Nationalen Code" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_Name" +msgstr "Numm" + +#: engineecadastre Layer:1381 RoleNone +msgid "f_description" +msgstr "Beschreiwung" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastrePa" +msgstr "Kadasterparzell" + +#: engineecadastre Layer:801 RoleNone +msgid "f_CadastreSe" +msgstr "Kadastersectioun" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteAEV" +msgstr "Autorisatioun vum Ëmweltminister / Commodo" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Installati" +msgstr "Installatioun" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArretNum" +msgstr "Arrêtésnummer" + +#: engineecadastre Layer:801 RoleNone +msgid "f_SiteOperat" +msgstr "Site" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Adresse" +msgstr "Adresse" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception" +msgstr "Réceptioun" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Explicatio" +msgstr "Allgemeng Erklärungen" + +#: engineecadastre Layer:801 RoleNone +msgid "f_ArreteITM" +msgstr "Autorisatioun vum Aarbechtsminister" + +#: engineecadastre Layer:801 RoleNone +msgid "f_Reception2" +msgstr "Réceptioun 2" + +#: engineecadastre Layer:802 RoleNone +msgid "f_PointMesur" +msgstr "" + +#: engineecadastre Layer:802 RoleNone +msgid "f_URL" +msgstr "" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Km2" +msgstr "Fläch (km2)" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Steckbri_1" +msgstr "Steckbréif" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Legende" +msgstr "Typ vun der Zone" + +#: engineecadastre Layer:1383 RoleNone +msgid "f_Id" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Code masse eau" +msgstr "" + +#: engineecadastre Layer:662 RoleNone +msgid "f_Fiches descriptives" +msgstr "" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Operateur" +msgstr "Opérateur" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Commune" +msgstr "Gemeng" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Technologi" +msgstr "Technologie" + +#: engineecadastre Layer:811 RoleNone +msgid "f_Site" +msgstr "Site" + +#: engineecadastre Layer:427 RoleNone +msgid "f_fax" +msgstr "Fax" + +#: engineecadastre Layer:427 RoleNone +msgid "f_code_postal" +msgstr "Code postal" + +#: engineecadastre Layer:427 RoleNone +msgid "f_telephone" +msgstr "Telefon" + +#: engineecadastre Layer:427 RoleNone +msgid "f_rue" +msgstr "Strooss" + +#: engineecadastre Layer:427 RoleNone +msgid "f_boite_postale" +msgstr "Boîte postale" + +#: engineecadastre Layer:427 RoleNone +msgid "f_localite" +msgstr "Uertschaft" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_AQIAPP_ID" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_RPT_FILE" +msgstr "Joeresbericht (monatlech aktualiseiert)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_X" +msgstr "Coordonnée X" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_LUREF_Y" +msgstr "Coordonnée Y" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_CITY" +msgstr "Localité" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ATM_INFO_RAW" +msgstr "" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_F_ACTIVE" +msgstr "Status (an Betriib = 1, ausser Betrieb = 0)" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_NUM_STREET" +msgstr "Numéro" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_STA_CODE" +msgstr "Code" + +#: engineecadastre Layer:1426 RoleNone +msgid "f_ADR_STREET" +msgstr "Rue" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_pm10_index_w_leg" +msgstr "PM10 Sub-Index" + +#: engineecadastre Layer:1425 RoleNone +msgid "f_date_et_heure" +msgstr "Datum an Auerzait" + +#: engineecadastre Layer:355 RoleNone +msgid "f_nom_section" +msgstr "" + +#: engineecadastre Layer:355 RoleNone +msgid "f_district" +msgstr "Distrikt" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_cad" +msgstr "Kadastergemeng" + +#: engineecadastre Layer:355 RoleNone +msgid "f_commune_admin" +msgstr "Gemeng" + +#: engineecadastre Layer:355 RoleNone +msgid "f_code_section" +msgstr "Sektioun" + +#: engineecadastre Layer:355 RoleNone +msgid "f_canton" +msgstr "Kanton" + +#: engineecadastre Layer:540 RoleNone +msgid "f_InspireID" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_CODE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_FID" +msgstr "FID" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITENAME" +msgstr "Numm" + +#: engineecadastre Layer:540 RoleNone +msgid "f_TYPE" +msgstr "" + +#: engineecadastre Layer:540 RoleNone +msgid "f_SITECODE" +msgstr "Code" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nom_Projet" +msgstr "Projet" + +#: engineecadastre Layer:408 RoleNone +msgid "f_Nr_Projet" +msgstr "Projets-Nr." + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PERIMETER" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Reclasseme" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Classement" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ORIG_FID" +msgstr "" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_communeDDP" +msgstr "Gemeng" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_plan" +msgstr "Plang" + +#: engineecadastre Layer:1434 RoleNone +msgid "f_num_cadast" +msgstr "Parzellennummer" + +#: engineecadastre Layer:401 RoleNone +msgid "f_Nom_Site" +msgstr "Numm vum Site" + +#: engineecadastre Layer:401 RoleNone +msgid "f_SurfaceHa" +msgstr "Surface an ha" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Projet" +msgstr "Projet" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Type" +msgstr "Typ" + +#: engineecadastre Layer:410 RoleNone +msgid "f_Priorite" +msgstr "Prioritéit" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code cours eau" +msgstr "" + +#: engineecadastre Layer:585 RoleNone +msgid "f_Code station" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_Operator" +msgstr "" + +#: engineecadastre Layer:1464 RoleNone +msgid "f_OBJECTID" +msgstr "" + +#: engineecadastre Layer:407 RoleNone +msgid "f_Categorie" +msgstr "Kategorie" + +#: engineecadastre Layer:402 RoleNone +msgid "f_Remarque" +msgstr "Remarque" + +#: engineecadastre Layer:655 Role:1 +msgid "f_Fiche station" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_lot" +msgstr "" + +#: engineecadastre Layer:626 RoleNone +msgid "f_Gewaesser" +msgstr "" + +#: engineecadastre Layer:768 RoleNone +msgid "f_Résultats" +msgstr "" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Nbre_mes" +msgstr "Unzuel vun den Miessungen" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_min" +msgstr "Aktivitéit min." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Activite" +msgstr "Duerchschnëttlech Aktivitéit" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_CANTON" +msgstr "Kanton" + +#: engineecadastre Layer:1468 RoleNone +msgid "f_Act_max" +msgstr "Aktivitéit max." + +#: engineecadastre Layer:1468 RoleNone +msgid "f_LAU2" +msgstr "LAU2 Code" + +#: engineecadastre Layer:582 RoleNone +msgid "f_grundwasser.GISADMIN.OuvragesWISKI.Drkg_Wtr_Prot_Zone" +msgstr "" + +#: engineecadastre Layer:582 RoleNone +msgid "f_Nitrates (mg/l)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Années de construction" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Type conduite" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Longueur géométrique (m)" +msgstr "" + +#: engineecadastre Layer:1405 RoleNone +msgid "f_Matériel conduite" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Cycle_pdm" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Nr" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_WK_Bezeich" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Planungszu" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Projekt_Co" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_result__Ge" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_RW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Lux_ID" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_F8" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Bezeichnun" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Kurzbezeic" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Maßnahmen" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_HW_erster" +msgstr "" + +#: engineecadastre Layer:752 RoleNone +msgid "f_Fiche" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Superficie (km²)" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Code AGE du point d'analyse" +msgstr "" + +#: engineecadastre Layer:1409 RoleNone +msgid "f_Cours d'eau" +msgstr "Waasserleef" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Profil" +msgstr "" + +#: engineecadastre Layer:656 RoleNone +msgid "f_Nom de la station" +msgstr "" + +#: engineecadastre Layer:682 RoleNone +msgid "f_localisation" +msgstr "Standuert" + +#: engineecadastre Layer:682 RoleNone +msgid "f_parkup" +msgstr "Etagenparking" + +#: engineecadastre Layer:682 RoleNone +msgid "f_capacity_inside" +msgstr "Kapazitéit" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Tronçon" +msgstr "Sektioun" + +#: engineecadastre Layer:713 RoleNone +msgid "f_Numéro" +msgstr "ID Site" + +#: engineecadastre Layer:713 RoleNone +msgid "f_YEAR" +msgstr "Joer" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_line" +msgstr "LABEL_LINE" + +#: engineecadastre Layer:444 RoleNone +msgid "f_label_section" +msgstr "LABEL_SECTION" + +#: engineecadastre Layer:539 RoleNone +msgid "f_label" +msgstr "Parzell" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_ligneshort" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_no_ligne" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk" +msgstr "" + +#: engineecadastre Layer:352 RoleNone +msgid "f_pk_text" +msgstr "" + +#: engineecadastre Layer:428 RoleNone +msgid "f_heures_appel" +msgstr "Urufszäiten" + +#: engineecadastre Layer:428 RoleNone +msgid "f_arrondissement" +msgstr "Arrondissementer" + +#: engineecadastre Layer:428 RoleNone +msgid "f_preposes_forestiers" +msgstr "Fieschter" + +#: engineecadastre Layer:428 RoleNone +msgid "f_gsm" +msgstr "Gsm" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SelectTest" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_essence" +msgstr "" + +#: engineecadastre Layer:389 RoleNone +msgid "f_propriete" +msgstr "BESITZ" + +#: engineecadastre Layer:690 RoleNone +msgid "f_secteur" +msgstr "SEKTOR" + +#: engineecadastre Layer:690 RoleNone +msgid "f_region" +msgstr "REGION" + +#: engineecadastre Layer:645 RoleNone +msgid "f_Analyses" +msgstr "" + +#: engineecadastre Layer:645 RoleNone +msgid "f_CAPA" +msgstr "" + +#: engineecadastre Layer:163 RoleNone +msgid "f_LEG_FR" +msgstr "Typ" + +#: engineecadastre Layer:331 RoleNone +msgid "f_type" +msgstr "Typ" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_la" +msgstr "Art (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_de" +msgstr "Numm (de)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_la" +msgstr "Numm (lat)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_fr" +msgstr "Art (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_abreviation" +msgstr "Ofkierzung" + +#: engineecadastre Layer:524 RoleNone +msgid "f_nom_fr" +msgstr "Numm (fr)" + +#: engineecadastre Layer:524 RoleNone +msgid "f_essence_de" +msgstr "Art (de)" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChiro" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_EtudeChir" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Ext_Nouv" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SUP2017" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Join_Count" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Area_ha" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Print0719" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Leng" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_OBJECTID_1" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone" +msgstr "Zonen-Numm" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_TARGET_FID" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_PrintModif" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NumeroRGD" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_AREA_DEF" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Specifique" +msgstr "Remarque" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_Select_" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_NomZone2" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_ElimComp" +msgstr "" + +#: engineecadastre Layer:8811 RoleNone +msgid "f_SHAPE_Le_1" +msgstr "" + +#: engineecadastre Layer:680 RoleNone +msgid "f_No" +msgstr "No" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Niveau d'assainissement" +msgstr "Niveau d'assainissement" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Contamination résiduelle" +msgstr "Contamination résiduelle" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Ancien No" +msgstr "Ancien No" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Description" +msgstr "Description" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Nom du site" +msgstr "Nom du site" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Année de saisie" +msgstr "Année de saisie" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Commentaire" +msgstr "Commentaire" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Identifiant surface" +msgstr "Identifiant surface" + +#: engineecadastre Layer:680 RoleNone +msgid "f_Méthode" +msgstr "Méthode" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Fr" +msgstr "Franséisch Legende vun der Pufferzone: \"PZ\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Leg_Gr" +msgstr "Däitsch Legende vun der Pufferzone: \"PZ\"" + +#: engineecadastre Layer:365 RoleNone +msgid "f_Buffer_Id" +msgstr "Eendeitege Code vun der Pufferzone" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKGemeinde" +msgstr "Gemengennumm während dem Kartéierungsjoer" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Code" +msgstr "Code vum éischte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_Shape_ares" +msgstr "Fläech an Ar (100m²) opgeronnt op de Meter-Carré" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEOCODE" +msgstr "Eendeitege Code vum Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Nom" +msgstr "Franséischen Numm vum drëtte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Code" +msgstr "Code vum zweete Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BKJahr" +msgstr "Kartéierungsjoer" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Nom" +msgstr "Franséischen Numm vum zweete Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Name" +msgstr "Däitschen Numm vum éischte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Code" +msgstr "Code vum drëtte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG3" +msgstr "Bewäertung vum drëtte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG2" +msgstr "Bewäertung vum zweete Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BEWERTUNG1" +msgstr "Bewäertung vum éischte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP3_Name" +msgstr "Däitschen Numm vum drëtte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP1_Nom" +msgstr "Franséischen Numm vum éischte Biotop" + +#: engineecadastre Layer:364 RoleNone +msgid "f_GEMEINDE" +msgstr "Aktuellen Numm vun der Gemeng, di de gréissten Deel vum Biotop ophëllt" + +#: engineecadastre Layer:364 RoleNone +msgid "f_BTYP2_Name" +msgstr "Däitschen Numm vum zweete Biotop" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Partie numéro" +msgstr "" + +#: engineecadastre Layer:490 RoleNone +msgid "f_Loi" +msgstr "" + +#: engineecadastre Layer:670 RoleNone +msgid "f_COMMUNE" +msgstr "Gemeng" + +#: engineecadastre Layer:670 RoleNone +msgid "f_UHD3" +msgstr "" + +#: engineecadastre Layer:493 RoleNone +msgid "f_Nom écosystème" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_y" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_arbre_baum" +msgstr "" + +#: engineecadastre Layer:419 RoleNone +msgid "f_coord_x" +msgstr "" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_name" +msgstr "Numm" + +#: engineecadastre Layer:685 RoleNone +msgid "f_kml_description" +msgstr "Beschreiwung" + +#: engineecadastre Layer:678 RoleNone +msgid "f_station_biologique" +msgstr "Biologesch Statioun" + +#: engineecadastre Layer:581 RoleNone +msgid "f_Qualité" +msgstr "" + +#: engineecadastre Layer:581 RoleNone +msgid "f_messstationen.GISADMIN.Badegewaesser.Baignade" +msgstr "" + +#: engineecadastre Layer:157 RoleNone +msgid "f_LDEN" +msgstr "dB" + +#: engineecadastre Layer:627 RoleNone +msgid "f_Station" +msgstr "" + +#: engineecadastre Layer:691 RoleNone +msgid "f_lot_numero" +msgstr "NUMMER" + +#: engineecadastre Layer:167 RoleNone +msgid "f_CodeDesc" +msgstr "Typ" + +#: engineecadastre Layer:255 RoleNone +msgid "f_LNGT" +msgstr "dB" + +#: engineecadastre Layer:367 RoleNone +msgid "f_flurname" +msgstr "Lieu-dit" + +#: engineecadastre Layer:367 RoleNone +msgid "f_vendeur" +msgstr "Vendeur" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem_p" +msgstr "Remarque Bail" + +#: engineecadastre Layer:367 RoleNone +msgid "f_datum" +msgstr "Date d''achat" + +#: engineecadastre Layer:367 RoleNone +msgid "f_notar" +msgstr "Notaire" + +#: engineecadastre Layer:367 RoleNone +msgid "f_paechter" +msgstr "Operator" + +#: engineecadastre Layer:367 RoleNone +msgid "f_id" +msgstr "PF" + +#: engineecadastre Layer:367 RoleNone +msgid "f_jagdlos" +msgstr "Lot de chasse" + +#: engineecadastre Layer:367 RoleNone +msgid "f_sektion" +msgstr "Section" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fischereil" +msgstr "Lot de peche" + +#: engineecadastre Layer:367 RoleNone +msgid "f_num_flik" +msgstr "Num. FLIK" + +#: engineecadastre Layer:367 RoleNone +msgid "f_aff" +msgstr "Affectation" + +#: engineecadastre Layer:367 RoleNone +msgid "f_fl_che" +msgstr "Surface cadastrale" + +#: engineecadastre Layer:367 RoleNone +msgid "f_rem" +msgstr "Remarque" + +#: engineecadastre Layer:367 RoleNone +msgid "f_gemeinde" +msgstr "Gemeng" + +#: engineecadastre Layer:367 RoleNone +msgid "f_kadasternu" +msgstr "Num. cadastral" + +#: engineecadastre Layer:378 RoleNone +msgid "f_voiture_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection1" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_cout" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_emprises" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_velo_connection" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_station" +msgstr "Statioun" + +#: engineecadastre Layer:378 RoleNone +msgid "f_operateur" +msgstr "" + +#: engineecadastre Layer:378 RoleNone +msgid "f_open" +msgstr "" + +#: engineecadastre Layer:368 RoleNone +msgid "f_systeme" +msgstr "Service" + +#: engineecadastre Layer:368 RoleNone +msgid "f_adress" +msgstr "Adress" + +#: engineecadastre Layer:368 RoleNone +msgid "f_reservation" +msgstr "Reservatioun" + +#: engineecadastre Layer:368 RoleNone +msgid "f_bornes" +msgstr "Bornen" + +#: engineecadastre Layer:368 RoleNone +msgid "f_ouvert" +msgstr "Erreechbar" + +#: engineecadastre Layer:643 RoleNone +msgid "f_Syndicat" +msgstr "" + +#: engineecadastre Layer:659 RoleNone +msgid "f_NAME" +msgstr "Numm" + +#: engineecadastre Layer:441 RoleNone +msgid "f_Cause mauvais etat" +msgstr "" + +#: engineecadastre Layer:536 RoleNone +msgid "f_km2" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_index_w_leg" +msgstr "NO2 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index_w_leg" +msgstr "O3 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_index" +msgstr "Sub-Index O3" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_value" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_o3_value" +msgstr "Konzentratioun O3 (ug/m3)" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index" +msgstr "" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm10_value" +msgstr "PM10 Partikel-Konzentratioun (ug/m3) - Gleitenden 24-Stonnenmëttelwert" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_pm25_index_w_leg" +msgstr "PM2.5 Sub-Index" + +#: engineecadastre Layer:1432 RoleNone +msgid "f_no2_value" +msgstr "Stéckstoffdioxid NO2 Konzentratioun (ug/m3) - Stonnenmëttelwert" + +#: engineecadastre Layer:726 RoleNone +msgid "f_code_dossier" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_fin" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_annexe" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_date_debut" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_etat_libelle" +msgstr "" + +#: engineecadastre Layer:726 RoleNone +msgid "f_aide" +msgstr "" + +#: engineecadastre Layer:747 RoleNone +msgid "f_Naturpark" +msgstr "Naturpark" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_i_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_ru" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges__2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_b_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_easting" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_owner" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_northing" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_bois" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_numero_arr" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_type_d_ins" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_decommissi" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_master" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode__1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_periode_de" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_mazout" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_cha" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_nu" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_apres_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_no" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_latitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_c_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installa_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_gaz_nature" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_longitude" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonn_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_m_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_organisme1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_code_nace" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_conforme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_remarque" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_coordonnee" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_local" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_installate" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_ch_4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_artis" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_heures_mot" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_co" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_diesel" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_rapport" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot1" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot3" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot2" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot5" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_mot4" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_biogaz" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_comme" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_contact_lo" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_batiment" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_rue" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_date" +msgstr "Datum" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_indus" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_sect_admin" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_exemption" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_avant_2018" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_code_" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_puiss_chau" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_site_numer" +msgstr "" + +#: engineecadastre Layer:1465 RoleNone +msgid "f_charges_mo" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_ITINERAIRE" +msgstr "" + +#: engineecadastre Layer:808 RoleNone +msgid "f_N_PC" +msgstr "Nummer" + +#: engineecadastre Layer:808 RoleNone +msgid "f_NOM PC" +msgstr "Numm" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWA" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_E75N" +msgstr "" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_UCZ" +msgstr "Hotspot ID" + +#: engineecadastre Layer:1476 RoleNone +msgid "f_EWC" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Code de l'élément fonctionnel" +msgstr "" + +#: engineecadastre Layer:1469 RoleNone +msgid "f_Elément fonctionnel" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Code de la masse eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Type de mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_ID de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Nom de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Taille de la mesure" +msgstr "" + +#: engineecadastre Layer:785 RoleNone +msgid "f_Description de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Type de la mesure" +msgstr "" + +#: engineecadastre Layer:758 RoleNone +msgid "f_Longueur (m)" +msgstr "" + +#: engineecadastre Layer:1471 RoleNone +msgid "f_Code de la masse d'eau de surface" +msgstr "" + +#: engineecadastre Layer:669 RoleNone +msgid "f_UHD2" +msgstr "" + +#: engineecadastre Layer:1359 RoleNone +msgid "f_RPT_FILE_NEW" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E70N" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E75L" +msgstr "" + +#: engineecadastre Layer:1475 RoleNone +msgid "f_E65N" +msgstr "" + +#: engineecadastre Layer:671 RoleNone +msgid "f_UHD1" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_LienMemori" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_nom_fichier" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_Area" +msgstr "" + +#: engineecadastre Layer:710 RoleNone +msgid "f_NomProjet" +msgstr "" + +#: engineecadastre Layer:1503 RoleNone +msgid "f_UCEden" +msgstr "UCEden Belastung" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_street" +msgstr "Strooss" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_link_to_emwelt" +msgstr "Link" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_pm10_value_w_leg" +msgstr "PM10 Partikel-Konzentratioun (ug/m3) - Gleitenden 24-Stonnenmëttelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_adr_city" +msgstr "Uertschaft" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value" +msgstr "Ozon O3 Konzentratioun (ug/m3) - Stonnenmëttelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_index" +msgstr "Gesamtindex" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_index_w_leg" +msgstr "Sub-Index O3" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_no2_value_w_leg" +msgstr "Stéckstoffdioxid NO2 Konzentratioun (ug/m3) - Stonnenmëttelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_ozone_value_w_leg" +msgstr "Ozon O3 Konzentratioun (ug/m3) - Stonnenmëttelwert" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_x" +msgstr "X-Koordinate" + +#: engineecadastre Layer:1357 RoleNone +msgid "f_luref_y" +msgstr "Y-Koordinate" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Publiée" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Abandonné" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Séquence" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Catégorie d'SPC" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Créé par" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Traité" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Effacé" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_area(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Type de surface" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié le" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_st_length(sur_shape)" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Sous type" +msgstr "" + +#: engineecadastre Layer:1479 RoleNone +msgid "f_Modifié par" +msgstr "" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_fournisseur" +msgstr "Netzbedreiwer" + +#: engineecadastre Layer:1494 RoleNone +msgid "f_texte_fr" +msgstr " Démarche" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_rdv" +msgstr "Rendez-vous" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_adresse" +msgstr "Adress" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_responsable" +msgstr "Responsabel" + +#: engineecadastre Layer:1496 RoleNone +msgid "f_horaire" +msgstr "Ëffnungszäiten" + +#: engineecadastre Layer:1507 RoleNone +msgid "f_Descrip" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Field1" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Code_posta" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Longitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Latitude" +msgstr "" + +#: engineecadastre Layer:1506 RoleNone +msgid "f_Addresse" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Centre_de" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_Y" +msgstr "" + +#: engineecadastre Layer:1508 RoleNone +msgid "f_X" +msgstr "" + +#: engineecadastre Layer:1509 RoleNone +msgid "f_F1" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_IdAEV" +msgstr "" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_X" +msgstr "X-Koordinate" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Moy2018" +msgstr "NO2 Mëttelwert (ug/m3)" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_LUREF_Y" +msgstr "Y-Koordinate" + +#: engineecadastre Layer:1477 RoleNone +msgid "f_Localité" +msgstr "Uertschaft" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_AGE" +msgstr "Unzuel Jore vun der Begréngung" + +#: engineecadastre Layer:1511 RoleNone +msgid "f_FLAECHE_AR" +msgstr "Fläch (an Ar)" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_Allemands" +msgstr "Däitsch Bevëlkerung" + +#: engineecadastre Layer:1538 RoleNone +msgid "f_F__Alleman" +msgstr "Undeel vun Däitschen a %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_F__Afrique" +msgstr "Undeel vun Afrikaner a %" + +#: engineecadastre Layer:1537 RoleNone +msgid "f_Afrique" +msgstr "Afrikanesch Bevëlkerung" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_type_proprietaire" +msgstr "Besëtzerverhältnis" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_nom_proprietaire" +msgstr "Numm vum Besëtzer" + +#: engineecadastre Layer:1514 RoleNone +msgid "f_annee_inventaire" +msgstr "Joër vum Bëschinventaire" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_NO2_I1G" +msgstr "NO2 (ug/m3)" + +#: engineecadastre Layer:1512 RoleNone +msgid "f_STR_NAME" +msgstr "Strooss" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_F__Portuga" +msgstr "Undeel vu Portugisen a %" + +#: engineecadastre Layer:1536 RoleNone +msgid "f_Portugais" +msgstr "Portugisesch Bevëlkerung" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_Amérique" +msgstr "Amerikanesch Bevëlkerung" + +#: engineecadastre Layer:1539 RoleNone +msgid "f_F__Amériq" +msgstr "Undeel vun Amerikaner a %" + +#: engineecadastre Layer:1532 RoleNone +msgid "f_CODE_LAU2" +msgstr "LAU2 Code" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Etranger" +msgstr "Auslännesch Bevëlkerung" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__étrang" +msgstr "Undeel vun Auslänner a %" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_Luxembourg" +msgstr "Lëtzebuerger Bevëlkerung" + +#: engineecadastre Layer:1579 RoleNone +msgid "f_F__luxembo" +msgstr "Undeel vu Lëtzebuerger a %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_F__Italien" +msgstr "Undeel vun Italiener a %" + +#: engineecadastre Layer:1544 RoleNone +msgid "f_Italiens" +msgstr "Italienesch Bevëlkerung" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_F__UE28" +msgstr "Undeel vun Europäer (EU-28) a %" + +#: engineecadastre Layer:1543 RoleNone +msgid "f_UE28" +msgstr "Bevëlkerung aus der EU-28" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_Européens" +msgstr "Europäesch Bevëlkerung (Net-EU-28)" + +#: engineecadastre Layer:1542 RoleNone +msgid "f_F__non_UE" +msgstr "Undeel vun Europäer (Net-EU-28) a %" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_Belges" +msgstr "Belsch Bevëlkerung" + +#: engineecadastre Layer:1541 RoleNone +msgid "f_F__Belges" +msgstr "Undeel vu Belsch a %" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_AsieOcéan" +msgstr "Asiatesch an Ozeanesch Bevëlkerung" + +#: engineecadastre Layer:1540 RoleNone +msgid "f_F__Asie_et" +msgstr "Undeel vun Asiaten an Ozeanier a %" + +#: engineecadastre Layer:1577 RoleNone +msgid "f_Population_com" +msgstr "Bevëlkerung pro Gemeng" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_F__França" +msgstr "Undeel vu Fransousen a %" + +#: engineecadastre Layer:1534 RoleNone +msgid "f_Français" +msgstr "Franséisch Bevëlkerung" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_total_m_3" +msgstr "Bevëlkerung ënner 3 Joer" + +#: engineecadastre Layer:1567 RoleNone +msgid "f_part_m_3" +msgstr "Undeel vun der Bevëlkerung ënner 3 Joer a %" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_part_6_10" +msgstr "Undeel vun der Bevëlkerung tëscht 6 an 10 Joer a %" + +#: engineecadastre Layer:1569 RoleNone +msgid "f_total_6_10" +msgstr "Bevëlkerung tëscht 6 an 10 Joer" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_part_3_5" +msgstr "Undeel vun der Bevëlkerung tëscht 3 a 5 Joer a %" + +#: engineecadastre Layer:1568 RoleNone +msgid "f_total_3_5" +msgstr "Bevëlkerung tëscht 3 a 5 Joer" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_tot_11_17" +msgstr "Bevëlkerung tëscht 11 an 17 Joer" + +#: engineecadastre Layer:1570 RoleNone +msgid "f_part_11_17" +msgstr "Undeel vun der Bevëlkerung tëscht 11 an 17 Joer a %" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_p_75_89" +msgstr "Undeel vun der Bevëlkerung tëscht 75 an 89 Joer a %" + +#: engineecadastre Layer:1572 RoleNone +msgid "f_t_75_89" +msgstr "Bevëlkerung tëscht 75 an 89 Joer" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_t_90" +msgstr "Bevëlkerung mat 90 Joer a méi" + +#: engineecadastre Layer:1573 RoleNone +msgid "f_p_90" +msgstr "Undeel vun der Bevëlkerung mat 90 Joer a méi a %" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_dep_jeunes" +msgstr "Jugendquotient (0-19 Joer)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_pers_jeune" +msgstr "Jonk Persounen (0-19 Joer)" + +#: engineecadastre Layer:1583 RoleNone +msgid "f_age_trav" +msgstr "Persounen am erwerbsfähegen Alter (20-64 Joer)" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_rapp_j_a" +msgstr "Ofhängegkeetsquotient" + +#: engineecadastre Layer:1584 RoleNone +msgid "f_pers_agees" +msgstr "Eeler Persounen (65+ Joer)" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibatai" +msgstr "Leedeg Persounen" + +#: engineecadastre Layer:1585 RoleNone +msgid "f_Célibat_1" +msgstr "Undeel u leedege Persounen a %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e_1" +msgstr "Undeel u bestuete/a Partnerschaft liewende Persounen a %" + +#: engineecadastre Layer:1586 RoleNone +msgid "f_Marié_e__" +msgstr "Bestuete/a Partnerschaft liewend Persounen" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_e" +msgstr "Gescheet/getrennt Persounen" + +#: engineecadastre Layer:1587 RoleNone +msgid "f_Divorcé_1" +msgstr "Undeel u gescheete/getrennte Persounen a %" + +#: engineecadastre Layer:1563 RoleNone +msgid "f_age_moyen" +msgstr "Duerchschnëttsalter (béid Geschlechter zesummen)" + +#: engineecadastre Layer:1562 RoleNone +msgid "f_age_h" +msgstr "Duerchschnëttsalter vun de Männer" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_moins20" +msgstr "Bevëlkerung ënner 20 Joer" + +#: engineecadastre Layer:1564 RoleNone +msgid "f_p_moins20" +msgstr "Undeel vun der Bevëlkerung ënner 20 Joer a %" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_a20_64" +msgstr "Bevëlkerung tëscht 20 a 64 Joer" + +#: engineecadastre Layer:1565 RoleNone +msgid "f_p20_64" +msgstr "Undeel vun der Bevëlkerung tëscht 20 a 64 Joer a %" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_pole_urbai" +msgstr "Urbanen Zentrum" + +#: engineecadastre Layer:1574 RoleNone +msgid "f_Population_villes" +msgstr "Bevëlkerung" + +#: engineecadastre Layer:1576 RoleNone +msgid "f_Population_can" +msgstr "Bevëlkerung pro Kanton" + +#: engineecadastre Layer:1578 RoleNone +msgid "f_prop_f" +msgstr "Undeel vu Fraen a %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_nbre" +msgstr "Bevëlkerung déi zu Lëtzebuerg gebuer ass" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_nbre" +msgstr "Bevëlkerung déi am Ausland gebuer ass" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Etrangers_pourcent" +msgstr "Undeel vun der Bevëlkerung déi am Ausland gebuer ass a %" + +#: engineecadastre Layer:1581 RoleNone +msgid "f_Luxemb_pourcent" +msgstr "Undeel vun der Bevëlkerung déi zu Lëtzebuerg gebuer ass a %" + +#: engineecadastre Layer:1561 RoleNone +msgid "f_age_f" +msgstr "Duerchschnëttsalter vun de Fraen" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veuve" +msgstr "Witmänner/Witfraen" + +#: engineecadastre Layer:1588 RoleNone +msgid "f_Veuf_veu_1" +msgstr "Undeel u Witmänner/Witfraen a %" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Annee_fusi" +msgstr "Datum vum Akraafttrieden vun der Gemengefusioun" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Nouv_comm" +msgstr "Numm vun der Gemeng no der Fusioun" + +#: engineecadastre Layer:1531 RoleNone +msgid "f_Anc_comm" +msgstr "Numm vun der Gemeng virun der Fusioun" + +#: engineecadastre Layer:1598 RoleNone +msgid "f_F__des_nai" +msgstr "Undeel u Gebuerten innerhalb vum Bestietnis (%) (2013-2017)" + +#: engineecadastre Layer:1599 RoleNone +msgid "f_Age_moyen" +msgstr "Duerchschnëttsalter vun der Mamm bei der Gebuert (Duerchschnëtt 2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_24" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_d" +msgstr "Duerchschnëttlech Unzuel u Stierffäll (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_20" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_21" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_22" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Décès_23" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissances" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_na" +msgstr "Duerchschnëttlech Gebuerterat (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F10" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_F11" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_po" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_3" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Communes_1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne__1" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_2" +msgstr "" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Moyenne_na" +msgstr "Duerchschnëttlech Gebuertenzuel (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Taux_de_mo" +msgstr "Duerchschnëttlech Stierflechkeetsrat (‰) (2013-2017)" + +#: engineecadastre Layer:1600 RoleNone +msgid "f_Naissanc_4" +msgstr "" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Taux de solde naturel moyen (‰)" +msgstr "Duerchschnëttlechen Taux vum natierleche Saldo (‰) (2013-2017)" + +#: engineecadastre Layer:1601 RoleNone +msgid "f_Solde_natu" +msgstr "Taux vum natierleche Saldo (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Solde_mi_5" +msgstr "Duerchschnëttlechen internen Wanderungssaldo (‰) (2013-2017)" + +#: engineecadastre Layer:1603 RoleNone +msgid "f_Taux de solde migratoire interne moyen (‰)" +msgstr "Duerchschnëttlechen Taux vum internen Wanderungssaldo (‰) (2013-2017)" + +#: engineecadastre Layer:1605 RoleNone +msgid "f_Taux de solde migratoire total moyen (‰)" +msgstr "Taux vum totalen Wanderungssaldo (‰) (2013-2017)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Ital_" +msgstr "Italienesch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1613 RoleNone +msgid "f_Italienisc" +msgstr "Italienesch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_a64plus" +msgstr "Bevëlkerung mat 65 Joer a méi" + +#: engineecadastre Layer:1566 RoleNone +msgid "f_p64plus" +msgstr "Undeel vun der Bevëlkerung mat 65 Joer a méi a %" + +#: engineecadastre Layer:1604 RoleNone +msgid "f_Taux de solde migratoire international moyen (‰)" +msgstr "Duerchschnëttlechen Taux vum internationalen Wanderungssaldo (‰) (2013-2017)" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_t_65_74" +msgstr "Bevëlkerung tëscht 65 an 74 Joer" + +#: engineecadastre Layer:1571 RoleNone +msgid "f_p_65_74" +msgstr "Undeel vun der Bevëlkerung tëscht 65 an 74 Joer a %" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Taux_de__1" +msgstr "Duerchschnëttlech Bestietnisrat (‰) (2013-2017)" + +#: engineecadastre Layer:1606 RoleNone +msgid "f_Mariages_1" +msgstr "Duerchschnëttlech Unzuel un Hochzäiten (2013-2017)" + +#: engineecadastre Layer:1607 RoleNone +msgid "f_Age moyen des femmes au mariage" +msgstr "Duerchschnëttlecht Bestietnisalter vun de Fraen (Duerchschnëtt 2013-2017)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (1981)" +msgstr "Zuel vun de Awunner am Joer 1981" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Taux_acc" +msgstr "Wuesstemstaux vun der Bevëlkerung a % (1981-2018)" + +#: engineecadastre Layer:1533 RoleNone +msgid "f_Chiffres absolus (2018)" +msgstr "Zuel vun de Awunner am Joer 2018" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Densité_d" +msgstr "Bevëlkerungsdicht am Joer 2018" + +#: engineecadastre Layer:1535 RoleNone +msgid "f_Chiffres_a" +msgstr "Zuel vun de Awunner am Joer 2018" + +#: engineecadastre Layer:1608 RoleNone +msgid "f_Age moyen des hommes au mariage" +msgstr "Duerchschnëttlecht Bestietnisalter vun de Männer (Duerchschnëtt 2013-2017)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Luxemburgi" +msgstr "Lëtzebuergesch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1609 RoleNone +msgid "f_Lux_" +msgstr "Lëtzebuergesch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Französis" +msgstr "Franséisch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1610 RoleNone +msgid "f_Fran_" +msgstr "Franséisch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deutsch" +msgstr "Däitsch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1611 RoleNone +msgid "f_Deu_" +msgstr "Däitsch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Portugiesi" +msgstr "Portugisesch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1612 RoleNone +msgid "f_Port_" +msgstr "Portugisesch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Englisch" +msgstr "Englesch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1614 RoleNone +msgid "f_Eng_" +msgstr "Englesch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_sonstige" +msgstr "Aner Sprooch ass d'Haaptsprooch (Persounen)" + +#: engineecadastre Layer:1615 RoleNone +msgid "f_Sonstige_" +msgstr "Aner Sprooch ass d'Haaptsprooch (%)" + +#: engineecadastre Layer:1582 RoleNone +msgid "f_dep_age" +msgstr "Alequotient (65+ Joer)" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_MEASU" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_DATE_CREAT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ELEVATION" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_POINT_CLAS" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_IMG_DIRECT" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_Y_WG" +msgstr "Y-Koordinat" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID_STRING" +msgstr "" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REFERENCE_" +msgstr "Numm" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_COORD_X_WG" +msgstr "X-Koordinat" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_REMARQUE" +msgstr "Numm" + +#: engineecadastre Layer:1621 RoleNone +msgid "f_ID" +msgstr "" diff --git a/geoportal/geoportailv3_geoportal/models.py b/geoportal/geoportailv3_geoportal/models.py new file mode 100644 index 000000000..c5ef66c03 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/models.py @@ -0,0 +1,289 @@ +# -*- coding: utf-8 -*- + +import logging + +from pyramid.i18n import TranslationStringFactory + +import colander +from c2cgeoportal_commons.models import Base +from c2cgeoportal_commons.models.main import _schema, LayerWMS +from sqlalchemy import ForeignKey, Column +from sqlalchemy.types import Integer, Boolean, Unicode, String, DateTime +from deform.widget import HiddenWidget, TextInputWidget + +_ = TranslationStringFactory('geoportailv3-server') +LOG = logging.getLogger(__name__) + + +class LuxDownloadUrl(Base): + __tablename__ = 'lux_download_url' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Url for download'), + 'plural': _('Urls for download') + } + id = Column(Integer, primary_key=True, info={ + 'colanderalchemy': {'widget': HiddenWidget()} + }) + url = Column(Unicode, nullable=False, info={ + 'colanderalchemy': {'title': _('Url')} + }) + protected = Column(Boolean, nullable=False, info={ + 'colanderalchemy': {'title': _('Only connected user can download ?')} + }) + + +class LuxMeasurementLoginCommune(Base): + __tablename__ = 'lux_measurement_login_commune' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Surveying login'), + 'plural': _('Surveying logins') + } + login = Column(Unicode, primary_key=True, info={ + 'colanderalchemy': {'title': _('Login')} + }) + num_commune = Column(Unicode, primary_key=True, info={ + 'colanderalchemy': {'title': _('Commune number')} + }) + + +class LuxMeasurementDirectory(Base): + __tablename__ = 'lux_measurement_directory' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Surveying file config'), + 'plural': _('Surveying file configs') + } + id = Column(Integer, primary_key=True, info={ + 'colanderalchemy': {'widget': HiddenWidget()} + }) + name = Column(Unicode, nullable=False, info={ + 'colanderalchemy': {'title': _('Name')} + }) + town_code = Column(Integer, nullable=False, info={ + 'colanderalchemy': {'title': _('Town code')} + }) + path = Column(String, nullable=False, info={ + 'colanderalchemy': {'title': _('Path')} + }) + path_dwg = Column(String, info={ + 'colanderalchemy': {'title': _('Path (dwg)')} + }) + path_star = Column(String, info={ + 'colanderalchemy': {'title': _('Path (star)')} + }) + + +class LuxLayerInternalWMS(LayerWMS): + __tablename__ = 'lux_layer_internal_wms' + __table_args__ = {'schema': _schema} + __mapper_args__ = {'polymorphic_identity': 'lu_int_wms'} + __colanderalchemy_config__ = { + 'title': _('Internal WMS layer'), + 'plural': _('Internal WMS layers') + } + + id = Column(Integer, ForeignKey(_schema + ".layer_wms.id", + ondelete='CASCADE'), primary_key=True, info={ + 'colanderalchemy': { + 'missing': None, + 'widget': HiddenWidget() + }}) + url = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Url')} + }) + layers = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Layers')} + }) + is_poi = Column(Boolean, info={ + 'colanderalchemy': {'title': _('Is a POI')} + }) + collection_id = Column(Integer, info={ + 'colanderalchemy': {'title': _('Collection ID')} + }) + rest_url = Column(Unicode, info={ + 'colanderalchemy': {'title': _('REST url')} + }) + + + def __init__( + self, name='', layer='', public=True, + time_mode='disabled', + time_widget='slider', + url='', + layers='', + is_poi=False, + collection_id=0, + rest_url='' + ): + LayerWMS.__init__(self, name=name, layer=layer, public=public, + time_mode=time_mode, time_widget=time_widget) + self.url = url + self.layers = layers + self.is_poi = is_poi + self.collection_id = collection_id + self.rest_url = rest_url + + def get_default(dbsession): + return dbsession.query(LuxLayerInternalWMS).filter( + LuxLayerInternalWMS.name == 'lux_layer_internal_wms-defaults' + ).one_or_none() + + +class LuxLayerExternalWMS(LayerWMS): + __tablename__ = 'lux_layer_external_wms' + __table_args__ = {'schema': _schema} + __mapper_args__ = {'polymorphic_identity': 'lu_ext_wms'} + __colanderalchemy_config__ = { + 'title': _('External WMS layer'), + 'plural': _('External WMS layers') + } + id = Column(Integer, ForeignKey(_schema + ".layer_wms.id", + ondelete='CASCADE'), primary_key=True, info={ + 'colanderalchemy': { + 'missing': None, + 'widget': HiddenWidget() + }}) + category_id = Column(Integer, info={ + 'colanderalchemy': {'title': _('Category ID')} + }) + + def __init__( + self, name='', layer='', public=True, + time_mode='disabled', + time_widget='slider', + category_id=0 + ): + LayerWMS.__init__(self, name=name, layer=layer, public=public, + time_mode=time_mode, time_widget=time_widget) + self.category_id = category_id + + def get_default(dbsession): + return dbsession.query(LuxLayerExternalWMS).filter( + LuxLayerExternalWMS.name == 'lux_layer_external_wms-defaults' + ).one_or_none() + + +class LuxGetfeatureDefinition(Base): + __tablename__ = 'lux_getfeature_definition' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Getfeature definition'), + 'plural': _('Getfeature definitions') + } + __c2cgeoform_config__ = { + 'duplicate': True + } + id = Column(Integer, primary_key=True, info={ + 'colanderalchemy': {'widget': HiddenWidget()} + }) + query = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Table name')} + }) + rest_url = Column(String(255), info={ + 'colanderalchemy': {'title': _('URL Rest')} + }) + engine_gfi = Column('engine', Unicode, nullable=False, info={ + 'colanderalchemy': {'title': _('Engine')} + }) + layer = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Layer')} + }) + template = Column(Unicode, nullable=False, default='default', info={ + 'colanderalchemy': {'title': _('Template file name')} + }) + remote_template = Column(Boolean, default=False, info={ + 'colanderalchemy': {'title': _('Remote template (or local) ?')} + }) + additional_info_function = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Python function')} + }) + role = Column(Integer, info={ + 'colanderalchemy': {'title': _('Role')} + }) + attributes_to_remove = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Attributes to remove')} + }) + poi_id_collection = Column(Integer, info={ + 'colanderalchemy': {'title': _('Id of the poi collection')} + }) + geometry_column = Column(Unicode, default='geom', info={ + 'colanderalchemy': {'title': _('Geometry column name')} + }) + columns_order = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Order of columns')} + }) + id_column = Column(Unicode, info={ + 'colanderalchemy': {'title': _('ID column name')} + }) + has_profile = Column(Boolean, info={ + 'colanderalchemy': {'title': _('Is a profile displayed ?')} + }) + query_limit = Column(Integer, info={ + 'colanderalchemy': {'title': _('Limit the results. If < 0 then not limit.')} + }) + + +class LuxPrintJob(Base): + __tablename__ = 'lux_print_job' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Print job'), + 'plural': _('Print jobs') + } + id = Column(String(100), primary_key=True, info={ + 'colanderalchemy': {'widget': HiddenWidget()} + }) + spec = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Spec.')} + }) + creation = Column(DateTime(timezone=False), info={ + 'colanderalchemy': {'title': _('Creation date')} + }) + print_url = Column(Unicode, info={ + 'colanderalchemy': {'title': _('Url')} + }) + is_error = Column(Boolean, default=False, info={ + 'colanderalchemy': {'title': _('Error')} + }) + + +class LuxPrintServers(Base): + __tablename__ = 'lux_print_servers' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Print server'), + 'plural': _('Print servers') + } + id = Column(Integer, primary_key=True, info={ + 'colanderalchemy': {'widget': HiddenWidget()} + }) + url = Column(Unicode, nullable=False, info={ + 'colanderalchemy': {'title': _('Url')} + }) + creation = Column(DateTime(timezone=False), info={ + 'colanderalchemy': {'title': _('Creation date')} + }) + + +class LuxPredefinedWms(Base): + __tablename__ = 'lux_predefined_wms' + __table_args__ = {'schema': _schema} + __colanderalchemy_config__ = { + 'title': _('Predefined wms'), + 'plural': _('Predefined wms') + } + id = Column(Integer, primary_key=True, info={ + 'colanderalchemy': {'widget': HiddenWidget()} + }) + url = Column(Unicode, nullable=False, info={ + 'colanderalchemy': {'title': _('Url')} + }) + label = Column(Unicode, nullable=False, info={ + 'colanderalchemy': { + 'title': _('Label'), + # Possible workaround to 'label' css problem (but for edit not for grid, so it's useless). + # 'widget': TextInputWidget(css_class='label-class', item_css_class='item-label-class') + } + }) diff --git a/geoportailv3/mymaps.py b/geoportal/geoportailv3_geoportal/mymaps.py similarity index 97% rename from geoportailv3/mymaps.py rename to geoportal/geoportailv3_geoportal/mymaps.py index 1e50e36c4..38ba175d9 100644 --- a/geoportailv3/mymaps.py +++ b/geoportal/geoportailv3_geoportal/mymaps.py @@ -25,7 +25,7 @@ class Map(Base): __tablename__ = 'map' uuid = Column(Unicode, primary_key=True, - default=lambda: unicode(uuid.uuid4().hex)) + default=lambda: str(uuid.uuid4().hex)) user_login = Column(Unicode(50)) title = Column(Unicode(50)) description = Column(Unicode) @@ -150,7 +150,7 @@ def __update__(self, feature): if linestyle == 'dotted' else 0 self.shape = feature.properties.get('shape') size = feature.properties.get('size') - self.size = size if size is not None and unicode(size).isnumeric()\ + self.size = size if size is not None and str(size).isnumeric()\ else 10 angle = feature.properties.get('angle') try: @@ -159,15 +159,15 @@ def __update__(self, feature): self.angle = 0 font_size = feature.properties.get('fontSize') self.font_size = font_size if font_size is not None and\ - unicode(font_size).isnumeric() else 15 + str(font_size).isnumeric() else 15 symbol_id = feature.properties.get('symbolId') self.symbol_id = None if symbol_id is not None and\ - len(unicode(symbol_id)) == 0\ + len(str(symbol_id)) == 0\ else symbol_id opacity = feature.properties.get('opacity') self.opacity = opacity if opacity is not None and\ - unicode(opacity).isnumeric() else 0.5 + str(opacity).isnumeric() else 0.5 if hasattr(feature.geometry, "__geo_interface__"): ob = feature.geometry.__geo_interface__ diff --git a/geoportailv3/portail.py b/geoportal/geoportailv3_geoportal/portail.py similarity index 86% rename from geoportailv3/portail.py rename to geoportal/geoportailv3_geoportal/portail.py index 8dad92b81..d791298cd 100644 --- a/geoportailv3/portail.py +++ b/geoportal/geoportailv3_geoportal/portail.py @@ -1,18 +1,11 @@ # -*- coding: utf-8 -*- import datetime -import sqlahelper -from c2cgeoportal.models import * # noqa -from formalchemy import Column +from c2cgeoportal_commons.models import Base +from sqlalchemy import Column from sqlalchemy.types import Integer, String, DateTime -from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base -engine = sqlahelper.get_engine() -Base = declarative_base(bind=engine) -PortailSession = scoped_session(sessionmaker(bind=engine)) - - class Connections(Base): __table_args__ = ({'schema': 'geov3_stats', 'autoload': False}) __tablename__ = 'connections' diff --git a/geoportal/geoportailv3_geoportal/resources.py b/geoportal/geoportailv3_geoportal/resources.py new file mode 100644 index 000000000..8025e7898 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/resources.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from pyramid.security import Allow, ALL_PERMISSIONS + + +class Root: + __acl__ = [ + (Allow, 'role_admin', ALL_PERMISSIONS), + ] + + def __init__(self, request): + self.request = request diff --git a/geoportailv3/routing.py b/geoportal/geoportailv3_geoportal/routing.py similarity index 100% rename from geoportailv3/routing.py rename to geoportal/geoportailv3_geoportal/routing.py diff --git a/geoportal/geoportailv3_geoportal/routing/__init__.py b/geoportal/geoportailv3_geoportal/routing/__init__.py new file mode 100644 index 000000000..40a96afc6 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/routing/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/geoportailv3/graphhopperrouter.py b/geoportal/geoportailv3_geoportal/routing/graphhopperrouter.py similarity index 90% rename from geoportailv3/graphhopperrouter.py rename to geoportal/geoportailv3_geoportal/routing/graphhopperrouter.py index 826808b98..a8aefda21 100644 --- a/geoportailv3/graphhopperrouter.py +++ b/geoportal/geoportailv3_geoportal/routing/graphhopperrouter.py @@ -1,196 +1,191 @@ -# -*- coding: utf-8 -*- -# written by elbe -# reviewed by koje -# reviewed by mire - -import logging -import urllib2 - -try: - from json import loads as json_loads -except: - from simplejson import loads as json_loads - -log = logging.getLogger(__name__) - - -class GraphhopperRouter: - """class that interacts with the graphhopper routing api to calculate the - optimal route""" - - def __init__(self, config): - """constructor""" - logging.basicConfig(level=logging.INFO) - - # graphhopper API Key - self.__apiKey = config['api_key'] - self.__apiEndpoint = config['url'] - - self.waypoints = [] - - self.geom = None - self.desc = [] - self.locations = [] - self.dist = 0 - self.time = 0 - - self.lang = 'fr' - self.transport_mode = 0 - self.criteria = 0 - self.avoid = [] - - self.errorMessages = [] - - self.attribution = '

Routing Data OpenStreetMap contributors

' +\ - '

powered by GraphHopper API

' - - def __send_request(self): - """method that actually sends the routing request to the webservice""" - request_url = "%s?key=%s&points_encoded=false"\ - % (self.__apiEndpoint, self.__apiKey) - - # Waypoints - for waypoint in self.waypoints: - request_url = request_url + "&points=%s,%s"\ - % (waypoint[0], waypoint[1]) - - # Language - request_url = request_url + "&locale=%s" % (self.__lu_lang(self.lang)) - - # Transport mode and criteria - request_url = request_url + "&vehicle=%s"\ - % (self.__lu_transport_mode(self.transport_mode)) - - # log.info(request_url) - - res = json_loads(urllib2.urlopen(request_url).read()) - # log.info(res) - return res - - def __get_route(self): - """method that will coordinate the sending of requests and set the - result to the self attributes""" - - try: - result = self.__send_request() - - except urllib2.HTTPError, e: - - # Bad Request - if e.code == 400: - result = json_loads(e.read()) - self.errorMessages.append("Error: %s" % (result["message"])) - - # API Limit Exceeded - elif e.code == 429: - raise e - else: - # log.error(e) - self.errorMessages.append("Error") - - else: - - if "paths" in result: - - path = result["paths"][0] - - # Route LineString - self.geom = path["points"] - - # Instructions - if "instructions" in path: - instructions = [] - - i = 0 - for maneuver in path["instructions"]: - - instruction = {} - if maneuver["text"]: - instruction["description"] =\ - maneuver["text"].encode("utf-8") - else: - instruction["description"] = "-" - - instruction["direction"] =\ - self.__lu_turn_type(maneuver["sign"]) - - instruction["distance"] = int(maneuver["distance"]) - - # Get the coordinates of the point which this - # instruction applies to from the route LineString - instruction["lat"] = path["points"]["coordinates"][ - maneuver["interval"][0]][1] - instruction["lon"] = path["points"]["coordinates"][ - maneuver["interval"][0]][0] - - instruction["time"] = int(maneuver["time"] / 1e3) - instruction["leg"] = i - instructions.append(instruction) - - # Arrival at a waypoint i.e. the end of a leg - # This is needed to maintain the order of the waypoints - # when dragging the route - if maneuver["sign"] == 5: - i = i + 1 - - self.desc = instructions - - if "distance" in path: - self.dist = int(path["distance"]) - - if "time" in path: - self.time = path["time"] / 1000 - - else: - self.errorMessages.append("Error") - - def add_point(self, lat, lon): - """public method that can be called to add a point to - the viaPts array""" - self.waypoints.append([lat, lon]) - - def execute(self): - """public method used to execute the call""" - self.__get_route() - - def __lu_lang(self, lang): - lang_mapping = { - 'fr': 'fr_FR', - 'de': 'de_DE', - 'en': 'en_US', - 'lb': 'de_DE', - } - return lang_mapping[lang] - - def __lu_turn_type(self, turn_type): - turn_type_mapping = { - -3: 3, # sharp left - -2: 2, # left - -1: 1, # slight left - -7: 2, # keep left - 0: 0, # staight - 1: 7, # slight right - 2: 6, # right - 3: 5, # sharp right - 4: 0, # arrival etc. - 5: 0, # arrival at via point - 6: 0, # roundabout - 7: 6, # keep right - } - return turn_type_mapping[turn_type] - - def __lu_transport_mode(self, mode): - transport_mode_mapping = { - 0: 'car', - 1: 'foot', - 2: 'bike', - } - return transport_mode_mapping[mode] - - def __lu_criteria(self, criteria): - criteria_mapping = { - 0: 'fastest', - 1: 'shortest', # not available on the public api (2015-04-07) - } - return criteria_mapping[criteria] +# -*- coding: utf-8 -*- +# written by elbe +# reviewed by koje +# reviewed by mire + +import logging +import urllib.request +import urllib.error + +from json import loads as json_loads + +log = logging.getLogger(__name__) + + +class GraphhopperRouter: + """class that interacts with the graphhopper routing api to calculate the + optimal route""" + + def __init__(self, config): + """constructor""" + logging.basicConfig(level=logging.INFO) + + # graphhopper API Key + self.__apiKey = config['api_key'] + self.__apiEndpoint = config['url'] + + self.waypoints = [] + + self.geom = None + self.desc = [] + self.locations = [] + self.dist = 0 + self.time = 0 + + self.lang = 'fr' + self.transport_mode = 0 + self.criteria = 0 + self.avoid = [] + + self.errorMessages = [] + + self.attribution = '

Routing Data OpenStreetMap contributors

' +\ + '

powered by GraphHopper API

' + + def __send_request(self): + """method that actually sends the routing request to the webservice""" + request_url = "%s?key=%s&points_encoded=false"\ + % (self.__apiEndpoint, self.__apiKey) + + # Waypoints + for waypoint in self.waypoints: + request_url = request_url + "&points=%s,%s"\ + % (waypoint[0], waypoint[1]) + + # Language + request_url = request_url + "&locale=%s" % (self.__lu_lang(self.lang)) + + # Transport mode and criteria + request_url = request_url + "&vehicle=%s"\ + % (self.__lu_transport_mode(self.transport_mode)) + + log.error(request_url) + + res = json_loads(urllib.request.urlopen(request_url).read()) + log.error(res) + return res + + def __get_route(self): + """method that will coordinate the sending of requests and set the + result to the self attributes""" + + try: + result = self.__send_request() + + except urllib.error.HTTPError as e: + + # Bad Request + if e.code == 400: + result = json_loads(e.read()) + self.errorMessages.append("Error: %s" % (result["message"])) + + # API Limit Exceeded + elif e.code == 429: + raise e + else: + # log.error(e) + self.errorMessages.append("Error") + + else: + if "paths" in result: + + path = result["paths"][0] + + # Route LineString + self.geom = path["points"] + + # Instructions + if "instructions" in path: + instructions = [] + + i = 0 + for maneuver in path["instructions"]: + instruction = {} + if maneuver["text"]: + instruction["description"] = maneuver["text"] + else: + instruction["description"] = "-" + + instruction["direction"] =\ + self.__lu_turn_type(maneuver["sign"]) + + instruction["distance"] = int(maneuver["distance"]) + + # Get the coordinates of the point which this + # instruction applies to from the route LineString + instruction["lat"] = path["points"]["coordinates"][ + maneuver["interval"][0]][1] + instruction["lon"] = path["points"]["coordinates"][ + maneuver["interval"][0]][0] + + instruction["time"] = int(maneuver["time"] / 1e3) + instruction["leg"] = i + instructions.append(instruction) + + # Arrival at a waypoint i.e. the end of a leg + # This is needed to maintain the order of the waypoints + # when dragging the route + if maneuver["sign"] == 5: + i = i + 1 + + self.desc = instructions + + if "distance" in path: + self.dist = int(path["distance"]) + + if "time" in path: + self.time = path["time"] / 1000 + + else: + self.errorMessages.append("Error") + + def add_point(self, lat, lon): + """public method that can be called to add a point to + the viaPts array""" + self.waypoints.append([lat, lon]) + + def execute(self): + """public method used to execute the call""" + self.__get_route() + + def __lu_lang(self, lang): + lang_mapping = { + 'fr': 'fr_FR', + 'de': 'de_DE', + 'en': 'en_US', + 'lb': 'de_DE', + } + return lang_mapping[lang] + + def __lu_turn_type(self, turn_type): + turn_type_mapping = { + -3: 3, # sharp left + -2: 2, # left + -1: 1, # slight left + -7: 2, # keep left + 0: 0, # staight + 1: 7, # slight right + 2: 6, # right + 3: 5, # sharp right + 4: 0, # arrival etc. + 5: 0, # arrival at via point + 6: 0, # roundabout + 7: 6, # keep right + } + return turn_type_mapping[turn_type] + + def __lu_transport_mode(self, mode): + transport_mode_mapping = { + 0: 'car', + 1: 'foot', + 2: 'bike', + } + return transport_mode_mapping[mode] + + def __lu_criteria(self, criteria): + criteria_mapping = { + 0: 'fastest', + 1: 'shortest', # not available on the public api (2015-04-07) + } + return criteria_mapping[criteria] diff --git a/geoportailv3/mapquestrouter.py b/geoportal/geoportailv3_geoportal/routing/mapquestrouter.py similarity index 93% rename from geoportailv3/mapquestrouter.py rename to geoportal/geoportailv3_geoportal/routing/mapquestrouter.py index 25db53870..199463a32 100644 --- a/geoportailv3/mapquestrouter.py +++ b/geoportal/geoportailv3_geoportal/routing/mapquestrouter.py @@ -1,235 +1,234 @@ -# -*- coding: utf-8 -*- -# written by elbe -# reviewed by koje -# reviewed by mire - -import geojson -import logging -import urllib2 -from urllib import quote as urlquote - -try: - from json import loads as json_loads -except: - from simplejson import loads as json_loads - -log = logging.getLogger(__name__) - - -class MapquestRouter: - """ Class that interacts with the mapquest routing api - to calculate the optimal route. """ - - def __init__(self, config): - """constructor""" - logging.basicConfig(level=logging.INFO) - # mapquest API Key - self.__apikey = config['api_key'] - self.__url = config['url'] - self.waypoints = [] - - self.geom = None - self.desc = [] - self.dist = 0 - self.time = 0 - self.locations = [] - - self.lang = 'fr' - self.transport_mode = 0 - self.criteria = 0 - self.avoid = [] - - self.errorMessages = [] - - self.attribution = '

Routing Data OpenStreetMap contributors' +\ - '

Directions Courtesy of MapQuest

' - - def __send_request(self): - """method that actually sends the routing request to the webservice""" - request_url = "%s?key=%s" % (self.__url, self.__apikey) +\ - "&manMaps=false&shapeFormat=raw&generalize=5&unit=k&doRevers" +\ - "eGeocode=false" - - # Starting point - request_url = request_url + "&from=%s,%s"\ - % (self.waypoints[0][0], self.waypoints[0][1]) - - # Via and end points - for waypoint in self.waypoints[1:]: - request_url = request_url + "&to=%s,%s"\ - % (waypoint[0], waypoint[1]) - - # Language - request_url = request_url + "&locale=%s" % (self.__lu_lang(self.lang)) - - # Transport mode and criteria - request_url = request_url + "&routeType=%s"\ - % (self.__route_type(self.transport_mode, self.criteria)) - # Bike settings - if self.transport_mode == 2: - # Cycling road factor - if self.preferBikeRoad == 1: - request_url = request_url + "&cyclingRoadFactor=5" - - if self.bikeAvoidHills == 1: - request_url = request_url +\ - "&roadGradeStrategy=AVOID_ALL_HILLS" - - # Avoid - for type in self.avoid: - request_url = request_url + "&avoids=%s"\ - % (urlquote(self.__lu_avoid(type))) - res = json_loads(urllib2.urlopen(request_url).read()) - return res - - def __get_route(self): - """ Method that will coordinate the sending of requests and - set the result to the self attributes. """ - result = self.__send_request() - - if result["info"]["statuscode"] != 0: - self.errorMessages.extend(result["info"]["messages"]) - return - - if "route" in result: - - if result["route"]["routeError"]["message"]: - self.errorMessages.extend( - result["route"]["routeError"]["message"]) - - # Route LineString - if "shape" in result["route"]: - line = [] - - for i in xrange( - 0, - len(result["route"]["shape"]["shapePoints"]), - 2): - line.append([result["route"]["shape"]["shapePoints"][i+1], - result["route"]["shape"]["shapePoints"][i]]) - - g = geojson.LineString(line) - self.geom = g - - # Instructions - if "legs" in result["route"]: - instructions = [] - - i = 0 - for leg in result["route"]["legs"]: - - for maneuver in leg["maneuvers"]: - - instruction = {} - if maneuver["narrative"]: - instruction["description"] =\ - maneuver["narrative"].encode("utf-8") - else: - instruction["description"] = "-" - - instruction["direction"] =\ - self.__lu_turn_type(maneuver["turnType"]) - - instruction["distance"] =\ - int(maneuver["distance"] * 1000) - instruction["lat"] = maneuver["startPoint"]["lat"] - instruction["lon"] = maneuver["startPoint"]["lng"] - instruction["time"] = maneuver["time"] - instruction["leg"] = i - instructions.append(instruction) - - i = i + 1 - - self.desc = instructions - - if "distance" in result["route"]: - self.dist = int(result["route"]["distance"] * 1000) - - if "time" in result["route"]: - self.time = result["route"]["time"] - - else: - self.errorMessages.append("Error") - - def add_point(self, lat, lon): - """ public method that can be called to add a point to the viaPts - array.""" - self.waypoints.append([lat, lon]) - - def execute(self): - """public method used to execute the call""" - self.__get_route() - - def __route_type(self, transport_mode, criteria): - if transport_mode == 0: - return self.__lu_criteria(criteria) - else: - return self.__lu_transport_mode(transport_mode) - - def __lu_lang(self, lang): - lang_mapping = { - 'fr': 'fr_FR', - 'de': 'de_DE', - 'en': 'en_US', - 'lb': 'de_DE' - } - return lang_mapping[lang] - - def __lu_turn_type(self, turn_type): - turn_type_mapping = { - -1: 0, # arrival etc. - 0: 0, # staight - 1: 7, # slight right - 2: 6, # right - 3: 5, # sharp right - 4: 4, # reverse - 5: 3, # sharp left - 6: 2, # left - 7: 1, # slight left - 8: 4, # right u-turn - 9: 4, # left u-turn - 10: 7, # right merge - 11: 1, # left merge - 12: 6, # right on ramp - 13: 2, # left on ramp - 14: 7, # right off ramp - 15: 1, # left off ramp - 16: 7, # right fork - 17: 1, # left fork - 18: 0, # straight fork - 19: 0, # take transit - 20: 0, # transfer transit - 21: 0, # port transit - 22: 0, # enter transit - 23: 0, # exit transit - } - return turn_type_mapping[turn_type] - - def __lu_transport_mode(self, mode): - transport_mode_mapping = { - 0: 'car', - 1: 'pedestrian', - 2: 'bicycle', - } - return transport_mode_mapping[mode] - - def __lu_criteria(self, criteria): - criteria_mapping = { - 0: 'fastest', - 1: 'shortest' - } - return criteria_mapping[criteria] - - def __lu_avoid(self, criteria): - avoid_mapping = { - '': '', - 'limited': 'Limited Access', - 'toll': 'Toll Road', - 'ferry': 'Ferry', - 'unpaved': 'Unpaved', - 'seasonal': 'Approximate Seasonal Closure', - 'border': 'Country Border Crossing' - } - return avoid_mapping[criteria] +# -*- coding: utf-8 -*- +# written by elbe +# reviewed by koje +# reviewed by mire + +import geojson +import logging +import urllib.request +from urllib.parse import quote as urlquote + +try: + from json import loads as json_loads +except: + from simplejson import loads as json_loads + +log = logging.getLogger(__name__) + + +class MapquestRouter: + """ Class that interacts with the mapquest routing api + to calculate the optimal route. """ + + def __init__(self, config): + """constructor""" + logging.basicConfig(level=logging.INFO) + # mapquest API Key + self.__apikey = config['api_key'] + self.__url = config['url'] + self.waypoints = [] + + self.geom = None + self.desc = [] + self.dist = 0 + self.time = 0 + self.locations = [] + + self.lang = 'fr' + self.transport_mode = 0 + self.criteria = 0 + self.avoid = [] + + self.errorMessages = [] + + self.attribution = '

Routing Data OpenStreetMap contributors' +\ + '

Directions Courtesy of MapQuest

' + + def __send_request(self): + """method that actually sends the routing request to the webservice""" + request_url = "%s?key=%s" % (self.__url, self.__apikey) +\ + "&manMaps=false&shapeFormat=raw&generalize=5&unit=k&doRevers" +\ + "eGeocode=false" + + # Starting point + request_url = request_url + "&from=%s,%s"\ + % (self.waypoints[0][0], self.waypoints[0][1]) + + # Via and end points + for waypoint in self.waypoints[1:]: + request_url = request_url + "&to=%s,%s"\ + % (waypoint[0], waypoint[1]) + + # Language + request_url = request_url + "&locale=%s" % (self.__lu_lang(self.lang)) + + # Transport mode and criteria + request_url = request_url + "&routeType=%s"\ + % (self.__route_type(self.transport_mode, self.criteria)) + # Bike settings + if self.transport_mode == 2: + # Cycling road factor + if self.preferBikeRoad == 1: + request_url = request_url + "&cyclingRoadFactor=5" + + if self.bikeAvoidHills == 1: + request_url = request_url +\ + "&roadGradeStrategy=AVOID_ALL_HILLS" + + # Avoid + for type in self.avoid: + request_url = request_url + "&avoids=%s"\ + % (urlquote(self.__lu_avoid(type))) + res = json_loads(urllib.request.urlopen(request_url).read()) + return res + + def __get_route(self): + """ Method that will coordinate the sending of requests and + set the result to the self attributes. """ + result = self.__send_request() + + if result["info"]["statuscode"] != 0: + self.errorMessages.extend(result["info"]["messages"]) + return + + if "route" in result: + + if result["route"]["routeError"]["message"]: + self.errorMessages.extend( + result["route"]["routeError"]["message"]) + + # Route LineString + if "shape" in result["route"]: + line = [] + + for i in range( + 0, + len(result["route"]["shape"]["shapePoints"]), + 2): + line.append([result["route"]["shape"]["shapePoints"][i+1], + result["route"]["shape"]["shapePoints"][i]]) + + g = geojson.LineString(line) + self.geom = g + + # Instructions + if "legs" in result["route"]: + instructions = [] + + i = 0 + for leg in result["route"]["legs"]: + + for maneuver in leg["maneuvers"]: + + instruction = {} + if maneuver["narrative"]: + instruction["description"] = maneuver["narrative"] + else: + instruction["description"] = "-" + + instruction["direction"] =\ + self.__lu_turn_type(maneuver["turnType"]) + + instruction["distance"] =\ + int(maneuver["distance"] * 1000) + instruction["lat"] = maneuver["startPoint"]["lat"] + instruction["lon"] = maneuver["startPoint"]["lng"] + instruction["time"] = maneuver["time"] + instruction["leg"] = i + instructions.append(instruction) + + i = i + 1 + + self.desc = instructions + + if "distance" in result["route"]: + self.dist = int(result["route"]["distance"] * 1000) + + if "time" in result["route"]: + self.time = result["route"]["time"] + + else: + self.errorMessages.append("Error") + + def add_point(self, lat, lon): + """ public method that can be called to add a point to the viaPts + array.""" + self.waypoints.append([lat, lon]) + + def execute(self): + """public method used to execute the call""" + self.__get_route() + + def __route_type(self, transport_mode, criteria): + if transport_mode == 0: + return self.__lu_criteria(criteria) + else: + return self.__lu_transport_mode(transport_mode) + + def __lu_lang(self, lang): + lang_mapping = { + 'fr': 'fr_FR', + 'de': 'de_DE', + 'en': 'en_US', + 'lb': 'de_DE' + } + return lang_mapping[lang] + + def __lu_turn_type(self, turn_type): + turn_type_mapping = { + -1: 0, # arrival etc. + 0: 0, # staight + 1: 7, # slight right + 2: 6, # right + 3: 5, # sharp right + 4: 4, # reverse + 5: 3, # sharp left + 6: 2, # left + 7: 1, # slight left + 8: 4, # right u-turn + 9: 4, # left u-turn + 10: 7, # right merge + 11: 1, # left merge + 12: 6, # right on ramp + 13: 2, # left on ramp + 14: 7, # right off ramp + 15: 1, # left off ramp + 16: 7, # right fork + 17: 1, # left fork + 18: 0, # straight fork + 19: 0, # take transit + 20: 0, # transfer transit + 21: 0, # port transit + 22: 0, # enter transit + 23: 0, # exit transit + } + return turn_type_mapping[turn_type] + + def __lu_transport_mode(self, mode): + transport_mode_mapping = { + 0: 'car', + 1: 'pedestrian', + 2: 'bicycle', + } + return transport_mode_mapping[mode] + + def __lu_criteria(self, criteria): + criteria_mapping = { + 0: 'fastest', + 1: 'shortest' + } + return criteria_mapping[criteria] + + def __lu_avoid(self, criteria): + avoid_mapping = { + '': '', + 'limited': 'Limited Access', + 'toll': 'Toll Road', + 'ferry': 'Ferry', + 'unpaved': 'Unpaved', + 'seasonal': 'Approximate Seasonal Closure', + 'border': 'Country Border Crossing' + } + return avoid_mapping[criteria] diff --git a/geoportal/geoportailv3_geoportal/scripts/__init__.py b/geoportal/geoportailv3_geoportal/scripts/__init__.py new file mode 100644 index 000000000..46fde18d6 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/scripts/__init__.py @@ -0,0 +1,12 @@ +from pyramid.paster import get_app +from logging.config import fileConfig +import os + + +def get_session(app_config, app_name): + fileConfig(app_config, defaults=os.environ) + get_app(app_config, app_name, options=os.environ) + + # must be done afterwe have loaded the project config + from c2cgeoportal_commons.models import DBSession + return DBSession() diff --git a/geoportailv3/scripts/db2es.py b/geoportal/geoportailv3_geoportal/scripts/db2es.py similarity index 95% rename from geoportailv3/scripts/db2es.py rename to geoportal/geoportailv3_geoportal/scripts/db2es.py index 51b68b148..00454f084 100644 --- a/geoportailv3/scripts/db2es.py +++ b/geoportal/geoportailv3_geoportal/scripts/db2es.py @@ -9,7 +9,8 @@ from elasticsearch import helpers from elasticsearch.helpers import BulkIndexError from elasticsearch.exceptions import ConnectionTimeout -from geoportailv3.lib.search import get_elasticsearch, get_index, ensure_index +from geoportailv3_geoportal.lib.search import get_elasticsearch, get_index, \ + ensure_index """ Utility functions for importing data into Elasticsearch from database @@ -61,7 +62,7 @@ def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'ri', ['reset', 'index']) except getopt.GetoptError as err: - print str(err) + print(str(err)) sys.exit(2) index = False reset = False @@ -99,7 +100,7 @@ def main(): chunk_size=multiple, raise_on_error=True) except (BulkIndexError, ConnectionTimeout) as e: - print "\n %s" % e + print("\n {}".format(e)) if not results: statuslog("\n") break diff --git a/geoportal/geoportailv3_geoportal/scripts/finalize_c2c_23_data_adaptations.py b/geoportal/geoportailv3_geoportal/scripts/finalize_c2c_23_data_adaptations.py new file mode 100644 index 000000000..d9549ad0c --- /dev/null +++ b/geoportal/geoportailv3_geoportal/scripts/finalize_c2c_23_data_adaptations.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- + +import os +import os.path +import argparse +import warnings +import transaction + +from sqlalchemy import text +from . import get_session + + +def main(): + app_config = "production.ini" + app_name = "app" + + if not os.path.isfile(app_config): + "Cannot find config file: {0!s}".format(app_config) + 0 + + # Ignores pyramid deprecation warnings + warnings.simplefilter("ignore", DeprecationWarning) + + session = get_session(app_config, app_name) + from c2cgeoportal_commons.models import DBSession, main, static + from c2cgeoportal_commons.models.main import OGCSERVER_TYPE_MAPSERVER, \ + OGCSERVER_TYPE_GEOSERVER,OGCSERVER_AUTH_NOAUTH, OGCServer, Metadata, \ + TreeItem, TreeGroup, LayerGroup, LayerWMS, RestrictionArea, Interface + from geoportailv3_geoportal.models import LuxLayerInternalWMS + + + + # Restriction area must have a name. + for r_area in session.query(RestrictionArea).all(): + if r_area.name is None: + r_area.name = 'restrictionarea-{}'.format(r_area.id) + session.add(r_area) + ###### select * from geov3.restrictionarea where name is null or name = ''; + ###### do we need a unique name? + + + transaction.commit() + + # Create new ogc_server if not already exists based on url in LuxLayerInternalWMS. + for luxwms in session.query(LuxLayerInternalWMS).distinct(LuxLayerInternalWMS.url).all(): + url = luxwms.url + if url is not None: + type = OGCSERVER_TYPE_GEOSERVER if 'arcgis' in url else OGCSERVER_TYPE_MAPSERVER + already_exists = session.query(OGCServer).filter(OGCServer.url == url).one_or_none() + if already_exists is None: + ogc_server = OGCServer( + name=url, + description='Generated during migration to GMF 2.3', + url=url, + type_=type, + image_type='image/png', + auth=OGCSERVER_AUTH_NOAUTH, + ) + session.add(ogc_server) + + transaction.commit() + + + + # Set correct ogc_server for LuxLayerInternalWMS with url. + for luxwms in session.query(LuxLayerInternalWMS).all(): + url = luxwms.url + if url is not None: + ogc_server = session.query(OGCServer).filter(OGCServer.url == url).one() + layer_wms = session.query(LayerWMS).filter(LayerWMS.id == luxwms.id).one() + layer_wms.ogc_server_id = ogc_server.id + session.add(layer_wms) + + transaction.commit() + + + + # End note: + # Now the the column 'url' in LuxLayerInternalWMS must be manually removed. + + +if __name__ == "__main__": + main() diff --git a/geoportailv3/scripts/layers2es.py b/geoportal/geoportailv3_geoportal/scripts/layers2es.py similarity index 92% rename from geoportailv3/scripts/layers2es.py rename to geoportal/geoportailv3_geoportal/scripts/layers2es.py index 5a20f79f7..43e5b1697 100644 --- a/geoportailv3/scripts/layers2es.py +++ b/geoportal/geoportailv3_geoportal/scripts/layers2es.py @@ -37,11 +37,13 @@ import yaml import requests import json +import os from argparse import ArgumentParser from pyramid.paster import get_app, bootstrap from pyramid.i18n import TranslationStringFactory, make_localizer from pyramid.interfaces import ITranslationDirectories -from geoportailv3.lib.search import get_elasticsearch, get_index, ensure_index +from geoportailv3_geoportal.lib.search import get_elasticsearch, get_index, \ + ensure_index from elasticsearch import helpers from elasticsearch.helpers import BulkIndexError from elasticsearch.exceptions import ConnectionTimeout @@ -126,7 +128,7 @@ def main(): app_name = options.app_name if app_name is None and "#" in app_config: app_config, app_name = app_config.split("#", 1) - get_app(app_config, name=app_name) + get_app(app_config, name=app_name, options=os.environ) Import(options) @@ -138,29 +140,32 @@ def __init__(self, options): self.layers = [] settings = {} - with open(".build/config.yaml") as f: + with open("config.yaml") as f: settings = yaml.load(f) - self.languages = settings["available_locale_names"] - exluded_themes_string = settings["excluded_themes_from_search"] + self.languages = settings["vars"]["available_locale_names"] + exluded_themes_string = settings["vars"]["excluded_themes_from_search"] exluded_themes = [] if exluded_themes_string is not None: exluded_themes = exluded_themes_string.split(",") # must be done only once we have loaded the project config - from c2cgeoportal.models import DBSession, Interface, Theme, Role + from c2cgeoportal_commons.models import DBSession + from c2cgeoportal_commons.models.main import Interface, Theme, Role self.session = DBSession() self._ = {} self.metadata_service_url = \ 'http://shop.geoportail.lu/Portail/inspire/webservices/getMD.jsp' - registry = bootstrap(self.options.app_config)['registry'] - request = bootstrap(self.options.app_config)['request'] + + with bootstrap(self.options.app_config, options=os.environ) as env: + registry = env['registry'] + request = env['request'] self.es_layer_index = get_index(request) + '_layers' self.tdirs = registry.queryUtility(ITranslationDirectories, default=[]) - self.tsf = TranslationStringFactory('geoportailv3-client') + self.tsf = TranslationStringFactory('geoportailv3_geoportal-client') self.interfaces = self.session.query(Interface).filter( Interface.name.in_(options.interfaces) @@ -231,7 +236,7 @@ def _add_fts(self, item, interface, action, role): 'description': '', 'metadata_name': '' } - for metadata in item.ui_metadata: + for metadata in item.metadatas: if metadata.name == 'metadata_id': params = dict( uid=metadata.value, @@ -240,6 +245,7 @@ def _add_fts(self, item, interface, action, role): try: resp = requests.get(url=self.metadata_service_url, params=params) + data = {} try: data = json.loads(resp.text) except: @@ -279,7 +285,7 @@ def _add_folder(self, group, interface, role): return self._add_group(group, interface, self.options.folders, role) def _add_group(self, group, interface, export, role): - from c2cgeoportal.models import LayerGroup + from c2cgeoportal_commons.models.main import LayerGroup fill = False if hasattr(group, 'children'): @@ -307,7 +313,7 @@ def _layer_visible(self, layer, role): return False def _add_layer(self, layer, interface, role): - from c2cgeoportal.models import LayerV1 + from c2cgeoportal_commons.models.main import LayerV1 if isinstance(layer, LayerV1): return False diff --git a/geoportailv3/scripts/tooltips2pot.py b/geoportal/geoportailv3_geoportal/scripts/tooltips2pot.py similarity index 77% rename from geoportailv3/scripts/tooltips2pot.py rename to geoportal/geoportailv3_geoportal/scripts/tooltips2pot.py index 3b5ea8027..e688d76a6 100644 --- a/geoportailv3/scripts/tooltips2pot.py +++ b/geoportal/geoportailv3_geoportal/scripts/tooltips2pot.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- import codecs -import sqlahelper import traceback import sys -import urllib2 +import urllib.request +import urllib.parse import re from os import path from pyramid.paster import bootstrap -from urllib import urlencode from geojson import loads as geojson_loads +from . import get_session +TIMEOUT=15 def _get_external_data(url, bbox=None, layer=None): body = {'f': 'pjson', @@ -32,10 +33,11 @@ def _get_external_data(url, bbox=None, layer=None): separator = "?" if url.find('?'): separator = "&" - query = '%s%s%s' % (url, separator, urlencode(body)) + query = '%s%s%s' % (url, separator, urllib.parse.urlencode(body)) try: - result = urllib2.urlopen(query, None, 15) + print('Requesting %s' % query) + result = urllib.request.urlopen(query, None, TIMEOUT) content = result.read() except: traceback.print_exc(file=sys.stdout) @@ -46,12 +48,12 @@ def _get_external_data(url, bbox=None, layer=None): except: return [] if 'fieldAliases' not in esricoll: - print("Error with the layer: %s using query : %s response: %s" - % (layer, query, esricoll)) + print(("Error with the layer: %s using query : %s response: %s" + % (layer, query, esricoll))) return [] else: return dict((value, key) - for key, value in esricoll['fieldAliases'].iteritems()) + for key, value in esricoll['fieldAliases'].items()) def remove_attributes(attributes, attributes_to_remove, @@ -70,16 +72,13 @@ def remove_attributes(attributes, attributes_to_remove, def main(): # pragma: nocover - env = bootstrap("development.ini") - from geoportailv3.models import LuxGetfeatureDefinition + session = get_session('development.ini', 'app') + from c2cgeoportal_commons.models import DBSession, DBSessions + from geoportailv3_geoportal.models import LuxGetfeatureDefinition - package = env["registry"].settings["package"] - directory = "%s/locale/" % package - destination = path.join(directory, "%s-tooltips.pot" % package) - - w = codecs.open(destination, "wt", encoding="utf-8") + w = codecs.open("/tmp/tooltips.pot", "w", encoding="utf-8") w.write( - u'''#, fuzzy + '''#, fuzzy msgid "" msgstr "" "MIME-Version: 1.0\\n" @@ -88,22 +87,21 @@ def main(): # pragma: nocover ''' ) - dbsession = sqlahelper.get_session() - results = dbsession.query(LuxGetfeatureDefinition).\ + results = session.query(LuxGetfeatureDefinition).\ filter(LuxGetfeatureDefinition.remote_template == False).filter( LuxGetfeatureDefinition.template.in_ (['default.html', 'default_table.html'])).all() # noqa fields = [] + print("%d results" % len(results)) for result in results: - engine = sqlahelper.get_engine(result.engine_gfi) + engine = DBSessions[result.engine_gfi] first_row = None if result.query is not None and len(result.query) > 0: if "SELECT" in result.query.upper(): first_row = engine.execute(result.query).first() else: - first_row =\ - engine.execute("SELECT * FROM " + result.query).first() + first_row = engine.execute("SELECT * FROM " + result.query).first() if result.rest_url is not None and len(result.rest_url) > 0: first_row = _get_external_data( result.rest_url, @@ -125,7 +123,7 @@ def main(): # pragma: nocover if attribute not in fields: fields.append(attribute) w.write( - u'''#: engine:%(engine)s Layer:%(layer)s Role:%(role)s + '''#: engine:%(engine)s Layer:%(layer)s Role:%(role)s msgid "f_%(name)s" msgstr "" ''' % { @@ -135,4 +133,4 @@ def main(): # pragma: nocover "name": attribute, } ) - print("tooltips Pot file updated: %s" % destination) + print(("tooltips Pot file updated: %s" % destination)) diff --git a/geoportailv3/static/apihelp/MonFichier.txt b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/MonFichier.txt similarity index 100% rename from geoportailv3/static/apihelp/MonFichier.txt rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/MonFichier.txt diff --git a/geoportailv3/static/apihelp/github.css b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/github.css similarity index 100% rename from geoportailv3/static/apihelp/github.css rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/github.css diff --git a/geoportailv3/static/apihelp/images/essence.png b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/images/essence.png similarity index 100% rename from geoportailv3/static/apihelp/images/essence.png rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/images/essence.png diff --git a/geoportailv3/static/apihelp/images/info.png b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/images/info.png similarity index 100% rename from geoportailv3/static/apihelp/images/info.png rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/images/info.png diff --git a/geoportailv3/static/apihelp/images/parking.png b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/images/parking.png similarity index 100% rename from geoportailv3/static/apihelp/images/parking.png rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/images/parking.png diff --git a/geoportailv3/static/apihelp/rainbow-custom.min.js b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/rainbow-custom.min.js similarity index 100% rename from geoportailv3/static/apihelp/rainbow-custom.min.js rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/rainbow-custom.min.js diff --git a/geoportailv3/static/apihelp/track0.gpx b/geoportal/geoportailv3_geoportal/static-ngeo/apihelp/track0.gpx similarity index 100% rename from geoportailv3/static/apihelp/track0.gpx rename to geoportal/geoportailv3_geoportal/static-ngeo/apihelp/track0.gpx diff --git a/geoportailv3/static/css/proj-map.css b/geoportal/geoportailv3_geoportal/static-ngeo/css/proj-map.css similarity index 100% rename from geoportailv3/static/css/proj-map.css rename to geoportal/geoportailv3_geoportal/static-ngeo/css/proj-map.css diff --git a/geoportailv3/static/css/proj-routing.css b/geoportal/geoportailv3_geoportal/static-ngeo/css/proj-routing.css similarity index 100% rename from geoportailv3/static/css/proj-routing.css rename to geoportal/geoportailv3_geoportal/static-ngeo/css/proj-routing.css diff --git a/geoportailv3/static/css/proj-widgets.css b/geoportal/geoportailv3_geoportal/static-ngeo/css/proj-widgets.css similarity index 100% rename from geoportailv3/static/css/proj-widgets.css rename to geoportal/geoportailv3_geoportal/static-ngeo/css/proj-widgets.css diff --git a/geoportailv3/static/css/proj.css b/geoportal/geoportailv3_geoportal/static-ngeo/css/proj.css similarity index 100% rename from geoportailv3/static/css/proj.css rename to geoportal/geoportailv3_geoportal/static-ngeo/css/proj.css diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.eot b/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 000000000..6bbc3cf58 Binary files /dev/null and b/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.eot differ diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.svg b/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 000000000..bad5ccadf --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.woff b/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 000000000..e231183dc Binary files /dev/null and b/geoportal/geoportailv3_geoportal/static-ngeo/fonts/OpenSans-Regular-webfont.woff differ diff --git a/geoportailv3/static/images/3d/angle.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/3d/angle.png similarity index 100% rename from geoportailv3/static/images/3d/angle.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/3d/angle.png diff --git a/geoportailv3/static/images/3d/left.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/3d/left.png similarity index 100% rename from geoportailv3/static/images/3d/left.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/3d/left.png diff --git a/geoportailv3/static/images/3d/right.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/3d/right.png similarity index 100% rename from geoportailv3/static/images/3d/right.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/3d/right.png diff --git a/geoportailv3/static/images/3d/rotation.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/3d/rotation.png similarity index 100% rename from geoportailv3/static/images/3d/rotation.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/3d/rotation.png diff --git a/geoportailv3/static/images/3d/zoomin.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/3d/zoomin.png similarity index 100% rename from geoportailv3/static/images/3d/zoomin.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/3d/zoomin.png diff --git a/geoportailv3/static/images/3d/zoomout.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/3d/zoomout.png similarity index 100% rename from geoportailv3/static/images/3d/zoomout.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/3d/zoomout.png diff --git a/geoportailv3/static/images/apple-icon-114x114-precomposed.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-114x114-precomposed.png similarity index 100% rename from geoportailv3/static/images/apple-icon-114x114-precomposed.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-114x114-precomposed.png diff --git a/geoportailv3/static/images/apple-icon-114x114.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-114x114.png similarity index 100% rename from geoportailv3/static/images/apple-icon-114x114.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-114x114.png diff --git a/geoportailv3/static/images/apple-icon-144x144-precomposed.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-144x144-precomposed.png similarity index 100% rename from geoportailv3/static/images/apple-icon-144x144-precomposed.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-144x144-precomposed.png diff --git a/geoportailv3/static/images/apple-icon-144x144.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-144x144.png similarity index 100% rename from geoportailv3/static/images/apple-icon-144x144.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-144x144.png diff --git a/geoportailv3/static/images/apple-icon-57x57-precomposed.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-57x57-precomposed.png similarity index 100% rename from geoportailv3/static/images/apple-icon-57x57-precomposed.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-57x57-precomposed.png diff --git a/geoportailv3/static/images/apple-icon-57x57.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-57x57.png similarity index 100% rename from geoportailv3/static/images/apple-icon-57x57.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-57x57.png diff --git a/geoportailv3/static/images/apple-icon-72x72-precomposed.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-72x72-precomposed.png similarity index 100% rename from geoportailv3/static/images/apple-icon-72x72-precomposed.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-72x72-precomposed.png diff --git a/geoportailv3/static/images/apple-icon-72x72.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-72x72.png similarity index 100% rename from geoportailv3/static/images/apple-icon-72x72.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/apple-icon-72x72.png diff --git a/geoportailv3/static/images/arrow.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/arrow.png similarity index 100% rename from geoportailv3/static/images/arrow.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/arrow.png diff --git a/geoportailv3/static/images/arrow_sv.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/arrow_sv.png similarity index 100% rename from geoportailv3/static/images/arrow_sv.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/arrow_sv.png diff --git a/geoportailv3/static/images/directionArrow.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/directionArrow.png similarity index 100% rename from geoportailv3/static/images/directionArrow.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/directionArrow.png diff --git a/geoportailv3/static/images/direction_sv.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv.png similarity index 100% rename from geoportailv3/static/images/direction_sv.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv.png diff --git a/geoportailv3/static/images/direction_sv_zl1.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl1.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1.png diff --git a/geoportailv3/static/images/direction_sv_zl1_p0.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p0.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl1_p0.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p0.png diff --git a/geoportailv3/static/images/direction_sv_zl1_p1.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p1.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl1_p1.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p1.png diff --git a/geoportailv3/static/images/direction_sv_zl1_p2.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p2.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl1_p2.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p2.png diff --git a/geoportailv3/static/images/direction_sv_zl1_p3.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p3.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl1_p3.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl1_p3.png diff --git a/geoportailv3/static/images/direction_sv_zl2.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl2.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2.png diff --git a/geoportailv3/static/images/direction_sv_zl2_p0.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p0.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl2_p0.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p0.png diff --git a/geoportailv3/static/images/direction_sv_zl2_p1.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p1.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl2_p1.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p1.png diff --git a/geoportailv3/static/images/direction_sv_zl2_p2.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p2.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl2_p2.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p2.png diff --git a/geoportailv3/static/images/direction_sv_zl2_p3.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p3.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl2_p3.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl2_p3.png diff --git a/geoportailv3/static/images/direction_sv_zl3.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl3.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3.png diff --git a/geoportailv3/static/images/direction_sv_zl3_p0.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p0.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl3_p0.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p0.png diff --git a/geoportailv3/static/images/direction_sv_zl3_p1.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p1.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl3_p1.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p1.png diff --git a/geoportailv3/static/images/direction_sv_zl3_p2.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p2.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl3_p2.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p2.png diff --git a/geoportailv3/static/images/direction_sv_zl3_p3.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p3.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl3_p3.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl3_p3.png diff --git a/geoportailv3/static/images/direction_sv_zl4.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl4.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4.png diff --git a/geoportailv3/static/images/direction_sv_zl4_p0.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p0.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl4_p0.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p0.png diff --git a/geoportailv3/static/images/direction_sv_zl4_p1.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p1.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl4_p1.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p1.png diff --git a/geoportailv3/static/images/direction_sv_zl4_p2.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p2.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl4_p2.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p2.png diff --git a/geoportailv3/static/images/direction_sv_zl4_p3.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p3.png similarity index 100% rename from geoportailv3/static/images/direction_sv_zl4_p3.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/direction_sv_zl4_p3.png diff --git a/geoportailv3/static/images/favicon.ico b/geoportal/geoportailv3_geoportal/static-ngeo/images/favicon.ico similarity index 100% rename from geoportailv3/static/images/favicon.ico rename to geoportal/geoportailv3_geoportal/static-ngeo/images/favicon.ico diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/images/gov-light.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/gov-light.png new file mode 100644 index 000000000..cdb129505 Binary files /dev/null and b/geoportal/geoportailv3_geoportal/static-ngeo/images/gov-light.png differ diff --git a/geoportailv3/static/images/profile.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/profile.png similarity index 100% rename from geoportailv3/static/images/profile.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/profile.png diff --git a/geoportailv3/static/images/sv_bg.png b/geoportal/geoportailv3_geoportal/static-ngeo/images/sv_bg.png similarity index 100% rename from geoportailv3/static/images/sv_bg.png rename to geoportal/geoportailv3_geoportal/static-ngeo/images/sv_bg.png diff --git a/geoportailv3/static/js/activetoolservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Activetool.js similarity index 65% rename from geoportailv3/static/js/activetoolservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Activetool.js index aeca7ce47..3c291edfa 100644 --- a/geoportailv3/static/js/activetoolservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Activetool.js @@ -1,18 +1,19 @@ +/** + * @module app.Activetool + */ /** * @fileoverview This file provides an Angular service to share which tool is * active. */ -goog.provide('app.Activetool'); -goog.require('app'); -goog.require('app.SelectedFeatures'); +import appModule from './module.js'; /** - * @param {app.SelectedFeatures} appSelectedFeatures Selected features service. + * @param {app.draw.SelectedFeatures} appSelectedFeatures Selected features service. * @constructor * @ngInject */ -app.Activetool = function(appSelectedFeatures) { +const exports = function(appSelectedFeatures) { /** * @type {ol.Collection} @@ -41,8 +42,11 @@ app.Activetool = function(appSelectedFeatures) { * Is a tool activated * @return {boolean} The exploded features. */ -app.Activetool.prototype.isActive = function() { +exports.prototype.isActive = function() { return (this.drawActive || this.measureActive || this.streetviewActive); }; -app.module.service('appActivetool', app.Activetool); +appModule.service('appActivetool', exports); + + +export default exports; diff --git a/geoportailv3/static/js/coordinatestringservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/CoordinateStringService.js similarity index 72% rename from geoportailv3/static/js/coordinatestringservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/CoordinateStringService.js index 88a430bc0..2666abe2e 100644 --- a/geoportailv3/static/js/coordinatestringservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/CoordinateStringService.js @@ -1,21 +1,17 @@ /** - * @fileoverview Provides a coordinate string output service, useful for - * correctly formatted coordinate strings in different projections. + * @module app.CoordinateStringService */ - -goog.provide('app.CoordinateString'); - -goog.require('app.projections'); -goog.require('goog.math'); -goog.require('goog.string'); -goog.require('ol.coordinate'); -goog.require('ol.proj'); - +let exports = {}; /** - * @typedef {function(ol.Coordinate, string, string, boolean, boolean):string} + * @fileoverview Provides a coordinate string output service, useful for + * correctly formatted coordinate strings in different projections. */ -app.CoordinateString; + +import appModule from './module.js'; +import {format} from 'ol/coordinate.js'; +import {transform} from 'ol/proj.js'; +import {padNumber} from 'ol/string.js'; /** @@ -23,7 +19,7 @@ app.CoordinateString; * @return {app.CoordinateString} The coordinate string. * @ngInject */ -app.coordinateString_ = function() { +function service() { return coordinateString; /** @@ -39,16 +35,16 @@ app.coordinateString_ = function() { var str = ''; if (targetEpsgCode === 'EPSG:3263*') { var lonlat = /** @type {ol.Coordinate} */ - (ol.proj.transform(coordinate, sourceEpsgCode, 'EPSG:4326')); + (transform(coordinate, sourceEpsgCode, 'EPSG:4326')); targetEpsgCode = Math.floor(lonlat[0]) >= 6 ? 'EPSG:32632' : 'EPSG:32631'; } - coordinate = ol.proj.transform(coordinate, sourceEpsgCode, targetEpsgCode); + coordinate = transform(coordinate, sourceEpsgCode, targetEpsgCode); switch (targetEpsgCode) { default: case 'EPSG:2169': - str = ol.coordinate.format(coordinate, '{x} E | {y} N', 0); + str = format(coordinate, '{x} E | {y} N', 0); break; case 'EPSG:4326': if (opt_DMS) { @@ -62,14 +58,14 @@ app.coordinateString_ = function() { var xhdmm = hdmm.split(' ').slice(3, 6).join(' '); str = xhdmm + ' | ' + yhdmm; } else { - str = ol.coordinate.format(coordinate, ' {x} E | {y} N', 5); + str = format(coordinate, ' {x} E | {y} N', 5); } break; case 'EPSG:32632': - str = ol.coordinate.format(coordinate, '{x} | {y} (UTM32N)', 0); + str = format(coordinate, '{x} | {y} (UTM32N)', 0); break; case 'EPSG:32631': - str = ol.coordinate.format(coordinate, '{x} | {y} (UTM31N)', 0); + str = format(coordinate, '{x} | {y} (UTM31N)', 0); break; } return str; @@ -81,7 +77,7 @@ app.coordinateString_ = function() { * @return {string} Hemisphere, degrees, minutes and seconds. */ function toStringHDMS_(coordinate) { - if (goog.isDef(coordinate)) { + if (coordinate !== undefined) { return degreesToStringHDMS_(coordinate[1], 'NS') + ' ' + degreesToStringHDMS_(coordinate[0], 'EW'); } else { @@ -95,7 +91,7 @@ app.coordinateString_ = function() { * @return {string} Hemisphere, degrees, decimal minutes. */ function toStringHDMm_(coordinate) { - if (goog.isDef(coordinate)) { + if (coordinate !== undefined) { return degreesToStringHDMm_(coordinate[1], 'NS') + ' ' + degreesToStringHDMm_(coordinate[0], 'EW'); } else { @@ -110,11 +106,11 @@ app.coordinateString_ = function() { * @return {string} String. */ function degreesToStringHDMS_(degrees, hemispheres) { - var normalizedDegrees = goog.math.modulo(degrees + 180, 360) - 180; + var normalizedDegrees = ((degrees + 180) % 360) - 180; var x = Math.abs(3600 * normalizedDegrees); return Math.floor(x / 3600) + '\u00b0 ' + - goog.string.padNumber(Math.floor((x / 60) % 60), 2) + '\u2032 ' + - goog.string.padNumber(Math.floor(x % 60), 2) + ',' + + padNumber(Math.floor((x / 60) % 60), 2) + '\u2032 ' + + padNumber(Math.floor(x % 60), 2) + ',' + Math.floor((x - (x < 0 ? Math.ceil(x) : Math.floor(x))) * 10) + '\u2033 ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0); } @@ -126,17 +122,22 @@ app.coordinateString_ = function() { * @return {string} String. */ function degreesToStringHDMm_(degrees, hemispheres) { - var normalizedDegrees = goog.math.modulo(degrees + 180, 360) - 180; + var normalizedDegrees = ((degrees + 180) % 360) - 180; var x = Math.abs(3600 * normalizedDegrees); var dd = x / 3600; var m = (dd - Math.floor(dd)) * 60; var res = Math.floor(dd) + '\u00b0 ' + - goog.string.padNumber(Math.floor(m), 2) + ',' + + padNumber(Math.floor(m), 2) + ',' + Math.floor((m - Math.floor(m)) * 100000) + '\u2032 ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0); return res; } -}; -app.module.service('appCoordinateString', app.coordinateString_); +} + + +appModule.service('appCoordinateString', service); + + +export default exports; diff --git a/geoportailv3/static/js/exclusionmanagerservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/ExclusionManager.js similarity index 72% rename from geoportailv3/static/js/exclusionmanagerservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/ExclusionManager.js index 7fcb6d759..e528bfab2 100644 --- a/geoportailv3/static/js/exclusionmanagerservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/ExclusionManager.js @@ -1,30 +1,32 @@ +/** + * @module app.ExclusionManager + */ /** * @fileoverview This file defines the Exclusion service. This service manages * the exclusion between layers. */ -goog.provide('app.ExclusionManager'); -goog.require('app'); -goog.require('app.BlankLayer'); -goog.require('app.Notify'); -goog.require('goog.asserts'); -goog.require('goog.array'); -goog.require('ngeo.map.BackgroundLayerMgr'); -goog.require('ol.Object'); -goog.require('ol.Observable'); -goog.require('ol.events'); +import appModule from './module.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; + +import {unByKey} from 'ol/Observable.js'; +import {getChangeEventType} from 'ol/Object.js'; +import {listen} from 'ol/events.js'; +import olLayerProperty from 'ol/layer/Property.js'; +import olCollectionEventType from 'ol/CollectionEventType.js'; +import {getUid} from 'ol/index.js'; /** * @param {angularGettext.Catalog} gettextCatalog Gettext catalog. * @param {ngeo.map.BackgroundLayerMgr} ngeoBackgroundLayerMgr Background layer * manager. - * @param {app.BlankLayer} appBlankLayer Blank layer service. + * @param {app.backgroundlayer.BlankLayer} appBlankLayer Blank layer service. * @param {app.Notify} appNotify Notify service. * @constructor * @ngInject */ -app.ExclusionManager = function(gettextCatalog, ngeoBackgroundLayerMgr, +const exports = function(gettextCatalog, ngeoBackgroundLayerMgr, appBlankLayer, appNotify) { /** @@ -34,7 +36,7 @@ app.ExclusionManager = function(gettextCatalog, ngeoBackgroundLayerMgr, this.backgroundLayerMgr_ = ngeoBackgroundLayerMgr; /** - * @type {app.BlankLayer} + * @type {app.backgroundlayer.BlankLayer} * @private */ this.blankLayer_ = appBlankLayer; @@ -60,11 +62,11 @@ app.ExclusionManager = function(gettextCatalog, ngeoBackgroundLayerMgr, * @return {boolean} Whether the array intersect or not. * @private */ -app.ExclusionManager.prototype.intersects_ = function(one, two) { +exports.prototype.intersects_ = function(one, two) { var arr1 = /** @type {Array} */ (JSON.parse(one)); var arr2 = /** @type {Array} */ (JSON.parse(two)); var concat = arr1.concat(arr2); - goog.array.sort(concat); + concat.sort(); var i; var len = concat.length; for (i = 1; i < len; i++) { @@ -82,19 +84,19 @@ app.ExclusionManager.prototype.intersects_ = function(one, two) { * opacity property has changed. * @private */ -app.ExclusionManager.prototype.checkForLayerExclusion_ = function(map, layer1) { +exports.prototype.checkForLayerExclusion_ = function(map, layer1) { var opacity = layer1.getOpacity(); // don't do anything if layer is not displayed on map if (opacity === 0) { return; } - if (!goog.isDef(layer1.get('metadata'))) { + if (layer1.get('metadata') === undefined) { return; } var exclusion1 = layer1.get('metadata')['exclusion']; - if (!goog.isDef(exclusion1)) { + if (exclusion1 === undefined) { return; } @@ -107,8 +109,8 @@ app.ExclusionManager.prototype.checkForLayerExclusion_ = function(map, layer1) { var layersToRemove = []; for (i = len - 1; i >= 0; i--) { layer2 = layers[i]; - if (layer2 == layer1 || !goog.isDef(layer2.get('metadata')) || - !goog.isDef(layer2.get('metadata')['exclusion'])) { + if (layer2 == layer1 || layer2.get('metadata') === undefined || + layer2.get('metadata')['exclusion'] === undefined) { continue; } @@ -132,7 +134,7 @@ app.ExclusionManager.prototype.checkForLayerExclusion_ = function(map, layer1) { /** @type {string} */(layer1.get('label'))) } ); - this.notify_(msg, app.NotifyNotificationType.WARNING); + this.notify_(msg, appNotifyNotificationType.WARNING); } } } @@ -150,7 +152,7 @@ app.ExclusionManager.prototype.checkForLayerExclusion_ = function(map, layer1) { 'layer': gettextCatalog.getString( /** @type {string} */(layer1.get('label'))) }); - this.notify_(msg, app.NotifyNotificationType.WARNING); + this.notify_(msg, appNotifyNotificationType.WARNING); } }; @@ -158,12 +160,12 @@ app.ExclusionManager.prototype.checkForLayerExclusion_ = function(map, layer1) { /** * @param {ol.Map} map The OpenLayers map. */ -app.ExclusionManager.prototype.init = function(map) { +exports.prototype.init = function(map) { var layerOpacityListenerKeys = {}; // listen on layers being added to the map // base layers switch should fire the event as well - ol.events.listen(map.getLayers(), ol.CollectionEventType.ADD, + listen(map.getLayers(), olCollectionEventType.ADD, /** * @param {ol.Collection.Event} e Collection event. */ @@ -172,24 +174,26 @@ app.ExclusionManager.prototype.init = function(map) { this.checkForLayerExclusion_(map, layer); // listen on opacity change - var key = ol.events.listen(layer, - ol.Object.getChangeEventType(ol.layer.Property.OPACITY), + var key = listen(layer, + getChangeEventType(olLayerProperty.OPACITY), function(e) { this.checkForLayerExclusion_(map, layer); }, this); - layerOpacityListenerKeys[goog.getUid(layer)] = key; + layerOpacityListenerKeys[getUid(layer)] = key; }, this); // remove any listener on opacity change when layer is removed from map - ol.events.listen(map.getLayers(), ol.CollectionEventType.REMOVE, + listen(map.getLayers(), olCollectionEventType.REMOVE, /** * @param {ol.Collection.Event} e Collection event. */ function(e) { var layer = /** @type {ol.layer.Layer} */ (e.element); - goog.asserts.assert(goog.getUid(layer) in layerOpacityListenerKeys); - ol.Observable.unByKey(layerOpacityListenerKeys[goog.getUid(layer)]); + console.assert(getUid(layer) in layerOpacityListenerKeys); + unByKey(layerOpacityListenerKeys[getUid(layer)]); }, this); }; +appModule.service('appExclusionManager', exports); + -app.module.service('appExclusionManager', app.ExclusionManager); +export default exports; diff --git a/geoportailv3/static/js/exportservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Export.js similarity index 76% rename from geoportailv3/static/js/exportservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Export.js index 756baf7dd..7d7e1b1c5 100644 --- a/geoportailv3/static/js/exportservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Export.js @@ -1,16 +1,18 @@ +/** + * @module app.Export + */ /** * @fileoverview This file provides an Angular service for interacting * with the "export" web service. */ -goog.provide('app.Export'); - -goog.require('app'); -goog.require('goog.array'); -goog.require('ol.format.GPX'); -goog.require('ol.format.GeoJSON'); -goog.require('ol.format.KML'); -goog.require('ol.geom.MultiLineString'); +import appModule from './module.js'; +import olGeomGeometryType from 'ol/geom/GeometryType.js'; +import appMiscFile from './misc/file.js'; +import olFormatGPX from 'ol/format/GPX.js'; +import olFormatGeoJSON from 'ol/format/GeoJSON.js'; +import olFormatKML from 'ol/format/KML.js'; +import olGeomMultiLineString from 'ol/geom/MultiLineString.js'; /** * @constructor @@ -18,7 +20,7 @@ goog.require('ol.geom.MultiLineString'); * @param {string} exportgpxkmlUrl URL to echo web service. * @ngInject */ -app.Export = function($document, exportgpxkmlUrl) { +const exports = function($document, exportgpxkmlUrl) { /** * @type {ol.Map} @@ -53,13 +55,13 @@ app.Export = function($document, exportgpxkmlUrl) { * @private * @type {ol.format.KML} */ - this.kmlFormat_ = new ol.format.KML(); + this.kmlFormat_ = new olFormatKML(); /** * @private * @type {ol.format.GPX} */ - this.gpxFormat_ = new ol.format.GPX(); + this.gpxFormat_ = new olFormatGPX(); /** * @private @@ -74,7 +76,7 @@ app.Export = function($document, exportgpxkmlUrl) { * @param {ol.Map} map The Map. * @export */ -app.Export.prototype.init = function(map) { +exports.prototype.init = function(map) { this.map = map; this.encOpt_ = /** @type {olx.format.ReadOptions} */({ dataProjection: 'EPSG:2169', @@ -90,7 +92,7 @@ app.Export.prototype.init = function(map) { * @param {boolean} isTrack True if gpx should export tracks instead of routes. * @export */ -app.Export.prototype.exportGpx = function(features, name, isTrack) { +exports.prototype.exportGpx = function(features, name, isTrack) { // LineString geometries, and tracks from MultiLineString var explodedFeatures = this.exploseFeature_(features); if (isTrack) { @@ -105,7 +107,7 @@ app.Export.prototype.exportGpx = function(features, name, isTrack) { featureProjection: this['map'].getView().getProjection() }); - this.exportFeatures_(gpx, 'gpx', app.sanitizeFilename(name)); + this.exportFeatures_(gpx, 'gpx', appMiscFile.sanitizeFilename(name)); }; @@ -115,15 +117,15 @@ app.Export.prototype.exportGpx = function(features, name, isTrack) { * @return {Array.} The changed features. * @private */ -app.Export.prototype.changeLineToMultiline_ = function(features) { +exports.prototype.changeLineToMultiline_ = function(features) { var changedFeatures = []; - goog.array.forEach(features, function(feature) { + features.forEach(function(feature) { switch (feature.getGeometry().getType()) { - case ol.geom.GeometryType.LINE_STRING: + case olGeomGeometryType.LINE_STRING: var geom = /** @type {ol.geom.LineString} */ (feature.getGeometry()); var multilineFeature = feature.clone(); multilineFeature.setGeometry( - new ol.geom.MultiLineString([geom.getCoordinates()])); + new olGeomMultiLineString([geom.getCoordinates()])); changedFeatures.push(multilineFeature); break; default : @@ -141,16 +143,16 @@ app.Export.prototype.changeLineToMultiline_ = function(features) { * @return {Array.} The changed features. * @private */ -app.Export.prototype.changeMultilineToLine_ = function(features) { +exports.prototype.changeMultilineToLine_ = function(features) { var changedFeatures = []; - goog.array.forEach(features, function(feature) { + features.forEach(function(feature) { switch (feature.getGeometry().getType()) { - case ol.geom.GeometryType.MULTI_LINE_STRING: + case olGeomGeometryType.MULTI_LINE_STRING: var geom = /** @type {ol.geom.MultiLineString} */ (feature.getGeometry()); var lines = /** @type {ol.geom.MultiLineString} */ (geom).getLineStrings(); - goog.array.forEach(lines, function(line) { + lines.forEach(function(line) { var clonedFeature = feature.clone(); clonedFeature.setGeometry(line); changedFeatures.push(clonedFeature); @@ -172,24 +174,24 @@ app.Export.prototype.changeMultilineToLine_ = function(features) { * @return {Array.} The exploded features. * @private */ -app.Export.prototype.exploseFeature_ = function(features) { +exports.prototype.exploseFeature_ = function(features) { var explodedFeatures = []; - goog.array.forEach(features, function(feature) { + features.forEach(function(feature) { switch (feature.getGeometry().getType()) { - case ol.geom.GeometryType.GEOMETRY_COLLECTION: + case olGeomGeometryType.GEOMETRY_COLLECTION: var geomCollection = /** @type {ol.geom.GeometryCollection} */ (feature.getGeometry()); - goog.array.forEach(geomCollection.getGeometriesArray(), + geomCollection.getGeometriesArray().forEach( function(curGeom) { var newFeature = feature.clone(); newFeature.setGeometry(curGeom); explodedFeatures.push(newFeature); }); break; - case ol.geom.GeometryType.MULTI_LINE_STRING: + case olGeomGeometryType.MULTI_LINE_STRING: var multiLineString = /** @type {ol.geom.MultiLineString} */ (feature.getGeometry()); - goog.array.forEach(multiLineString.getLineStrings(), + multiLineString.getLineStrings().forEach( function(curGeom) { var newFeature = feature.clone(); newFeature.setGeometry(curGeom); @@ -217,17 +219,17 @@ app.Export.prototype.exploseFeature_ = function(features) { * @return {Array.} The sorted features. * @private */ -app.Export.prototype.orderFeaturesForGpx_ = function(features) { +exports.prototype.orderFeaturesForGpx_ = function(features) { var points = []; var lines = []; var others = []; - goog.array.forEach(features, function(feature) { + features.forEach(function(feature) { switch (feature.getGeometry().getType()) { - case ol.geom.GeometryType.POINT: + case olGeomGeometryType.POINT: points.push(feature); break; - case ol.geom.GeometryType.LINE_STRING: + case olGeomGeometryType.LINE_STRING: lines.push(feature); break; default : @@ -246,17 +248,17 @@ app.Export.prototype.orderFeaturesForGpx_ = function(features) { * @param {string} name The file name. * @export */ -app.Export.prototype.exportKml = function(feature, name) { +exports.prototype.exportKml = function(feature, name) { var activeFeature = /** @type {ol.Feature} */ - ((new ol.format.GeoJSON()).readFeature(feature, this.encOpt_)); + ((new olFormatGeoJSON()).readFeature(feature, this.encOpt_)); var kml = this.kmlFormat_.writeFeatures(this.exploseFeature_([activeFeature]), { dataProjection: 'EPSG:4326', featureProjection: this['map'].getView().getProjection() }); - this.exportFeatures_(kml, 'kml', app.sanitizeFilename(name)); + this.exportFeatures_(kml, 'kml', appMiscFile.sanitizeFilename(name)); }; @@ -266,7 +268,7 @@ app.Export.prototype.exportKml = function(feature, name) { * @param {string} filename File name for the exported document. * @private */ -app.Export.prototype.exportFeatures_ = +exports.prototype.exportFeatures_ = function(doc, format, filename) { var formatInput = $('').attr({ type: 'hidden', @@ -293,4 +295,7 @@ app.Export.prototype.exportFeatures_ = form.remove(); }; -app.module.service('appExport', app.Export); +appModule.service('appExport', exports); + + +export default exports; diff --git a/geoportailv3/static/js/geocodingservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Geocoding.js similarity index 81% rename from geoportailv3/static/js/geocodingservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Geocoding.js index 8daae0836..87e2ff60b 100644 --- a/geoportailv3/static/js/geocodingservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Geocoding.js @@ -1,13 +1,13 @@ +/** + * @module app.Geocoding + */ /** * @fileoverview This file provides an Angular service for interacting * with the "geocoding" web service. */ -goog.provide('app.Geocoding'); - -goog.require('app'); -goog.require('ol.proj'); -goog.require('ngeo.statemanager.module'); +import appModule from './module.js'; +import {transform} from 'ol/proj.js'; /** * @constructor @@ -16,7 +16,7 @@ goog.require('ngeo.statemanager.module'); * @param {string} geocodingServiceUrl The url of the service. * @ngInject */ -app.Geocoding = function($http, reverseGeocodingServiceUrl, geocodingServiceUrl) { +const exports = function($http, reverseGeocodingServiceUrl, geocodingServiceUrl) { /** * @type {angular.$http} * @private @@ -41,9 +41,9 @@ app.Geocoding = function($http, reverseGeocodingServiceUrl, geocodingServiceUrl) * @param {ol.Coordinate} coordinate The coordinate. * @return {!angular.$q.Promise} Promise providing the reverse geocode. */ -app.Geocoding.prototype.reverseGeocode = function(coordinate) { +exports.prototype.reverseGeocode = function(coordinate) { var lonlat = /** @type {ol.Coordinate} */ - (ol.proj.transform(coordinate, + (transform(coordinate, 'EPSG:3857', 'EPSG:2169')); return this.$http_.get(this.reverseGeocodingServiceUrl_, { @@ -66,7 +66,7 @@ app.Geocoding.prototype.reverseGeocode = function(coordinate) { * @param {string} address The address to geocode. * @return {!angular.$q.Promise} Promise providing the coordinates. */ -app.Geocoding.prototype.geocode = function(address) { +exports.prototype.geocode = function(address) { return this.$http_.get(this.geocodingServiceUrl_, { params: { @@ -83,4 +83,7 @@ app.Geocoding.prototype.geocode = function(address) { }; -app.module.service('appGeocoding', app.Geocoding); +appModule.service('appGeocoding', exports); + + +export default exports; diff --git a/geoportailv3/static/js/deviceservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetDevice.js similarity index 78% rename from geoportailv3/static/js/deviceservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/GetDevice.js index 9111a8157..fab2255ed 100644 --- a/geoportailv3/static/js/deviceservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetDevice.js @@ -1,11 +1,12 @@ +/** + * @module app.GetDevice + */ /** * @fileoverview This file provides an Angular service for interacting * with the "elevation" web service. */ -goog.provide('app.GetDevice'); - -goog.require('app'); +import appModule from './module.js'; /** * @constructor @@ -14,7 +15,7 @@ goog.require('app'); * @private * @ngInject */ -app.GetDevice = function($document, $window) { +const exports = function($document, $window) { /** * @type {Document} * @private @@ -36,7 +37,7 @@ app.GetDevice = function($document, $window) { /** * @return {string} The device env. */ -app.GetDevice.prototype.findBootstrapEnvironment = function() { +exports.prototype.findBootstrapEnvironment = function() { var envs = ['xs', 'sm', 'md', 'lg']; var el = $('
'); angular.element(this.$document_[0].body).append(el); @@ -57,7 +58,7 @@ app.GetDevice.prototype.findBootstrapEnvironment = function() { * @param {string} env to check. * @return {boolean} True if XS env screen. */ -app.GetDevice.prototype.testEnv = function(env) { +exports.prototype.testEnv = function(env) { return this.findBootstrapEnvironment() === env; }; @@ -65,8 +66,11 @@ app.GetDevice.prototype.testEnv = function(env) { /** * @return {boolean} True if highdpi screen. */ -app.GetDevice.prototype.isHiDpi = function() { +exports.prototype.isHiDpi = function() { return this.isHiDpi_; }; -app.module.service('appGetDevice', app.GetDevice); +appModule.service('appGetDevice', exports); + + +export default exports; diff --git a/geoportailv3/static/js/elevationservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetElevationService.js similarity index 80% rename from geoportailv3/static/js/elevationservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/GetElevationService.js index 3eba775ec..5bd61f105 100644 --- a/geoportailv3/static/js/elevationservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetElevationService.js @@ -1,17 +1,15 @@ /** - * @fileoverview This file provides an Angular service for interacting - * with the "elevation" web service. + * @module app.GetElevationService */ -goog.provide('app.GetElevation'); - -goog.require('app'); -goog.require('ol.proj'); - +let exports = {}; /** - * @typedef {function(ol.Coordinate):!angular.$q.Promise} + * @fileoverview This file provides an Angular service for interacting + * with the "elevation" web service. */ -app.GetElevation; + +import appModule from './module.js'; +import {transform} from 'ol/proj.js'; /** @@ -22,7 +20,7 @@ app.GetElevation; * @private * @ngInject */ -app.getElevation_ = function($http, gettextCatalog, elevationServiceUrl) { +function service($http, gettextCatalog, elevationServiceUrl) { return getElevation; /** @@ -31,7 +29,7 @@ app.getElevation_ = function($http, gettextCatalog, elevationServiceUrl) { */ function getElevation(coordinate) { var lonlat = /** @type {ol.Coordinate} */ - (ol.proj.transform(coordinate, + (transform(coordinate, 'EPSG:3857', 'EPSG:2169')); return $http.get(elevationServiceUrl, { params: { @@ -52,7 +50,10 @@ app.getElevation_ = function($http, gettextCatalog, elevationServiceUrl) { 'rawElevation': resp.data['dhm']}; }); } -}; +} + + +appModule.service('appGetElevation', service); -app.module.service('appGetElevation', app.getElevation_); +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/GetLayerForCatalogNodeFactory.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetLayerForCatalogNodeFactory.js new file mode 100644 index 000000000..53e98c4c1 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetLayerForCatalogNodeFactory.js @@ -0,0 +1,81 @@ +/** + * @module app.GetLayerForCatalogNodeFactory + */ +let exports = {}; + +/** + * @fileoverview This file defines Angular services to use to get OpenLayers + * layers for the application. + */ + +import appModule from './module.js'; + + +/** + * @const + * @type {Object.} + * @private + */ +const layerCache_ = {}; + + +/** + * Function returning a function used to get the layer object for a catalog + * tree node. + * + * @param {app.GetWmtsLayer} appGetWmtsLayer The getWmtsLayer function. + * @param {app.GetWmsLayer} appGetWmsLayer The getWmsLayer function. + * @return {app.GetLayerForCatalogNode} The getLayerForCatalogNode function. + * @param {app.GetDevice} appGetDevice The device service. + * @private + * @ngInject + */ +function factory(appGetWmtsLayer, appGetWmsLayer, appGetDevice) { + return getLayerForCatalogNode; + + /** + * @param {Object} node Catalog tree node. + * @return {ol.layer.Layer} OpenLayers layer. + */ + function getLayerForCatalogNode(node) { + var layer, layerCacheKey, type; + if (!('type' in node)) { + return null; + } + type = node['type']; + layerCacheKey = type + '_' + node['name']; + if (layerCacheKey in layerCache_) { + return layerCache_[layerCacheKey]; + } + if (type.indexOf('WMS') !== -1) { + console.assert('name' in node); + console.assert('layers' in node); + console.assert('imageType' in node); + layer = appGetWmsLayer(node['name'], node['layers'], node['imageType'], node['url']); + } else if (type == 'WMTS') { + console.assert('name' in node); + console.assert('imageType' in node); + var hasRetina = (node['metadata']['hasRetina'] === 'true' && appGetDevice.isHiDpi()); + layer = appGetWmtsLayer(node['name'], node['imageType'], hasRetina); + } else { + return null; + } + console.assert(layer !== undefined && layer !== null); + layerCache_[layerCacheKey] = layer; + layer.set('metadata', node['metadata']); + layer.set('queryable_id', node['id']); + if ('attribution' in node['metadata']) { + var source = layer.getSource(); + source.setAttributions( + node['metadata']['attribution'] + ); + } + return layer; + } +} + + +appModule.factory('appGetLayerForCatalogNode', factory); + + +export default exports; diff --git a/geoportailv3/static/js/profileservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetProfileService.js similarity index 75% rename from geoportailv3/static/js/profileservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/GetProfileService.js index 25768a408..9235677f9 100644 --- a/geoportailv3/static/js/profileservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetProfileService.js @@ -1,23 +1,15 @@ +/** + * @module app.GetProfileService + */ +let exports = {}; /** * @fileoverview This file provides an Angular service for interacting * with the "profile" web service. */ -goog.provide('app.GetProfile'); -goog.require('app'); -goog.require('goog.array'); -goog.require('goog.Uri.QueryData'); -goog.require('ol.format.GeoJSON'); - - -/** - * @typedef {function( - * (ol.geom.MultiLineString|ol.geom.LineString), - * string=):!angular.$q.Promise - * } - */ -app.GetProfile; +import appModule from './module.js'; +import olFormatGeoJSON from 'ol/format/GeoJSON.js'; /** @@ -27,7 +19,7 @@ app.GetProfile; * @private * @ngInject */ -app.getProfile_ = function($http, profileServiceUrl) { +function service($http, profileServiceUrl) { return getProfile; /** @@ -41,7 +33,7 @@ app.getProfile_ = function($http, profileServiceUrl) { featureProjection: 'EPSG:3857' }; var req = $.param({ - 'geom': new ol.format.GeoJSON().writeGeometry(geom, encOpt), + 'geom': new olFormatGeoJSON().writeGeometry(geom, encOpt), 'nbPoints': 100, 'layers': 'dhm', 'id': opt_id @@ -52,14 +44,16 @@ app.getProfile_ = function($http, profileServiceUrl) { return $http.post(profileServiceUrl, req, config).then( function(resp) { var data = /** @type {string} */ (resp.config.data); - var q = new goog.Uri.QueryData(data); - var id = q.getValues('id')[0]; + var ids = data.split('&').find(function(elem) { + return (elem.split('=')[0] === 'id'); + }); + var id = ids.split('=')[1]; var elevationGain = 0; var elevationLoss = 0; var cumulativeElevation = 0; var lastElevation; - goog.array.forEach(resp.data['profile'], function(element) { + resp.data['profile'].forEach(function(element) { element['id'] = id; var curElevation = (element['values']['dhm']) / 100; if (lastElevation !== undefined) { @@ -79,6 +73,9 @@ app.getProfile_ = function($http, profileServiceUrl) { return resp.data['profile']; }); } -}; +} + +appModule.service('appGetProfile', service); + -app.module.service('appGetProfile', app.getProfile_); +export default exports; diff --git a/geoportailv3/static/js/shorturlservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetShorturlService.js similarity index 75% rename from geoportailv3/static/js/shorturlservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/GetShorturlService.js index b94f3041c..f2768913b 100644 --- a/geoportailv3/static/js/shorturlservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetShorturlService.js @@ -1,17 +1,14 @@ /** - * @fileoverview This file provides an Angular service for interacting - * with the "shorturl" web service. + * @module app.GetShorturlService */ -goog.provide('app.GetShorturl'); - -goog.require('app'); -goog.require('ngeo.statemanager.module'); - +let exports = {}; /** - * @typedef {function(ol.Coordinate=):!angular.$q.Promise} + * @fileoverview This file provides an Angular service for interacting + * with the "shorturl" web service. */ -app.GetShorturl; + +import appModule from './module.js'; /** @@ -22,14 +19,14 @@ app.GetShorturl; * @private * @ngInject */ -app.getShorturl_ = function($http, ngeoLocation, shorturlServiceUrl) { +function service($http, ngeoLocation, shorturlServiceUrl) { return ( /** - * @param {ol.Coordinate=} opt_coordinate + * @param {ol.Coordinate=} opt_coordinate coordinates. * @return {!angular.$q.Promise} Promise providing the short URL. */ function getShorturl(opt_coordinate) { - if (goog.isDef(opt_coordinate)) { + if (opt_coordinate !== undefined) { ngeoLocation.updateParams({ 'X': Math.round(opt_coordinate[0]), 'Y': Math.round(opt_coordinate[1]) @@ -50,7 +47,10 @@ app.getShorturl_ = function($http, ngeoLocation, shorturlServiceUrl) { return resp.data['short_url']; }); }); -}; +} + + +appModule.service('appGetShorturl', service); -app.module.service('appGetShorturl', app.getShorturl_); +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/GetWmsLayerFactory.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetWmsLayerFactory.js new file mode 100644 index 000000000..35cac1292 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetWmsLayerFactory.js @@ -0,0 +1,68 @@ +/** + * @module app.GetWmsLayerFactory + */ +let exports = {}; + +/** + * @fileoverview This file defines Angular services to use to get OpenLayers + * layers for the application. + */ + +import appModule from './module.js'; +import appOlcsExtent from './olcs/Extent.js'; +import ngeoMiscDecorate from 'ngeo/misc/decorate.js'; +import olLayerImage from 'ol/layer/Image.js'; +import olSourceImageWMS from 'ol/source/ImageWMS.js'; + + +/** + * @param {string} proxyWmsUrl URL to the proxy wms. + * @param {boolean} remoteProxyWms is the proxy wms remote or local. + * @param {app.GetDevice} appGetDevice The device service. + * @return {app.GetWmsLayer} The getWmsLayer function. + * @private + * @ngInject + */ +function factory(proxyWmsUrl, remoteProxyWms, + appGetDevice) { + return getWmsLayer; + + /** + * @param {string} name WMS layer name. + * @param {string} layers Comma-separated list of layer names for that WMS layer. + * @param {string} imageType Image type (e.g. "image/png"). + * @param {string=} opt_url WMS URL. + * @return {ol.layer.Image} The layer. + */ + function getWmsLayer(name, layers, imageType, opt_url) { + var url = opt_url || proxyWmsUrl; + var optSource = { + url: url, + hidpi: appGetDevice.isHiDpi(), + serverType: 'mapserver', + params: { + 'FORMAT': imageType, + 'LAYERS': layers + } + }; + + if (opt_url !== undefined || remoteProxyWms) { + optSource.crossOrigin = 'anonymous'; + } + var layer = new olLayerImage({ + 'olcs.extent': appOlcsExtent, + source: new olSourceImageWMS(optSource) + }); + + layer.set('label', name); + ngeoMiscDecorate.layer(layer); + + return layer; + } +} + + +appModule.factory('appGetWmsLayer', factory); + + +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/GetWmtsLayerFactory.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetWmtsLayerFactory.js new file mode 100644 index 000000000..eaefe3a68 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/GetWmtsLayerFactory.js @@ -0,0 +1,108 @@ +/** + * @module app.GetWmtsLayerFactory + */ +let exports = {}; + +/** + * @fileoverview This file defines Angular services to use to get OpenLayers + * layers for the application. + */ + +import appModule from './module.js'; +import appOlcsExtent from './olcs/Extent.js'; +import ngeoMiscDecorate from 'ngeo/misc/decorate.js'; +import {getTopLeft} from 'ol/extent.js'; +import {get as getProjection} from 'ol/proj.js'; +import olLayerTile from 'ol/layer/Tile.js'; +import olSourceWMTS from 'ol/source/WMTS.js'; +import olSourceWMTSRequestEncoding from 'ol/source/WMTSRequestEncoding.js'; +import olTilegridWMTS from 'ol/tilegrid/WMTS.js'; + + +/** + * @param {string} imageType Image type (e.g. "image/png"). + * @return {string} Image extensino (e.g. "png"). + * @private + */ +function getImageExtension_(imageType) { + console.assert(imageType.indexOf('/')); + var imageExt = imageType.split('/')[1]; + console.assert(imageExt == 'png' || imageExt == 'jpeg'); + return imageExt; +} + + +/** + * @param {string} requestScheme The scheme. + * @return {app.GetWmtsLayer} The getWmtsLayer function. + * @private + * @ngInject + */ +function factory(requestScheme) { + return getWmtsLayer; + + /** + * @param {string} name WMTS layer name. + * @param {string} imageType Image type (e.g. "image/png"). + * @param {boolean} retina If there is a retina layer. + * @return {ol.layer.Tile} The layer. + */ + function getWmtsLayer(name, imageType, retina) { + + var imageExt = getImageExtension_(imageType); + var retinaExtension = (retina ? '_hd' : ''); + var url = '//wmts{1-2}.geoportail.lu/mapproxy_4_v3/wmts/{Layer}' + + retinaExtension + + '/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.' + imageExt; + + if (requestScheme === 'https') { + url = '//wmts{3-4}.geoportail.lu/mapproxy_4_v3/wmts/{Layer}' + + retinaExtension + + '/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.' + imageExt; + } + var projection = getProjection('EPSG:3857'); + var extent = projection.getExtent(); + var layer = new olLayerTile({ + 'olcs.extent': appOlcsExtent, + source: new olSourceWMTS({ + url: url, + tilePixelRatio: (retina ? 2 : 1), + layer: name, + matrixSet: 'GLOBAL_WEBMERCATOR_4_V3' + (retina ? '_HD' : ''), + format: imageType, + requestEncoding: olSourceWMTSRequestEncoding.REST, + projection: projection, + tileGrid: new olTilegridWMTS({ + origin: getTopLeft(extent), + extent: extent, + resolutions: [156543.033928, 78271.516964, + 39135.758482, 19567.879241, 9783.9396205, + 4891.96981025, 2445.98490513, 1222.99245256, + 611.496226281, 305.748113141, 152.87405657, + 76.4370282852, 38.2185141426, 19.1092570713, + 9.55462853565, 4.77731426782, 2.38865713391, + 1.19432856696, 0.597164283478, 0.298582141739, + 0.1492910708695, 0.07464553543475], + matrixIds: [ + '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', + '21' + ] + }), + style: 'default', + crossOrigin: 'anonymous' + }) + }); + + layer.set('label', name); + ngeoMiscDecorate.layer(layer); + + return layer; + } +} + + +appModule.factory('appGetWmtsLayer', factory); + + +export default exports; diff --git a/geoportailv3/static/js/layeropacitymanagerservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/LayerOpacityManager.js similarity index 66% rename from geoportailv3/static/js/layeropacitymanagerservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/LayerOpacityManager.js index 0a46c1c4b..246a1d732 100644 --- a/geoportailv3/static/js/layeropacitymanagerservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/LayerOpacityManager.js @@ -1,3 +1,6 @@ +/** + * @module app.LayerOpacityManager + */ /** * @fileoverview This file defines the "appLayerOpacityManager" service. This * service (re-)sets the opacity of layers added to the map. The opacity is @@ -10,35 +13,32 @@ * appLayerOpacityManager.init(map); * */ -goog.provide('app.LayerOpacityManager'); - -goog.require('app'); -goog.require('ol.Collection'); -goog.require('ol.CollectionEventType'); -goog.require('ol.events'); +import appModule from './module.js'; +import olCollectionEventType from 'ol/CollectionEventType.js'; +import {listen} from 'ol/events.js'; /** * @constructor * @ngInject */ -app.LayerOpacityManager = function() { +const exports = function() { }; /** * @param {ol.Map} map The map. */ -app.LayerOpacityManager.prototype.init = function(map) { +exports.prototype.init = function(map) { var layers = map.getLayers(); - ol.events.listen(layers, ol.CollectionEventType.ADD, + listen(layers, olCollectionEventType.ADD, /** * @param {ol.CollectionEventType} evt Collection event. */ function(evt) { var layer = /** @type {ol.layer.Layer} */ (evt.element); var layerMetadata = layer.get('metadata'); - var layerStartOpacity = goog.isDef(layerMetadata) && + var layerStartOpacity = layerMetadata !== undefined && layerMetadata.hasOwnProperty('start_opacity') ? +layerMetadata['start_opacity'] : 1; layer.setOpacity(layerStartOpacity); @@ -46,4 +46,7 @@ app.LayerOpacityManager.prototype.init = function(map) { }; -app.module.service('appLayerOpacityManager', app.LayerOpacityManager); +appModule.service('appLayerOpacityManager', exports); + + +export default exports; diff --git a/geoportailv3/static/js/layerpermalinkservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/LayerPermalinkManager.js similarity index 54% rename from geoportailv3/static/js/layerpermalinkservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/LayerPermalinkManager.js index 8700dc8b9..e413b49a5 100644 --- a/geoportailv3/static/js/layerpermalinkservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/LayerPermalinkManager.js @@ -1,22 +1,16 @@ +/** + * @module app.LayerPermalinkManager + */ /** * @fileoverview This files defines an Angular Service for managing the * selected layers permalinks */ -goog.provide('app.LayerPermalinkManager'); - -goog.require('app'); -goog.require('app.GetLayerForCatalogNode'); -goog.require('app.WmsHelper'); -goog.require('app.WmtsHelper'); -goog.require('app.StateManager'); -goog.require('app.Themes'); -goog.require('goog.array'); -goog.require('goog.string'); -goog.require('ngeo.map.BackgroundLayerMgr'); -goog.require('ngeo.statemanager.module'); -goog.require('ol.events'); - +import appModule from './module.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; +import appEventsThemesEventType from './events/ThemesEventType.js'; +import {listen, unlistenByKey} from 'ol/events.js'; +import {extend as arrayExtend} from 'ol/array.js'; /** * @constructor @@ -30,11 +24,23 @@ goog.require('ol.events'); * @param {ngeo.statemanager.Location} ngeoLocation ngeo location service. * @param {app.WmsHelper} appWmsHelper The wms helper service. * @param {app.WmtsHelper} appWmtsHelper The wmts helper service. + * @param {app.Notify} appNotify Notify service. + * @param {angularGettext.Catalog} gettextCatalog Gettext service. * @ngInject */ -app.LayerPermalinkManager = function(appStateManager, +const exports = function(appStateManager, appGetLayerForCatalogNode, appThemes, appTheme, ngeoBackgroundLayerMgr, - ngeoLocation, appWmsHelper, appWmtsHelper) { + ngeoLocation, appWmsHelper, appWmtsHelper, appNotify, gettextCatalog) { + /** + * @type {angularGettext.Catalog} + */ + this.gettextCatalog = gettextCatalog; + + /** + * @type {app.Notify} + * @private + */ + this.notify_ = appNotify; /** * @type {app.WmsHelper} @@ -126,7 +132,7 @@ app.LayerPermalinkManager = function(appStateManager, * @const * @private */ -app.LayerPermalinkManager.V2_BGLAYER_TO_V3_ = { +exports.V2_BGLAYER_TO_V3_ = { 'webbasemap': 'basemap_2015_global', 'pixelmaps-color': 'topogr_global', 'pixelmaps-gray': 'topo_bw_jpeg', @@ -139,9 +145,9 @@ app.LayerPermalinkManager.V2_BGLAYER_TO_V3_ = { * Remove the listeners for property change. * @private */ -app.LayerPermalinkManager.prototype.unListenProtertyChange_ = function() { +exports.prototype.unListenProtertyChange_ = function() { this.layersListenerKeys_.forEach(function(key) { - ol.events.unlistenByKey(key); + unlistenByKey(key); }); this.layersListenerKeys_.length = 0; }; @@ -152,10 +158,10 @@ app.LayerPermalinkManager.prototype.unListenProtertyChange_ = function() { * @param {Array.} layers The layers. * @private */ -app.LayerPermalinkManager.prototype.listenProtertyChange = function(layers) { +exports.prototype.listenProtertyChange = function(layers) { layers.forEach(function(layer) { - this.layersListenerKeys_.push(ol.events.listen( - layer, ol.ObjectEventType.PROPERTYCHANGE, + this.layersListenerKeys_.push(listen( + layer, 'propertychange', function() { this.onLayerUpdate_(layers); }, this) @@ -168,7 +174,7 @@ app.LayerPermalinkManager.prototype.listenProtertyChange = function(layers) { * @param {Array.} layers The layers. * @private */ -app.LayerPermalinkManager.prototype.onLayerUpdate_ = function(layers) { +exports.prototype.onLayerUpdate_ = function(layers) { // Check if a layer is added or removed; if (layers.length !== this.layersListenerKeys_.length) { @@ -176,10 +182,10 @@ app.LayerPermalinkManager.prototype.onLayerUpdate_ = function(layers) { this.listenProtertyChange(layers); } - var layerIds = goog.array.map(layers, function(layer) { + var layerIds = layers.map(function(layer) { return layer.get('queryable_id'); }); - var opacities = goog.array.map(layers, function(layer) { + var opacities = layers.map(function(layer) { return layer.getOpacity(); }); var bgLayer = this.backgroundLayerMgr_.get(this.map_); @@ -198,11 +204,10 @@ app.LayerPermalinkManager.prototype.onLayerUpdate_ = function(layers) { /** * @param {Array.} layerIds The ids. * @param {Array.} opacities The opacities. - * @param {Array.} flatCatalogue The catalog. + * @param {Array.} flatCatalog The catalog. * @private */ -app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( - layerIds, opacities, flatCatalogue) { +exports.prototype.applyLayerStateToMap_ = function(layerIds, opacities, flatCatalog) { layerIds.reverse(); opacities.reverse(); this.unavailableLayerIndex_.forEach(function(elem, index) { @@ -215,15 +220,15 @@ app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( var addedLayers = this.map_.getLayers().getArray(); - goog.array.forEach(layerIds, + layerIds.forEach( function(layerId, layerIndex) { - if (goog.isNumber(layerId) && !isNaN(layerId)) { - var node = goog.array.find(flatCatalogue, function(catItem) { + if (typeof layerId == 'number' && !isNaN(layerId)) { + var node = flatCatalog.find(function(catItem) { return catItem.id === layerId; }); - if (goog.isDefAndNotNull(node)) { + if (node !== undefined && node !== null) { var layer = this.getLayerFunc_(node); - if (goog.isDef(opacities)) { + if (opacities !== undefined) { // set opacity trough metadata to not interfere // with the layer opacity manager service var layerMetadata = layer.get('metadata'); @@ -238,7 +243,7 @@ app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( layerMetadata['start_opacity'] = opacities[layerIndex]; } // Skip layers that have already been added - if (goog.array.every(addedLayers, function(addedLayer) { + if (addedLayers.every(function(addedLayer) { return addedLayer.get('queryable_id') !== layer.get('queryable_id'); }, this)) { @@ -269,7 +274,7 @@ app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( } } wmtsMetadata['start_opacity'] = opacities[layerIndex]; - if (goog.array.every(addedLayers, function(addedLayer) { + if (addedLayers.every(function(addedLayer) { return addedLayer.get('queryable_id') !== wmtsLayer.get('queryable_id'); }, this)) { @@ -293,7 +298,7 @@ app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( } } wmsMetadata['start_opacity'] = opacities[layerIndex]; - if (goog.array.every(addedLayers, function(addedLayer) { + if (addedLayers.every(function(addedLayer) { return addedLayer.get('queryable_id') !== wmsLayer.get('queryable_id'); }, this)) { @@ -307,6 +312,18 @@ app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( } } }, this); + if (this.unavailableLayers_.length > 0) { + var msg = this.gettextCatalog.getString('Certaines couches sont protégées. Veuillez vous connecter avec un utilisateur disposant les droits de visualiser cette couche.'); + this.notify_(msg, appNotifyNotificationType.WARNING); + } +}; + +/** + * Tell if t leat one unavaillable layer is present. + * @return {boolean} True if has at leat one unavaillable layer. + */ +exports.prototype.hasUnavailableLayers = function() { + return (this.unavailableLayers_.length > 0); }; /** @@ -316,15 +333,15 @@ app.LayerPermalinkManager.prototype.applyLayerStateToMap_ = function( * @param {number} layerIndex The index of the layer in the list. * @private */ -app.LayerPermalinkManager.prototype.setLayerAsUnavailable_ = function( +exports.prototype.setLayerAsUnavailable_ = function( addedLayers, layerId, opacity, layerIndex) { - var layerToRemove = - goog.array.find(addedLayers, function(addedLayer) { + var layerToRemove = /** @type{ol.layer.Base} */ + (addedLayers.find(function(addedLayer) { if (addedLayer.get('queryable_id') === layerId) { return true; } return false; - }, this); + }, this)); if (layerToRemove !== null) { this.map_.removeLayer(layerToRemove); } @@ -339,10 +356,10 @@ app.LayerPermalinkManager.prototype.setLayerAsUnavailable_ = function( * @private * @return {Array.|undefined} The values. */ -app.LayerPermalinkManager.prototype.getStateValue_ = function(parameter) { +exports.prototype.getStateValue_ = function(parameter) { var result = ''; var response = this.stateManager_.getInitialValue(parameter); - if (goog.isDef(response) && response.length > 0) { + if (response !== undefined && response.length > 0) { result = response; } else { return undefined; @@ -360,13 +377,13 @@ app.LayerPermalinkManager.prototype.getStateValue_ = function(parameter) { * @private * @return {Array.|undefined} The values. */ -app.LayerPermalinkManager.prototype.splitNumbers_ = +exports.prototype.splitNumbers_ = function(parameter, splitChar) { var items = []; - if (goog.isDef(parameter)) { - goog.array.forEach(parameter.split(splitChar), function(string) { + if (parameter !== undefined) { + parameter.split(splitChar).forEach(function(string) { var value = parseFloat(string); - if (goog.isNumber(value) && !isNaN(value)) { + if (typeof value == 'number' && !isNaN(value)) { items.push(value); } }); @@ -381,13 +398,13 @@ app.LayerPermalinkManager.prototype.splitNumbers_ = * @private * @return {Array.|undefined} The values. */ -app.LayerPermalinkManager.prototype.splitLayers_ = +exports.prototype.splitLayers_ = function(parameter, splitChar) { var items = []; - if (goog.isDef(parameter)) { - goog.array.forEach(parameter.split(splitChar), function(string) { + if (parameter !== undefined) { + parameter.split(splitChar).forEach(function(string) { var value = parseFloat(string); - if (goog.isNumber(value) && !isNaN(value)) { + if (typeof value == 'number' && !isNaN(value)) { items.push(value); } else { if (string.indexOf('WMS||') === 0 || @@ -404,12 +421,12 @@ app.LayerPermalinkManager.prototype.splitLayers_ = /** * @private */ -app.LayerPermalinkManager.prototype.removeWatchers_ = function() { +exports.prototype.removeWatchers_ = function() { if (this.backgroundLayerMgrLstn_ !== null) { - ol.events.unlistenByKey(this.backgroundLayerMgrLstn_); + unlistenByKey(this.backgroundLayerMgrLstn_); this.backgroundLayerMgrLstn_ = null; } - if (goog.isFunction(this.scopeWatcher_)) { + if (typeof this.scopeWatcher_ == 'function') { this.scopeWatcher_(); // destroy previous watcher } //this.unListenProtertyChange_(); @@ -420,9 +437,9 @@ app.LayerPermalinkManager.prototype.removeWatchers_ = function() { * @param {Array.} selectedLayers The selected layers. * @private */ -app.LayerPermalinkManager.prototype.setupWatchers_ = function(selectedLayers) { +exports.prototype.setupWatchers_ = function(selectedLayers) { - this.backgroundLayerMgrLstn_ = ol.events.listen(this.backgroundLayerMgr_, 'change', + this.backgroundLayerMgrLstn_ = listen(this.backgroundLayerMgr_, 'change', function() { var bgLayer = this.backgroundLayerMgr_.get(this.map_); this.stateManager_.updateState({ @@ -446,11 +463,11 @@ app.LayerPermalinkManager.prototype.setupWatchers_ = function(selectedLayers) { * @return {Array} array The children. * @private */ -app.LayerPermalinkManager.getAllChildren_ = function(element) { +exports.getAllChildren_ = function(element) { var array = []; for (var i = 0; i < element.length; i++) { if (element[i].hasOwnProperty('children')) { - goog.array.extend(array, app.LayerPermalinkManager.getAllChildren_( + arrayExtend(array, exports.getAllChildren_( element[i].children) ); } else { @@ -467,155 +484,145 @@ app.LayerPermalinkManager.getAllChildren_ = function(element) { * @param {ol.Map} map The map. * @param {Array.} selectedLayers The selected layers. */ -app.LayerPermalinkManager.prototype.init = - function(scope, map, selectedLayers) { +exports.prototype.init = function(scope, map, selectedLayers) { /** * @type {angular.Scope} */ - this.scope_ = scope; + this.scope_ = scope; /** * @type {ol.Map} * @private */ - this.map_ = map; + this.map_ = map; /** * @type {number} * @private */ - this.initialVersion_ = this.stateManager_.getVersion(); + this.initialVersion_ = this.stateManager_.getVersion(); /** * @type {boolean} * @private */ - this.initialized_ = false; + this.initialized_ = false; // Wait for themes to load before adding layers from state - ol.events.listen(this.appThemes_, app.ThemesEventType.LOAD, - function(evt) { - this.appThemes_.getBgLayers().then( - function(bgLayers) { - var stateBgLayerLabel, stateBgLayerOpacity; - var mapId = this.ngeoLocation_.getParam('map_id'); - if (!this.initialized_) { - stateBgLayerLabel = - this.stateManager_.getInitialValue('bgLayer'); - stateBgLayerOpacity = - this.stateManager_.getInitialValue('bgOpacity'); - if (goog.isDefAndNotNull(stateBgLayerLabel) || - (goog.isDefAndNotNull(stateBgLayerOpacity) && - parseInt(stateBgLayerOpacity, 0) === 0)) { - if (this.initialVersion_ === 2 && - goog.isDefAndNotNull(stateBgLayerLabel)) { - stateBgLayerLabel = - app.LayerPermalinkManager. - V2_BGLAYER_TO_V3_[stateBgLayerLabel]; - } else if (this.initialVersion_ === 2 && - parseInt(stateBgLayerOpacity, 0) === 0) { - stateBgLayerLabel = 'orthogr_2013_global'; - } + listen(this.appThemes_, appEventsThemesEventType.LOAD, (_) => { + this.initBgLayers_().then(() =>{ + this.initFlatCatalog_(selectedLayers); + }) + }); +}; + +exports.prototype.initBgLayers_ = function() { + return this.appThemes_.getBgLayers().then((bgLayers) => { + var stateBgLayerLabel, stateBgLayerOpacity; + var mapId = this.ngeoLocation_.getParam('map_id'); + if (!this.initialized_) { + stateBgLayerLabel = this.stateManager_.getInitialValue('bgLayer'); + stateBgLayerOpacity = this.stateManager_.getInitialValue('bgOpacity'); + if ((stateBgLayerLabel !== undefined && stateBgLayerLabel !== null) || + ((stateBgLayerOpacity !== undefined && stateBgLayerOpacity !== null) && parseInt(stateBgLayerOpacity, 0) === 0)) { + if (this.initialVersion_ === 2 && stateBgLayerLabel !== undefined && stateBgLayerLabel !== null) { + stateBgLayerLabel = exports.V2_BGLAYER_TO_V3_[stateBgLayerLabel]; + } else if (this.initialVersion_ === 2 && parseInt(stateBgLayerOpacity, 0) === 0) { + stateBgLayerLabel = 'orthogr_2013_global'; + } + } else { + if (mapId === undefined) { + stateBgLayerLabel = 'basemap_2015_global'; + } else { + if (this.appTheme_.getCurrentTheme() === 'tourisme') { + stateBgLayerLabel = 'topo_bw_jpeg'; + } else { + stateBgLayerLabel = 'topogr_global'; + } + } + stateBgLayerOpacity = 0; + } + } else { + stateBgLayerLabel = this.ngeoLocation_.getParam('bgLayer'); + stateBgLayerOpacity = this.ngeoLocation_.getParam('bgOpacity'); + } + var hasBgLayerInUrl = (this.ngeoLocation_.getParam('bgLayer') !== undefined); + if (mapId === undefined || hasBgLayerInUrl) { + var layer = /** @type {ol.layer.Base} */ (bgLayers.find(layer => layer.get('label') === stateBgLayerLabel)); + this.backgroundLayerMgr_.set(this.map_, layer); + } + }); +} + +/** + * @param {Array.} selectedLayers The selected layers. + */ +exports.prototype.initFlatCatalog_ = function(selectedLayers) { + return this.appThemes_.getThemesPromise().then((root) => { + const flatCatalog = this.appThemes_.flatCatalog; + const ogcServers = root.ogcServers; + /** + * @type {Array.|undefined} + */ + var layerIds = []; + /** + * @type {Array.|undefined} + */ + var opacities = []; + if (!this.initialized_) { + if (this.initialVersion_ === 2) { + var layerString = this.stateManager_.getInitialValue('layers'); + if (layerString) { + var layers = layerString.split(','); + layers.forEach(stateLayerLabel => { + var layer = flatCatalog.find(catalogueLayer => catalogueLayer['name'] === stateLayerLabel); + layerIds.push(layer['id']); + }); + } + var opacitiesString = this.stateManager_.getInitialValue('layers_opacity'); + var visibilitiesString = this.stateManager_.getInitialValue('layers_visibility'); + if (opacitiesString !== undefined && opacitiesString !== null && + visibilitiesString !== undefined && visibilitiesString !== null && + visibilitiesString && opacitiesString) { + var visibilities = visibilitiesString.split(','); + opacitiesString.split(',').forEach( + function(opacity, index) { + if (visibilities[index] === 'true') { + opacities.push(parseFloat(opacity)); } else { - if (!goog.isDef(mapId)) { - stateBgLayerLabel = 'basemap_2015_global'; - } else { - if (this.appTheme_.getCurrentTheme() === 'tourisme') { - stateBgLayerLabel = 'topo_bw_jpeg'; - } else { - stateBgLayerLabel = 'topogr_global'; - } - } - stateBgLayerOpacity = 0; + opacities.push(0); } - } else { - stateBgLayerLabel = this.ngeoLocation_.getParam('bgLayer'); - stateBgLayerOpacity = - this.ngeoLocation_.getParam('bgOpacity'); - } - var hasBgLayerInUrl = goog.isDef(this.ngeoLocation_.getParam('bgLayer')); - if (!goog.isDef(mapId) || hasBgLayerInUrl) { - var layer = /** @type {ol.layer.Base} */ - (goog.array.find(bgLayers, function(layer) { - return layer.get('label') === stateBgLayerLabel; - })); - this.backgroundLayerMgr_.set(this.map_, layer); - } - this.appThemes_.getFlatCatalog().then( - function(flatCatalogue) { - /** - * @type {Array.|undefined} - */ - var layerIds = []; - /** - * @type {Array.|undefined} - */ - var opacities = []; - if (!this.initialized_) { - if (this.initialVersion_ === 2) { - var layerString = this.stateManager_. - getInitialValue('layers'); - if (layerString) { - var layers = layerString.split(','); - goog.array.forEach(layers, - function(stateLayerLabel) { - var layer = goog.array.find(flatCatalogue, - function(catalogueLayer) { - return catalogueLayer['name'] === - stateLayerLabel; - }, this); - layerIds.push(layer['id']); - }, this); - } - var opacitiesString = this.stateManager_. - getInitialValue('layers_opacity'); - var visibilitiesString = this.stateManager_. - getInitialValue('layers_visibility'); - if (goog.isDefAndNotNull(opacitiesString) && - goog.isDefAndNotNull(visibilitiesString) && - visibilitiesString && - opacitiesString) { - var visibilities = visibilitiesString.split(','); - goog.array.forEach( - opacitiesString.split(','), - function(opacity, index) { - if (visibilities[index] === 'true') { - opacities.push(parseFloat(opacity)); - } else { - opacities.push(0); - } - }); - } - layerIds.reverse(); - opacities.reverse(); - - this.stateManager_.deleteParam('layers_indices'); - this.stateManager_.deleteParam('layers_opacity'); - this.stateManager_.deleteParam('layers_visibility'); - this.stateManager_.deleteParam('bgOpacity'); - - } else { - layerIds = this.getStateValue_('layers'); - opacities = this.getStateValue_('opacities'); - } - this.initialized_ = true; - } else { - layerIds = this.splitLayers_( - this.ngeoLocation_.getParam('layers'), '-'); - opacities = this.splitNumbers_( - this.ngeoLocation_.getParam('opacities'), '-'); - } - this.removeWatchers_(); - if (goog.isDef(layerIds) && goog.isDef(opacities) && - layerIds.length > 0 && - layerIds.length === opacities.length) { - this.applyLayerStateToMap_(layerIds, opacities, - flatCatalogue); - } - this.setupWatchers_(selectedLayers); - }.bind(this)); - }.bind(this)); - }, this); - }; + }); + } + layerIds.reverse(); + opacities.reverse(); + + this.stateManager_.deleteParam('layers_indices'); + this.stateManager_.deleteParam('layers_opacity'); + this.stateManager_.deleteParam('layers_visibility'); + this.stateManager_.deleteParam('bgOpacity'); + + } else { + layerIds = this.getStateValue_('layers'); + opacities = this.getStateValue_('opacities'); + } + this.initialized_ = true; + } else { + layerIds = this.splitLayers_( + this.ngeoLocation_.getParam('layers'), '-'); + opacities = this.splitNumbers_( + this.ngeoLocation_.getParam('opacities'), '-'); + } + this.removeWatchers_(); + if (layerIds !== undefined && opacities !== undefined && + layerIds.length > 0 && + layerIds.length === opacities.length) { + this.applyLayerStateToMap_(layerIds, opacities, flatCatalog, ogcServers); + } + this.setupWatchers_(selectedLayers); + }); +} +appModule.service('appLayerPermalinkManager', exports); + -app.module.service('appLayerPermalinkManager', app.LayerPermalinkManager); +export default exports; diff --git a/geoportailv3/static/js/locationcontrol.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/LocationControl.js similarity index 54% rename from geoportailv3/static/js/locationcontrol.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/LocationControl.js index 4fd0f2511..ec80b99b5 100644 --- a/geoportailv3/static/js/locationcontrol.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/LocationControl.js @@ -1,36 +1,21 @@ /** - * @fileoverview This file defines the geolocation control. - * + * @module app.LocationControl */ -goog.provide('app.LocationControl'); - -goog.require('goog.dom'); -goog.require('goog.dom.TagName'); -goog.require('goog.dom.classlist'); -goog.require('ngeo.map.FeatureOverlay'); -goog.require('ngeo.map.FeatureOverlayMgr'); -goog.require('ol.Feature'); -goog.require('ol.Geolocation'); -goog.require('ol.Object'); -goog.require('ol.control.Control'); -goog.require('ol.events'); -goog.require('ol.geom.Point'); - - /** - * @typedef {{className: (string|undefined), - * label: (string|undefined), - * tipLabel: (string|undefined), - * target: (Element|undefined), - * featureOverlayMgr: ngeo.map.FeatureOverlayMgr, - * notify: app.Notify, - * gettextCatalog: angularGettext.Catalog, - * scope: angular.Scope, - * window: angular.$window - * }} + * @fileoverview This file defines the geolocation control. + * */ -app.LocationControlOptions; +import appNotifyNotificationType from './NotifyNotificationType.js'; +import {inherits} from 'ol/index.js'; +import {CLASS_CONTROL, CLASS_UNSELECTABLE} from 'ol/css.js'; +import olControlControl from 'ol/control/Control.js'; +import {listen} from 'ol/events.js'; +import olFeature from 'ol/Feature.js'; +import olGeomPoint from 'ol/geom/Point.js'; +import olGeolocation from 'ol/Geolocation.js'; +import olGeolocationProperty from 'ol/GeolocationProperty.js'; +import {getChangeEventType} from 'ol/Object.js'; /** * @constructor @@ -39,8 +24,8 @@ app.LocationControlOptions; * options. * @ngInject */ -app.LocationControl = function(options) { - var className = goog.isDef(options.className) ? options.className : +const exports = function(options) { + var className = (options.className !== undefined) ? options.className : 'location-button'; /** * @type {angular.$window} @@ -70,13 +55,13 @@ app.LocationControl = function(options) { * @type {ol.Feature} * @private */ - this.accuracyFeature_ = new ol.Feature(); + this.accuracyFeature_ = new olFeature(); /** * @type {ol.Feature} * @private */ - this.positionFeature_ = new ol.Feature(); + this.positionFeature_ = new olFeature(); /** * @type {ol.Geolocation} @@ -90,43 +75,46 @@ app.LocationControl = function(options) { */ this.featureOverlay_ = options.featureOverlayMgr.getFeatureOverlay(); - var label = goog.isDef(options.label) ? options.label : 'L'; - var tipLabel = goog.isDef(options.tipLabel) ? + var label = (options.label !== undefined) ? options.label : 'L'; + var tipLabel = (options.tipLabel !== undefined) ? options.tipLabel : 'Location'; - var button = goog.dom.createDom(goog.dom.TagName.BUTTON, { - 'type': 'button', - 'title': tipLabel - }, label); - var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' + - ol.css.CLASS_CONTROL + ' ' + 'tracker-off'; + var button = document.createElement('BUTTON'); + button.appendChild(document.createTextNode(label)); + button.setAttribute('type', 'button'); + button.setAttribute('title', tipLabel); + + var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + + CLASS_CONTROL + ' ' + 'tracker-off'; /** * @type {!Element} */ - this.element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, button); + this.element = document.createElement('DIV'); + this.element.setAttribute('class', cssClasses); + this.element.appendChild(button); - ol.events.listen(button, ol.events.EventType.CLICK, + listen(button, 'click', this.handleClick_, this); - ol.events.listen(button, ol.events.EventType.MOUSEOUT, function() { + listen(button, 'mouseout', function() { this.blur(); }); - - goog.base(this, { + olControlControl.call(this, { element: this.element, target: options.target }); }; -goog.inherits(app.LocationControl, ol.control.Control); + +inherits(exports, olControlControl); /** * @param {ol.MapBrowserEvent} event The event to handle * @private */ -app.LocationControl.prototype.handleClick_ = function(event) { +exports.prototype.handleClick_ = function(event) { event.preventDefault(); if (this.window_.location.protocol !== 'https:') { this.scope_['mainCtrl']['showRedirect'] = true; @@ -139,8 +127,8 @@ app.LocationControl.prototype.handleClick_ = function(event) { /** * Active or unactive the tracking. */ -app.LocationControl.prototype.handleCenterToLocation = function() { - if (goog.isNull(this.geolocation_)) { +exports.prototype.handleCenterToLocation = function() { + if (this.geolocation_ === null) { this.initGeoLocation_(); } if (!this.geolocation_.getTracking()) { @@ -158,9 +146,9 @@ app.LocationControl.prototype.handleCenterToLocation = function() { * * @private */ -app.LocationControl.prototype.initGeoLocation_ = function() { +exports.prototype.initGeoLocation_ = function() { - this.geolocation_ = new ol.Geolocation({ + this.geolocation_ = new olGeolocation({ projection: this.getMap().getView().getProjection(), trackingOptions: /** @type {GeolocationPositionOptions} */ ({ enableHighAccuracy: true, @@ -169,33 +157,35 @@ app.LocationControl.prototype.initGeoLocation_ = function() { }) }); - ol.events.listen(this.geolocation_, - ol.Object.getChangeEventType(ol.GeolocationProperty.TRACKING), + listen(this.geolocation_, + getChangeEventType(olGeolocationProperty.TRACKING), /** * @param {ol.Object.Event} e Object event. */ function(e) { if (this.geolocation_.getTracking()) { - goog.dom.classlist.swap(this.element, 'tracker-off', 'tracker-on'); + this.element.classList.remove('tracker-off'); + this.element.classList.add('tracker-on'); } else { - goog.dom.classlist.swap(this.element, 'tracker-on', 'tracker-off'); + this.element.classList.remove('tracker-on'); + this.element.classList.add('tracker-off'); } }, this); - ol.events.listen(this.geolocation_, - ol.Object.getChangeEventType(ol.GeolocationProperty.POSITION), + listen(this.geolocation_, + getChangeEventType(olGeolocationProperty.POSITION), /** * @param {ol.Object.Event} e Object event. */ function(e) { var position = /** @type {ol.Coordinate} */ (this.geolocation_.getPosition()); - this.positionFeature_.setGeometry(new ol.geom.Point(position)); + this.positionFeature_.setGeometry(new olGeomPoint(position)); this.getMap().getView().setCenter(position); }, this); - ol.events.listen(this.geolocation_, - ol.Object.getChangeEventType(ol.GeolocationProperty.ACCURACY_GEOMETRY), + listen(this.geolocation_, + getChangeEventType(olGeolocationProperty.ACCURACY_GEOMETRY), /** * @param {ol.Object.Event} e Object event. */ @@ -204,15 +194,15 @@ app.LocationControl.prototype.initGeoLocation_ = function() { this.geolocation_.getAccuracyGeometry()); }, this); - ol.events.listen(this.geolocation_, - ol.events.EventType.ERROR, + listen(this.geolocation_, + 'error', function(e) { this.featureOverlay_.clear(); if (e.message && e.message.length > 0) { var msg = this.gettextCatalog_.getString( 'Erreur lors de l\'acquisition de la position :'); msg = msg + e.message; - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); } }.bind(this)); @@ -222,7 +212,7 @@ app.LocationControl.prototype.initGeoLocation_ = function() { /** * @private */ -app.LocationControl.prototype.initFeatureOverlay_ = function() { +exports.prototype.initFeatureOverlay_ = function() { this.featureOverlay_.clear(); this.accuracyFeature_.setGeometry(null); this.positionFeature_.setGeometry(null); @@ -234,6 +224,9 @@ app.LocationControl.prototype.initFeatureOverlay_ = function() { /** * @private */ -app.LocationControl.prototype.clearFeatureOverlay_ = function() { +exports.prototype.clearFeatureOverlay_ = function() { this.featureOverlay_.clear(); }; + + +export default exports; diff --git a/geoportailv3/static/js/map/map.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Map.js similarity index 87% rename from geoportailv3/static/js/map/map.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Map.js index 03efa8744..3c35f9994 100644 --- a/geoportailv3/static/js/map/map.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Map.js @@ -1,13 +1,14 @@ +/** + * @module app.Map + */ /** * @fileoverview This file provides the "app.Map" class. * it extends "ol.Map" to support 3D in `getCoordinateFromPixel` method. */ -goog.provide('app.Map'); -goog.require('app'); -goog.require('ol.Map'); +import olMap from 'ol/Map.js'; -app.Map = class extends ol.Map { +const exports = class extends olMap { /** * @override @@ -33,3 +34,6 @@ app.Map = class extends ol.Map { return [cartesian.x, cartesian.y, cartesian.z]; } }; + + +export default exports; diff --git a/geoportailv3/static/js/mymapsservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Mymaps.js similarity index 65% rename from geoportailv3/static/js/mymapsservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Mymaps.js index f441736f3..9a834160f 100644 --- a/geoportailv3/static/js/mymapsservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Mymaps.js @@ -1,34 +1,29 @@ +/** + * @module app.Mymaps + */ /** * @fileoverview This file defines the mymaps webservice. this service * interacts with the Geoportail MyMaps webservice and exposes functions that * return objects representing maps and features. */ -goog.provide('app.Mymaps'); - -goog.require('app'); -goog.require('app.Notify'); -goog.require('app.UserManager'); -goog.require('goog.array'); -goog.require('goog.color'); -goog.require('goog.object'); -goog.require('goog.string'); -goog.require('ol.format.GeoJSON'); -goog.require('ol.geom.Point'); -goog.require('ol.geom.MultiPoint'); -goog.require('ol.style.Circle'); -goog.require('ol.style.Fill'); -goog.require('ol.style.Icon'); -goog.require('ol.style.RegularShape'); -goog.require('ol.style.Text'); -goog.require('ol.style.Stroke'); -goog.require('ol.style.Style'); - -/** - * @typedef {Array.} - */ -app.MapsResponse; - +import appModule from './module.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; +import {assign} from 'ol/obj.js'; +import olFormatGeoJSON from 'ol/format/GeoJSON.js'; +import olGeomLineString from 'ol/geom/LineString.js'; +import olGeomMultiPoint from 'ol/geom/MultiPoint.js'; +import olGeomPolygon from 'ol/geom/Polygon.js'; +import olGeomGeometryType from 'ol/geom/GeometryType.js'; +import olGeomPoint from 'ol/geom/Point.js'; +import {transform} from 'ol/proj.js'; +import olStyleCircle from 'ol/style/Circle.js'; +import olStyleFill from 'ol/style/Fill.js'; +import olStyleIcon from 'ol/style/Icon.js'; +import olStyleRegularShape from 'ol/style/RegularShape.js'; +import olStyleText from 'ol/style/Text.js'; +import olStyleStroke from 'ol/style/Stroke.js'; +import olStyleStyle from 'ol/style/Style.js'; /** * @constructor @@ -45,13 +40,22 @@ app.MapsResponse; * @param {app.Theme} appTheme The theme service. * @param {ngeo.map.BackgroundLayerMgr} ngeoBackgroundLayerMgr The background layer * manager. + * @param {ngeo.offline.NetworkStatus} ngeoNetworkStatus ngeo Network Status. + * @param {string} appImagesPath Path the the static images. * @param {string} arrowUrl URL to the arrow. * @param {string} arrowModelUrl URL to the Cesium arrow model. * @ngInject */ -app.Mymaps = function($http, mymapsMapsUrl, mymapsUrl, appStateManager, +const exports = function($http, mymapsMapsUrl, mymapsUrl, appStateManager, appUserManager, appNotify, appGetLayerForCatalogNode, gettextCatalog, - appThemes, appTheme, ngeoBackgroundLayerMgr, arrowUrl, arrowModelUrl) { + appThemes, appTheme, ngeoBackgroundLayerMgr, ngeoNetworkStatus, + appImagesPath, arrowUrl, arrowModelUrl) { + /** + * @type {string} + * @private + */ + this.whiteArrowUrl_ = appImagesPath + 'arrow.png'; + /** * @type {string} * @private @@ -86,6 +90,12 @@ app.Mymaps = function($http, mymapsMapsUrl, mymapsUrl, appStateManager, */ this.backgroundLayerMgr_ = ngeoBackgroundLayerMgr; + /** + * @type {ngeo.offline.NetworkStatus} + * @private + */ + this.ngeoNetworkStatus_ = ngeoNetworkStatus; + /** * @type {app.Themes} * @private @@ -326,6 +336,18 @@ app.Mymaps = function($http, mymapsMapsUrl, mymapsUrl, appStateManager, */ this.allcategories = null; + /** + * The raw response data of the map info query. + * @type {?Object} + */ + this.mapInfo_ = null; + + /** + * The raw response data of the map features query. + * @type {?Object} + */ + this.mapFeatures_ = null; + /** * @const * @private @@ -343,15 +365,35 @@ app.Mymaps = function($http, mymapsMapsUrl, mymapsUrl, appStateManager, }; +/** + * @return {?Object} The raw response data of the map info query. + */ +exports.prototype.getMapInfo = function() { + return this.mapInfo_; +}; + + +/** + * @return {?Object} The raw response data of the map features query. + */ +exports.prototype.getMapFeatures = function() { + return this.mapFeatures_; +}; + + /** * @param {?number} categoryId the category id to get a category for * @return {?Object} The category. */ -app.Mymaps.prototype.getCategory = function(categoryId) { - if (goog.isDefAndNotNull(categoryId)) { - return goog.array.find(this.allcategories, function(category) { +exports.prototype.getCategory = function(categoryId) { + if (categoryId !== undefined && categoryId !== null) { + var categ = this.allcategories.find(function(category) { return category.id === categoryId; }); + if (categ === undefined) { + return null; + } + return categ; } else { return null; } @@ -362,7 +404,7 @@ app.Mymaps.prototype.getCategory = function(categoryId) { * Set the mapId. * @param {string} mapId The map id. */ -app.Mymaps.prototype.setMapId = function(mapId) { +exports.prototype.setMapId = function(mapId) { this.mapId_ = mapId; this.stateManager_.updateState({ 'map_id': this.mapId_ @@ -374,7 +416,7 @@ app.Mymaps.prototype.setMapId = function(mapId) { * Get the mapId. * @return {string} The map id. */ -app.Mymaps.prototype.getMapId = function() { +exports.prototype.getMapId = function() { return this.mapId_; }; @@ -385,43 +427,51 @@ app.Mymaps.prototype.getMapId = function() { * @param {ol.Collection} collection The collection. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.setCurrentMapId = function(mapId, collection) { +exports.prototype.setCurrentMapId = function(mapId, collection) { this.setMapId(mapId); - return this.loadMapInformation().then(goog.bind(function(mapinformation) { + return this.loadMapInformation().then(function(mapinformation) { if (mapinformation !== null) { - return this.loadFeatures_().then(goog.bind(function(features) { - if (features !== null) { - var encOpt = /** @type {olx.format.ReadOptions} */ ({ - dataProjection: 'EPSG:2169', - featureProjection: this.mapProjection - }); - - var featureStyleFunction = this.createStyleFunction(this.map); - var jsonFeatures = (new ol.format.GeoJSON()). - readFeatures(features, encOpt); - goog.array.forEach(jsonFeatures, function(feature) { - feature.set('altitudeMode', 'clampToGround'); - feature.set('__map_id__', this.getMapId()); - feature.setStyle(featureStyleFunction); - }, this); - - collection.extend( - /** @type {!Array<(null|ol.Feature)>} */ (jsonFeatures)); - } - return collection; - }, this)); + return this.loadFeatures_().then(function(features) { + return this.setFeatures(features, collection); + }.bind(this)); } return null; - }, this)); - + }.bind(this)); }; +/** + * Fill a collection of features with features objects. + * @param {app.MapsResponse} features An array of feature object. + * @param {ol.Collection} collection The collection of features to fill. + * @return {ol.Collection} a collection of features with the new features. + */ +exports.prototype.setFeatures = function(features, collection) { + if (features !== null) { + var encOpt = /** @type {olx.format.ReadOptions} */ ({ + dataProjection: 'EPSG:2169', + featureProjection: this.mapProjection + }); + + var featureStyleFunction = this.createStyleFunction(this.map); + var jsonFeatures = (new olFormatGeoJSON()). + readFeatures(features, encOpt); + jsonFeatures.forEach(function(feature) { + feature.set('altitudeMode', 'clampToGround'); + feature.set('__map_id__', this.getMapId()); + feature.setStyle(featureStyleFunction); + }, this); + + collection.extend( + /** @type {!Array<(null|ol.Feature)>} */ (jsonFeatures)); + } + return collection; +}; /** * clear the mymaps service */ -app.Mymaps.prototype.clear = function() { +exports.prototype.clear = function() { this.stateManager_.deleteParam('map_id'); this.mapId_ = ''; this.mapTitle = ''; @@ -442,9 +492,9 @@ app.Mymaps.prototype.clear = function() { /** * @return {boolean} Return true if is editable by the user */ -app.Mymaps.prototype.isEditable = function() { +exports.prototype.isEditable = function() { if (this.isMymapsSelected() && this.appUserManager_.isAuthenticated() && - this.mapIsEditable) { + this.mapIsEditable && !this.ngeoNetworkStatus_.isDisconnected()) { return true; } return false; @@ -455,7 +505,7 @@ app.Mymaps.prototype.isEditable = function() { * Get the categories available for each user that the connected user can see. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.getUsersCategories = function() { +exports.prototype.getUsersCategories = function() { var url = this.mymapsUserCategoriesUrl_; return this.$http_.get(url).then( function(resp) { @@ -469,7 +519,7 @@ app.Mymaps.prototype.getUsersCategories = function() { * @param {?number} categoryId The category to restrict. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.getMaps = function(owner, categoryId) { +exports.prototype.getMaps = function(owner, categoryId) { var url = this.mymapsMapsUrl_; var params = {}; if (owner !== null) { @@ -479,29 +529,28 @@ app.Mymaps.prototype.getMaps = function(owner, categoryId) { params['category'] = categoryId; } - return this.$http_.get(url, {params: params}).then(goog.bind( + return this.$http_.get(url, {params: params}).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { - goog.array.forEach(resp.data, function(map) { - if (goog.isNull(map['update_date'])) { + (function(resp) { + resp.data.forEach(function(map) { + if (map['update_date'] === null) { map['update_date'] = map['create_date']; } }); return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors du chargement de vos cartes.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -510,22 +559,21 @@ app.Mymaps.prototype.getMaps = function(owner, categoryId) { * Load the permissible categories from the webservice. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.loadCategories = function() { - return this.$http_.get(this.mymapsCategoriesUrl_).then(goog.bind( +exports.prototype.loadCategories = function() { + return this.$http_.get(this.mymapsCategoriesUrl_).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { this.categories = resp.data; return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { return null; } return []; - }, this) + }.bind(this) ); }; @@ -534,22 +582,21 @@ app.Mymaps.prototype.loadCategories = function() { * Load the permissible categories from the webservice. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.loadAllCategories = function() { - return this.$http_.get(this.mymapsAllCategoriesUrl_).then(goog.bind( +exports.prototype.loadAllCategories = function() { + return this.$http_.get(this.mymapsAllCategoriesUrl_).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { this.allcategories = resp.data; return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { return null; } return []; - }, this) + }.bind(this) ); }; @@ -559,16 +606,16 @@ app.Mymaps.prototype.loadAllCategories = function() { * @return {angular.$q.Promise} Promise. * @private */ -app.Mymaps.prototype.loadFeatures_ = function() { - return this.$http_.get(this.mymapsFeaturesUrl_ + this.mapId_).then(goog.bind( +exports.prototype.loadFeatures_ = function() { + return this.$http_.get(this.mymapsFeaturesUrl_ + this.mapId_).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { + this.mapFeatures_ = resp.data; return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { var msg; if (error.status == 401) { this.notifyUnauthorized(); @@ -576,14 +623,14 @@ app.Mymaps.prototype.loadFeatures_ = function() { } else if (error.status == 404) { msg = this.gettextCatalog.getString( 'La carte demandée n\'existe pas.'); - this.notify_(msg, app.NotifyNotificationType.WARNING); + this.notify_(msg, appNotifyNotificationType.WARNING); return null; } msg = this.gettextCatalog.getString( 'Erreur inattendue lors du chargement de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return null; - }, this) + }.bind(this) ); }; @@ -591,21 +638,21 @@ app.Mymaps.prototype.loadFeatures_ = function() { /** * update the map with layers */ -app.Mymaps.prototype.updateLayers = function() { +exports.prototype.updateLayers = function() { var curBgLayer = this.mapBgLayer; - this.appThemes_.getBgLayers().then(goog.bind( + this.appThemes_.getBgLayers().then( /** * @param {Array.} bgLayers The bg layer. */ - function(bgLayers) { + (function(bgLayers) { var layer = /** @type {ol.layer.Base} */ - (goog.array.find(bgLayers, function(layer) { + (bgLayers.find(function(layer) { return layer.get('label') === curBgLayer; })); if (layer) { this.backgroundLayerMgr_.set(this.map, layer); } - }, this)); + }).bind(this)); var curMapLayers = this.mapLayers; var curMapOpacities = this.mapLayersOpacities; @@ -614,11 +661,11 @@ app.Mymaps.prototype.updateLayers = function() { this.appTheme_.setCurrentTheme(this.mapTheme); } this.appThemes_.getFlatCatalog() - .then(goog.bind(function(flatCatalogue) { - goog.array.forEach(curMapLayers, goog.bind(function(item, layerIndex) { - var node = goog.array.find(flatCatalogue, - function(catalogueLayer) { - return catalogueLayer['name'] === item; + .then(function(flatCatalogue) { + curMapLayers.forEach(function(item, layerIndex) { + var node = flatCatalogue.find( + function(catalogLayer) { + return catalogLayer['name'] === item; }); if (node) { var layer = this.getLayerFunc_(node); @@ -634,8 +681,8 @@ app.Mymaps.prototype.updateLayers = function() { } } } - }, this)); - }, this)); + }, this); + }.bind(this)); }; @@ -643,94 +690,101 @@ app.Mymaps.prototype.updateLayers = function() { * Load the map information. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.loadMapInformation = function() { - return this.getMapInformation().then( - goog.bind(function(mapinformation) { - if (mapinformation !== null) { - this.mapDescription = mapinformation['description']; - this.mapTitle = mapinformation['title']; - this.mapOwner = mapinformation['user_login']; - this.mapIsPublic = mapinformation['public']; - this.mapCategoryId = mapinformation['category_id']; - this.mapBgLayer = mapinformation['bg_layer']; - this.mapTheme = mapinformation['theme']; - this.mapIsEditable = mapinformation['is_editable']; - - if (!this.mapBgLayer) { - if (this.mapTheme === 'tourisme') { - this.mapBgLayer = 'topo_bw_jpeg'; - } else { - this.mapBgLayer = 'topogr_global'; - } - mapinformation['bg_layer'] = this.mapBgLayer; - } - if (this.mapBgLayer in this.V2_BGLAYER_TO_V3_) { - this.mapBgLayer = this.V2_BGLAYER_TO_V3_[this.mapBgLayer]; - } +exports.prototype.loadMapInformation = function() { + return this.getMapInformation().then(function(mapinformation) { + return this.setMapInformation(mapinformation); + }.bind(this)); +}; - this.mapBgOpacity = mapinformation['bg_opacity']; - if ('layers' in mapinformation && mapinformation['layers']) { - this.mapLayers = mapinformation['layers'].split(','); - this.mapLayers.reverse(); - if ('layers_opacity' in mapinformation && - mapinformation['layers_opacity']) { - this.mapLayersOpacities = - mapinformation['layers_opacity'].split(','); - } else { - this.mapLayersOpacities = []; - } - this.mapLayersOpacities.reverse(); - if ('layers_visibility' in mapinformation && - mapinformation['layers_visibility']) { - this.mapLayersVisibilities = - mapinformation['layers_visibility'].split(','); - } else { - this.mapLayersVisibilities = []; - } - this.mapLayersVisibilities.reverse(); - if ('layers_indices' in mapinformation && - mapinformation['layers_indices']) { - this.mapLayersIndicies = - mapinformation['layers_indices'].split(','); - } else { - this.mapLayersIndicies = []; - } - this.mapLayersIndicies.reverse(); - - // remove layers with no name - var iToRemove = []; - this.mapLayers = goog.array.filter(this.mapLayers, function(item, i) { - if (item.length === 0) { - iToRemove.push(i); - return false; - } - return true; - }, this); - goog.array.forEachRight(iToRemove, function(item) { - if (this.mapLayersIndicies) { - this.mapLayersIndicies.splice(item, 1); - } - if (this.mapLayersVisibilities) { - this.mapLayersVisibilities.splice(item, 1); - } - if (this.mapLayersOpacities) { - this.mapLayersOpacities.splice(item, 1); - } - }, this); - } else { - this.mapLayers = []; - this.mapOpacities = []; - this.mapVisibilities = []; - this.mapLayersIndicies = []; - } + +/** + * FIXME + * @param {Object} mapinformation any + * @return {Object} mapinformation any + */ +exports.prototype.setMapInformation = function(mapinformation) { + if (mapinformation !== null) { + this.mapDescription = mapinformation['description']; + this.mapTitle = mapinformation['title']; + this.mapOwner = mapinformation['user_login']; + this.mapIsPublic = mapinformation['public']; + this.mapCategoryId = mapinformation['category_id']; + this.mapBgLayer = mapinformation['bg_layer']; + this.mapTheme = mapinformation['theme']; + this.mapIsEditable = mapinformation['is_editable']; + + if (!this.mapBgLayer) { + if (this.mapTheme === 'tourisme') { + this.mapBgLayer = 'topo_bw_jpeg'; + } else { + this.mapBgLayer = 'topogr_global'; + } + mapinformation['bg_layer'] = this.mapBgLayer; + } + if (this.mapBgLayer in this.V2_BGLAYER_TO_V3_) { + this.mapBgLayer = this.V2_BGLAYER_TO_V3_[this.mapBgLayer]; + } + + this.mapBgOpacity = mapinformation['bg_opacity']; + if ('layers' in mapinformation && mapinformation['layers']) { + this.mapLayers = mapinformation['layers'].split(','); + this.mapLayers.reverse(); + if ('layers_opacity' in mapinformation && + mapinformation['layers_opacity']) { + this.mapLayersOpacities = + mapinformation['layers_opacity'].split(','); + } else { + this.mapLayersOpacities = []; + } + this.mapLayersOpacities.reverse(); + if ('layers_visibility' in mapinformation && + mapinformation['layers_visibility']) { + this.mapLayersVisibilities = + mapinformation['layers_visibility'].split(','); + } else { + this.mapLayersVisibilities = []; + } + this.mapLayersVisibilities.reverse(); + if ('layers_indices' in mapinformation && + mapinformation['layers_indices']) { + this.mapLayersIndicies = + mapinformation['layers_indices'].split(','); + } else { + this.mapLayersIndicies = []; + } + this.mapLayersIndicies.reverse(); + + // remove layers with no name + var iToRemove = []; + this.mapLayers = this.mapLayers.filter(function(item, i) { + if (item.length === 0) { + iToRemove.push(i); + return false; + } + return true; + }, this); + for (var i = iToRemove.length - 1; i >= 0; --i) { + var item = iToRemove[i]; + if (this.mapLayersIndicies) { + this.mapLayersIndicies.splice(item, 1); } - return mapinformation; - }, this)) - .then(goog.bind(function(mapinformation) { - this.updateLayers(); - this.layersChanged = false; - return mapinformation; - }, this)); + if (this.mapLayersVisibilities) { + this.mapLayersVisibilities.splice(item, 1); + } + if (this.mapLayersOpacities) { + this.mapLayersOpacities.splice(item, 1); + } + } + } else { + this.mapLayers = []; + this.mapOpacities = []; + this.mapVisibilities = []; + this.mapLayersIndicies = []; + } + } + this.updateLayers(); + this.layersChanged = false; + return mapinformation; }; @@ -738,16 +792,16 @@ app.Mymaps.prototype.loadMapInformation = function() { * Get the map information. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.getMapInformation = function() { - return this.$http_.get(this.mymapsMapInfoUrl_ + this.mapId_).then(goog.bind( +exports.prototype.getMapInformation = function() { + return this.$http_.get(this.mymapsMapInfoUrl_ + this.mapId_).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { + this.mapInfo_ = resp.data; return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { var msg; if (error.status == 401) { this.notifyUnauthorized(); @@ -755,14 +809,14 @@ app.Mymaps.prototype.getMapInformation = function() { } else if (error.status == 404) { msg = this.gettextCatalog.getString( 'La carte demandée n\'existe pas.'); - this.notify_(msg, app.NotifyNotificationType.WARNING); + this.notify_(msg, appNotifyNotificationType.WARNING); return null; } msg = this.gettextCatalog.getString( 'Erreur inattendue lors du chargement de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return null; - }, this) + }.bind(this) ); }; @@ -772,17 +826,16 @@ app.Mymaps.prototype.getMapInformation = function() { * @param {ol.Feature} feature the feature to delete. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.deleteFeature = function(feature) { +exports.prototype.deleteFeature = function(feature) { return this.$http_.delete(this.mymapsDeleteFeatureUrl_ + - feature.get('fid')).then(goog.bind( + feature.get('fid')).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; @@ -790,9 +843,9 @@ app.Mymaps.prototype.deleteFeature = function(feature) { var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la suppression d\'un élement.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -805,7 +858,7 @@ app.Mymaps.prototype.deleteFeature = function(feature) { * @param {boolean} isPublic if the map is public or not. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.createMap = +exports.prototype.createMap = function(title, description, categoryId, isPublic) { var req = $.param({ 'title': title, @@ -817,24 +870,22 @@ app.Mymaps.prototype.createMap = headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.post(this.mymapsCreateMapUrl_, req, config).then( - goog.bind( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la création de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -847,7 +898,7 @@ app.Mymaps.prototype.createMap = * @param {boolean} isPublic if the map is public or not. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.copyMap = +exports.prototype.copyMap = function(title, description, categoryId, isPublic) { var req = $.param({ 'title': title, @@ -859,24 +910,23 @@ app.Mymaps.prototype.copyMap = headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.post(this.mymapsCopyMapUrl_ + this.mapId_, req, config). - then(goog.bind( + then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la copie de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this)); + }.bind(this)); }; @@ -885,26 +935,24 @@ app.Mymaps.prototype.copyMap = * @param {string} mapId The map id to delete. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.deleteAMap = function(mapId) { +exports.prototype.deleteAMap = function(mapId) { return this.$http_.delete(this.mymapsDeleteMapUrl_ + mapId).then( - goog.bind( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la suppression de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -914,26 +962,24 @@ app.Mymaps.prototype.deleteAMap = function(mapId) { * @param {string} mapId The map id of the features to delete. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.deleteAllFeaturesAMap = function(mapId) { +exports.prototype.deleteAllFeaturesAMap = function(mapId) { return this.$http_.delete(this.mymapsDeleteFeaturesUrl_ + mapId).then( - goog.bind( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la suppression des objets de la carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -942,7 +988,7 @@ app.Mymaps.prototype.deleteAllFeaturesAMap = function(mapId) { * Delete the current map. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.deleteMap = function() { +exports.prototype.deleteMap = function() { return this.deleteAMap(this.mapId_); }; @@ -951,7 +997,7 @@ app.Mymaps.prototype.deleteMap = function() { * Delete all the features of the current map. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.deleteMapFeatures = function() { +exports.prototype.deleteMapFeatures = function() { return this.deleteAllFeaturesAMap(this.mapId_); }; @@ -964,7 +1010,7 @@ app.Mymaps.prototype.deleteMapFeatures = function() { * @param {boolean} isPublic is the map public. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.updateMap = +exports.prototype.updateMap = function(title, description, categoryId, isPublic) { this.mapTitle = title; @@ -982,24 +1028,23 @@ app.Mymaps.prototype.updateMap = headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.put(this.mymapsUpdateMapUrl_ + this.mapId_, - req, config).then(goog.bind( + req, config).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la mise à jour de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -1015,7 +1060,7 @@ app.Mymaps.prototype.updateMap = * @param {string} theme The theme. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.updateMapEnv = +exports.prototype.updateMapEnv = function(bgLayer, bgOpacity, layers, layers_opacity, layers_visibility, layers_indices, theme) { @@ -1032,24 +1077,23 @@ app.Mymaps.prototype.updateMapEnv = headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.put(this.mymapsUpdateMapUrl_ + this.mapId_, - req, config).then(goog.bind( + req, config).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la mise à jour de votre carte.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -1059,10 +1103,10 @@ app.Mymaps.prototype.updateMapEnv = * @param {Array} features The feature to save * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.saveFeaturesOrder = function(features) { +exports.prototype.saveFeaturesOrder = function(features) { var orders = []; - goog.array.forEach(features, function(feature) { + features.forEach(function(feature) { orders.push({'fid': feature.get('fid'), 'display_order': feature.get('display_order')}); }, this); @@ -1074,24 +1118,23 @@ app.Mymaps.prototype.saveFeaturesOrder = function(features) { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.post(this.mymapsSaveFeatureOrderUrl_ + this.mapId_, - req, config).then(goog.bind( + req, config).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la sauvegarde de votre modification.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -1101,36 +1144,35 @@ app.Mymaps.prototype.saveFeaturesOrder = function(features) { * @param {ol.Feature} feature The feature to save * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.saveFeature = function(feature) { +exports.prototype.saveFeature = function(feature) { var encOpt = /** @type {olx.format.ReadOptions} */ ({ dataProjection: 'EPSG:2169', featureProjection: this.mapProjection }); var req = $.param({ - 'feature': (new ol.format.GeoJSON()).writeFeature(feature, encOpt) + 'feature': (new olFormatGeoJSON()).writeFeature(feature, encOpt) }); var config = { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.post(this.mymapsSaveFeatureUrl_ + this.mapId_, - req, config).then(goog.bind( + req, config).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la sauvegarde de votre modification.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -1140,36 +1182,35 @@ app.Mymaps.prototype.saveFeature = function(feature) { * @param {Array.} features The features to save. * @return {angular.$q.Promise} Promise. */ -app.Mymaps.prototype.saveFeatures = function(features) { +exports.prototype.saveFeatures = function(features) { var encOpt = /** @type {olx.format.ReadOptions} */ ({ dataProjection: 'EPSG:2169', featureProjection: this.mapProjection }); var req = $.param({ - 'features': (new ol.format.GeoJSON()).writeFeatures(features, encOpt) + 'features': (new olFormatGeoJSON()).writeFeatures(features, encOpt) }); var config = { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.$http_.post(this.mymapsSaveFeaturesUrl_ + this.mapId_, - req, config).then(goog.bind( + req, config).then( /** * @param {angular.$http.Response} resp Ajax response. * @return {app.MapsResponse} The "mymaps" web service response. */ - function(resp) { + (function(resp) { return resp.data; - }, this), goog.bind( - function(error) { + }).bind(this), function(error) { if (error.status == 401) { this.notifyUnauthorized(); return null; } var msg = this.gettextCatalog.getString( 'Erreur inattendue lors de la sauvegarde de votre modification.'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return []; - }, this) + }.bind(this) ); }; @@ -1178,17 +1219,17 @@ app.Mymaps.prototype.saveFeatures = function(features) { * Notify the user he has to connect. * @export */ -app.Mymaps.prototype.notifyUnauthorized = function() { +exports.prototype.notifyUnauthorized = function() { var msg = this.gettextCatalog.getString( 'Votre utilisateur n\'a pas les autorisations suffisantes.'); - this.notify_(msg, app.NotifyNotificationType.WARNING); + this.notify_(msg, appNotifyNotificationType.WARNING); }; /** * @return {boolean} Return true if a map is selected. */ -app.Mymaps.prototype.isMymapsSelected = function() { +exports.prototype.isMymapsSelected = function() { return !!this.mapId_; }; @@ -1198,19 +1239,19 @@ app.Mymaps.prototype.isMymapsSelected = function() { * @return {ol.FeatureStyleFunction} The Function to style. * @export */ -app.Mymaps.prototype.createStyleFunction = function(curMap) { +exports.prototype.createStyleFunction = function(curMap) { var styles = []; - var vertexStyle = new ol.style.Style({ - image: new ol.style.RegularShape({ + var vertexStyle = new olStyleStyle({ + image: new olStyleRegularShape({ radius: 6, points: 4, angle: Math.PI / 4, - fill: new ol.style.Fill({ + fill: new olStyleFill({ color: [255, 255, 255, 0.5] }), - stroke: new ol.style.Stroke({ + stroke: new olStyleStroke({ color: [0, 0, 0, 1] }) }), @@ -1218,61 +1259,64 @@ app.Mymaps.prototype.createStyleFunction = function(curMap) { var geom = feature.getGeometry(); var coordinates; - if (geom instanceof ol.geom.LineString) { + if (geom instanceof olGeomLineString) { coordinates = geom.getCoordinates(); - return new ol.geom.MultiPoint(coordinates); - } else if (geom instanceof ol.geom.Polygon) { + return new olGeomMultiPoint(coordinates); + } else if (geom instanceof olGeomPolygon) { coordinates = geom.getCoordinates()[0]; - return new ol.geom.MultiPoint(coordinates); + return new olGeomMultiPoint(coordinates); } else { return geom; } } }); - var fillStyle = new ol.style.Fill(); + var fillStyle = new olStyleFill(); var symbolUrl = this.mymapsSymbolUrl_; - var arrowUrl = this.arrowUrl_; + var whiteArrowUrl = this.whiteArrowUrl_; const arrowModelUrl = this.arrowModelUrl_; const colorStringToRgba = (colorString, opacity = 1) => { - const color = goog.color.hexToRgb(colorString); - color.push(opacity); - return color; + var r = parseInt(colorString.substr(1, 2), 16); + var g = parseInt(colorString.substr(3, 2), 16); + var b = parseInt(colorString.substr(5, 2), 16); + return [r, g, b, opacity]; }; - return function(resolution) { + return function(feature, _) { // clear the styles styles.length = 0; - if (this.get('__editable__') && this.get('__selected__')) { + if (typeof feature == "number") { + feature = this; // older OpenLayers version + } + if (feature.get('__editable__') && feature.get('__selected__')) { styles.push(vertexStyle); } - var order = this.get('display_order'); + var order = feature.get('display_order'); if (order === undefined) { order = 0; } - // goog.asserts.assert(goog.isDef(this.get('__style__')); - var color = this.get('color') || '#FF0000'; + var color = feature.get('color') || '#FF0000'; var rgbColor = colorStringToRgba(color, 1); - var opacity = this.get('opacity'); - if (!goog.isDef(opacity)) { + var opacity = feature.get('opacity'); + if (opacity === undefined) { opacity = 1; } - var rgbaColor = goog.array.clone(rgbColor); + var rgbaColor = rgbColor.slice(); rgbaColor[3] = opacity; fillStyle.setColor(rgbaColor); - if (this.getGeometry().getType() === ol.geom.GeometryType.LINE_STRING && - this.get('showOrientation') === true) { + if (feature.getGeometry().getType() === olGeomGeometryType.LINE_STRING && + feature.get('showOrientation') === true) { var prevArrow, distance; - var arrowColor = this.get('arrowcolor'); + var arrowColor = feature.get('arrowcolor'); if (arrowColor === undefined || arrowColor === null) { arrowColor = color; } - this.getGeometry().forEachSegment(function(start, end) { - var arrowPoint = new ol.geom.Point( + feature.getGeometry().forEachSegment(function(start, end) { + var arrowPoint = new olGeomPoint( [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]); var dx = end[0] - start[0]; var dy = end[1] - start[1]; @@ -1285,13 +1329,14 @@ app.Mymaps.prototype.createStyleFunction = function(curMap) { distance = Math.sqrt(w * w + h * h); } if (!prevArrow || distance > 600) { - var src = arrowUrl + '?color=' + arrowColor.replace('#', ''); + var src = whiteArrowUrl; const rotation = Math.PI / 2 - Math.atan2(dy, dx); // arrows - styles.push(new ol.style.Style({ + styles.push(new olStyleStyle({ geometry: arrowPoint, zIndex: order, - image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({ + image: new olStyleIcon(/** @type {olx.style.IconOptions} */ ({ + color: arrowColor, rotation, src })) @@ -1299,7 +1344,7 @@ app.Mymaps.prototype.createStyleFunction = function(curMap) { const modelColor = colorStringToRgba(arrowColor, 1); arrowPoint.set('olcs_model', () => { const coordinates = arrowPoint.getCoordinates(); - const center = ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326'); + const center = transform(coordinates, 'EPSG:3857', 'EPSG:4326'); return { cesiumOptions: { url: arrowModelUrl, @@ -1321,8 +1366,8 @@ app.Mymaps.prototype.createStyleFunction = function(curMap) { }); } var lineDash; - if (this.get('linestyle')) { - switch (this.get('linestyle')) { + if (feature.get('linestyle')) { + switch (feature.get('linestyle')) { case 'dashed': lineDash = [10, 10]; break; @@ -1335,101 +1380,101 @@ app.Mymaps.prototype.createStyleFunction = function(curMap) { } var stroke; - var featureStroke = this.get('stroke'); + var featureStroke = feature.get('stroke'); if (featureStroke > 0) { - if (!this.get('__editable__') && this.get('__selected__')) { + if (!feature.get('__editable__') && feature.get('__selected__')) { featureStroke = featureStroke + 3; } - stroke = new ol.style.Stroke({ + stroke = new olStyleStroke({ color: rgbColor, width: featureStroke, lineDash: lineDash }); } - var featureSize = this.get('size'); - if (!this.get('__editable__') && this.get('__selected__')) { + var featureSize = feature.get('size'); + if (!feature.get('__editable__') && feature.get('__selected__')) { featureSize = featureSize + 3; } var imageOptions = { fill: fillStyle, - stroke: new ol.style.Stroke({ + stroke: new olStyleStroke({ color: rgbColor, width: featureSize / 7 }), radius: featureSize }; var image = null; - if (this.get('symbolId')) { - goog.object.extend(imageOptions, { - src: symbolUrl + this.get('symbolId') + '?scale=' + featureSize, + if (feature.get('symbolId')) { + assign(imageOptions, { + src: symbolUrl + feature.get('symbolId') + '?scale=' + featureSize, scale: 1, - rotation: this.get('angle') + rotation: feature.get('angle') }); - image = new ol.style.Icon(imageOptions); + image = new olStyleIcon(imageOptions); } else { - var shape = this.get('shape'); + var shape = feature.get('shape'); if (!shape) { - this.set('shape', 'circle'); + feature.set('shape', 'circle'); shape = 'circle'; } if (shape === 'circle') { - image = new ol.style.Circle(imageOptions); + image = new olStyleCircle(imageOptions); } else if (shape === 'square') { - goog.object.extend(imageOptions, ({ + assign(imageOptions, { points: 4, angle: Math.PI / 4, - rotation: this.get('angle') - })); - image = new ol.style.RegularShape( + rotation: feature.get('angle') + }); + image = new olStyleRegularShape( /** @type {olx.style.RegularShapeOptions} */ (imageOptions)); } else if (shape === 'triangle') { - goog.object.extend(imageOptions, ({ + assign(imageOptions, ({ points: 3, angle: 0, - rotation: this.get('angle') + rotation: feature.get('angle') })); - image = new ol.style.RegularShape( + image = new olStyleRegularShape( /** @type {olx.style.RegularShapeOptions} */ (imageOptions)); } else if (shape === 'star') { - goog.object.extend(imageOptions, ({ + assign(imageOptions, ({ points: 5, angle: Math.PI / 4, - rotation: this.get('angle'), + rotation: feature.get('angle'), radius2: featureSize })); - image = new ol.style.RegularShape( + image = new olStyleRegularShape( /** @type {olx.style.RegularShapeOptions} */ (imageOptions)); - } else if (this.get('shape') == 'cross') { - goog.object.extend(imageOptions, ({ + } else if (feature.get('shape') == 'cross') { + assign(imageOptions, ({ points: 4, angle: 0, - rotation: this.get('angle'), + rotation: feature.get('angle'), radius2: 0 })); - image = new ol.style.RegularShape( + image = new olStyleRegularShape( /** @type {olx.style.RegularShapeOptions} */ (imageOptions)); } } - if (this.get('isLabel')) { - return [new ol.style.Style({ - text: new ol.style.Text(/** @type {olx.style.TextOptions} */ ({ - text: this.get('name'), + if (feature.get('isLabel')) { + return [new olStyleStyle({ + text: new olStyleText(/** @type {olx.style.TextOptions} */ ({ + text: feature.get('name'), textAlign: 'left', font: 'normal ' + featureSize + 'px Sans-serif', - rotation: this.get('angle'), - fill: new ol.style.Fill({ + rotation: feature.get('angle'), + fill: new olStyleFill({ color: rgbColor }), - stroke: new ol.style.Stroke({ + stroke: new olStyleStroke({ color: [255, 255, 255], width: 2 }) })) })]; } else { - styles.push(new ol.style.Style({ + styles.push(new olStyleStyle({ image: image, fill: fillStyle, stroke: stroke, @@ -1441,4 +1486,7 @@ app.Mymaps.prototype.createStyleFunction = function(curMap) { }; }; -app.module.service('appMymaps', app.Mymaps); +appModule.service('appMymaps', exports); + + +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/MymapsOffline.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/MymapsOffline.js new file mode 100644 index 000000000..82d12e698 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/MymapsOffline.js @@ -0,0 +1,88 @@ +/** + * @module app.MymapsOffline + */ +import appModule from './module.js'; + +/** + * @constructor + * @param {app.Mymaps} appMymaps app mymaps service. + * @param {app.draw.DrawnFeatures} appDrawnFeatures Drawn features service. + * @param {ngeo.offline.Configuration} ngeoOfflineConfiguration ngeo Offline Configuration + * @ngInject + */ +const exports = function(appMymaps, appDrawnFeatures, ngeoOfflineConfiguration) { + /** + * @type {app.Mymaps} + * @private + */ + this.appMymaps_ = appMymaps; + + /** + * @type {app.draw.DrawnFeatures} + * @private + */ + this.drawnFeatures_ = appDrawnFeatures; + + /** + * @type {ngeo.offline.Configuration} + * @private + */ + this.ngeoOfflineConfiguration_ = ngeoOfflineConfiguration; + + /** + * @type {string} + * @private + */ + this.storageGroupeKey_ = 'offline_mymaps'; +}; + +/** + * Save data into the storage system. + */ +exports.prototype.save = function() { + var item = { + 'allCategories': this.appMymaps_.allcategories, + 'mapInfo': this.appMymaps_.getMapInfo(), + 'mapFeatures': this.appMymaps_.getMapFeatures(), + 'mapId': this.appMymaps_.getMapId() + }; + this.ngeoOfflineConfiguration_.setItem(this.storageGroupeKey_, item); +}; + +/** + * Restore on the map and on the mymaps component the data from the storage. + */ +exports.prototype.restore = function() { + this.ngeoOfflineConfiguration_.getItem(this.storageGroupeKey_).then((storedItem) => { + if (!storedItem) { + return; + } + + var allcategories = /** @type {Array<(Object|null)>} */ (storedItem['allCategories']); + if (allcategories) { + this.appMymaps_.allcategories = (allcategories); + } + + var mapInfo = /** @type {Object} */ (storedItem['mapInfo']); + if (mapInfo) { + this.appMymaps_.setMapInformation(mapInfo); + } + + var mapFeatures = storedItem['mapFeatures']; + if (mapFeatures) { + const collection = this.drawnFeatures_.getCollection(); + collection.clear(); + this.appMymaps_.setFeatures(mapFeatures, collection); + } + + var mapId = storedItem['mapId']; + if (mapId) { + this.appMymaps_.setMapId(mapId); + } + }); +}; + +appModule.service('appMymapsOffline', exports); + + +export default exports; diff --git a/geoportailv3/static/js/notifyservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/NotifyFactory.js similarity index 65% rename from geoportailv3/static/js/notifyservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/NotifyFactory.js index f4309c178..c6fa8f02f 100644 --- a/geoportailv3/static/js/notifyservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/NotifyFactory.js @@ -1,29 +1,20 @@ /** - * @fileoverview Provides a flash message service. That service helps - * displaying general messages. + * @module app.NotifyFactory */ - -goog.provide('app.Notify'); -goog.provide('app.NotifyNotificationType'); +let exports = {}; /** - * @typedef {function(string, app.NotifyNotificationType)} + * @fileoverview Provides a flash message service. That service helps + * displaying general messages. */ -app.Notify; -/** - * @enum {string} - */ -app.NotifyNotificationType = { - INFO: 'alert-info', - WARNING: 'alert-warning', - ERROR: 'alert-danger' -}; +import appModule from './module.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; /** * @return {app.Notify} The notify function. */ -app.notifyFactory = function() { +function factory() { var container = angular.element('
'); angular.element(document.body).append(container); @@ -42,7 +33,7 @@ app.notifyFactory = function() { container.append(el); el.html(msg).addClass('in'); var notifyDuration = 7000; - if (notificationType === app.NotifyNotificationType.WARNING) { + if (notificationType === appNotifyNotificationType.WARNING) { notifyDuration = 4000; } @@ -50,6 +41,9 @@ app.notifyFactory = function() { el.alert('close'); }, notifyDuration); } -}; +} + +appModule.factory('appNotify', factory); + -app.module.factory('appNotify', app.notifyFactory); +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/NotifyNotificationType.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/NotifyNotificationType.js new file mode 100644 index 000000000..38cde19b4 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/NotifyNotificationType.js @@ -0,0 +1,14 @@ +/** + * @module app.NotifyNotificationType + */ +/** + * @enum {string} + */ +const exports = { + INFO: 'alert-info', + WARNING: 'alert-warning', + ERROR: 'alert-danger' +}; + + +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/OfflineDownloader.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/OfflineDownloader.js new file mode 100644 index 000000000..a581cbbc6 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/OfflineDownloader.js @@ -0,0 +1,54 @@ +/** + * @module app.OfflineDownloader + */ +import appModule from './module.js'; +import Downloader from 'ngeo/offline/Downloader.js'; + +/** + * @extends {ngeo.offline.Downloader} + */ +const OfflineDownloader = class extends Downloader { + /** + * @ngInject + * @param {ngeo.offline.Configuration} ngeoOfflineConfiguration A service for customizing offline behaviour. + * @param {app.MymapsOffline} appMymapsOffline mymaps offline service. + * @param {angular.$window} $window Window. + */ + constructor(ngeoOfflineConfiguration, appMymapsOffline, $window) { + super(ngeoOfflineConfiguration); + /** + * @type {app.MymapsOffline} + * @private + */ + this.appMymapsOffline_ = appMymapsOffline; + + /** + * @type {angular.$window} + * @private + */ + this.window_ = $window; + } + + /** + * @param {ol.Extent} extent The extent to download. + * @param {ol.Map} map The map to work on. + * @return {Promise} A promise resolving when save is finished. + * @override + */ + save(extent, map) { + this.appMymapsOffline_.save(); + var piwik = /** @type {Piwik} */ (this.window_['_paq']); + piwik.push([ + 'setDocumentTitle', + 'saveOfflineMap' + ]); + piwik.push(['trackPageView']); + return super.save(extent, map); + } +}; + +appModule.service('appOfflineDownloader', OfflineDownloader); +const exports = OfflineDownloader; + + +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/OfflineRestorer.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/OfflineRestorer.js new file mode 100644 index 000000000..3e72db05c --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/OfflineRestorer.js @@ -0,0 +1,67 @@ +/** + * @module app.OfflineRestorer + */ +import appModule from './module.js'; +import restorer from 'ngeo/offline/Restorer.js'; + +/** + * @extends {ngeo.offline.Restorer} + */ +const OfflineRestorer = class extends restorer { + /** + * @ngInject + * @param {ngeo.offline.Configuration} ngeoOfflineConfiguration A service for customizing offline behaviour. + * @param {ngeo.map.BackgroundLayerMgr} ngeoBackgroundLayerMgr Background layer manager. + * @param {app.MymapsOffline} appMymapsOffline mymaps offline service. + * @param {app.draw.DrawnFeatures} appDrawnFeatures Drawn features service. + */ + constructor(ngeoOfflineConfiguration, ngeoBackgroundLayerMgr, + appMymapsOffline, appDrawnFeatures) { + super(ngeoOfflineConfiguration, ngeoBackgroundLayerMgr); + /** + * @type {app.MymapsOffline} + * @private + */ + this.appMymapsOffline_ = appMymapsOffline; + + /** + * @private + * @type {app.draw.DrawnFeatures} + */ + this.appDrawnFeatures_ = appDrawnFeatures; + } + + /** + * @param {ol.Map} map The map to work on. + * @return {Promise} A promise resolving when restore is finished. + * @override + */ + restore(map) { + return super.restore(map).then((extent) => { + this.appMymapsOffline_.restore(); + map.addLayer(this.appDrawnFeatures_.drawLayer); + return extent; + }); + } + + /** + * @param {ol.Map} map The map. + * @param {ngeox.OfflinePersistentContent} offlineContent The offline content. + * @return {ol.Extent} the extent. + * @override + */ + doRestore(map, offlineContent) { + const view = map.getView(); + const {zooms} = offlineContent; + view.setMinZoom(zooms[0]); + view.setMaxZoom(zooms[zooms.length - 1 ]); + return super.doRestore(map, offlineContent); + } + +}; + +appModule.service('appOfflineRestorer', OfflineRestorer); +const exports = OfflineRestorer; + + +export default exports; diff --git a/geoportal/geoportailv3_geoportal/static-ngeo/js/Piwik.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Piwik.js new file mode 100644 index 000000000..cc1c63f55 --- /dev/null +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Piwik.js @@ -0,0 +1,13 @@ +/** + * @module app.Piwik + */ +let exports = {}; + + +/** + * @typedef {{push: function(Array)}} + */ +exports; + + +export default exports; diff --git a/geoportailv3/static/js/routingservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Routing.js similarity index 79% rename from geoportailv3/static/js/routingservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Routing.js index fac09a1f3..53ebea778 100644 --- a/geoportailv3/static/js/routingservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Routing.js @@ -1,12 +1,22 @@ +/** + * @module app.Routing + */ /** * @fileoverview This file provides an Angular service for interacting * with the "routing" web service. */ -goog.provide('app.Routing'); - -goog.require('app'); -goog.require('ol.proj'); +import appModule from './module.js'; +import Collection from 'ol/Collection.js'; +import Feature from 'ol/Feature.js'; +import Style from 'ol/style/Style.js'; +import Circle from 'ol/style/Circle.js'; +import Stroke from 'ol/style/Stroke.js'; +import Fill from 'ol/style/Fill.js'; +import Text from 'ol/style/Text.js'; +import olGeomPoint from 'ol/geom/Point.js'; +import olFormatGeoJSON from 'ol/format/GeoJSON.js'; +import {transform} from 'ol/proj.js'; /** * @constructor @@ -17,7 +27,7 @@ goog.require('ol.proj'); * @param {app.StateManager} appStateManager The state manager service. * @ngInject */ -app.Routing = function($http, routingServiceUrl, gettextCatalog, +const exports = function($http, routingServiceUrl, gettextCatalog, ngeoFeatureOverlayMgr, appStateManager) { /** * @type {app.StateManager} @@ -29,8 +39,8 @@ app.Routing = function($http, routingServiceUrl, gettextCatalog, * @type {ol.style.Style} * @private */ - this.roadStyle_ = new ol.style.Style({ - stroke: new ol.style.Stroke({ + this.roadStyle_ = new Style({ + stroke: new Stroke({ color: [255, 0, 0], width: 5 }) @@ -82,18 +92,18 @@ app.Routing = function($http, routingServiceUrl, gettextCatalog, /** * @type {ol.Collection} */ - this.routeFeatures = new ol.Collection(); + this.routeFeatures = new Collection(); this.routeOverlay.setFeatures(this.routeFeatures); /** * @type {ngeo.map.FeatureOverlay} */ this.stepsOverlay = ngeoFeatureOverlayMgr.getFeatureOverlay(); - var fillStyle = new ol.style.Fill({ + var fillStyle = new Fill({ color: [41, 128, 185] }); - var strokeStyle = new ol.style.Stroke({ + var strokeStyle = new Stroke({ color: [255, 255, 255], width: 3 }); @@ -102,11 +112,11 @@ app.Routing = function($http, routingServiceUrl, gettextCatalog, * @type {ol.style.Style} * @private */ - this.stepStyle_ = new ol.style.Style({ + this.stepStyle_ = new Style({ fill: fillStyle, zIndex: 0, stroke: strokeStyle, - image: new ol.style.Circle({ + image: new Circle({ radius: 7, fill: fillStyle, stroke: strokeStyle @@ -117,7 +127,7 @@ app.Routing = function($http, routingServiceUrl, gettextCatalog, /** * @type {ol.Collection} */ - this.stepFeatures = new ol.Collection(); + this.stepFeatures = new Collection(); this.stepsOverlay.setFeatures(this.stepFeatures); this.stepsOverlay.setStyle(this.stepStyle_); @@ -129,7 +139,7 @@ app.Routing = function($http, routingServiceUrl, gettextCatalog, /** * @type {ol.Collection} */ - this.features = new ol.Collection(); + this.features = new Collection(); this.routingOverlay.setFeatures(this.features); /** @@ -143,7 +153,7 @@ app.Routing = function($http, routingServiceUrl, gettextCatalog, * @param {number} fromPosition The position. * @param {number} toPosition The position. */ -app.Routing.prototype.moveFeaturePosition = function(fromPosition, toPosition) { +exports.prototype.moveFeaturePosition = function(fromPosition, toPosition) { if (this.features.getLength() > fromPosition) { var feature = this.features.removeAt(fromPosition); if (feature !== undefined) { @@ -155,7 +165,7 @@ app.Routing.prototype.moveFeaturePosition = function(fromPosition, toPosition) { /** * Reorder the route. */ -app.Routing.prototype.reorderRoute = function() { +exports.prototype.reorderRoute = function() { this.routesOrder.splice(0, this.routesOrder.length); var idx = 1; @@ -172,42 +182,42 @@ app.Routing.prototype.reorderRoute = function() { * @param {ol.Feature} feature The feature to insert. * @param {number} routeNumber The position. */ -app.Routing.prototype.insertFeatureAt = function(feature, routeNumber) { +exports.prototype.insertFeatureAt = function(feature, routeNumber) { feature.setStyle(function() { var styles = []; - var fillStyle = new ol.style.Fill({ + var fillStyle = new Fill({ color: [255, 255, 255] }); - var strokeStyle = new ol.style.Stroke({ + var strokeStyle = new Stroke({ color: [41, 128, 185], width: 3 }); - styles.push(new ol.style.Style({ + styles.push(new Style({ zIndex: 1, fill: fillStyle, stroke: strokeStyle, - image: new ol.style.Circle({ + image: new Circle({ radius: 15, fill: fillStyle, stroke: strokeStyle }) })); - var text = this.get('name'); + var text = feature.get('name'); if (text === undefined) { text = ''; } - styles.push(new ol.style.Style({ + styles.push(new Style({ zIndex: 2, - text: new ol.style.Text(/** @type {olx.style.TextOptions} */ ({ + text: new Text(/** @type {olx.style.TextOptions} */ ({ text: text, textAlign: 'center', font: 'normal 10px Sans-serif', - fill: new ol.style.Fill({ + fill: new Fill({ color: [41, 128, 185] }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: [255, 255, 255], width: 2 }) @@ -221,7 +231,7 @@ app.Routing.prototype.insertFeatureAt = function(feature, routeNumber) { if (routeNumber > featuresLength) { var j; for (j = featuresLength; j < routeNumber; ++j) { - var blankFeature = new ol.Feature(); + var blankFeature = new Feature(); blankFeature.set('name', '' + j); this.features.insertAt(j, blankFeature); } @@ -233,7 +243,7 @@ app.Routing.prototype.insertFeatureAt = function(feature, routeNumber) { * Add a new routing step at the best place. * @param {ol.Feature} feature The Feature. */ -app.Routing.prototype.addRoutePoint = function(feature) { +exports.prototype.addRoutePoint = function(feature) { var routeNum = -1; var i = 0; for (i = 0; i < this.routes.length; i++) { @@ -257,7 +267,7 @@ app.Routing.prototype.addRoutePoint = function(feature) { /** * Get the route */ -app.Routing.prototype.getRoute = function() { +exports.prototype.getRoute = function() { this.stateManager_.deleteParam('criteria'); this.stateManager_.deleteParam('transportMode'); this.stateManager_.deleteParam('waypoints'); @@ -268,9 +278,9 @@ app.Routing.prototype.getRoute = function() { var waypoints = []; this.features.forEach(function(feature) { var geom = feature.getGeometry(); - if (geom instanceof ol.geom.Point) { + if (geom instanceof olGeomPoint) { var lonlat = /** @type {ol.Coordinate} */ - (ol.proj.transform(geom.getFirstCoordinate(), + (transform(geom.getFirstCoordinate(), 'EPSG:3857', 'EPSG:4326')); waypoints.push(lonlat[1] + ',' + lonlat[0]); } @@ -302,7 +312,7 @@ app.Routing.prototype.getRoute = function() { dataProjection: 'EPSG:4326', featureProjection: curView.getProjection() }); - var jsonFeatures = (new ol.format.GeoJSON()). + var jsonFeatures = (new olFormatGeoJSON()). readFeatures(features, encOpt); if (jsonFeatures !== null && jsonFeatures !== undefined) { this.routeFeatures.clear(); @@ -319,4 +329,7 @@ app.Routing.prototype.getRoute = function() { }; -app.module.service('appRouting', app.Routing); +appModule.service('appRouting', exports); + + +export default exports; diff --git a/geoportailv3/static/js/scalesservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/ScalesService.js similarity index 82% rename from geoportailv3/static/js/scalesservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/ScalesService.js index 1e714ee9f..78cd0d6e4 100644 --- a/geoportailv3/static/js/scalesservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/ScalesService.js @@ -1,20 +1,20 @@ - +/** + * @module app.ScalesService + */ /** * @fileoverview This file provides a scale service to display scales * with ngeoScaleselector */ -goog.provide('app.ScalesService'); - -goog.require('app'); -goog.require('goog.object'); +import appModule from './module.js'; +import {assign} from 'ol/obj.js'; /** * @constructor * @param {angular.$sce} $sce Angular sce service. * @ngInject */ -app.ScalesService = function($sce) { +const exports = function($sce) { /** * The zoom level/scale map object for the ngeoScaleselector directive. * The values need to be trusted as HTML. @@ -41,7 +41,7 @@ app.ScalesService = function($sce) { /** * @type {Object.} */ - this.scales = goog.object.clone(this.origScales); + this.scales = assign({}, this.origScales); }; @@ -50,7 +50,7 @@ app.ScalesService = function($sce) { * ngeoScaleselector directive. * @export */ -app.ScalesService.prototype.getScales = function() { +exports.prototype.getScales = function() { return this.scales; }; @@ -59,7 +59,7 @@ app.ScalesService.prototype.getScales = function() { * Set maximum zoom level. * @param {number} maxScale The maximum zoom. */ -app.ScalesService.prototype.setMaxZoomLevel = function(maxScale) { +exports.prototype.setMaxZoomLevel = function(maxScale) { for (var i = 9; i < 22; i++) { if (i <= maxScale) { if (!this.scales['' + i]) { @@ -71,4 +71,7 @@ app.ScalesService.prototype.setMaxZoomLevel = function(maxScale) { } }; -app.module.service('appScalesService', app.ScalesService); +appModule.service('appScalesService', exports); + + +export default exports; diff --git a/geoportailv3/static/js/statemanagerservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/StateManager.js similarity index 73% rename from geoportailv3/static/js/statemanagerservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/StateManager.js index 6567f52a1..76c7491ab 100644 --- a/geoportailv3/static/js/statemanagerservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/StateManager.js @@ -1,17 +1,15 @@ +/** + * @module app.StateManager + */ /** * @fileoverview This files provides a service for managing the application * state. The application state is written to both the URL and the local * storage. */ -goog.provide('app.StateManager'); - -goog.require('app'); -goog.require('app.Notify'); -goog.require('goog.asserts'); -goog.require('goog.math'); -goog.require('goog.storage.mechanism.HTML5LocalStorage'); -goog.require('ngeo.statemanager.module'); +import appModule from './module.js'; +import {clamp} from 'ol/math.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; /** * @constructor @@ -20,7 +18,7 @@ goog.require('ngeo.statemanager.module'); * @param {angularGettext.Catalog} gettextCatalog Gettext service. * @ngInject */ -app.StateManager = function(ngeoLocation, appNotify, gettextCatalog) { +const exports = function(ngeoLocation, appNotify, gettextCatalog) { /** * @type {angularGettext.Catalog} * @private @@ -41,16 +39,26 @@ app.StateManager = function(ngeoLocation, appNotify, gettextCatalog) { this.initialState_ = {}; /** - * @type {ngeo.statemanager.Location} - * @private + * @type {boolean} */ - this.ngeoLocation_ = ngeoLocation; + this.useLocalStorage; + try { + if ('localStorage' in window) { + window.localStorage.setItem('test', ''); + window.localStorage.removeItem('test'); + } else { + this.useLocalStorage = false; + } + } catch (err) { + console.error(err); + this.useLocalStorage = false; + } /** - * @type {goog.storage.mechanism.HTML5LocalStorage} + * @type {ngeo.statemanager.Location} * @private */ - this.localStorage_ = new goog.storage.mechanism.HTML5LocalStorage(); + this.ngeoLocation_ = ngeoLocation; /** * @type {number} @@ -86,15 +94,14 @@ app.StateManager = function(ngeoLocation, appNotify, gettextCatalog) { paramKeys.indexOf('debug') >= 0 && paramKeys.indexOf('address') >= 0 && paramKeys.indexOf('lang') >= 0 )) { - if (this.localStorage_.isAvailable()) { - var count = this.localStorage_.getCount(); - for (i = 0; i < count; ++i) { - key = this.localStorage_.key(i); + if (this.useLocalStorage !== false) { + for (const key in window.localStorage) { + const value = window.localStorage[key]; if (paramKeys.indexOf('lang') >= 0 && key === 'lang') { this.initialState_[key] = ngeoLocation.getParam(key); } else { - goog.asserts.assert(!goog.isNull(key)); - this.initialState_[key] = this.localStorage_.get(key); + console.assert(key !== null, 'The key should not be null'); + this.initialState_[key] = value; } } } @@ -106,10 +113,10 @@ app.StateManager = function(ngeoLocation, appNotify, gettextCatalog) { this.initialState_[key] = ngeoLocation.getParam(key); } this.version_ = this.initialState_.hasOwnProperty('version') ? - goog.math.clamp(+this.initialState_['version'], 2, 3) : 2; + clamp(+this.initialState_['version'], 2, 3) : 2; } var mapId = this.ngeoLocation_.getParam('map_id'); - if (!goog.isDef(mapId) && + if (mapId === undefined && !((this.initialState_.hasOwnProperty('bgLayer') && this.initialState_['bgLayer'].length > 0 && this.initialState_['bgLayer'] != 'blank') || @@ -121,10 +128,10 @@ app.StateManager = function(ngeoLocation, appNotify, gettextCatalog) { var msg = this.gettextCatalog_.getString( 'Aucune couche n\'étant définie pour cette carte,' + ' une couche de fond a automatiquement été ajoutée.'); - this.notify_(msg, app.NotifyNotificationType.INFO); + this.notify_(msg, appNotifyNotificationType.INFO); } - goog.asserts.assert(this.version_ != -1); + console.assert(this.version_ != -1); this.ngeoLocation_.updateParams({'version': 3}); }; @@ -135,7 +142,7 @@ app.StateManager = function(ngeoLocation, appNotify, gettextCatalog) { * used to load the application in the browser). * @return {number} Version. */ -app.StateManager.prototype.getVersion = function() { +exports.prototype.getVersion = function() { return this.version_; }; @@ -145,7 +152,7 @@ app.StateManager.prototype.getVersion = function() { * @param {string} key State key. * @return {string|undefined} State value. */ -app.StateManager.prototype.getInitialValue = function(key) { +exports.prototype.getInitialValue = function(key) { return this.initialState_[key]; }; @@ -155,8 +162,8 @@ app.StateManager.prototype.getInitialValue = function(key) { * @param {string} key State key. * @return {string|null} State value. */ -app.StateManager.prototype.getValueFromLocalStorage = function(key) { - return this.localStorage_.get(key); +exports.prototype.getValueFromLocalStorage = function(key) { + return window.localStorage[key]; }; @@ -164,12 +171,12 @@ app.StateManager.prototype.getValueFromLocalStorage = function(key) { * Update the application state with the values in `object`. * @param {!Object.} object Object. */ -app.StateManager.prototype.updateState = function(object) { +exports.prototype.updateState = function(object) { this.ngeoLocation_.updateParams(object); - if (this.localStorage_.isAvailable()) { + if (this.useLocalStorage !== false) { var key; for (key in object) { - this.localStorage_.set(key, object[key]); + window.localStorage[key] = object[key]; } } }; @@ -179,11 +186,11 @@ app.StateManager.prototype.updateState = function(object) { * Update the application storage with the values in `object`. * @param {!Object.} object Object. */ -app.StateManager.prototype.updateStorage = function(object) { - if (this.localStorage_.isAvailable()) { +exports.prototype.updateStorage = function(object) { + if (this.useLocalStorage !== false) { var key; for (key in object) { - this.localStorage_.set(key, object[key]); + window.localStorage[key] = object[key]; } } }; @@ -193,11 +200,14 @@ app.StateManager.prototype.updateStorage = function(object) { * Delete a parameter. * @param {string} key The key to remove. */ -app.StateManager.prototype.deleteParam = function(key) { +exports.prototype.deleteParam = function(key) { this.ngeoLocation_.deleteParam(key); - if (this.localStorage_.isAvailable()) { - this.localStorage_.remove(key); + if (this.useLocalStorage !== false) { + delete window.localStorage[key]; } }; -app.module.service('appStateManager', app.StateManager); +appModule.service('appStateManager', exports); + + +export default exports; diff --git a/geoportailv3/static/js/themeservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Theme.js similarity index 75% rename from geoportailv3/static/js/themeservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Theme.js index d2875de13..31134f475 100644 --- a/geoportailv3/static/js/themeservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Theme.js @@ -1,12 +1,11 @@ +/** + * @module app.Theme + */ /** * @fileoverview This service keeps and share the state of the theme. */ -goog.provide('app.Theme'); - -goog.require('app.Themes'); -goog.require('goog.asserts'); -goog.require('ngeo.statemanager.module'); +import appModule from './module.js'; /** * @constructor @@ -15,7 +14,7 @@ goog.require('ngeo.statemanager.module'); * @param {app.Themes} appThemes The themes services. * @ngInject */ -app.Theme = function($window, ngeoLocation, appThemes) { +const exports = function($window, ngeoLocation, appThemes) { /** * @const @@ -53,7 +52,7 @@ app.Theme = function($window, ngeoLocation, appThemes) { * @type {string} * @private */ - this.currentTheme_ = app.Theme.DEFAULT_THEME_; + this.currentTheme_ = exports.DEFAULT_THEME_; /** * @type {ngeo.statemanager.Location} @@ -66,12 +65,12 @@ app.Theme = function($window, ngeoLocation, appThemes) { /** * @param {string} themeId The id of the theme. */ -app.Theme.prototype.setCurrentTheme = function(themeId) { +exports.prototype.setCurrentTheme = function(themeId) { this.currentTheme_ = themeId; var piwikSiteId = this.piwikSiteIdLookup_[this.currentTheme_]; - if (!goog.isDefAndNotNull(piwikSiteId)) { - piwikSiteId = this.piwikSiteIdLookup_[app.Theme.DEFAULT_THEME_]; + if (piwikSiteId === undefined || piwikSiteId === null) { + piwikSiteId = this.piwikSiteIdLookup_[exports.DEFAULT_THEME_]; } var piwik = /** @type {Piwik} */ (this.window_['_paq']); piwik.push(['setSiteId', piwikSiteId]); @@ -85,7 +84,7 @@ app.Theme.prototype.setCurrentTheme = function(themeId) { /** * @return {string} themeId The id of the theme. */ -app.Theme.prototype.getCurrentTheme = function() { +exports.prototype.getCurrentTheme = function() { return this.currentTheme_; }; @@ -95,7 +94,7 @@ app.Theme.prototype.getCurrentTheme = function() { * @return {string} The theme. * @export */ -app.Theme.prototype.encodeThemeName = function(theme) { +exports.prototype.encodeThemeName = function(theme) { if (theme !== undefined) { return theme.replace(/\s+/g, '_'); } @@ -105,8 +104,8 @@ app.Theme.prototype.encodeThemeName = function(theme) { /** * @return {string} themeId The id of the theme. */ -app.Theme.prototype.getDefaultTheme = function() { - return app.Theme.DEFAULT_THEME_; +exports.prototype.getDefaultTheme = function() { + return exports.DEFAULT_THEME_; }; @@ -114,9 +113,9 @@ app.Theme.prototype.getDefaultTheme = function() { * @param {string} themeId The theme id to set in the path of the URL. * @private */ -app.Theme.prototype.setLocationPath_ = function(themeId) { +exports.prototype.setLocationPath_ = function(themeId) { var pathElements = this.ngeoLocation_.getPath().split('/'); - goog.asserts.assert(pathElements.length > 1); + console.assert(pathElements.length > 1); if (pathElements[pathElements.length - 1] === '') { // case where the path is just "/" pathElements.splice(pathElements.length - 1); @@ -135,7 +134,7 @@ app.Theme.prototype.setLocationPath_ = function(themeId) { * @param {Array.} pathElements Array of path elements. * @return {boolean} theme in path. */ -app.Theme.prototype.themeInUrl = function(pathElements) { +exports.prototype.themeInUrl = function(pathElements) { var indexOfTheme = pathElements.indexOf('theme'); return indexOfTheme >= 0 && pathElements.indexOf('theme') == pathElements.length - 2; @@ -146,6 +145,9 @@ app.Theme.prototype.themeInUrl = function(pathElements) { * @const * @private */ -app.Theme.DEFAULT_THEME_ = 'main'; +exports.DEFAULT_THEME_ = 'main'; + +appModule.service('appTheme', exports); + -app.module.service('appTheme', app.Theme); +export default exports; diff --git a/geoportailv3/static/js/themesservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/Themes.js similarity index 52% rename from geoportailv3/static/js/themesservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/Themes.js index eca0c0db7..f12580d67 100644 --- a/geoportailv3/static/js/themesservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/Themes.js @@ -1,32 +1,18 @@ +/** + * @module app.Themes + */ /** * @fileoverview This file defines the Themes service. This service interacts * with c2cgeoportal's "themes" web service and exposes functions that return * objects in the tree returned by the "themes" web service. */ -goog.provide('app.Themes'); -goog.provide('app.ThemesEventType'); - -goog.require('app'); -goog.require('app.BlankLayer'); -goog.require('app.GetWmtsLayer'); -goog.require('goog.asserts'); -goog.require('goog.object'); -goog.require('goog.array'); -goog.require('ol.events.EventTarget'); +import appModule from './module.js'; -/** - * @typedef {{themes: Array., background_layers: Array.}} - */ -app.ThemesResponse; - - -/** - * @enum {string} - */ -app.ThemesEventType = { - LOAD: 'load' -}; +import {extend as arrayExtend} from 'ol/array.js'; +import olEventsEventTarget from 'ol/events/EventTarget.js'; +import appEventsThemesEventType from './events/ThemesEventType.js'; +import {inherits} from 'ol/index.js'; /** @@ -34,17 +20,16 @@ app.ThemesEventType = { * @extends {ol.events.EventTarget} * @param {angular.$window} $window Window. * @param {angular.$http} $http Angular http service. - * @param {string} treeUrl URL to "themes" web service. + * @param {string} gmfTreeUrl URL to "themes" web service. * @param {string} isThemePrivateUrl URL to check if theme is public. * @param {app.GetWmtsLayer} appGetWmtsLayer Get WMTS layer function. - * @param {app.BlankLayer} appBlankLayer Blank Layer service. + * @param {app.backgroundlayer.BlankLayer} appBlankLayer Blank Layer service. * @param {app.GetDevice} appGetDevice The device service. * @ngInject */ -app.Themes = function($window, $http, treeUrl, isThemePrivateUrl, +const exports = function($window, $http, gmfTreeUrl, isThemePrivateUrl, appGetWmtsLayer, appBlankLayer, appGetDevice) { - - goog.base(this); + olEventsEventTarget.call(this); /** * @type {angular.$http} @@ -65,7 +50,7 @@ app.Themes = function($window, $http, treeUrl, isThemePrivateUrl, this.getWmtsLayer_ = appGetWmtsLayer; /** - * @type {app.BlankLayer} + * @type {app.backgroundlayer.BlankLayer} * @private */ this.blankLayer_ = appBlankLayer; @@ -74,7 +59,7 @@ app.Themes = function($window, $http, treeUrl, isThemePrivateUrl, * @type {string} * @private */ - this.treeUrl_ = treeUrl; + this.treeUrl_ = gmfTreeUrl; /** * @type {string} @@ -87,8 +72,11 @@ app.Themes = function($window, $http, treeUrl, isThemePrivateUrl, * @private */ this.promise_ = null; + + this.flatCatalog = null; }; -goog.inherits(app.Themes, ol.events.EventTarget); + +inherits(exports, olEventsEventTarget); /** @@ -98,10 +86,14 @@ goog.inherits(app.Themes, ol.events.EventTarget); * @return {Object} The object. * @private */ -app.Themes.findObjectByName_ = function(objects, objectName) { - return goog.array.find(objects, function(object) { +exports.findObjectByName_ = function(objects, objectName) { + var obj = objects.find(function(object) { return object['name'] === objectName; }); + if (obj === undefined) { + return null; + } + return obj; }; @@ -112,8 +104,8 @@ app.Themes.findObjectByName_ = function(objects, objectName) { * @return {Object} The theme object. * @private */ -app.Themes.findTheme_ = function(themes, themeName) { - var theme = app.Themes.findObjectByName_(themes, themeName); +exports.findTheme_ = function(themes, themeName) { + var theme = exports.findObjectByName_(themes, themeName); return theme; }; @@ -122,36 +114,35 @@ app.Themes.findTheme_ = function(themes, themeName) { * Get background layers. * @return {angular.$q.Promise} Promise. */ -app.Themes.prototype.getBgLayers = function() { - goog.asserts.assert(!goog.isNull(this.promise_)); - return this.promise_.then(goog.bind( +exports.prototype.getBgLayers = function() { + console.assert(this.promise_ !== null); + return this.promise_.then( /** * @param {app.ThemesResponse} data The "themes" web service response. * @return {Array.} Array of background layer objects. */ - function(data) { - var bgLayers = data['background_layers'].map(goog.bind(function(item) { - var hasRetina = item['metadata']['hasRetina'] === 'true' && this.isHiDpi_; - goog.asserts.assert('name' in item); - goog.asserts.assert('imageType' in item); + (function(data) { + var bgLayers = data['background_layers'].map(function(item) { + var hasRetina = !!item['metadata']['hasRetina'] && this.isHiDpi_; + console.assert('name' in item); + console.assert('imageType' in item); var layer = this.getWmtsLayer_( item['name'], item['imageType'], hasRetina ); layer.set('metadata', item['metadata']); - - if (goog.object.containsKey(item['metadata'], 'attribution')) { + if ('attribution' in item['metadata']) { var source = layer.getSource(); source.setAttributions( item['metadata']['attribution'] ); } return layer; - }, this)); + }.bind(this)); // add the blank layer bgLayers.push(this.blankLayer_.getLayer()); return bgLayers; - }, this)); + }).bind(this)); }; @@ -160,8 +151,8 @@ app.Themes.prototype.getBgLayers = function() { * @param {string} themeName Theme name. * @return {angular.$q.Promise} Promise. */ -app.Themes.prototype.getThemeObject = function(themeName) { - goog.asserts.assert(!goog.isNull(this.promise_)); +exports.prototype.getThemeObject = function(themeName) { + console.assert(this.promise_ !== null); return this.promise_.then( /** * @param {app.ThemesResponse} data The "themes" web service response. @@ -169,26 +160,18 @@ app.Themes.prototype.getThemeObject = function(themeName) { */ function(data) { var themes = data['themes']; - return app.Themes.findTheme_(themes, themeName); + return exports.findTheme_(themes, themeName); }); }; /** - * Get an array of theme objects. + * Get the promise resolving to the themes root object. * @return {angular.$q.Promise} Promise. */ -app.Themes.prototype.getThemesObject = function() { - goog.asserts.assert(!goog.isNull(this.promise_)); - return this.promise_.then( - /** - * @param {app.ThemesResponse} data The "themes" web service response. - * @return {Array.} The themes object. - */ - function(data) { - var themes = data['themes']; - return themes; - }); +exports.prototype.getThemesPromise = function() { + console.assert(this.promise_ !== null); + return this.promise_; }; @@ -197,19 +180,25 @@ app.Themes.prototype.getThemesObject = function() { * Load themes from the "themes" service. * @return {?angular.$q.Promise} Promise. */ -app.Themes.prototype.loadThemes = function(roleId) { +exports.prototype.loadThemes = function(roleId) { this.promise_ = this.$http_.get(this.treeUrl_, { - params: goog.isDef(roleId) ? {'role': roleId} : {}, + params: (roleId !== undefined) ? {'role': roleId} : {}, cache: false - }).then(goog.bind( - /** - * @param {angular.$http.Response} resp Ajax response. - * @return {Object} The "themes" web service response. - */ - function(resp) { - this.dispatchEvent(app.ThemesEventType.LOAD); - return /** @type {app.ThemesResponse} */ (resp.data); - }, this)); + }).then((resp) => { + const root = /** @type {app.ThemesResponse} */ (resp.data); + const themes = root.themes; + const flatCatalogue = []; + for (var i = 0; i < themes.length; i++) { + const theme = themes[i]; + const children = this.getAllChildren_(theme.children, theme.name, root.ogcServers); + arrayExtend(flatCatalogue, children); + } + + this.flatCatalog = flatCatalogue; + + this.dispatchEvent(appEventsThemesEventType.LOAD); + return root; + }); return this.promise_; }; @@ -219,7 +208,7 @@ app.Themes.prototype.loadThemes = function(roleId) { * checks if the theme is protected or not. * @return {angular.$q.Promise} Promise. */ -app.Themes.prototype.isThemePrivate = function(themeId) { +exports.prototype.isThemePrivate = function(themeId) { return this.$http_.get(this.isThemePrivateUrl_, { params: {'theme': themeId}, cache: false @@ -230,20 +219,28 @@ app.Themes.prototype.isThemePrivate = function(themeId) { /** * @param {Array} element The element. * @param {string} theme Theme name. + * @param {Object} ogcServers All OGC servers definitions. + * @param {Object} lastOgcServer The last OGC server. * @return {Array} array The children. * @private */ -app.Themes.prototype.getAllChildren_ = function(element, theme) { +exports.prototype.getAllChildren_ = function(elements, theme, ogcServers, lastOgcServer) { var array = []; - for (var i = 0; i < element.length; i++) { - if (element[i].hasOwnProperty('children')) { - goog.array.extend(array, this.getAllChildren_( - element[i].children, theme) + for (var i = 0; i < elements.length; i++) { + const element = elements[i]; + if (element.hasOwnProperty('children')) { + arrayExtend(array, this.getAllChildren_( + element.children, theme, ogcServers, element.ogcServer || lastOgcServer) ); } else { - // element[i].id = element[i].id; - element[i].theme = theme; - array.push(element[i]); + // Rewrite url to match the behaviour of c2cgeoportal 1.6 + const ogcServer = element.ogcServer || lastOgcServer; + if (ogcServer) { + const def = ogcServers[ogcServer]; + element.url = def.credential ? null : def.url; + } + element.theme = theme; + array.push(element); } } return array; @@ -254,18 +251,11 @@ app.Themes.prototype.getAllChildren_ = function(element, theme) { * get the flat catlog * @return {angular.$q.Promise} Promise. */ -app.Themes.prototype.getFlatCatalog = function() { - return this.getThemesObject().then( - goog.bind(function(themes) { - var flatCatalogue = []; - for (var i = 0; i < themes.length; i++) { - var theme = themes[i]; - goog.array.extend(flatCatalogue, - this.getAllChildren_(theme.children, theme.name) - ); - } - return flatCatalogue; - }, this)); +exports.prototype.getFlatCatalog = function() { + return this.promise_.then(() => this.flatCatalog); }; -app.module.service('appThemes', app.Themes); +appModule.service('appThemes', exports); + + +export default exports; diff --git a/geoportailv3/static/js/usermanagerservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/UserManager.js similarity index 79% rename from geoportailv3/static/js/usermanagerservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/UserManager.js index c8a4c21e8..4b7b44e22 100644 --- a/geoportailv3/static/js/usermanagerservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/UserManager.js @@ -1,14 +1,14 @@ +/** + * @module app.UserManager + */ /** * @fileoverview This file defines the user manager service. this service * interacts with the Geoportail webservice to login logout and keep the state * of the user. */ -goog.provide('app.UserManager'); - -goog.require('app'); -goog.require('app.Notify'); - +import appModule from './module.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; /** * @constructor @@ -21,7 +21,7 @@ goog.require('app.Notify'); * @param {string} appAuthtktCookieName The authentication cookie name. * @ngInject */ -app.UserManager = function($http, loginUrl, logoutUrl, +const exports = function($http, loginUrl, logoutUrl, getuserinfoUrl, appNotify, gettextCatalog, appAuthtktCookieName) { /** * @type {string} @@ -107,7 +107,7 @@ app.UserManager = function($http, loginUrl, logoutUrl, * @param {string} password The password. * @return {!angular.$q.Promise} Promise providing the authentication. */ -app.UserManager.prototype.authenticate = function(username, password) { +exports.prototype.authenticate = function(username, password) { var req = $.param({ 'login': username, @@ -117,66 +117,66 @@ app.UserManager.prototype.authenticate = function(username, password) { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; return this.http_.post(this.loginUrl_, req, config).then( - goog.bind(function(response) { + function(response) { if (response.status == 200) { this.getUserInfo(); var msg = this.gettextCatalog.getString( 'Vous êtes maintenant correctement connecté.'); - this.notify_(msg, app.NotifyNotificationType.INFO); + this.notify_(msg, appNotifyNotificationType.INFO); } else { this.clearUserInfo(); this.notify_(this.gettextCatalog.getString( 'Invalid username or password.'), - app.NotifyNotificationType.WARNING); + appNotifyNotificationType.WARNING); } return response; - }, this), goog.bind(function(response) { + }.bind(this), function(response) { this.clearUserInfo(); this.notify_(this.gettextCatalog.getString( 'Invalid username or password.'), - app.NotifyNotificationType.WARNING); + appNotifyNotificationType.WARNING); return response; - }, this)); + }.bind(this)); }; /** * @return {!angular.$q.Promise} Promise providing the authentication. */ -app.UserManager.prototype.logout = function() { +exports.prototype.logout = function() { return this.http_.get(this.logoutUrl_).then( - goog.bind(function(response) { + function(response) { if (response.status == 200) { this.getUserInfo(); } else { this.getUserInfo(); this.notify_(this.gettextCatalog.getString( 'Une erreur est survenue durant la déconnexion.'), - app.NotifyNotificationType.ERROR + appNotifyNotificationType.ERROR ); } return response; - }, this), goog.bind(function(response) { + }.bind(this), function(response) { this.getUserInfo(); this.notify_(this.gettextCatalog.getString( 'Une erreur est survenue durant la déconnexion.'), - app.NotifyNotificationType.ERROR); + appNotifyNotificationType.ERROR); return response; - }, this)); + }.bind(this)); }; /** * @export */ -app.UserManager.prototype.getUserInfo = function() { +exports.prototype.getUserInfo = function() { var req = {}; var config = { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }; this.http_.post(this.getuserinfoUrl_, req, config).then( - goog.bind(function(response) { + function(response) { if (response.status == 200) { this.setUserInfo( response.data['login'], @@ -191,10 +191,10 @@ app.UserManager.prototype.getUserInfo = function() { this.clearUserInfo(); } return response; - }, this), goog.bind(function(response) { + }.bind(this), function(response) { this.clearUserInfo(); return response; - }, this)); + }.bind(this)); }; @@ -202,7 +202,7 @@ app.UserManager.prototype.getUserInfo = function() { * @return {boolean} True if authenticated. * @export */ -app.UserManager.prototype.isAuthenticated = function() { +exports.prototype.isAuthenticated = function() { if (this.hasCookie(this.appAuthtktCookieName_)) { return (this.username.length > 0); } @@ -215,7 +215,7 @@ app.UserManager.prototype.isAuthenticated = function() { * Clear the user information. This happens when logging out and in case * of error. */ -app.UserManager.prototype.clearUserInfo = function() { +exports.prototype.clearUserInfo = function() { this.setUserInfo('', undefined, null, undefined, undefined, null, false); }; @@ -229,9 +229,9 @@ app.UserManager.prototype.clearUserInfo = function() { * @param {?number} mymapsRole The role used by mymaps. * @param {boolean} isAdmin True if is a mymaps admin. */ -app.UserManager.prototype.setUserInfo = function( +exports.prototype.setUserInfo = function( username, role, roleId, mail, name, mymapsRole, isAdmin) { - if (goog.isDef(username)) { + if (username !== undefined) { this.username = username; this.role = role; this.roleId = roleId; @@ -247,35 +247,35 @@ app.UserManager.prototype.setUserInfo = function( /** * @return {string} The username. */ -app.UserManager.prototype.getUsername = function() { +exports.prototype.getUsername = function() { return this.username; }; /** * @return {string|undefined} The Email. */ -app.UserManager.prototype.getEmail = function() { +exports.prototype.getEmail = function() { return this.email; }; /** * @return {?number} The Role Id. */ -app.UserManager.prototype.getRoleId = function() { +exports.prototype.getRoleId = function() { return this.roleId; }; /** * @return {?number} The Role Id. */ -app.UserManager.prototype.getMymapsRole = function() { +exports.prototype.getMymapsRole = function() { return this.mymapsRole; }; /** * @return {boolean} True if is a mymaps admin. */ -app.UserManager.prototype.getMymapsAdmin = function() { +exports.prototype.getMymapsAdmin = function() { return this.isMymapsAdmin; }; @@ -283,7 +283,7 @@ app.UserManager.prototype.getMymapsAdmin = function() { * @param {string} cname The cookie name. * @return {boolean} True if the cookie exists. */ -app.UserManager.prototype.hasCookie = function(cname) { +exports.prototype.hasCookie = function(cname) { var name = cname + '='; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { @@ -299,4 +299,7 @@ app.UserManager.prototype.hasCookie = function(cname) { }; -app.module.service('appUserManager', app.UserManager); +appModule.service('appUserManager', exports); + + +export default exports; diff --git a/geoportailv3/static/js/wmsservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/WmsHelper.js similarity index 86% rename from geoportailv3/static/js/wmsservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/WmsHelper.js index 403c8ebe5..4f98d91ed 100644 --- a/geoportailv3/static/js/wmsservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/WmsHelper.js @@ -1,20 +1,22 @@ +/** + * @module app.WmsHelper + */ /** * @fileoverview Provides a wms helper iservice. That service is a function used * to retrieve and display the info (metadata) for a layer. */ -goog.provide('app.WmsHelper'); - -goog.require('ngeo.misc.decorate'); -goog.require('goog.asserts'); -goog.require('goog.array'); -goog.require('goog.string'); -goog.require('ol.format.WMSCapabilities'); -goog.require('ol.layer.Image'); -goog.require('ol.layer.Tile'); -goog.require('ol.source.ImageWMS'); -goog.require('ol.source.TileWMS'); -goog.require('app'); +import appModule from './module.js'; +import appOlcsExtent from './olcs/Extent.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; +import ngeoMiscDecorate from 'ngeo/misc/decorate.js'; +import olFormatWMSCapabilities from 'ol/format/WMSCapabilities.js'; +import olLayerImage from 'ol/layer/Image.js'; +import olLayerTile from 'ol/layer/Tile.js'; +import {get as getProjection} from 'ol/proj.js'; +import olSourceImageWMS from 'ol/source/ImageWMS.js'; +import olSourceTileWMS from 'ol/source/TileWMS.js'; +import {getUid} from 'ol/index.js'; /** @@ -27,7 +29,7 @@ goog.require('app'); * @param {string} httpsProxyUrl URL to https proxy. * @ngInject */ -app.WmsHelper = function($sce, $http, appNotify, gettextCatalog, +const exports = function($sce, $http, appNotify, gettextCatalog, $window, httpsProxyUrl) { /** @@ -77,7 +79,7 @@ app.WmsHelper = function($sce, $http, appNotify, gettextCatalog, * @param {string} wms The url of the wms. * @return {!angular.$q.Promise} Promise providing the capabilities. */ -app.WmsHelper.prototype.getCapabilities = function(wms) { +exports.prototype.getCapabilities = function(wms) { var basicWmsUrl = wms; var separator = '&'; if (wms.indexOf('?') === -1) { @@ -90,7 +92,7 @@ app.WmsHelper.prototype.getCapabilities = function(wms) { if (!(wms in this.wmsCapa_)) { this.wmsCapa_[wms] = this.http_.get(this.proxyIfNeeded(wms)) .then(function(data) { - var capabilities = new ol.format.WMSCapabilities().read(data.data); + var capabilities = new olFormatWMSCapabilities().read(data.data); if (!('Capability' in capabilities)) { return null; } @@ -113,7 +115,7 @@ app.WmsHelper.prototype.getCapabilities = function(wms) { }.bind(this), function(e) { var msg = this.gettextCatalog.getString( 'Impossible de contacter ce WMS'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return null; }.bind(this)); } @@ -127,13 +129,13 @@ app.WmsHelper.prototype.getCapabilities = function(wms) { * @return {string} Returns GetMap url if found. * @private */ -app.WmsHelper.prototype.getOnlineResource_ = function(capability, service) { +exports.prototype.getOnlineResource_ = function(capability, service) { var onlineResource; if ('Request' in capability && service in capability['Request'] && 'DCPType' in capability['Request']['GetMap']) { var dcpTypes = capability['Request']['GetMap']['DCPType']; - var dcpType = goog.array.find(dcpTypes, function(type, i) { + var dcpType = dcpTypes.find(function(type) { if ('HTTP' in type) { return true; } @@ -158,13 +160,13 @@ app.WmsHelper.prototype.getOnlineResource_ = function(capability, service) { * @param {Object} parentLayer Parent layer object in capabilities tree. * @private */ -app.WmsHelper.prototype.buildChildLayers_ = function(wms, layer, wmsVersion, +exports.prototype.buildChildLayers_ = function(wms, layer, wmsVersion, imageFormats, useTiles, parentLayer) { if (!layer['Name']) { layer['isInvalid'] = true; } - layer['uid'] = goog.getUid(layer).toString(); + layer['uid'] = getUid(layer).toString(); if (!layer['isInvalid']) { layer['wmsUrl'] = wms; layer['wmsVersion'] = wmsVersion; @@ -212,7 +214,7 @@ app.WmsHelper.prototype.buildChildLayers_ = function(wms, layer, wmsVersion, * @return {!angular.$q.Promise} Promise providing the layers. * @export */ -app.WmsHelper.prototype.getLayers = function(wms) { +exports.prototype.getLayers = function(wms) { return this.getCapabilities(wms).then(function(capabilities) { if ('Layer' in capabilities['Capability']['Layer']) { return capabilities['Capability']['Layer']['Layer']; @@ -229,11 +231,11 @@ app.WmsHelper.prototype.getLayers = function(wms) { * @return {!angular.$q.Promise} Promise providing the layer. * @export */ -app.WmsHelper.prototype.getLayerById = function(id) { +exports.prototype.getLayerById = function(id) { var values = id.split('%2D').join('-').split('||'); var serviceType = values[0]; - goog.asserts.assert(serviceType === 'WMS'); + console.assert(serviceType === 'WMS'); var wms = values[1]; return this.getLayers(wms).then(function(mainLayer) { return this.getChildLayerById_(mainLayer, id); @@ -246,7 +248,7 @@ app.WmsHelper.prototype.getLayerById = function(id) { * @return {!angular.$q.Promise} Promise providing the layer metadata. * @export */ -app.WmsHelper.prototype.getMetadata = function(id) { +exports.prototype.getMetadata = function(id) { return this.getLayerById(id).then(function(layer) { var hasLegend = false; var legendUrl = null; @@ -368,7 +370,7 @@ app.WmsHelper.prototype.getMetadata = function(id) { * @return {Object} Returns the layer object. * @private */ -app.WmsHelper.prototype.getChildLayerById_ = function(layer, id) { +exports.prototype.getChildLayerById_ = function(layer, id) { if (layer['id'] === id) { return layer; } @@ -394,7 +396,7 @@ app.WmsHelper.prototype.getChildLayerById_ = function(layer, id) { * @return {boolean} return true if added to the map. * @export */ -app.WmsHelper.prototype.addWmsLayers = function(map, layer) { +exports.prototype.addWmsLayers = function(map, layer) { map.addLayer(this.createWmsLayers(map, layer)); return true; }; @@ -405,14 +407,14 @@ app.WmsHelper.prototype.addWmsLayers = function(map, layer) { * @param {Object} layer The selected raw layer. * @return {ol.layer.Layer} return the created layer. */ -app.WmsHelper.prototype.createWmsLayers = function(map, layer) { +exports.prototype.createWmsLayers = function(map, layer) { var imageFormats = layer['imageFormats']; var hasPng = false; var hasJpeg = false; var imageFormat = imageFormats[0]; - goog.array.forEach(imageFormats, function(format) { + imageFormats.forEach(function(format) { if (format.toUpperCase().indexOf('PNG') !== -1) { hasPng = true; } @@ -439,7 +441,7 @@ app.WmsHelper.prototype.createWmsLayers = function(map, layer) { var has3857 = false; var hasWGS84 = false; var projections = layer['CRS'] || layer['SRS'] || []; - goog.array.forEach(projections, function(projection) { + projections.forEach(function(projection) { if (projection.toUpperCase() === 'EPSG:2169') { hasLuref = true; } @@ -466,20 +468,20 @@ app.WmsHelper.prototype.createWmsLayers = function(map, layer) { var newLayer = null; if (layer['useTiles']) { - newLayer = new ol.layer.Tile({ - 'olcs.extent': app.olcsExtent, - source: new ol.source.TileWMS(imgOptions) + newLayer = new olLayerTile({ + 'olcs.extent': appOlcsExtent, + source: new olSourceTileWMS(imgOptions) }); } else { - newLayer = new ol.layer.Image({ - 'olcs.extent': app.olcsExtent, - source: new ol.source.ImageWMS(imgOptions) + newLayer = new olLayerImage({ + 'olcs.extent': appOlcsExtent, + source: new olSourceImageWMS(imgOptions) }); } if (has3857) { - newLayer.getSource().set('olcs.projection', ol.proj.get('EPSG:3857')); + newLayer.getSource().set('olcs.projection', getProjection('EPSG:3857')); } else if (hasWGS84) { - newLayer.getSource().set('olcs.projection', ol.proj.get('EPSG:4326')); + newLayer.getSource().set('olcs.projection', getProjection('EPSG:4326')); } newLayer.set('label', layer['Title']); var curMatadata = {'isExternalWms': true, @@ -489,7 +491,7 @@ app.WmsHelper.prototype.createWmsLayers = function(map, layer) { newLayer.set('metadata', curMatadata); newLayer.setOpacity(1); newLayer.set('queryable_id', layer['id']); - ngeo.misc.decorate.layer(newLayer); + ngeoMiscDecorate.layer(newLayer); this.getMetadata(layer['id']).then(function(metadata) { if (metadata['hasImageLegend']) { @@ -505,16 +507,19 @@ app.WmsHelper.prototype.createWmsLayers = function(map, layer) { * @param {string} url The url to proxy. * @return {string} returns the proxyed url if needed. */ -app.WmsHelper.prototype.proxyIfNeeded = function(url) { +exports.prototype.proxyIfNeeded = function(url) { if (url.indexOf('httpsproxy') > 0) { return url; } if (this.$window_.location.protocol === 'https:' && - goog.string.caseInsensitiveStartsWith(url, 'http:')) { + url.toLowerCase().indexOf('http:') === 0) { return this.httpsProxyUrl_ + '?url=' + encodeURIComponent(url); } return url; }; -app.module.service('appWmsHelper', app.WmsHelper); +appModule.service('appWmsHelper', exports); + + +export default exports; diff --git a/geoportailv3/static/js/wmtsservice.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/WmtsHelper.js similarity index 85% rename from geoportailv3/static/js/wmtsservice.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/WmtsHelper.js index 9675ef77e..4a77972b7 100644 --- a/geoportailv3/static/js/wmtsservice.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/WmtsHelper.js @@ -1,22 +1,20 @@ +/** + * @module app.WmtsHelper + */ /** * @fileoverview Provides a wmts helper iservice. That service is a function used * to retrieve and display the info (metadata) for a layer. */ -goog.provide('app.WmtsHelper'); - -goog.require('ngeo.misc.decorate'); -goog.require('goog.asserts'); -goog.require('goog.array'); -goog.require('goog.string'); -goog.require('ol.format.WMTSCapabilities'); -goog.require('ol.layer.Image'); -goog.require('ol.layer.Tile'); -goog.require('ol.source.ImageWMS'); -goog.require('ol.source.TileWMS'); -goog.require('ol.source.WMTS'); -goog.require('ol.tilegrid.WMTS'); -goog.require('app'); +import appModule from './module.js'; +import appNotifyNotificationType from './NotifyNotificationType.js'; +import appOlcsExtent from './olcs/Extent.js'; +import ngeoMiscDecorate from 'ngeo/misc/decorate.js'; +import olFormatWMTSCapabilities from 'ol/format/WMTSCapabilities.js'; +import olLayerTile from 'ol/layer/Tile.js'; +import olSourceWMTS from 'ol/source/WMTS.js'; +import {getUid} from 'ol/index.js'; + /** * @constructor @@ -28,7 +26,7 @@ goog.require('app'); * @param {string} httpsProxyUrl URL to https proxy. * @ngInject */ -app.WmtsHelper = function($sce, $http, appNotify, gettextCatalog, +const exports = function($sce, $http, appNotify, gettextCatalog, $window, httpsProxyUrl) { /** @@ -78,7 +76,7 @@ app.WmtsHelper = function($sce, $http, appNotify, gettextCatalog, * @param {string} wmts The url of the wmts. * @return {!angular.$q.Promise} Promise providing the capabilities. */ -app.WmtsHelper.prototype.getCapabilities = function(wmts) { +exports.prototype.getCapabilities = function(wmts) { var separator = '&'; if (wmts.indexOf('?') === -1) { @@ -91,13 +89,13 @@ app.WmtsHelper.prototype.getCapabilities = function(wmts) { if (!(wmts in this.wmtsCapa_)) { this.wmtsCapa_[wmts] = this.http_.get(this.proxyIfNeeded(wmts)) .then(function(data) { - var capabilities = new ol.format.WMTSCapabilities().read(data.data); + var capabilities = new olFormatWMTSCapabilities().read(data.data); this.buildChildLayers_(wmts, capabilities); return capabilities; }.bind(this), function(e) { var msg = this.gettextCatalog.getString( 'Impossible de contacter ce WMTS'); - this.notify_(msg, app.NotifyNotificationType.ERROR); + this.notify_(msg, appNotifyNotificationType.ERROR); return null; }.bind(this)); } @@ -111,13 +109,14 @@ app.WmtsHelper.prototype.getCapabilities = function(wmts) { * @return {string} Returns GetMap url if found. * @private */ -app.WmtsHelper.prototype.getOnlineResource_ = function(capability, service) { +exports.prototype.getOnlineResource_ = function(capability, service) { var onlineResource; if ('Request' in capability && service in capability['Request'] && 'DCPType' in capability['Request']['GetMap']) { var dcpTypes = capability['Request']['GetMap']['DCPType']; - var dcpType = goog.array.find(dcpTypes, function(type, i) { + + var dcpType = dcpTypes.find(function(type) { if ('HTTP' in type) { return true; } @@ -138,7 +137,7 @@ app.WmtsHelper.prototype.getOnlineResource_ = function(capability, service) { * @param {Object} capabilities The capabilities. * @private */ -app.WmtsHelper.prototype.buildChildLayers_ = function(wmts, capabilities) { +exports.prototype.buildChildLayers_ = function(wmts, capabilities) { var layers = capabilities['Contents']['Layer']; for (var i = 0; i < layers.length; i++) { var layer = layers[i]; @@ -146,10 +145,10 @@ app.WmtsHelper.prototype.buildChildLayers_ = function(wmts, capabilities) { 'layer': layer['Identifier'], 'crossOrigin': 'anonymous' }; - var options = ol.source.WMTS.optionsFromCapabilities(capabilities, wmtsConfig); + var options = olSourceWMTS.optionsFromCapabilities(capabilities, wmtsConfig); layer['options'] = options; layer['isInvalid'] = false; - layer['uid'] = goog.getUid(layer).toString(); + layer['uid'] = getUid(layer).toString(); if (!layer['isInvalid']) { layer['wmtsUrl'] = wmts; @@ -165,7 +164,7 @@ app.WmtsHelper.prototype.buildChildLayers_ = function(wmts, capabilities) { * @return {!angular.$q.Promise} Promise providing the layers. * @export */ -app.WmtsHelper.prototype.getLayers = function(wmts) { +exports.prototype.getLayers = function(wmts) { return this.getCapabilities(wmts).then(function(capabilities) { if ('Layer' in capabilities['Contents']) { return capabilities['Contents']['Layer']; @@ -179,11 +178,11 @@ app.WmtsHelper.prototype.getLayers = function(wmts) { * @return {!angular.$q.Promise} Promise providing the layer. * @export */ -app.WmtsHelper.prototype.getLayerById = function(id) { +exports.prototype.getLayerById = function(id) { var values = id.split('%2D').join('-').split('||'); var serviceType = values[0]; - goog.asserts.assert(serviceType === 'WMTS'); + console.assert(serviceType === 'WMTS'); var wmts = values[1]; return this.getLayers(wmts).then(function(mainLayer) { return this.getChildLayerById_(mainLayer, id); @@ -196,7 +195,7 @@ app.WmtsHelper.prototype.getLayerById = function(id) { * @return {!angular.$q.Promise} Promise providing the layer metadata. * @export */ -app.WmtsHelper.prototype.getMetadata = function(id) { +exports.prototype.getMetadata = function(id) { return this.getLayerById(id).then(function(layer) { var hasLegend = false; var legendUrl = null; @@ -315,7 +314,7 @@ app.WmtsHelper.prototype.getMetadata = function(id) { * @return {Object} Returns the layer object. * @private */ -app.WmtsHelper.prototype.getChildLayerById_ = function(layers, id) { +exports.prototype.getChildLayerById_ = function(layers, id) { for (var i = 0; i < layers.length; i++) { var layer = layers[i]; if (layer['id'] === id) { @@ -333,7 +332,7 @@ app.WmtsHelper.prototype.getChildLayerById_ = function(layers, id) { * @return {boolean} return true if added to the map. * @export */ -app.WmtsHelper.prototype.addWmtsLayers = function(map, layer, url) { +exports.prototype.addWmtsLayers = function(map, layer, url) { this.getCapabilities(url).then(function(capabilities) { map.addLayer(this.createWmtsLayers(map, layer, layer['options'])); }.bind(this)); @@ -347,10 +346,10 @@ app.WmtsHelper.prototype.addWmtsLayers = function(map, layer, url) { * @param {olx.source.WMTSOptions} options The options. * @return {ol.layer.Layer} return the created layer. */ -app.WmtsHelper.prototype.createWmtsLayers = function(map, layer, options) { - var newLayer = new ol.layer.Tile({ - 'olcs.extent': app.olcsExtent, - source: new ol.source.WMTS(options) +exports.prototype.createWmtsLayers = function(map, layer, options) { + var newLayer = new olLayerTile({ + 'olcs.extent': appOlcsExtent, + source: new olSourceWMTS(options) }); newLayer.set('label', layer['Title']); @@ -362,7 +361,7 @@ app.WmtsHelper.prototype.createWmtsLayers = function(map, layer, options) { newLayer.set('metadata', curMetadata); newLayer.setOpacity(1); newLayer.set('queryable_id', layer['id']); - ngeo.misc.decorate.layer(newLayer); + ngeoMiscDecorate.layer(newLayer); this.getMetadata(layer['id']).then(function(metadata) { if (metadata['hasImageLegend']) { @@ -378,16 +377,19 @@ app.WmtsHelper.prototype.createWmtsLayers = function(map, layer, options) { * @param {string} url The url to proxy. * @return {string} returns the proxyed url if needed. */ -app.WmtsHelper.prototype.proxyIfNeeded = function(url) { +exports.prototype.proxyIfNeeded = function(url) { if (url.indexOf('httpsproxy') > 0) { return url; } if (this.$window_.location.protocol === 'https:' && - goog.string.caseInsensitiveStartsWith(url, 'http:')) { + url.toLowerCase().indexOf('http:') === 0) { return this.httpsProxyUrl_ + '?url=' + encodeURIComponent(url); } return url; }; -app.module.service('appWmtsHelper', app.WmtsHelper); +appModule.service('appWmtsHelper', exports); + + +export default exports; diff --git a/geoportailv3/static/js/maincontroller.js b/geoportal/geoportailv3_geoportal/static-ngeo/js/apps/Controllermain.js similarity index 53% rename from geoportailv3/static/js/maincontroller.js rename to geoportal/geoportailv3_geoportal/static-ngeo/js/apps/Controllermain.js index fec79be01..571798198 100644 --- a/geoportailv3/static/js/maincontroller.js +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/apps/Controllermain.js @@ -1,3 +1,6 @@ +/** + * @module app.apps.Controllermain + */ /** * @fileoverview This file defines the controller class for the application's * main controller (created using "ng-controller" in the page). @@ -7,47 +10,163 @@ * application. It also defines the behavior of elements of the HTML page (the * management of the sidebar for example). */ -goog.provide('app.MainController'); - -goog.require('app'); -goog.require('app.ExclusionManager'); -goog.require('app.Export'); -goog.require('app.FeaturePopup'); -goog.require('app.LayerOpacityManager'); -goog.require('app.LayerPermalinkManager'); -goog.require('app.LocationControl'); -goog.require('app.Map'); -goog.require('app.Mymaps'); -goog.require('app.Notify'); -goog.require('app.Routing'); -goog.require('app.StateManager'); -goog.require('app.Themes'); -goog.require('app.UserManager'); -goog.require('goog.asserts'); -goog.require('goog.array'); -goog.require('goog.object'); -goog.require('ngeo.draw.module'); -goog.require('ngeo.map.BackgroundLayerMgr'); -goog.require('ngeo.map.FeatureOverlayMgr'); -goog.require('ngeo.message.popupComponent'); -goog.require('ngeo.message.Popup'); -goog.require('ngeo.misc.syncArrays'); -goog.require('ngeo.search.module'); -goog.require('ngeo.statemanager.module'); -goog.require('ol.events'); -goog.require('ol.Map'); -goog.require('ol.Object'); -goog.require('ol.View'); -goog.require('ol.control.Attribution'); -goog.require('ol.control.FullScreen'); -goog.require('ol.control.OverviewMap'); -goog.require('ol.control.Zoom'); -goog.require('app.olcs.ZoomToExtent'); -goog.require('app.olcs.Lux3DManager'); -goog.require('app.olcs.toggle3d'); -goog.require('ol.proj'); -goog.require('ol.math'); -goog.require('ngeo.olcs.Manager'); + +import 'jquery'; +import 'bootstrap'; +import 'angular'; +import 'angular-gettext'; +import 'angular-dynamic-locale'; + +import appModule from '../module.js'; +import appLocationControl from '../LocationControl.js'; +import appMap from '../Map.js'; +import olFeature from 'ol/Feature.js'; +import olGeomPoint from 'ol/geom/Point.js'; +import {defaults as interactionDefaults} from 'ol/interaction.js'; +import LayerGroup from 'ol/layer/Group'; +import olLayerVector from 'ol/layer/Vector.js'; +import ngeoMiscSyncArrays from 'ngeo/misc/syncArrays.js'; +import olView from 'ol/View.js'; +import olControlAttribution from 'ol/control/Attribution.js'; +import olControlFullScreen from 'ol/control/FullScreen.js'; +import olControlOverviewMap from 'ol/control/OverviewMap.js'; +import olControlZoom from 'ol/control/Zoom.js'; +import appOlcsZoomToExtent from '../olcs/ZoomToExtent.js'; +import appOlcsLux3DManager from '../olcs/Lux3DManager.js'; +import {transform, transformExtent} from 'ol/proj.js'; +import {toRadians} from 'ol/math.js'; + +import '../../less/geoportailv3.less' + + /* eslint-disable no-unused-vars */ + import appAskredirectAskredirectDirective from '../askredirect/askredirectDirective.js'; + import appAskredirectAskredirectController from '../askredirect/AskredirectController.js'; + import appAuthenticationAuthenticationDirective from '../authentication/authenticationDirective.js'; + import appAuthenticationAuthenticationController from '../authentication/AuthenticationController.js'; + import appBackgroundlayerBackgroundlayerDirective from '../backgroundlayer/backgroundlayerDirective.js'; + import appBackgroundlayerBackgroundlayerController from '../backgroundlayer/BackgroundlayerController.js'; + import appBackgroundlayerBlankLayer from '../backgroundlayer/BlankLayer.js'; + import appCatalogCatalogController from '../catalog/CatalogController.js'; + import appCatalogCatalogDirective from '../catalog/catalogDirective.js'; + import appDrawDrawDirective from '../draw/drawDirective.js'; + import appDrawDrawController from '../draw/DrawController.js'; + import appDrawDrawnFeatures from '../draw/DrawnFeatures.js'; + import appDrawFeatureHash from '../draw/FeatureHash.js'; + import appDrawFeaturePopup from '../draw/FeaturePopup.js'; + import appDrawFeaturePopupController from '../draw/FeaturePopupController.js'; + import appDrawFeaturePopupDirective from '../draw/featurePopupDirective.js'; + import appDrawRouteControl from '../draw/RouteControl.js'; + + //const appDrawRouteControlOptions = goog.require('app.draw.RouteControlOptions'); + import appDrawSelectedFeatures from '../draw/SelectedFeaturesService.js'; + + import appDrawStyleEditingController from '../draw/StyleEditingController.js'; + import appDrawStyleEditingDirective from '../draw/styleEditingDirective.js'; + import appDrawSymbolSelectorController from '../draw/SymbolSelectorController.js'; + import appDrawSymbolSelectorDirective from '../draw/symbolSelectorDirective.js'; + import appExclusionManager from '../ExclusionManager.js'; + import appExternaldataExternalDataDirective from '../externaldata/externalDataDirective.js'; + import appExternaldataExternalDataController from '../externaldata/ExternalDataController.js'; + import appFeedbackFeedbackDirective from '../feedback/feedbackDirective.js'; + import appFeedbackFeedbackController from '../feedback/FeedbackController.js'; + import appInfobarElevationDirective from '../infobar/elevationDirective.js'; + import appInfobarElevationController from '../infobar/ElevationController.js'; + import appInfobarInfobarController from '../infobar/InfobarController.js'; + import appInfobarInfobarDirective from '../infobar/infobarDirective.js'; + import appInfobarProjectionselectorDirective from '../infobar/projectionselectorDirective.js'; + import appInfobarProjectionselectorController from '../infobar/ProjectionselectorController.js'; + import appInfobarScalelineDirective from '../infobar/scalelineDirective.js'; + import appInfobarScalelineController from '../infobar/ScalelineController.js'; + import appInfobarScaleselectorDirective from '../infobar/scaleselectorDirective.js'; + import appInfobarScaleselectorController from '../infobar/ScaleselectorController.js'; + import appLayerinfoLayerinfoDirective from '../layerinfo/layerinfoDirective.js'; + import appLayerinfoLayerinfoController from '../layerinfo/LayerinfoController.js'; + import appLocationinfoLocationInfoOverlay from '../locationinfo/LocationInfoOverlay.js'; + import appLayerinfoShowLayerinfo from '../layerinfo/ShowLayerinfoFactory.js'; + import appLayermanagerLayermanagerDirective from '../layermanager/layermanagerDirective.js'; + import appLayermanagerLayermanagerController from '../layermanager/LayermanagerController.js'; + import appLayerlegendsLayerlegendsDirective from '../layerlegends/layerlegendsDirective.js'; + import appLayerlegendsLayerlegendsController from '../layerlegends/LayerlegendsController.js'; + import appLocationinfoLocationinfoDirective from '../locationinfo/locationinfoDirective.js'; + import appLocationinfoLocationinfoController from '../locationinfo/LocationinfoController.js'; + import appMapMapDirective from '../map/mapDirective.js'; + import appMapMapController from '../map/MapController.js'; + import appMainController from '../apps/Controllermain.js'; + import appMymapsFilereaderDirective from '../mymaps/filereaderDirective.js'; + import appMeasureMeasureController from '../measure/MeasureController.js'; + import appMeasureMeasureDirective from '../measure/MeasureDirective.js'; + import appMymapsMymapsDirective from '../mymaps/mymapsDirective.js'; + import appMymapsMymapsController from '../mymaps/MymapsController.js'; + import appNotify from '../NotifyFactory.js'; + import appPrintPrintDirective from '../print/printDirective.js'; + import appPrintPrintController from '../print/PrintController.js'; + import appPrintPrintservice from '../print/Printservice.js'; + import appProfileProfileDirective from '../profile/profileDirective.js'; + import appProfileProfileController from '../profile/ProfileController.js'; + import appQueryPagreportDirective from '../query/pagreportDirective.js'; + import appQueryPagreportController from '../query/PagreportController.js'; + import appQueryCasiporeportDirective from '../query/casiporeportDirective.js'; + import appQueryCasiporeportController from '../query/CasiporeportController.js'; + import appQueryPdsreportDirective from '../query/pdsreportDirective.js'; + import appQueryPdsreportController from '../query/PdsreportController.js'; + + //const appQueryQueryStyles = goog.require('app.query.QueryStyles'); + import appQueryQueryDirective from '../query/queryDirective.js'; + + import appQueryQueryController from '../query/QueryController.js'; + import appResizemapDirective from '../resizemapDirective.js'; + import appRoutingRoutingController from '../routing/RoutingController.js'; + import appRoutingRoutingDirective from '../routing/routingDirective.js'; + import appSearchSearchDirective from '../search/searchDirective.js'; + import appSearchSearchController from '../search/SearchController.js'; + import appShareShareDirective from '../share/ShareDirective.js'; + import appShareShareController from '../share/ShareController.js'; + import appShareShorturlDirective from '../share/shorturlDirective.js'; + import appShareShorturlController from '../share/ShorturlController.js'; + import appSliderSliderDirective from '../slider/SliderDirective.js'; + import appSliderSliderController from '../slider/SliderController.js'; + import appStreetviewStreetviewDirective from '../streetview/streetviewDirective.js'; + import appStreetviewStreetviewController from '../streetview/StreetviewController.js'; + import appThemeswitcherThemeswitcherDirective from '../themeswitcher/themeswitcherDirective.js'; + import appThemeswitcherThemeswitcherController from '../themeswitcher/ThemeswitcherController.js'; + import appActivetool from '../Activetool.js'; + import appCoordinateString from '../CoordinateStringService.js'; + import appExport from '../Export.js'; + import appGeocoding from '../Geocoding.js'; + import appGetDevice from '../GetDevice.js'; + import appGetElevation from '../GetElevationService.js'; + import appGetLayerForCatalogNode from '../GetLayerForCatalogNodeFactory.js'; + import appGetProfile from '../GetProfileService.js'; + import appGetShorturl from '../GetShorturlService.js'; + import appGetWmsLayer from '../GetWmsLayerFactory.js'; + import appGetWmtsLayer from '../GetWmtsLayerFactory.js'; + import appLayerOpacityManager from '../LayerOpacityManager.js'; + import appLayerPermalinkManager from '../LayerPermalinkManager.js'; + + // const appLocationControlOptions = goog.require('app.LocationControlOptions'); + //const appMapsResponse = goog.require('app.MapsResponse'); + import appMymaps from '../Mymaps.js'; + + import appMymapsOffline from '../MymapsOffline.js'; + import appOlcsToggle3d from '../olcs/toggle3d.js'; + import appOlcsExtent from '../olcs/Extent.js'; + import appProjections from '../projections.js'; + import appRouting from '../Routing.js'; + import appScalesService from '../ScalesService.js'; + import appStateManager from '../StateManager.js'; + import appTheme from '../Theme.js'; + import appThemes from '../Themes.js'; + + //const appThemesResponse = goog.require('app.ThemesResponse'); + import appUserManager from '../UserManager.js'; + + import appWmsHelper from '../WmsHelper.js'; + import appWmtsHelper from '../WmtsHelper.js'; + import appMiscFile from '../misc/file.js'; + + import OfflineDownloader from '../OfflineDownloader.js'; + import OfflineRestorer from '../OfflineRestorer.js'; + /* eslint-enable no-unused-vars */ /** @@ -56,6 +175,7 @@ goog.require('ngeo.olcs.Manager'); * manager. * @param {ngeo.map.BackgroundLayerMgr} ngeoBackgroundLayerMgr Background layer * manager. + * @param {ngeo.offline.ServiceManager} ngeoOfflineServiceManager offline service manager service. * @param {angularGettext.Catalog} gettextCatalog Gettext catalog. * @param {app.ExclusionManager} appExclusionManager Exclusion manager service. * @param {app.LayerOpacityManager} appLayerOpacityManager Layer opacity. @@ -66,7 +186,7 @@ goog.require('ngeo.olcs.Manager'); * @param {app.Themes} appThemes Themes service. * @param {app.Theme} appTheme the current theme service. * @param {app.UserManager} appUserManager The user manager service. - * @param {app.DrawnFeatures} appDrawnFeatures Drawn features service. + * @param {app.draw.DrawnFeatures} appDrawnFeatures Drawn features service. * @param {Object.} langUrls URLs to translation files. * @param {Array.} maxExtent Constraining extent. * @param {Array.} defaultExtent Default geographical extent. @@ -77,7 +197,7 @@ goog.require('ngeo.olcs.Manager'); * @param {string} appOverviewMapBaseLayer The layer displayed in overview. * @param {app.Notify} appNotify Notify service. * @param {angular.$window} $window Window. - * @param {app.SelectedFeatures} appSelectedFeatures Selected features service. + * @param {app.draw.SelectedFeatures} appSelectedFeatures Selected features service. * @param {angular.$locale} $locale The locale service. * @param {app.Routing} appRouting The routing service. * @param {Document} $document Document. @@ -86,19 +206,22 @@ goog.require('ngeo.olcs.Manager'); * @param {ngeo.olcs.Service} ngeoOlcsService The service. * @param {Array} tiles3dLayers 3D tiles layers. * @param {string} tiles3dUrl 3D tiles server url. + * @param {ngeo.offline.NetworkStatus} ngeoNetworkStatus ngeo network status service. + * @param {ngeo.offline.Mode} ngeoOfflineMode Offline mode manager. * @constructor * @export * @ngInject */ -app.MainController = function( - $scope, ngeoFeatureOverlayMgr, ngeoBackgroundLayerMgr, +const MainController = function( + $scope, ngeoFeatureOverlayMgr, ngeoBackgroundLayerMgr, ngeoOfflineServiceManager, gettextCatalog, appExclusionManager, appLayerOpacityManager, appLayerPermalinkManager, appMymaps, appStateManager, appThemes, appTheme, appUserManager, appDrawnFeatures, langUrls, maxExtent, defaultExtent, ngeoLocation, appExport, appGetDevice, appOverviewMapShow, appOverviewMapBaseLayer, appNotify, $window, appSelectedFeatures, $locale, appRouting, $document, cesiumURL, - $rootScope, ngeoOlcsService, tiles3dLayers, tiles3dUrl) { + $rootScope, ngeoOlcsService, tiles3dLayers, tiles3dUrl, ngeoNetworkStatus, ngeoOfflineMode, + appOfflineDownloader, appOfflineRestorer) { /** * @type {boolean} * @export @@ -166,7 +289,7 @@ app.MainController = function( this.backgroundLayerMgr_ = ngeoBackgroundLayerMgr; /** - * @type {app.DrawnFeatures} + * @type {app.draw.DrawnFeatures} * @private */ this.drawnFeatures_ = appDrawnFeatures; @@ -201,6 +324,18 @@ app.MainController = function( */ this.appTheme_ = appTheme; + /** + * @type {ngeo.offline.NetworkStatus} + * @private + */ + this.networkStatus_ = ngeoNetworkStatus; + + /** + * @type {ngeo.offline.Mode} + * @export + */ + this.offlineMode = ngeoOfflineMode; + /** * @private * @type {Array} @@ -213,12 +348,18 @@ app.MainController = function( */ this.tiles3dUrl_ = tiles3dUrl; + /** + * @type {ngeo.offline.NetworkStatus} + * @export + */ + this.ngeoNetworkStatus = ngeoNetworkStatus; + /** * @type {ol.Extent} * @private */ this.maxExtent_ = - ol.proj.transformExtent(maxExtent, 'EPSG:4326', 'EPSG:3857'); + transformExtent(maxExtent, 'EPSG:4326', 'EPSG:3857'); /** * @type {angularGettext.Catalog} @@ -351,6 +492,11 @@ app.MainController = function( const initial3dTilesVisibleValue = appStateManager.getInitialValue('3dtiles_visible'); + /** + * @export + */ + this.debugOffline = ngeoLocation.hasParam('debugOffline'); + /** * True if no initial state is defined. * @type {boolean} @@ -385,7 +531,7 @@ app.MainController = function( this.map_.set('ol3dm', this.ol3dm_); // Add the zoom to extent control in a second step since it depends on ol3dm. - this.map_.addControl(new app.olcs.ZoomToExtent(this.defaultExtent_, this.ol3dm_)); + this.map_.addControl(new appOlcsZoomToExtent(this.defaultExtent_, this.ol3dm_)); this.initLanguage_(); @@ -397,6 +543,14 @@ app.MainController = function( appLayerOpacityManager.init(this.map_); ngeoFeatureOverlayMgr.init(this.map_); appLayerPermalinkManager.init($scope, this.map_, this['selectedLayers']); + $scope.$watch(function() { + return appLayerPermalinkManager.hasUnavailableLayers(); + }.bind(this), function(newVal, oldVal) { + if (newVal !== null && oldVal !== null && newVal !== oldVal && newVal === true) { + this['userOpen'] = true; + } + }.bind(this)); + this.appExport_.init(this.map_); this.addLocationControl_(ngeoFeatureOverlayMgr); @@ -407,36 +561,36 @@ app.MainController = function( function(bgLayers) { if (appOverviewMapShow) { var layer = /** @type {ol.layer.Base} */ - (goog.array.find(bgLayers, function(layer) { + (bgLayers.find(function(layer) { return layer.get('label') === appOverviewMapBaseLayer; })); this.map_.addControl( - new ol.control.OverviewMap( + new olControlOverviewMap( {layers: [layer], collapseLabel: '\u00BB', label: '\u00AB'})); } }.bind(this)); var urlLocationInfo = appStateManager.getInitialValue('crosshair'); - var infoOpen = goog.isDefAndNotNull(urlLocationInfo) && + var infoOpen = urlLocationInfo !== undefined && urlLocationInfo !== null && urlLocationInfo === 'true'; this['layersOpen'] = (!this.appGetDevice_.testEnv('xs') && !this['routingOpen'] && - !goog.isDef(this.ngeoLocation_.getParam('map_id')) && + this.ngeoLocation_.getParam('map_id') === undefined && !infoOpen && this.stateManager_.getValueFromLocalStorage('layersOpen') !== 'false') ? true : false; this['mymapsOpen'] = (!this.appGetDevice_.testEnv('xs') && - goog.isDef(this.ngeoLocation_.getParam('map_id')) && + this.ngeoLocation_.getParam('map_id') !== undefined && !infoOpen) ? true : false; - $scope.$watch(goog.bind(function() { + $scope.$watch(function() { return this['layersOpen']; - }, this), goog.bind(function(newVal) { + }.bind(this), function(newVal) { if (newVal === false) { $('app-catalog .themes-switcher').collapse('show'); $('app-themeswitcher #themes-content').collapse('hide'); } - }, this)); + }.bind(this)); this.activeLayersComparator = (this.ngeoLocation_.getParam('lc') === 'true'); $scope.$watch(function() { @@ -475,9 +629,8 @@ app.MainController = function( for (i = 0; i < coordinates.length; i = i + 2) { var position = [ parseFloat(coordinates[i + 1]), parseFloat(coordinates[i])]; - var feature = new ol.Feature({ - geometry: new ol.geom.Point((ol.proj.transform(position, - 'EPSG:4326', 'EPSG:3857'))) + var feature = new olFeature({ + geometry: new olGeomPoint((transform(position, 'EPSG:4326', 'EPSG:3857'))) }); feature.set('label', '' + routeNumber); this.appRouting_.insertFeatureAt(feature, routeNumber); @@ -490,6 +643,19 @@ app.MainController = function( this.appRouting_.getRoute(); } } + + $scope.$watch(this.isDisconnectedOrOffline.bind(this), (offline) => { + if (offline) { + if (this.sidebarOpen() && !this['layersOpen'] && !this['mymapsOpen']) { + this.closeSidebar(); + this['layersOpen'] = true; + } + this.showTab('a[href=\'#mylayers\']'); + } + }); + + ngeoOfflineServiceManager.setSaveService(appOfflineDownloader); + ngeoOfflineServiceManager.setRestoreService(appOfflineRestorer); }; @@ -497,7 +663,7 @@ app.MainController = function( * @private * @param {boolean} active 3d state */ -app.MainController.prototype.enable3dCallback_ = function(active) { +MainController.prototype.enable3dCallback_ = function(active) { if (!active) { return; } @@ -515,56 +681,54 @@ app.MainController.prototype.enable3dCallback_ = function(active) { * @param {ngeo.map.FeatureOverlayMgr} featureOverlayMgr Feature overlay manager. * @private */ -app.MainController.prototype.addLocationControl_ = - function(featureOverlayMgr) { - var isActive = false; - var activateGeoLocation = this.ngeoLocation_.getParam('tracking'); - if (activateGeoLocation && 'true' === activateGeoLocation) { - isActive = true; - this.ngeoLocation_.deleteParam('tracking'); - } - var locationControl = new app.LocationControl({ - label: '\ue800', - featureOverlayMgr: featureOverlayMgr, - notify: this.notify_, - gettextCatalog: this.gettextCatalog_, - scope: this.scope_, - window: this.window_ +MainController.prototype.addLocationControl_ = function(featureOverlayMgr) { + var isActive = false; + var activateGeoLocation = this.ngeoLocation_.getParam('tracking'); + if (activateGeoLocation && 'true' === activateGeoLocation) { + isActive = true; + this.ngeoLocation_.deleteParam('tracking'); + } + var locationControl = new appLocationControl(/** @type {app.LocationControlOptions} */({ + label: '\ue800', + featureOverlayMgr: featureOverlayMgr, + notify: this.notify_, + gettextCatalog: this.gettextCatalog_, + scope: this.scope_, + window: this.window_ + })); + this.map_.addControl(locationControl); + if (isActive) { + this.map_.once('change:view', (e) => { + locationControl.handleCenterToLocation(); }); - this.map_.addControl(locationControl); - if (isActive) { - ol.events.listenOnce(this.map_, - ol.Object.getChangeEventType(ol.MapProperty.VIEW), function(e) { - locationControl.handleCenterToLocation(); - }.bind(this)); - } - }; + } + }; /** * @private * @return {!app.Map} The extended ol.Map. */ -app.MainController.prototype.createMap_ = function() { - var interactions = ol.interaction.defaults({ +MainController.prototype.createMap_ = function() { + var interactions = interactionDefaults({ altShiftDragRotate: false, pinchRotate: false, constrainResolution: true }); - var map = this['map'] = new app.Map({ + var map = this['map'] = new appMap({ logo: false, controls: [ - new ol.control.Zoom({zoomInLabel: '\ue032', zoomOutLabel: '\ue033'}), + new olControlZoom({zoomInLabel: '\ue032', zoomOutLabel: '\ue033'}), // the zoom to extent control will be added later since it depends on ol3dm - new ol.control.FullScreen({label: '\ue01c', labelActive: '\ue02c'}), - new ol.control.Attribution({collapsible: false, + new olControlFullScreen({label: '\ue01c', labelActive: '\ue02c'}), + new olControlAttribution({collapsible: false, collapsed: false, className: 'geoportailv3-attribution'}) ], interactions: interactions, keyboardEventTarget: document, loadTilesWhileInteracting: true, loadTilesWhileAnimating: true, - view: new ol.View({ + view: new olView({ maxZoom: 19, minZoom: 8, enableRotation: false, @@ -581,11 +745,11 @@ app.MainController.prototype.createMap_ = function() { * @param {angular.Scope} $rootScope The root scope * @return {!app.olcs.Lux3DManager} The created manager. */ -app.MainController.prototype.createCesiumManager_ = function(cesiumURL, $rootScope) { +MainController.prototype.createCesiumManager_ = function(cesiumURL, $rootScope) { // [minx, miny, maxx, maxy] - goog.asserts.assert(this.map_); - const cameraExtentInRadians = [5.31, 49.38, 6.64, 50.21].map(ol.math.toRadians); - return new app.olcs.Lux3DManager(cesiumURL, cameraExtentInRadians, this.map_, this.ngeoLocation_, + console.assert(this.map_ !== null && this.map_ !== undefined); + const cameraExtentInRadians = [5.31, 49.38, 6.64, 50.21].map(toRadians); + return new appOlcsLux3DManager(cesiumURL, cameraExtentInRadians, this.map_, this.ngeoLocation_, $rootScope, this.tiles3dLayers_, this.tiles3dUrl_); }; @@ -594,7 +758,7 @@ app.MainController.prototype.createCesiumManager_ = function(cesiumURL, $rootSco * @export * @return {boolean} Whether 3D is active. */ -app.MainController.prototype.is3dEnabled = function() { +MainController.prototype.is3dEnabled = function() { return this.ol3dm_.is3dEnabled(); }; @@ -605,10 +769,10 @@ app.MainController.prototype.is3dEnabled = function() { * @param {angular.Scope} scope Scope. * @private */ -app.MainController.prototype.manageUserRoleChange_ = function(scope) { - scope.$watch(goog.bind(function() { +MainController.prototype.manageUserRoleChange_ = function(scope) { + scope.$watch(function() { return this.appUserManager_.roleId; - }, this), goog.bind(function(newVal, oldVal) { + }.bind(this), function(newVal, oldVal) { if (newVal === null && oldVal === null) { // This happens at init time. We don't want to reload the themes // at this point, as the constructor already loaded them. @@ -618,7 +782,7 @@ app.MainController.prototype.manageUserRoleChange_ = function(scope) { if (this.appMymaps_.isMymapsSelected()) { this.appMymaps_.loadMapInformation(); } - }, this)); + }.bind(this)); }; @@ -626,7 +790,7 @@ app.MainController.prototype.manageUserRoleChange_ = function(scope) { * @private * @return {?angular.$q.Promise} Promise. */ -app.MainController.prototype.loadThemes_ = function() { +MainController.prototype.loadThemes_ = function() { return this.appThemes_.loadThemes(this.appUserManager_.roleId); }; @@ -635,21 +799,24 @@ app.MainController.prototype.loadThemes_ = function() { * @param {angular.Scope} scope Scope * @private */ -app.MainController.prototype.manageSelectedLayers_ = +MainController.prototype.manageSelectedLayers_ = function(scope) { - ngeo.misc.syncArrays(this.map_.getLayers().getArray(), - this['selectedLayers'], true, scope, - goog.bind(function(layer) { - if (layer instanceof ol.layer.Vector && layer.get('altitudeMode') === 'clampToGround') { - return false; - } - return goog.array.indexOf( - this.map_.getLayers().getArray(), layer) !== 0; - }, this) - ); - scope.$watchCollection(goog.bind(function() { + ngeoMiscSyncArrays( + this.map_.getLayers().getArray(), + this['selectedLayers'], true, scope, + function(layer) { + if (layer instanceof olLayerVector && layer.get('altitudeMode') === 'clampToGround') { + return false; + } + if (layer instanceof LayerGroup && layer.get('groupName') === 'background') { + return false; + } + return this.map_.getLayers().getArray().indexOf(layer) !== 0; + }.bind(this) + ); + scope.$watchCollection(function() { return this['selectedLayers']; - }, this), goog.bind(function(newSelectedLayers, oldSelectedLayers) { + }.bind(this), function(newSelectedLayers, oldSelectedLayers) { this.map_.render(); this.compareLayers_(); @@ -665,14 +832,14 @@ app.MainController.prototype.manageSelectedLayers_ = piwik.push(['trackPageView']); } } - }, this)); + }.bind(this)); }; /** * @export */ -app.MainController.prototype.openFeedback = function() { - if (this.sidebarOpen) { +MainController.prototype.openFeedback = function() { + if (this.sidebarOpen()) { this.closeSidebar(); this['feedbackOpen'] = true; } else { @@ -683,7 +850,7 @@ app.MainController.prototype.openFeedback = function() { /** * @export */ -app.MainController.prototype.closeSidebar = function() { +MainController.prototype.closeSidebar = function() { this['mymapsOpen'] = this['layersOpen'] = this['infosOpen'] = this['feedbackOpen'] = this['legendsOpen'] = this['routingOpen'] = false; }; @@ -693,7 +860,7 @@ app.MainController.prototype.closeSidebar = function() { * @return {boolean} `true` if the sidebar should be open, otherwise `false`. * @export */ -app.MainController.prototype.sidebarOpen = function() { +MainController.prototype.sidebarOpen = function() { return this['mymapsOpen'] || this['layersOpen'] || this['infosOpen'] || this['legendsOpen'] || this['feedbackOpen'] || this['routingOpen']; }; @@ -704,11 +871,11 @@ app.MainController.prototype.sidebarOpen = function() { * @param {boolean=} track track page view * @export */ -app.MainController.prototype.switchLanguage = function(lang, track) { - if (!goog.isBoolean(track)) { +MainController.prototype.switchLanguage = function(lang, track) { + if (typeof track !== 'boolean') { track = true; } - goog.asserts.assert(lang in this.langUrls_); + console.assert(lang in this.langUrls_); this.gettextCatalog_.setCurrentLanguage(lang); this.gettextCatalog_.loadRemote(this.langUrls_[lang]); this.locale_.NUMBER_FORMATS.GROUP_SEP = ' '; @@ -726,7 +893,7 @@ app.MainController.prototype.switchLanguage = function(lang, track) { * @return {string} the current theme. * @export */ -app.MainController.prototype.getCurrentTheme = function() { +MainController.prototype.getCurrentTheme = function() { return this.appTheme_.getCurrentTheme(); }; @@ -734,27 +901,26 @@ app.MainController.prototype.getCurrentTheme = function() { * @return {string} the current theme. * @export */ -app.MainController.prototype.getEncodedCurrentTheme = function() { +MainController.prototype.getEncodedCurrentTheme = function() { return this.appTheme_.encodeThemeName(this.appTheme_.getCurrentTheme()); }; /** * @private */ -app.MainController.prototype.initLanguage_ = function() { - this.scope_.$watch(goog.bind(function() { +MainController.prototype.initLanguage_ = function() { + this.scope_.$watch(function() { return this['lang']; - }, this), goog.bind(function(newValue) { + }.bind(this), function(newValue) { this.stateManager_.updateState({ 'lang': newValue }); - }, this)); + }.bind(this)); var urlLanguage = /** @type {string|undefined} */ (this.stateManager_.getInitialValue('lang')); - if (goog.isDef(urlLanguage) && - goog.object.containsKey(this.langUrls_, urlLanguage)) { + if (urlLanguage !== undefined && urlLanguage in this.langUrls_) { this.switchLanguage(urlLanguage, false); return; } else { @@ -769,18 +935,18 @@ app.MainController.prototype.initLanguage_ = function() { /** * @private */ -app.MainController.prototype.initMymaps_ = function() { +MainController.prototype.initMymaps_ = function() { var mapId = this.ngeoLocation_.getParam('map_id'); this.appMymaps_.mapProjection = this.map_.getView().getProjection(); - if (goog.isDef(mapId)) { + if (mapId !== undefined) { this.appMymaps_.setCurrentMapId(mapId, this.drawnFeatures_.getCollection()).then( function(features) { var x = this.stateManager_.getInitialValue('X'); var y = this.stateManager_.getInitialValue('Y'); - if (!goog.isDef(x) && !goog.isDef(y) && + if (x === undefined && y === undefined && this.drawnFeatures_.getCollection().getLength() > 0) { this.map_.getView().fit(this.drawnFeatures_.getExtent(), { size: /** @type {ol.Size} */ (this.map_.getSize()) @@ -792,10 +958,9 @@ app.MainController.prototype.initMymaps_ = function() { } this.appMymaps_.map = this.map_; this.appMymaps_.layersChanged = this['layersChanged']; - ol.events.listen(this.map_.getLayerGroup(), 'change', - goog.bind(function() { - this.compareLayers_(); - }, this), this); + this.map_.getLayerGroup().on('change', () => { + this.compareLayers_(); + }); }; @@ -805,7 +970,7 @@ app.MainController.prototype.initMymaps_ = function() { * between the displayed layers and the mymaps layers * @private */ -app.MainController.prototype.compareLayers_ = function() { +MainController.prototype.compareLayers_ = function() { if (this.appMymaps_.isEditable()) { this['layersChanged'] = false; var backgroundLayer = this.backgroundLayerMgr_.get(this.map_); @@ -818,7 +983,7 @@ app.MainController.prototype.compareLayers_ = function() { } else { var selectedLabels = []; var selectedOpacities = []; - goog.array.forEach(this['selectedLayers'], function(item) { + this['selectedLayers'].forEach(function(item) { selectedLabels.push(item.get('label')); selectedOpacities.push('' + item.getOpacity()); }); @@ -844,7 +1009,7 @@ app.MainController.prototype.compareLayers_ = function() { * @param {string} selector JQuery selector for the tab link. * @export */ -app.MainController.prototype.showTab = function(selector) { +MainController.prototype.showTab = function(selector) { $(selector).tab('show'); }; @@ -852,7 +1017,7 @@ app.MainController.prototype.showTab = function(selector) { /** * @export */ -app.MainController.prototype.toggleThemeSelector = function() { +MainController.prototype.toggleThemeSelector = function() { var layerTree = $('app-catalog .themes-switcher'); var themesSwitcher = $('app-themeswitcher #themes-content'); var themeTab = $('#catalog'); @@ -875,7 +1040,7 @@ app.MainController.prototype.toggleThemeSelector = function() { /** * @export */ -app.MainController.prototype.toggleTiles3dVisibility = function() { +MainController.prototype.toggleTiles3dVisibility = function() { this.tiles3dVisible = !this.tiles3dVisible; this.ol3dm_.set3dTilesetVisible(this.tiles3dVisible); this.stateManager_.updateState({ @@ -888,4 +1053,16 @@ app.MainController.prototype.toggleTiles3dVisibility = function() { } }; -app.module.controller('MainController', app.MainController); +/** + * Check if disconnected or offline mode enabled. + * @return {boolean} the state. + * @export + */ +MainController.prototype.isDisconnectedOrOffline = function() { + return this.offlineMode.isEnabled() || !!this.networkStatus_.isDisconnected(); +}; + +appModule.controller('MainController', MainController); + + +export default MainController; diff --git a/geoportailv3/templates/index.html b/geoportal/geoportailv3_geoportal/static-ngeo/js/apps/main.html.ejs similarity index 50% rename from geoportailv3/templates/index.html rename to geoportal/geoportailv3_geoportal/static-ngeo/js/apps/main.html.ejs index faa03fdbc..d240c036a 100644 --- a/geoportailv3/templates/index.html +++ b/geoportal/geoportailv3_geoportal/static-ngeo/js/apps/main.html.ejs @@ -1,50 +1,46 @@ -## -*- coding: utf-8 -*- -<% - settings = request.registry.settings - proxy_wms_url = settings.get('proxy_wms_url') - node_modules_path = settings.get('node_modules_path') - closure_library_path = settings.get('closure_library_path') - exclude_theme_layer_search = settings.get('exclude_theme_layer_search') - authtkt_cookie_name = settings.get('authtkt_cookie_name') - overview_map_show = settings.get('overview_map')['show'] - overview_map_base_layer = settings.get('overview_map')['base_layer'] - lidar = settings.get('lidar') -%>\ - + - + + content="initial-scale=1.0, user-scalable=no, width=device-width"> - - - - - - - -% if debug: - -% else: - - % endif - - + " /> + + <% for (var css in htmlWebpackPlugin.files.css) { %> + + <% } %> + + + + + + + + + +