├── .docker ├── apache │ └── app.conf └── composer.sh ├── .dockerignore ├── .env ├── .env.test ├── .eslintrc.js ├── .github ├── dependabot.yml └── workflows │ ├── ci.yml │ └── dependency-review.yml ├── .gitignore ├── .php-cs-fixer.dist.php ├── .phpunit.cache └── test-results ├── .platform.app.yaml ├── .platform ├── routes.yaml └── services.yaml ├── .styleci.yml ├── CONTRIBUTING.md ├── Dockerfile ├── INSTALL.md ├── LICENSE ├── README.md ├── assets ├── images │ ├── GitHub-Mark-32px.png │ ├── avatar_large.png │ ├── crowdin-icon.svg │ └── logo-osm.svg ├── regions │ ├── LICENSE │ ├── README.md │ ├── africa │ │ ├── drc.geojson │ │ ├── ghana.geojson │ │ ├── liberia.geojson │ │ ├── libya.geojson │ │ ├── niger.geojson │ │ ├── nigeria.geojson │ │ ├── south-africa.geojson │ │ ├── tanzania.geojson │ │ ├── togo.geojson │ │ └── uganda.geojson │ ├── asia │ │ ├── bangladesh.geojson │ │ ├── cambodia.geojson │ │ ├── china-beijing.geojson │ │ ├── china-heilongjiang.geojson │ │ ├── china-hunan.geojson │ │ ├── china.geojson │ │ ├── east-timor.geojson │ │ ├── hongkong.geojson │ │ ├── india.geojson │ │ ├── indonesia.geojson │ │ ├── iraq.geojson │ │ ├── japan.geojson │ │ ├── laos.geojson │ │ ├── macao.geojson │ │ ├── myanmar.geojson │ │ ├── north-korea.geojson │ │ ├── pakistan.geojson │ │ ├── papua-new-guinea.geojson │ │ ├── philippines.geojson │ │ ├── south-korea.geojson │ │ ├── taiwan.geojson │ │ ├── thailand.geojson │ │ ├── turkey.geojson │ │ └── vietnam.geojson │ ├── australia │ │ ├── .gitkeep │ │ └── australia.geojson │ ├── europe │ │ ├── albania.geojson │ │ ├── austria.geojson │ │ ├── basque-country-south-landes.geojson │ │ ├── belgium.geojson │ │ ├── bulgaria.geojson │ │ ├── catalan_countries.geojson │ │ ├── dachli-obersee-rheintal.geojson │ │ ├── france.geojson │ │ ├── germany-berlin-neukoelln.geojson │ │ ├── germany-berlin.geojson │ │ ├── germany-bremen.geojson │ │ ├── germany-hamburg.geojson │ │ ├── germany.geojson │ │ ├── hungary.geojson │ │ ├── ireland.geojson │ │ ├── italy.geojson │ │ ├── kosovo.geojson │ │ ├── luxembourg.geojson │ │ ├── montenegro.geojson │ │ ├── poland.geojson │ │ ├── portugal.geojson │ │ ├── romania.geojson │ │ ├── russia.geojson │ │ ├── scotland.geojson │ │ ├── serbia.geojson │ │ ├── slovenia.geojson │ │ ├── spain.geojson │ │ ├── switzerland.geojson │ │ └── ukraine.geojson │ ├── north-america │ │ ├── ca-bc.geojson │ │ ├── ca-on.geojson │ │ ├── california.geojson │ │ ├── colorado.geojson │ │ ├── guatemala.geojson │ │ ├── kansas.geojson │ │ ├── massachusetts.geojson │ │ ├── michigan.geojson │ │ ├── newyork.geojson │ │ ├── ohio.geojson │ │ ├── oregon.geojson │ │ ├── panama.geojson │ │ ├── texas.geojson │ │ ├── utah.geojson │ │ ├── vermont.geojson │ │ └── washington.geojson │ └── south-america │ │ ├── argentina.geojson │ │ ├── bogota.geojson │ │ ├── bolivia.geojson │ │ ├── brazil.geojson │ │ ├── chile.geojson │ │ └── colombia.geojson ├── styles │ └── app.css └── typescript │ ├── app.ts │ ├── bootstrap.ts │ ├── list │ └── index.ts │ └── mapper │ ├── dropdown.tsx │ └── index.ts ├── bin ├── console └── phpunit ├── composer.json ├── composer.lock ├── config ├── bundles.php ├── packages │ ├── cache.yaml │ ├── debug.yaml │ ├── doctrine.yaml │ ├── doctrine_migrations.yaml │ ├── framework.yaml │ ├── knpu_oauth2_client.yaml │ ├── mailer.yaml │ ├── monolog.yaml │ ├── notifier.yaml │ ├── routing.yaml │ ├── security.yaml │ ├── translation.yaml │ ├── twig.yaml │ ├── validator.yaml │ ├── web_profiler.yaml │ └── webpack_encore.yaml ├── preload.php ├── regions.yaml ├── routes.yaml ├── routes │ ├── framework.yaml │ ├── security.yaml │ └── web_profiler.yaml ├── secrets │ └── prod │ │ ├── prod.OAUTH_OSM_CLIENT_ID.966bbf.php │ │ ├── prod.OAUTH_OSM_CLIENT_SECRET.9f2c4a.php │ │ ├── prod.encrypt.public.php │ │ └── prod.list.php └── services.yaml ├── crowdin.yml ├── deploy.php ├── docs ├── OSMCha_Review.md └── images │ ├── osmcha1.png │ ├── osmcha2.png │ ├── osmcha3.png │ ├── osmcha4.png │ ├── osmcha5.png │ ├── osmcha6.png │ ├── osmcha7.png │ ├── osmcha7a.png │ ├── osmcha9.png │ ├── osmcha_account_settings.png │ └── osmcha_watch_list.png ├── grumphp.yml ├── migrations ├── .gitignore └── Version20240901000000.php ├── package-lock.json ├── package.json ├── php.ini ├── phpstan.dist.neon ├── phpunit.xml.dist ├── postcss.config.js ├── public ├── .htaccess └── index.php ├── src ├── Command │ ├── AOICommand.php │ ├── AOIListCommand.php │ ├── DeletedUsersCommand.php │ └── NewMapperCommand.php ├── Controller │ ├── .gitignore │ ├── API │ │ └── RegionController.php │ ├── App │ │ ├── HomeController.php │ │ ├── ListController.php │ │ └── MapperController.php │ └── OpenStreetMapController.php ├── Entity │ ├── .gitignore │ ├── Changeset.php │ ├── Mapper.php │ ├── Note.php │ ├── Region.php │ ├── Template.php │ ├── User.php │ └── Welcome.php ├── EventSubscriber │ ├── LocaleSubscriber.php │ └── RequestSubscriber.php ├── Kernel.php ├── Repository │ ├── .gitignore │ ├── ChangesetRepository.php │ ├── MapperRepository.php │ ├── NoteRepository.php │ ├── RegionRepository.php │ ├── UserRepository.php │ └── WelcomeRepository.php ├── Security │ └── OpenStreetMapAuthenticator.php ├── Service │ ├── ChangesetProvider.php │ ├── MapperProvider.php │ ├── OSMChaAPI.php │ ├── OpenStreetMapAPI.php │ ├── RegionsProvider.php │ └── TemplatesProvider.php └── Twig │ └── EditorExtension.php ├── symfony.lock ├── tailwind.config.js ├── templates ├── app │ ├── breadcrumb.html.twig │ ├── footer.html.twig │ ├── home │ │ ├── continent.html.twig │ │ └── region.html.twig │ ├── layout.html.twig │ ├── list │ │ ├── avatar.html.twig │ │ ├── chart.html.twig │ │ ├── header.html.twig │ │ ├── index.html.twig │ │ ├── map.html.twig │ │ └── table.html.twig │ ├── mapper │ │ ├── changeset.html.twig │ │ ├── changesets.html.twig │ │ ├── form.html.twig │ │ ├── header.html.twig │ │ ├── index.html.twig │ │ ├── notes.html.twig │ │ ├── timeline.html.twig │ │ ├── welcome.html.twig │ │ └── welcome │ │ │ └── button.html.twig │ └── nav.html.twig ├── base.html.twig └── messages │ ├── albania │ ├── en │ │ └── default.md │ └── sq │ │ └── default.md │ ├── argentina │ └── es │ │ └── default.md │ ├── austria │ ├── de │ │ └── default.md │ └── en │ │ └── default.md │ ├── belgium │ ├── de │ │ └── default.md │ ├── en │ │ └── default.md │ ├── fr │ │ └── default.md │ └── nl │ │ └── default.md │ ├── bogota │ ├── en │ │ └── default.md │ └── es │ │ └── default.md │ ├── bolivia │ └── es │ │ └── default.md │ ├── brazil │ └── pt │ │ ├── default.md │ │ └── umbraosm.md │ ├── ca-on │ └── en │ │ └── default.md │ ├── california │ └── en │ │ └── default.md │ ├── chile │ └── es │ │ └── default.md │ ├── china-beijing │ └── zh │ │ ├── default.md │ │ └── vandalism.md │ ├── china-heilongjiang │ └── zh │ │ ├── default.md │ │ └── vandalism.md │ ├── china-hunan │ └── zh │ │ ├── default.md │ │ └── vandalism.md │ ├── china │ ├── de │ │ └── default.md │ ├── en │ │ └── default.md │ ├── fr │ │ └── default.md │ ├── ja │ │ └── default.md │ └── zh │ │ ├── default.md │ │ └── vandalism.md │ ├── colombia │ ├── en │ │ └── default.md │ └── es │ │ └── default.md │ ├── colorado │ └── en │ │ └── default.md │ ├── dachli-obersee-rheintal │ ├── de │ │ └── default.md │ └── en │ │ └── default.md │ ├── drc │ ├── en │ │ └── mapathon.md │ └── fr │ │ └── default.md │ ├── france │ └── fr │ │ └── default.md │ ├── germany-berlin-neukoelln │ └── de │ │ └── default.md │ ├── germany-berlin │ ├── de │ │ ├── default.md │ │ └── tach.md │ └── en │ │ └── tach.md │ ├── germany-bremen │ └── de │ │ └── default.md │ ├── germany-hamburg │ └── de │ │ └── default.md │ ├── germany │ └── de │ │ └── default_JOSM.md │ ├── ghana │ └── en │ │ └── default.md │ ├── guatemala │ ├── en │ │ └── default.md │ └── es │ │ └── default.md │ ├── india │ └── en │ │ └── default.md │ ├── iraq │ ├── ar │ │ └── default.md │ └── en │ │ └── default.md │ ├── ireland │ └── en │ │ └── default.md │ ├── italy │ ├── en │ │ └── default.md │ └── it │ │ └── default.md │ ├── japan │ ├── en │ │ └── default.md │ └── ja │ │ └── default.md │ ├── kansas │ └── en │ │ └── default.md │ ├── kosovo │ ├── en │ │ └── default.md │ └── sq │ │ └── default.md │ ├── laos │ └── en │ │ └── default.md │ ├── massachusetts │ └── en │ │ └── default.md │ ├── michigan │ └── en │ │ └── default.md │ ├── montenegro │ ├── en │ │ └── default.md │ ├── hr │ │ └── default.md │ └── sr │ │ └── default.md │ ├── newyork │ └── en │ │ └── default.md │ ├── north-korea │ ├── en │ │ └── default.md │ └── ko │ │ └── default.md │ ├── ohio │ └── default.md │ ├── oregon │ └── en │ │ └── default.md │ ├── papua-new-guinea │ └── en │ │ └── default.md │ ├── philippines │ └── en │ │ └── default.md │ ├── poland │ └── pl │ │ └── default.md │ ├── portugal │ └── pt │ │ └── default.md │ ├── serbia │ ├── sr │ │ └── default.md │ └── sr_Latn │ │ └── default.md │ ├── south-africa │ └── en │ │ └── default.md │ ├── south-korea │ └── ko │ │ └── default.md │ ├── spain │ └── es │ │ └── default.md │ ├── taiwan │ ├── en │ │ └── default.md │ ├── nan │ │ └── default.md │ └── zh │ │ └── default.md │ ├── tanzania │ └── en │ │ └── default.md │ ├── texas │ └── default.md │ ├── thailand │ ├── en │ │ ├── default.md │ │ └── top.md │ └── th │ │ ├── default.md │ │ └── top.md │ ├── togo │ ├── en │ │ └── mapathon.md │ └── fr │ │ └── default.md │ ├── uganda │ └── en │ │ └── default.md │ ├── ukraine │ └── uk │ │ ├── welcome1.md │ │ └── welcome2.md │ ├── utah │ └── en │ │ └── default.md │ ├── vermont │ └── en │ │ └── default.md │ ├── vietnam │ └── en │ │ └── default.md │ └── washington │ └── en │ ├── default.md │ └── nono.md ├── tests └── bootstrap.php ├── translations ├── .gitignore ├── messages.bg_BG.xlf ├── messages.de_DE.xlf ├── messages.en.xlf ├── messages.es_ES.xlf ├── messages.fr_FR.xlf ├── messages.hu_HU.xlf ├── messages.it_IT.xlf ├── messages.ja_JP.xlf ├── messages.ko_KR.xlf ├── messages.nl_NL.xlf ├── messages.pl_PL.xlf ├── messages.pt_BR.xlf ├── messages.pt_PT.xlf ├── messages.sl_SI.xlf ├── messages.sq_AL.xlf ├── messages.uk_UA.xlf ├── messages.zh_CN.xlf ├── messages.zh_TW.xlf ├── security.bg_BG.xlf ├── security.de_DE.xlf ├── security.en.xlf ├── security.es_ES.xlf ├── security.fr_FR.xlf ├── security.hu_HU.xlf ├── security.it_IT.xlf ├── security.ja_JP.xlf ├── security.ko_KR.xlf ├── security.nl_NL.xlf ├── security.pl_PL.xlf ├── security.pt_BR.xlf ├── security.pt_PT.xlf ├── security.sl_SI.xlf ├── security.sq_AL.xlf ├── security.uk_UA.xlf ├── security.zh_CN.xlf ├── security.zh_TW.xlf ├── time+intl-icu.bg_BG.xlf ├── time+intl-icu.de_DE.xlf ├── time+intl-icu.en.xlf ├── time+intl-icu.es_ES.xlf ├── time+intl-icu.fr_FR.xlf ├── time+intl-icu.hu_HU.xlf ├── time+intl-icu.it_IT.xlf ├── time+intl-icu.ja_JP.xlf ├── time+intl-icu.ko_KR.xlf ├── time+intl-icu.nl_NL.xlf ├── time+intl-icu.pl_PL.xlf ├── time+intl-icu.pt_BR.xlf ├── time+intl-icu.pt_PT.xlf ├── time+intl-icu.sl_SI.xlf ├── time+intl-icu.sq_AL.xlf ├── time+intl-icu.uk_UA.xlf ├── time+intl-icu.zh_CN.xlf ├── time+intl-icu.zh_TW.xlf ├── validators.bg_BG.xlf ├── validators.de_DE.xlf ├── validators.en.xlf ├── validators.es_ES.xlf ├── validators.fr_FR.xlf ├── validators.hu_HU.xlf ├── validators.it_IT.xlf ├── validators.ja_JP.xlf ├── validators.ko_KR.xlf ├── validators.nl_NL.xlf ├── validators.pl_PL.xlf ├── validators.pt_BR.xlf ├── validators.pt_PT.xlf ├── validators.sl_SI.xlf ├── validators.sq_AL.xlf ├── validators.uk_UA.xlf ├── validators.zh_CN.xlf └── validators.zh_TW.xlf ├── tsconfig.json └── webpack.config.js /.docker/apache/app.conf: -------------------------------------------------------------------------------- 1 | 2 | # The ServerName directive sets the request scheme, hostname and port that 3 | # the server uses to identify itself. This is used when creating 4 | # redirection URLs. In the context of virtual hosts, the ServerName 5 | # specifies what hostname must appear in the request's Host: header to 6 | # match this virtual host. For the default virtual host (this file) this 7 | # value is not decisive as it is used as a last resort host regardless. 8 | # However, you must set it for any further virtual host explicitly. 9 | #ServerName www.example.com 10 | 11 | ServerAdmin webmaster@localhost 12 | DocumentRoot /var/www/app/public 13 | 14 | 15 | Require all granted 16 | AllowOverride All 17 | 18 | 19 | # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 20 | # error, crit, alert, emerg. 21 | # It is also possible to configure the loglevel for particular 22 | # modules, e.g. 23 | #LogLevel info ssl:warn 24 | 25 | ErrorLog ${APACHE_LOG_DIR}/error.log 26 | CustomLog ${APACHE_LOG_DIR}/access.log combined 27 | 28 | # For most configuration files from conf-available/, which are 29 | # enabled or disabled at a global level, it is possible to 30 | # include a line for only one particular virtual host. For example the 31 | # following line enables the CGI configuration for this host only 32 | # after it has been globally disabled with "a2disconf". 33 | #Include conf-available/serve-cgi-bin.conf 34 | -------------------------------------------------------------------------------- /.docker/composer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')" 4 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 5 | ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" 6 | 7 | if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] 8 | then 9 | >&2 echo 'ERROR: Invalid installer checksum' 10 | rm composer-setup.php 11 | exit 1 12 | fi 13 | 14 | php composer-setup.php --quiet 15 | RESULT=$? 16 | rm composer-setup.php 17 | exit $RESULT -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .github/ 2 | docs/ 3 | node_modules/ 4 | public/build/ 5 | var/ 6 | vendor/ 7 | .env.* 8 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env contains default values for the environment variables needed by the app 5 | # * .env.local uncommitted file with local overrides 6 | # * .env.$APP_ENV committed environment-specific defaults 7 | # * .env.$APP_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables win over .env files. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. 12 | # https://symfony.com/doc/current/configuration/secrets.html 13 | # 14 | # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). 15 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 16 | 17 | ###> symfony/framework-bundle ### 18 | APP_ENV=prod 19 | APP_SECRET=74db52ae2893f0f3e829203cfa3cd62a 20 | TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR 21 | ###< symfony/framework-bundle ### 22 | 23 | ###> symfony/mailer ### 24 | # MAILER_DSN=null://null 25 | ###< symfony/mailer ### 26 | 27 | ###> doctrine/doctrine-bundle ### 28 | # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url 29 | # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml 30 | # 31 | DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" 32 | # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" 33 | # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" 34 | # DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" 35 | ###< doctrine/doctrine-bundle ### 36 | 37 | ###> symfony/crowdin-translation-provider ### 38 | # CROWDIN_DSN=crowdin://PROJECT_ID:API_TOKEN@ORGANIZATION_DOMAIN.default 39 | ###< symfony/crowdin-translation-provider ### 40 | -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | # define your env variables for the test env here 2 | KERNEL_CLASS='App\Kernel' 3 | APP_SECRET='$ecretf0rt3st' 4 | SYMFONY_DEPRECATIONS_HELPER=999999 5 | PANTHER_APP_ENV=panther 6 | PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots 7 | DATABASE_URL=sqlite:///%kernel.project_dir%/data/database_test.sqlite -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | }, 6 | extends: [ 7 | 'eslint:recommended', 8 | 'plugin:react/recommended', 9 | 'plugin:@typescript-eslint/recommended', 10 | ], 11 | parser: '@typescript-eslint/parser', 12 | parserOptions: { 13 | ecmaFeatures: { 14 | jsx: true, 15 | }, 16 | ecmaVersion: 12, 17 | sourceType: 'module', 18 | }, 19 | plugins: ['react', '@typescript-eslint'], 20 | rules: { 21 | indent: ['error', 2], 22 | 'linebreak-style': ['error', 'unix'], 23 | 'no-console': ['error'], 24 | quotes: ['error', 'single'], 25 | semi: ['error', 'always'], 26 | }, 27 | settings: { 28 | react: { 29 | version: 'detect' 30 | } 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "composer" 9 | directory: "/" 10 | target-branch: "2.x" 11 | schedule: 12 | interval: "monthly" 13 | groups: 14 | symfony: 15 | patterns: 16 | - "symfony/*" 17 | twig: 18 | patterns: 19 | - "twig/*" 20 | phpstan: 21 | dependency-type: development 22 | patterns: 23 | - "phpstan/*" 24 | - package-ecosystem: "npm" 25 | directory: "/" 26 | target-branch: "2.x" 27 | schedule: 28 | interval: "monthly" 29 | groups: 30 | babel: 31 | patterns: 32 | - "@babel/*" 33 | eslint: 34 | patterns: 35 | - "@typescript-eslint/*" 36 | - "eslint*" 37 | webpack: 38 | patterns: 39 | - "webpack*" 40 | - package-ecosystem: "docker" 41 | directory: "/" 42 | open-pull-requests-limit: 10 43 | schedule: 44 | interval: "monthly" 45 | target-branch: "2.x" 46 | - package-ecosystem: "github-actions" 47 | directory: "/" 48 | open-pull-requests-limit: 10 49 | schedule: 50 | interval: "monthly" 51 | target-branch: "2.x" 52 | -------------------------------------------------------------------------------- /.github/workflows/dependency-review.yml: -------------------------------------------------------------------------------- 1 | # Dependency Review Action 2 | # 3 | # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. 4 | # 5 | # Source repository: https://github.com/actions/dependency-review-action 6 | # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement 7 | name: 'Dependency Review' 8 | on: [pull_request] 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | dependency-review: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: 'Checkout Repository' 18 | uses: actions/checkout@v4 19 | - name: 'Dependency Review' 20 | uses: actions/dependency-review-action@v4 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ###> symfony/framework-bundle ### 2 | /.env.local 3 | /.env.local.php 4 | /.env.*.local 5 | /config/secrets/prod/prod.decrypt.private.php 6 | /public/bundles/ 7 | /var/ 8 | /vendor/ 9 | ###< symfony/framework-bundle ### 10 | 11 | ###> symfony/phpunit-bridge ### 12 | .phpunit.result.cache 13 | /phpunit.xml 14 | ###< symfony/phpunit-bridge ### 15 | ###> symfony/webpack-encore-bundle ### 16 | /node_modules/ 17 | /public/build/ 18 | npm-debug.log 19 | yarn-error.log 20 | ###< symfony/webpack-encore-bundle ### 21 | 22 | ###> friendsofphp/php-cs-fixer ### 23 | /.php-cs-fixer.php 24 | /.php-cs-fixer.cache 25 | ###< friendsofphp/php-cs-fixer ### 26 | 27 | ###> phpunit/phpunit ### 28 | .phpunit.result.cache 29 | ###< phpunit/phpunit ### 30 | 31 | ###> phpstan/phpstan ### 32 | phpstan.neon 33 | ###< phpstan/phpstan ### 34 | -------------------------------------------------------------------------------- /.php-cs-fixer.dist.php: -------------------------------------------------------------------------------- 1 | in(__DIR__) 5 | ->exclude('node_modules') 6 | ->exclude('var'); 7 | 8 | return (new PhpCsFixer\Config()) 9 | ->setRules([ 10 | '@PSR12' => true, 11 | '@Symfony' => true, 12 | ]) 13 | ->setFinder($finder); 14 | -------------------------------------------------------------------------------- /.phpunit.cache/test-results: -------------------------------------------------------------------------------- 1 | {"version":1,"defects":[],"times":[]} -------------------------------------------------------------------------------- /.platform/routes.yaml: -------------------------------------------------------------------------------- 1 | "https://{all}/": { type: upstream, upstream: "app:http" } 2 | "http://{all}/": { type: redirect, to: "https://{all}/" } 3 | -------------------------------------------------------------------------------- /.platform/services.yaml: -------------------------------------------------------------------------------- 1 | # The name given to the PostgreSQL service (lowercase alphanumeric only). 2 | database: 3 | # The type of your service (postgresql), which uses the format 4 | # 'type:version'. Be sure to consult the PostgreSQL documentation 5 | # (https://docs.platform.sh/add-services/postgresql.html#supported-versions) 6 | # when choosing a version. If you specify a version number which is not available, 7 | # the CLI will return an error. 8 | type: postgresql:16 9 | # The disk attribute is the size of the persistent disk (in MB) allocated to the service. 10 | disk: 512 11 | -------------------------------------------------------------------------------- /.styleci.yml: -------------------------------------------------------------------------------- 1 | risky: true 2 | version: 8 3 | preset: symfony -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Node.js (Build assets) 2 | 3 | FROM node:22-alpine AS node 4 | 5 | WORKDIR /assets 6 | 7 | COPY . . 8 | 9 | RUN npm install 10 | RUN npm run build 11 | 12 | # Composer 13 | 14 | FROM composer:2 AS composer 15 | 16 | # Application 17 | 18 | FROM php:8.3-apache AS app 19 | 20 | ## Install PHP dependencies 21 | 22 | RUN apt-get update -y && apt-get upgrade -y 23 | RUN apt-get install -y libicu-dev libpq-dev libsodium-dev libzip-dev 24 | 25 | RUN docker-php-ext-configure zip; 26 | RUN docker-php-ext-install -j$(nproc) intl pdo_pgsql sodium zip 27 | 28 | ## Install Symfony CLI 29 | 30 | # RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash 31 | # RUN apt-get install symfony-cli 32 | 33 | ## Configure Apache 34 | 35 | COPY ".docker/apache/app.conf" "/etc/apache2/sites-available/" 36 | 37 | RUN a2enmod rewrite alias 38 | RUN a2dissite 000-default 39 | RUN a2ensite app 40 | RUN apache2ctl restart 41 | 42 | ## Copy/Clean files 43 | 44 | ENV APP_ENV=prod 45 | # ENV APP_ENV=dev 46 | 47 | WORKDIR "/var/www/app" 48 | 49 | COPY --chown=www-data . . 50 | 51 | RUN rm -Rf .docker/ 52 | 53 | COPY --from=node --chown=www-data "/assets/public/build" "./public/build" 54 | 55 | ## Install Composer & Dependencies 56 | 57 | COPY --from=composer "/usr/bin/composer" "/usr/bin/composer" 58 | 59 | ENV COMPOSER_ALLOW_SUPERUSER=1 60 | 61 | RUN composer validate 62 | RUN composer install --no-ansi --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-scripts --no-dev 63 | # RUN composer install --no-ansi --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-scripts 64 | RUN composer clear-cache 65 | RUN composer dump-env prod 66 | RUN composer run-script post-install-cmd --no-dev 67 | # RUN composer run-script post-install-cmd 68 | RUN chmod +x bin/console; sync; 69 | 70 | ###> recipes ### 71 | ###< recipes ### 72 | 73 | ## Check Symfony requirements 74 | 75 | # RUN symfony check:requirements 76 | 77 | ## Finalize 78 | 79 | RUN mkdir -p var/cache/${APP_ENV} var/log/ 80 | RUN chown -R www-data:www-data var/ 81 | 82 | EXPOSE 80 83 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | ## Installing OpenStreetMap Welcome Tool 2 | 3 | ### Requirements 4 | 5 | - Install dependencies: 6 | 7 | ```cmd 8 | composer install 9 | ``` 10 | 11 | - Create database (if needed): 12 | 13 | ```cmd 14 | php bin/console doctrine:database:create 15 | ``` 16 | 17 | - Initialize schema: 18 | 19 | ```cmd 20 | php bin/console doctrine:schema:create 21 | ``` 22 | 23 | - Create `OSMCHA_API_KEY` in your environment with your [OSMCha](https://osmcha.org/) API key 24 | 25 | ### Run locally 26 | 27 | #### Symfony Local Web Server 28 | 29 | - Install [Symfony CLI](https://symfony.com/download) 30 | - Run `symfony server:start` 31 | - Browse the given URL 32 | 33 | Check [Symfony local server documentation](https://symfony.com/doc/current/setup/symfony_server.html) for more information. 34 | 35 | #### Docker 36 | 37 | ```cmd 38 | docker build . --tag osm-welcome-tool 39 | docker run --detach --publish 80:80 --env-file .env.local osm-welcome-tool 40 | ``` 41 | 42 | ### Deploy 43 | 44 | Check [Symfony deployment documentation](https://symfony.com/doc/current/deployment.html). 45 | 46 | #### Using Deployer 47 | 48 | ```cmd 49 | vendor/bin/dep deploy --branch=2.x welcome.osm.be 50 | ``` 51 | 52 | ## Translating OpenStreetMap Welcome Tool 53 | 54 | 1. Update XLIFF files for English 55 | 56 | ```cmd 57 | php bin/console translation:extract --force en 58 | ``` 59 | 60 | 1. Upload XLIFF files for English to Crowdin 61 | 62 | ```cmd 63 | php bin/console translation:push --force --locales en 64 | ``` 65 | 66 | 1. Update translations in [Crowdin](https://crowdin.com/project/osm-welcome-tool) 67 | 68 | 1. Download XLIFF files from Crowdin 69 | 70 | ```cmd 71 | php bin/console translation:pull --force 72 | ``` 73 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2021 OpenStreetMap Belgium 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenStreetMap Welcome Tool 2 | 3 | [![Crowdin](https://badges.crowdin.net/osm-welcome-tool/localized.svg)](https://crowdin.com/project/osm-welcome-tool) 4 | 5 | Website to help welcoming new OpenStreetMap contributors in your region. 6 | 7 | It detects new mappers in various regions and suggests a welcome message (based on templates) that you can then send to the mapper. 8 | 9 | Detection of new mappers is automatic, welcome messages are manually send by people using their OSM accounts. 10 | 11 | You can see it in action on [https://welcome.osm.be/](https://welcome.osm.be/). 12 | 13 | ## Requirements 14 | 15 | - [PHP 8.1](composer.json) (or above) 16 | - [Node.js 12.x](package.json) (or above) 17 | 18 | ## Contributing 19 | 20 | - Add a language 21 | - Add a region 22 | - Add (or update) message template(s) to a region 23 | - ... 24 | 25 | See [CONTRIBUTING.md](CONTRIBUTING.md) 26 | 27 | ## Run locally 28 | 29 | See [INSTALL.md](INSTALL.md) 30 | -------------------------------------------------------------------------------- /assets/images/GitHub-Mark-32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/assets/images/GitHub-Mark-32px.png -------------------------------------------------------------------------------- /assets/images/avatar_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/assets/images/avatar_large.png -------------------------------------------------------------------------------- /assets/images/crowdin-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/regions/README.md: -------------------------------------------------------------------------------- 1 | # OpenStreetMap Welcome Tool - Geographical data 2 | 3 | The files in this folder are based on [OpenStreetMap](https://www.openstreetmap.org/) data and generated using . 4 | 5 | The files in this folder are made available under the Open Database License: . Any rights in individual contents of the database are licensed under the Database Contents License: 6 | -------------------------------------------------------------------------------- /assets/regions/asia/east-timor.geojson: -------------------------------------------------------------------------------- 1 | {"type":"MultiPolygon","coordinates":[[[[124.93,-9],[124.94,-9.05],[124.98,-9.07],[125.04,-9.03],[125.07,-9.03],[125.1,-9],[125.1,-8.97],[125.19,-9.03],[125.18,-9.17],[125.13,-9.17],[125.11,-9.2],[125.09,-9.2],[125.07,-9.17],[125.01,-9.17],[125,-9.19],[124.98,-9.19],[124.98,-9.25],[125,-9.26],[125,-9.29],[125.02,-9.31],[125.05,-9.32],[125.05,-9.36],[125.08,-9.38],[125.09,-9.47],[125.17,-9.51],[125.22,-9.59],[125.26,-9.61],[125.34,-9.57],[125.46,-9.46],[125.52,-9.45],[125.62,-9.4],[125.74,-9.4],[125.81,-9.37],[125.82,-9.35],[125.87,-9.35],[125.9,-9.33],[125.95,-9.34],[126.03,-9.32],[126.13,-9.26],[126.14,-9.24],[126.18,-9.23],[126.22,-9.18],[126.36,-9.18],[126.42,-9.15],[126.55,-9.14],[126.64,-9.08],[126.68,-9],[126.74,-8.96],[126.87,-8.96],[126.97,-8.92],[127.02,-8.88],[127.08,-8.88],[127.12,-8.86],[127.25,-8.72],[127.35,-8.65],[127.44,-8.62],[127.51,-8.56],[127.54,-8.49],[127.54,-8.41],[127.44,-8.32],[127.29,-8.27],[127.26,-8.24],[127.18,-8.22],[127.1,-8.23],[127.04,-8.2],[126.85,-8.2],[126.8,-8.22],[126.66,-8.21],[126.6,-8.25],[126.55,-8.26],[126.51,-8.23],[126.4,-8.21],[126.3,-8.23],[126.2,-8.28],[126.19,-8.3],[126.15,-8.29],[126.07,-8.31],[126.04,-8.29],[125.92,-8.27],[125.82,-8.28],[125.83,-8.25],[125.77,-8.18],[125.67,-8.12],[125.61,-8.12],[125.59,-8.15],[125.51,-8.19],[125.43,-8.26],[125.39,-8.36],[125.39,-8.4],[125.35,-8.4],[125.33,-8.42],[125.27,-8.43],[125.16,-8.48],[125.01,-8.52],[124.99,-8.54],[124.98,-8.67],[124.99,-8.76],[124.96,-8.84],[124.96,-8.94],[124.93,-9]]],[[[124.04,-9.34],[124.13,-9.43],[124.16,-9.42],[124.17,-9.39],[124.19,-9.39],[124.2,-9.37],[124.24,-9.37],[124.28,-9.42],[124.27,-9.44],[124.29,-9.48],[124.28,-9.5],[124.36,-9.48],[124.35,-9.42],[124.38,-9.41],[124.37,-9.37],[124.4,-9.36],[124.4,-9.34],[124.44,-9.33],[124.44,-9.31],[124.46,-9.31],[124.45,-9.27],[124.48,-9.2],[124.47,-9.11],[124.49,-8.97],[124.37,-8.97],[124.32,-9],[124.26,-9],[124.19,-9.04],[124.09,-9.07],[124.08,-9.08],[124.09,-9.2],[124.07,-9.25],[124.03,-9.29],[124.04,-9.34]]]]} -------------------------------------------------------------------------------- /assets/regions/asia/macao.geojson: -------------------------------------------------------------------------------- 1 | {"type":"MultiPolygon","coordinates":[[[[113.52823,22.18298],[113.52817,22.18217],[113.52942,22.177],[113.53058,22.17544],[113.53197,22.17331],[113.53214,22.17208],[113.53255,22.17124],[113.53279,22.17075],[113.53953,22.157],[113.54525,22.15078],[113.54956,22.14536],[113.54933,22.14004],[113.54933,22.13991],[113.54917,22.13628],[113.54852,22.11936],[113.54847,22.11807],[113.54831,22.11558],[113.54964,22.10886],[113.57097,22.09883],[113.57097,22.07667],[113.61022,22.07667],[113.63014,22.10886],[113.63014,22.16564],[113.60525,22.20411],[113.58043,22.20405],[113.58022,22.20405],[113.58021,22.20405],[113.57806,22.20404],[113.57685,22.20404],[113.57671,22.20404],[113.57611,22.20404],[113.57567,22.20404],[113.57551,22.20404],[113.5715,22.20403],[113.57054,22.20408],[113.57062,22.20619],[113.57003,22.20819],[113.56897,22.20908],[113.56228,22.21222],[113.55389,22.21531],[113.55203,22.216],[113.55092,22.21542],[113.55085,22.21547],[113.55079,22.21553],[113.55072,22.21566],[113.55085,22.21704],[113.55,22.21693],[113.54965,22.21673],[113.5492,22.21661],[113.54875,22.21662],[113.54834,22.21673],[113.54772,22.21666],[113.54763,22.21656],[113.54704,22.21678],[113.54657,22.21678],[113.54651,22.2168],[113.54548,22.21681],[113.54519,22.21692],[113.54436,22.21695],[113.54339,22.21631],[113.54246,22.21443],[113.54241,22.21429],[113.54201,22.21369],[113.54196,22.21367],[113.54172,22.21323],[113.54159,22.2133],[113.54153,22.21333],[113.54148,22.21326],[113.54133,22.21309],[113.54126,22.21306],[113.5412,22.21303],[113.5409,22.21303],[113.53814,22.21364],[113.53633,22.21364],[113.536,22.21362],[113.53571,22.21356],[113.53544,22.21347],[113.53519,22.21343],[113.53457,22.2132],[113.53308,22.21231],[113.53342,22.21131],[113.53344,22.21122],[113.53397,22.20964],[113.53465,22.20737],[113.53539,22.20669],[113.53549,22.20485],[113.53564,22.20231],[113.53472,22.19877],[113.5342,22.19676],[113.53361,22.1945],[113.52922,22.18853],[113.53019,22.18792],[113.52917,22.18656],[113.52836,22.1845],[113.52823,22.18298]]],[[[113.54741,22.13611],[113.5404,22.13568],[113.54017,22.13545],[113.54076,22.12406],[113.5411,22.1235],[113.54567,22.1206],[113.54656,22.12062],[113.54656,22.12063],[113.54656,22.12072],[113.54728,22.13263],[113.54731,22.13322],[113.54738,22.13558],[113.54741,22.13611]]]]} -------------------------------------------------------------------------------- /assets/regions/australia/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/assets/regions/australia/.gitkeep -------------------------------------------------------------------------------- /assets/regions/europe/dachli-obersee-rheintal.geojson: -------------------------------------------------------------------------------- 1 | {"type":"MultiPolygon","coordinates":[[[[8.75404,47.73424],[8.74443,47.65753],[8.91591,47.5478],[9.02622,47.46616],[9.01503,47.24498],[9.07134,47.0472],[9.37914,46.75776],[10.19806,46.7963],[10.3196,47.23635],[10.39581,47.33324],[9.87534,47.69359],[9.61716,47.7984],[9.44687,47.82791],[8.99574,47.88089],[8.75404,47.73424]]]]} -------------------------------------------------------------------------------- /assets/regions/europe/germany-berlin.geojson: -------------------------------------------------------------------------------- 1 | {"type":"Polygon","coordinates":[[[13.49945,52.67638],[13.42529,52.67888],[13.26874,52.66889],[13.09845,52.58303],[13.08884,52.47525],[12.98035,52.40158],[13.09158,52.35883],[13.67798,52.32023],[13.81119,52.46103],[13.49945,52.67638]]]} -------------------------------------------------------------------------------- /assets/regions/europe/germany-hamburg.geojson: -------------------------------------------------------------------------------- 1 | {"type":"Polygon","coordinates":[[[9.68262145996,53.59224749745],[9.65257312012,53.44554320199],[10.02013879395,53.37551211854],[10.30105522156,53.49499068427],[10.20018505859,53.58311072833],[10.31744372559,53.6620833339],[10.169,53.739],[10.0789257431,53.71906016535],[9.98176540375,53.74668078801],[9.90013354492,53.67415645344],[9.77372503662,53.67864706835],[9.764,53.627],[9.68262145996,53.59224749745]]]} -------------------------------------------------------------------------------- /assets/regions/europe/italy.geojson: -------------------------------------------------------------------------------- 1 | {"type":"MultiPolygon","coordinates":[[[[8.52035,38.65796],[9.1,38.6],[9.8,38.8],[10,39],[10.2,40.6],[9.8,41.5],[8.8,41.3],[8.1,41.4],[7.9,41.1],[7.8,40.4],[8,40.3],[7.9,39.8],[8.1,39.6],[7.8,39.1],[8.1,38.7],[8.2811,38.68189],[8.29519,38.67608],[8.31064,38.67068],[8.3265,38.66609],[8.34271,38.66231],[8.3592,38.65938],[8.3759,38.65729],[8.39274,38.65606],[8.40964,38.65569],[8.41564,38.65577],[8.52035,38.65796]]],[[[7.4,44],[7.5,43.5],[8.3,43.6],[8.8,44.1],[9.7,43.8],[9.5,43.6],[9.5,42.9],[9.8,42.1],[11.6,41.8],[12.3,41.3],[12.5,40.7],[13.8,40.4],[15.5,39.6],[15.5,39.4],[15.7,39.3],[15.7,38.9],[15.5,39.1],[15,39.1],[14.9,38.9],[14.3,38.9],[14,38.7],[14.1,38.4],[14,38.3],[13.5,38.5],[13.6,38.8],[13.4,39],[12.9,39],[12.8,38.5],[11.7,38.2],[11.7,37.8],[12.2,37.6],[12.4,37.3],[13.9,36.8],[14.3,36.5],[15,36.3],[15.4,36.4],[15.7,36.9],[15.5,37.6],[16.4,37.7],[17.6,38.9],[17.5,39.2],[18.6,39.5],[18.9,40],[18.9,40.3],[18.3,40.9],[17.8,41],[17.2,41.4],[16.6,41.5],[16.6,42],[16.4,42.2],[16.1,42.2],[16,42.5],[15.5,42.5],[15.1,42.3],[14.4,42.7],[13.8,43.9],[13.5,43.9],[12.7,44.4],[13,45.3],[13.4,45.5],[14,45.5],[14,45.7],[13.7,45.9],[13.8,46.6],[12.4,46.8],[12.3,47.2],[11.1,47.1],[11,46.9],[10.4,47],[10.3,46.7],[10,46.7],[9.8,46.4],[9.2,46.6],[9.1,46.4],[9.2,46.3],[9,46.1],[8.6,46.2],[8.6,46.5],[8.4,46.6],[8,46.4],[7.8,46],[7.5,46.1],[6.7,45.9],[6.7,45.6],[6.9,45.6],[7,45.3],[6.8,45.2],[6.7,45.3],[6.5,45.1],[6.7,44.8],[6.9,44.8],[6.8,44.3],[7.4,44]]],[[[12.3,35.3],[12.8,35.2],[13.2,35.7],[13.2,36.1],[12.7,36.2],[12.5,35.8],[12.1,35.8],[12,35.4],[12.3,35.3]]],[[[11.6,36.6],[12.1,36.4],[12.4,36.6],[12.4,37],[11.7,37.1],[11.6,36.6]]]]} -------------------------------------------------------------------------------- /assets/regions/north-america/colorado.geojson: -------------------------------------------------------------------------------- 1 | {"type":"Polygon","coordinates":[[[-109.06,41.01],[-109.07,38.5],[-109.07,38.24],[-109.05,38.17],[-109.06,37],[-109.05,36.99],[-102.04,36.98],[-102.03,38.47],[-102.04,41.01],[-109.06,41.01]]]} -------------------------------------------------------------------------------- /assets/regions/north-america/kansas.geojson: -------------------------------------------------------------------------------- 1 | {"type":"MultiPolygon","coordinates":[[[[-102.07,40.005],[-102.065,37.875],[-102.055,36.975],[-94.6,36.985],[-94.59,39],[-94.585,39.115],[-94.57,39.13],[-94.57,39.16],[-94.595,39.18],[-94.64,39.175],[-94.64,39.185],[-94.655,39.2],[-94.67,39.205],[-94.695,39.205],[-94.715,39.19],[-94.745,39.19],[-94.765,39.22],[-94.785,39.23],[-94.81,39.225],[-94.81,39.265],[-94.83,39.285],[-94.875,39.3],[-94.89,39.325],[-94.89,39.345],[-94.88,39.345],[-94.86,39.365],[-94.865,39.4],[-94.89,39.415],[-94.925,39.405],[-94.93,39.42],[-94.96,39.435],[-94.96,39.445],[-94.98,39.465],[-95.02,39.475],[-95.03,39.485],[-95.035,39.515],[-95.07,39.53],[-95.095,39.555],[-95.05,39.56],[-95.03,39.58],[-95.025,39.605],[-95.035,39.625],[-95.01,39.655],[-94.97,39.66],[-94.95,39.68],[-94.95,39.725],[-94.915,39.705],[-94.88,39.705],[-94.85,39.72],[-94.84,39.74],[-94.84,39.77],[-94.86,39.79],[-94.855,39.83],[-94.865,39.845],[-94.915,39.86],[-94.905,39.885],[-94.92,39.91],[-94.945,39.92],[-94.99,39.915],[-95.02,39.92],[-95.045,39.9],[-95.045,39.885],[-95.085,39.88],[-95.1,39.89],[-95.12,39.89],[-95.125,39.91],[-95.14,39.925],[-95.18,39.92],[-95.18,39.94],[-95.19,39.955],[-95.21,39.965],[-95.24,39.965],[-95.255,39.985],[-95.29,40],[-95.3,40.02],[-102.055,40.025],[-102.07,40.015],[-102.07,40.005]]]]} -------------------------------------------------------------------------------- /assets/regions/north-america/utah.geojson: -------------------------------------------------------------------------------- 1 | {"type":"MultiPolygon","coordinates":[[[[-114.065,39.725],[-114.075,37.575],[-114.07,36.99],[-114.06,36.98],[-109.035,36.98],[-109.025,36.99],[-109.02,37.53],[-109.025,38.035],[-109.02,38.09],[-109.04,38.275],[-109.04,38.75],[-109.03,39.015],[-109.03,41.01],[-109.045,41.02],[-110.82,41.015],[-111.025,41.02],[-111.025,42.005],[-111.035,42.02],[-112.15,42.015],[-113.08,42.02],[-114.055,42.01],[-114.07,40.12],[-114.065,39.725]]]]} -------------------------------------------------------------------------------- /assets/styles/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /assets/typescript/app.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Welcome to your app's main JavaScript file! 3 | * 4 | * We recommend including the built version of this JavaScript file 5 | * (and its CSS file) in your base layout (base.html.twig). 6 | */ 7 | 8 | // any CSS you import will output into a single css file (app.css in this case) 9 | import '../styles/app.css'; 10 | -------------------------------------------------------------------------------- /assets/typescript/bootstrap.ts: -------------------------------------------------------------------------------- 1 | import { startStimulusApp } from '@symfony/stimulus-bridge'; 2 | 3 | // Registers Stimulus controllers from controllers.json and in the controllers/ directory 4 | export const app = startStimulusApp(require.context( 5 | '@symfony/stimulus-bridge/lazy-controller-loader!./controllers', 6 | false, 7 | /\.[jt]sx?$/ 8 | )); 9 | 10 | // register any custom, 3rd party controllers here 11 | // app.register('some_controller_name', SomeImportedController); 12 | -------------------------------------------------------------------------------- /assets/typescript/mapper/index.ts: -------------------------------------------------------------------------------- 1 | import { CodeJar } from 'codejar'; 2 | import hljs from 'highlight.js'; 3 | 4 | import createDropdown from './dropdown'; 5 | 6 | import 'highlight.js/styles/a11y-light.css'; 7 | 8 | /** Changeset dropdown */ 9 | document.querySelectorAll('.changeset-dropdown').forEach(element => { 10 | const { changesetId, label } = ((element as HTMLElement).dataset); 11 | 12 | if (typeof changesetId !== 'undefined' && typeof label !== 'undefined') { 13 | createDropdown(element, { id: parseInt(changesetId), label }); 14 | } 15 | }); 16 | 17 | /** Notes */ 18 | document.querySelectorAll('pre > code').forEach((element) => { 19 | hljs.highlightElement(element as HTMLElement); 20 | }); 21 | 22 | /** Form */ 23 | const highlight = (editor: HTMLElement): void => { 24 | // highlight.js does not trims old tags, 25 | // let's do it by this hack. 26 | // eslint-disable-next-line no-self-assign 27 | editor.textContent = editor.textContent; 28 | hljs.highlightElement(editor); 29 | }; 30 | 31 | const element = document.querySelector('.editor'); 32 | if (element !== null) { 33 | const jar = CodeJar(element as HTMLElement, highlight); 34 | 35 | document.getElementById('template-copy')?.addEventListener('click', async (event: MouseEvent) => { 36 | const button = (event.target as HTMLButtonElement); 37 | 38 | await navigator.clipboard.writeText(jar.toString()); 39 | 40 | button.classList.add('text-green-500'); 41 | setTimeout(() => { button.classList.remove('text-green-500'); }, 1500); 42 | }); 43 | 44 | document.getElementById('template-form')?.addEventListener('submit', (event: Event) => { 45 | event.preventDefault(); 46 | 47 | const form = (event.target as HTMLFormElement); 48 | 49 | const title = (document.getElementById('template-title') as HTMLInputElement)?.value; 50 | const body = jar.toString(); 51 | 52 | const { mapper } = form.dataset; 53 | 54 | const url = new URL(`https://www.openstreetmap.org/message/new/${mapper}`); 55 | url.searchParams.set('message[title]', title); 56 | url.searchParams.set('message[body]', body); 57 | 58 | window.open(url.toString()); 59 | }); 60 | } 61 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | = 80000) { 10 | require dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit'; 11 | } else { 12 | define('PHPUNIT_COMPOSER_INSTALL', dirname(__DIR__).'/vendor/autoload.php'); 13 | require PHPUNIT_COMPOSER_INSTALL; 14 | PHPUnit\TextUI\Command::main(); 15 | } 16 | } else { 17 | if (!is_file(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php')) { 18 | echo "Unable to find the `simple-phpunit.php` script in `vendor/symfony/phpunit-bridge/bin/`.\n"; 19 | exit(1); 20 | } 21 | 22 | require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php'; 23 | } 24 | -------------------------------------------------------------------------------- /config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], 6 | KnpU\OAuth2ClientBundle\KnpUOAuth2ClientBundle::class => ['all' => true], 7 | Knp\Bundle\TimeBundle\KnpTimeBundle::class => ['all' => true], 8 | Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], 9 | Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], 10 | Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], 11 | Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], 12 | Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], 13 | Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], 14 | Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], 15 | Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true], 16 | Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], 17 | ]; 18 | -------------------------------------------------------------------------------- /config/packages/cache.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | # Unique name of your app: used to compute stable namespaces for cache keys. 4 | prefix_seed: openstreetmap/welcome-tool 5 | 6 | # The "app" cache stores to the filesystem by default. 7 | # The data in this cache should persist between deploys. 8 | # Other options include: 9 | 10 | # Redis 11 | #app: cache.adapter.redis 12 | #default_redis_provider: redis://localhost 13 | 14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 15 | #app: cache.adapter.apcu 16 | 17 | # Namespaced pools use the above "app" backend by default 18 | #pools: 19 | #my.dedicated.cache: null 20 | -------------------------------------------------------------------------------- /config/packages/debug.yaml: -------------------------------------------------------------------------------- 1 | when@dev: 2 | debug: 3 | # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. 4 | # See the "server:dump" command to start a new server. 5 | dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" 6 | -------------------------------------------------------------------------------- /config/packages/doctrine.yaml: -------------------------------------------------------------------------------- 1 | doctrine: 2 | dbal: 3 | url: '%env(resolve:DATABASE_URL)%' 4 | 5 | # IMPORTANT: You MUST configure your server version, 6 | # either here or in the DATABASE_URL env var (see .env file) 7 | server_version: '16' 8 | 9 | profiling_collect_backtrace: '%kernel.debug%' 10 | use_savepoints: true 11 | orm: 12 | auto_generate_proxy_classes: true 13 | enable_lazy_ghost_objects: true 14 | report_fields_where_declared: true 15 | validate_xml_mapping: true 16 | naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware 17 | auto_mapping: true 18 | mappings: 19 | App: 20 | type: attribute 21 | is_bundle: false 22 | dir: '%kernel.project_dir%/src/Entity' 23 | prefix: 'App\Entity' 24 | alias: App 25 | 26 | when@test: 27 | doctrine: 28 | dbal: 29 | # "TEST_TOKEN" is typically set by ParaTest 30 | dbname_suffix: '_test%env(default::TEST_TOKEN)%' 31 | 32 | when@prod: 33 | doctrine: 34 | orm: 35 | auto_generate_proxy_classes: false 36 | proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies' 37 | query_cache_driver: 38 | type: pool 39 | pool: doctrine.system_cache_pool 40 | result_cache_driver: 41 | type: pool 42 | pool: doctrine.result_cache_pool 43 | 44 | framework: 45 | cache: 46 | pools: 47 | doctrine.result_cache_pool: 48 | adapter: cache.app 49 | doctrine.system_cache_pool: 50 | adapter: cache.system 51 | -------------------------------------------------------------------------------- /config/packages/doctrine_migrations.yaml: -------------------------------------------------------------------------------- 1 | doctrine_migrations: 2 | migrations_paths: 3 | # namespace is arbitrary but should be different from App\Migrations 4 | # as migrations classes should NOT be autoloaded 5 | 'DoctrineMigrations': '%kernel.project_dir%/migrations' 6 | enable_profiler: false 7 | -------------------------------------------------------------------------------- /config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | # see https://symfony.com/doc/current/reference/configuration/framework.html 2 | framework: 3 | secret: '%env(APP_SECRET)%' 4 | annotations: false 5 | http_method_override: false 6 | handle_all_throwables: true 7 | # see https://symfony.com/doc/current/deployment/proxies.html 8 | trusted_proxies: '%env(TRUSTED_PROXIES)%' 9 | 10 | http_client: 11 | default_options: 12 | retry_failed: 13 | enabled: true 14 | scoped_clients: 15 | osmcha.client: 16 | base_uri: '%osmcha.api.url%' 17 | headers: 18 | Accept: 'application/json' 19 | Authorization: '%osmcha.api.key%' 20 | osm.client: 21 | base_uri: '%osm.api.url%' 22 | headers: 23 | Accept: 'application/json' 24 | 'User-Agent': '%app.userAgent%' 25 | 26 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 27 | # Remove or comment this section to explicitly disable session support. 28 | session: 29 | handler_id: null 30 | cookie_secure: auto 31 | cookie_samesite: lax 32 | 33 | #esi: true 34 | #fragments: true 35 | php_errors: 36 | log: true 37 | 38 | when@test: 39 | framework: 40 | test: true 41 | session: 42 | storage_factory_id: session.storage.factory.mock_file 43 | -------------------------------------------------------------------------------- /config/packages/knpu_oauth2_client.yaml: -------------------------------------------------------------------------------- 1 | knpu_oauth2_client: 2 | clients: 3 | # configure your clients as described here: https://github.com/knpuniversity/oauth2-client-bundle#configuration 4 | # will create service: "knpu.oauth2.client.github" 5 | # an instance of: KnpU\OAuth2ClientBundle\Client\Provider\GithubClient 6 | # composer require league/oauth2-github 7 | openstreetmap: 8 | type: generic 9 | provider_class: JBelien\OAuth2\Client\Provider\OpenStreetMap 10 | # add and set these environment variables in your .env files 11 | client_id: '%env(OAUTH_OSM_CLIENT_ID)%' 12 | client_secret: '%env(OAUTH_OSM_CLIENT_SECRET)%' 13 | # a route name you'll create 14 | redirect_route: connect_openstreetmap_check 15 | redirect_params: {} 16 | # optional: if your provider has custom constructor options 17 | # provider_options: {} 18 | # whether to check OAuth2 "state": defaults to true 19 | # use_state: true 20 | -------------------------------------------------------------------------------- /config/packages/mailer.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | mailer: 3 | dsn: '%env(MAILER_DSN)%' 4 | -------------------------------------------------------------------------------- /config/packages/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | channels: 3 | - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists 4 | 5 | when@dev: 6 | monolog: 7 | handlers: 8 | main: 9 | type: stream 10 | path: "%kernel.logs_dir%/%kernel.environment%.log" 11 | level: debug 12 | channels: ["!event"] 13 | # uncomment to get logging in your browser 14 | # you may have to allow bigger header sizes in your Web server configuration 15 | #firephp: 16 | # type: firephp 17 | # level: info 18 | #chromephp: 19 | # type: chromephp 20 | # level: info 21 | console: 22 | type: console 23 | process_psr_3_messages: false 24 | channels: ["!event", "!doctrine", "!console"] 25 | 26 | when@test: 27 | monolog: 28 | handlers: 29 | main: 30 | type: fingers_crossed 31 | action_level: error 32 | handler: nested 33 | excluded_http_codes: [404, 405] 34 | channels: ["!event"] 35 | nested: 36 | type: stream 37 | path: "%kernel.logs_dir%/%kernel.environment%.log" 38 | level: debug 39 | 40 | when@prod: 41 | monolog: 42 | handlers: 43 | main: 44 | type: fingers_crossed 45 | action_level: error 46 | handler: nested 47 | excluded_http_codes: [404, 405] 48 | buffer_size: 50 # How many messages should be saved? Prevent memory leaks 49 | nested: 50 | type: stream 51 | path: php://stderr 52 | level: debug 53 | formatter: monolog.formatter.json 54 | console: 55 | type: console 56 | process_psr_3_messages: false 57 | channels: ["!event", "!doctrine"] 58 | deprecation: 59 | type: stream 60 | channels: [deprecation] 61 | path: php://stderr 62 | formatter: monolog.formatter.json 63 | -------------------------------------------------------------------------------- /config/packages/notifier.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | notifier: 3 | chatter_transports: 4 | texter_transports: 5 | channel_policy: 6 | # use chat/slack, chat/telegram, sms/twilio or sms/nexmo 7 | urgent: ['email'] 8 | high: ['email'] 9 | medium: ['email'] 10 | low: ['email'] 11 | admin_recipients: 12 | - { email: admin@example.com } 13 | -------------------------------------------------------------------------------- /config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | utf8: true 4 | 5 | # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. 6 | # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands 7 | #default_uri: http://localhost 8 | 9 | when@prod: 10 | framework: 11 | router: 12 | strict_requirements: null 13 | -------------------------------------------------------------------------------- /config/packages/translation.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | default_locale: en 3 | translator: 4 | default_path: '%kernel.project_dir%/translations' 5 | fallbacks: 6 | - en 7 | providers: 8 | crowdin: 9 | dsn: '%env(CROWDIN_DSN)%' 10 | domains: ['messages'] 11 | locales: '%app.locales%' 12 | # loco: 13 | # dsn: '%env(LOCO_DSN)%' 14 | # lokalise: 15 | # dsn: '%env(LOKALISE_DSN)%' 16 | # phrase: 17 | # dsn: '%env(PHRASE_DSN)%' 18 | -------------------------------------------------------------------------------- /config/packages/twig.yaml: -------------------------------------------------------------------------------- 1 | twig: 2 | file_name_pattern: '*.twig' 3 | globals: 4 | welcome: 5 | title: '%app.title%' 6 | locales: '%app.locales%' 7 | 8 | when@test: 9 | twig: 10 | strict_variables: true 11 | -------------------------------------------------------------------------------- /config/packages/validator.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | validation: 3 | email_validation_mode: html5 4 | 5 | # Enables validator auto-mapping support. 6 | # For instance, basic validation constraints will be inferred from Doctrine's metadata. 7 | #auto_mapping: 8 | # App\Entity\: [] 9 | 10 | when@test: 11 | framework: 12 | validation: 13 | not_compromised_password: false 14 | -------------------------------------------------------------------------------- /config/packages/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | when@dev: 2 | web_profiler: 3 | toolbar: true 4 | intercept_redirects: false 5 | 6 | framework: 7 | profiler: 8 | only_exceptions: false 9 | collect_serializer_data: true 10 | 11 | when@test: 12 | web_profiler: 13 | toolbar: false 14 | intercept_redirects: false 15 | 16 | framework: 17 | profiler: { collect: false } 18 | -------------------------------------------------------------------------------- /config/packages/webpack_encore.yaml: -------------------------------------------------------------------------------- 1 | webpack_encore: 2 | # The path where Encore is building the assets - i.e. Encore.setOutputPath() 3 | output_path: '%kernel.project_dir%/public/build' 4 | # If multiple builds are defined (as shown below), you can disable the default build: 5 | # output_path: false 6 | 7 | # Set attributes that will be rendered on all script and link tags 8 | script_attributes: 9 | defer: true 10 | # link_attributes: 11 | 12 | # If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials') 13 | # crossorigin: 'anonymous' 14 | 15 | # Preload all rendered script and link tags automatically via the HTTP/2 Link header 16 | # preload: true 17 | 18 | # Throw an exception if the entrypoints.json file is missing or an entry is missing from the data 19 | # strict_mode: false 20 | 21 | # If you have multiple builds: 22 | # builds: 23 | # frontend: '%kernel.project_dir%/public/frontend/build' 24 | 25 | # pass the build name as the 3rd argument to the Twig functions 26 | # {{ encore_entry_script_tags('entry1', null, 'frontend') }} 27 | 28 | framework: 29 | assets: 30 | json_manifest_path: '%kernel.project_dir%/public/build/manifest.json' 31 | 32 | #when@prod: 33 | # webpack_encore: 34 | # # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes) 35 | # # Available in version 1.2 36 | # cache: true 37 | 38 | #when@test: 39 | # webpack_encore: 40 | # strict_mode: false 41 | -------------------------------------------------------------------------------- /config/preload.php: -------------------------------------------------------------------------------- 1 | null, 5 | 'OAUTH_OSM_CLIENT_SECRET' => null, 6 | ]; 7 | -------------------------------------------------------------------------------- /config/services.yaml: -------------------------------------------------------------------------------- 1 | # This file is the entry point to configure your own services. 2 | # Files in the packages/ subdirectory configure your dependencies. 3 | 4 | # Put parameters here that don't need to change on each machine where the app is deployed 5 | # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration 6 | parameters: 7 | osmcha.api.url: 'https://osmcha.org/api/v1/' 8 | osmcha.api.key: '%env(OSMCHA_API_KEY)%' 9 | osm.api.url: 'https://api.openstreetmap.org/api/0.6/' 10 | app.locales: ['en','fr_FR','it_IT','nl_NL','bg_BG','es_ES','ja_JP','pl_PL','de_DE','sq_AL','zh_TW','zh_CN','hu_HU','ko_KR','uk_UA','pt_PT','pt_BR'] 11 | app.userAgent: 'OpenStreetMap Welcome Tool' 12 | app.title: 'OpenStreetMap Welcome Tool' 13 | 14 | services: 15 | # default configuration for services in *this* file 16 | _defaults: 17 | autowire: true # Automatically injects dependencies in your services. 18 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 19 | 20 | # makes classes in src/ available to be used as services 21 | # this creates a service per class whose id is the fully-qualified class name 22 | App\: 23 | resource: '../src/' 24 | exclude: 25 | - '../src/DependencyInjection/' 26 | - '../src/Entity/' 27 | - '../src/Kernel.php' 28 | 29 | # add more service definitions when explicit configuration is needed 30 | # please note that last definitions always *replace* previous ones 31 | App\EventSubscriber\LocaleSubscriber: 32 | arguments: 33 | $defaultLocale: "%kernel.default_locale%" 34 | $locales: "%app.locales%" 35 | App\Service\RegionsProvider: 36 | arguments: 37 | $projectDirectory: "%kernel.project_dir%" 38 | App\Service\TemplatesProvider: 39 | arguments: 40 | $projectDirectory: "%kernel.project_dir%" 41 | Twig\Extension\StringLoaderExtension: 42 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /translations/messages.en.xlf 3 | translation: /translations/messages.%locale_with_underscore%.xlf 4 | - source: /translations/security.en.xlf 5 | translation: /translations/security.%locale_with_underscore%.xlf 6 | - source: /translations/validators.en.xlf 7 | translation: /translations/validators.%locale_with_underscore%.xlf 8 | - source: /translations/time+intl-icu.en.xlf 9 | translation: /translations/time+intl-icu.%locale_with_underscore%.xlf 10 | -------------------------------------------------------------------------------- /deploy.php: -------------------------------------------------------------------------------- 1 | set('remote_user', 'root') 24 | ->set('deploy_path', '/var/www/osm-welcome-tool'); 25 | 26 | // Tasks 27 | 28 | task('npm:build', function () { 29 | runLocally('npm install'); 30 | runLocally('npm run build'); 31 | }); 32 | task('npm:rsync', function () { 33 | runLocally('rsync -e ssh -az public/build/ {{remote_user}}@{{hostname}}:{{release_path}}/public/build/'); 34 | }); 35 | task('npm', ['npm:build', 'npm:rsync']); 36 | 37 | // Hooks 38 | 39 | after('deploy:update_code', 'npm'); 40 | after('deploy:failed', 'deploy:unlock'); 41 | after('deploy:success', 'php-fpm:reload'); 42 | 43 | set('bin/composer', function () { 44 | return '/usr/bin/php{{php_fpm_version}} /usr/local/bin/composer'; 45 | }); 46 | -------------------------------------------------------------------------------- /docs/images/osmcha1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha1.png -------------------------------------------------------------------------------- /docs/images/osmcha2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha2.png -------------------------------------------------------------------------------- /docs/images/osmcha3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha3.png -------------------------------------------------------------------------------- /docs/images/osmcha4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha4.png -------------------------------------------------------------------------------- /docs/images/osmcha5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha5.png -------------------------------------------------------------------------------- /docs/images/osmcha6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha6.png -------------------------------------------------------------------------------- /docs/images/osmcha7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha7.png -------------------------------------------------------------------------------- /docs/images/osmcha7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha7a.png -------------------------------------------------------------------------------- /docs/images/osmcha9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha9.png -------------------------------------------------------------------------------- /docs/images/osmcha_account_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha_account_settings.png -------------------------------------------------------------------------------- /docs/images/osmcha_watch_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/docs/images/osmcha_watch_list.png -------------------------------------------------------------------------------- /grumphp.yml: -------------------------------------------------------------------------------- 1 | grumphp: 2 | environment: 3 | paths: 4 | - node_modules/.bin 5 | ascii: 6 | failed: ~ 7 | succeeded: ~ 8 | extensions: 9 | - PLUS\GrumPHPXliffTask\ExtensionLoader 10 | tasks: 11 | composer: 12 | strict: true 13 | composer_normalize: ~ 14 | eslint: 15 | whitelist_patterns: 16 | - /^assets\/typescript\/(.*)/ 17 | phpcsfixer: 18 | config: ".php-cs-fixer.dist.php" 19 | phpstan: 20 | ignore_patterns: [deploy.php] 21 | phpunitbridge: ~ 22 | phpversion: 23 | project: "8.1" 24 | twigcs: 25 | ruleset: "\\FriendsOfTwig\\Twigcs\\Ruleset\\Official" 26 | exclude: ["vendor/"] 27 | # xlifflint: 28 | # ignore_patterns: [] 29 | # load_from_net: false 30 | # x_include: false 31 | # dtd_validation: true 32 | # scheme_validation: true 33 | # triggered_by: [xlf] 34 | yamllint: ~ 35 | testsuites: 36 | composer: 37 | tasks: 38 | - composer 39 | - composer_normalize 40 | check: 41 | tasks: 42 | - phpcsfixer 43 | - phpstan 44 | - twigcs 45 | # - xlifflint # TODO: Re-implement 46 | - yamllint 47 | -------------------------------------------------------------------------------- /migrations/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/migrations/.gitignore -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@babel/core": "^7.27.1", 4 | "@babel/plugin-proposal-class-properties": "^7.18.6", 5 | "@babel/preset-env": "^7.27.2", 6 | "@babel/preset-react": "^7.27.1", 7 | "@headlessui/react": "^1.7.17", 8 | "@heroicons/react": "^2.1.3", 9 | "@hotwired/stimulus": "^3.2.2", 10 | "@mapbox/geojson-rewind": "^0.5.2", 11 | "@mapbox/geojsonhint": "^3.3.0", 12 | "@popperjs/core": "^2.11.8", 13 | "@symfony/stimulus-bridge": "^3.2.2", 14 | "@symfony/webpack-encore": "^5.0.0", 15 | "@types/leaflet": "^1.9.12", 16 | "@types/react-dom": "^18.3.0", 17 | "@typescript-eslint/eslint-plugin": "^8.10.0", 18 | "@typescript-eslint/parser": "^8.10.0", 19 | "apexcharts": "^3.53.0", 20 | "autoprefixer": "^10.4.21", 21 | "codejar": "^4.2.0", 22 | "core-js": "^3.38.0", 23 | "eslint": "^8.57.0", 24 | "eslint-plugin-react": "^7.37.1", 25 | "file-loader": "^6.2.0", 26 | "highlight.js": "^11.10.0", 27 | "leaflet": "^1.9.4", 28 | "postcss": "^8.4.31", 29 | "postcss-loader": "^8.1.1", 30 | "prop-types": "^15.8.1", 31 | "react": "^18.2.0", 32 | "react-dom": "^18.3.1", 33 | "regenerator-runtime": "^0.14.1", 34 | "tailwindcss": "^3.4.14", 35 | "ts-loader": "^9.5.1", 36 | "typescript": "^5.7.2", 37 | "webpack": "^5.96.1", 38 | "webpack-cli": "^5.1.4", 39 | "webpack-notifier": "^1.15.0" 40 | }, 41 | "license": "ISC", 42 | "private": true, 43 | "scripts": { 44 | "dev-server": "encore dev-server", 45 | "dev": "encore dev", 46 | "watch": "encore dev --watch", 47 | "build": "encore production --progress", 48 | "geojsonhint": "set -e ; for f in assets/regions/*/*.geojson ; do echo $f; geojsonhint \"$f\" ; done", 49 | "rewind": "set -e ; for f in assets/regions/*/*.geojson ; do echo $f; geojson-rewind \"$f\" > \"$f.tmp\" && mv \"$f.tmp\" \"$f\" ; done", 50 | "lint": "eslint \"assets/typescript\"", 51 | "lint:fix": "eslint --fix \"assets/typescript\"" 52 | }, 53 | "browserslist": [ 54 | "defaults" 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /php.ini: -------------------------------------------------------------------------------- 1 | allow_url_include=off 2 | display_errors=off 3 | display_startup_errors=off 4 | max_execution_time=30 5 | session.use_strict_mode=On 6 | realpath_cache_ttl=3600 7 | zend.detect_unicode=Off 8 | -------------------------------------------------------------------------------- /phpstan.dist.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 6 3 | paths: 4 | - bin/ 5 | - config/ 6 | - public/ 7 | - src/ 8 | - tests/ 9 | ignoreErrors: 10 | - identifier: missingType.iterableValue 11 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | tests 23 | 24 | 25 | 26 | 27 | 28 | src 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | } 6 | } -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); 8 | -------------------------------------------------------------------------------- /src/Command/AOIListCommand.php: -------------------------------------------------------------------------------- 1 | osmcha->listAreasOfInterest('name', $page++)->toArray(); 31 | $count = $content['count']; 32 | $features = $content['results']['features']; 33 | 34 | while (null !== $content['next']) { 35 | $content = $this->osmcha->listAreasOfInterest('name', $page++)->toArray(); 36 | $features = array_merge($features, $content['results']['features']); 37 | } 38 | 39 | $io->info(\sprintf('Found %d Area(s) of Interest.', $count)); 40 | 41 | $welcome = array_filter($features, fn ($feature) => 'Welcome Tool' === substr($feature['properties']['name'], 0, 12)); 42 | 43 | $table = array_map(fn ($feature) => [ 44 | $feature['id'], 45 | $feature['properties']['name'], 46 | $feature['properties']['date'], 47 | $feature['properties']['filters']['date__gte'] ?? null, 48 | $feature['properties']['filters']['all_reasons'] ?? null, 49 | ], $welcome); 50 | 51 | $io->table([ 52 | 'ID', 53 | 'Name', 54 | 'Date', 55 | 'Filter (Date)', 56 | 'Filter (Reasons)', 57 | ], $table); 58 | 59 | return Command::SUCCESS; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/Controller/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/src/Controller/.gitignore -------------------------------------------------------------------------------- /src/Controller/API/RegionController.php: -------------------------------------------------------------------------------- 1 | 'geojson'])] 19 | public function index(string $continent, string $regionKey): Response 20 | { 21 | $region = $this->provider->getRegion($continent, $regionKey); 22 | $geometry = $this->provider->getGeometry($continent, $regionKey); 23 | 24 | return new JsonResponse([ 25 | 'type' => 'Feature', 26 | 'id' => $regionKey, 27 | 'properties' => $region, 28 | 'geometry' => $geometry, 29 | ]); 30 | } 31 | 32 | #[Route('/api/region/{continent}/{regionKey}/count.{_format}', name: 'api_region_count', format: 'json', requirements: ['_format' => 'json'])] 33 | public function count(string $continent, string $regionKey): Response 34 | { 35 | $region = $this->provider->getEntity($regionKey); 36 | $mappers = null === $region ? [] : $region->getMappers()->toArray(); 37 | 38 | $count = []; 39 | foreach ($mappers as $mapper) { 40 | $datetime = $mapper->getFirstChangeset()->getCreatedAt(); 41 | $date = $datetime->format('Y-m'); 42 | 43 | if (!isset($count[$date])) { 44 | $count[$date] = ['total' => 0, 'welcome' => 0]; 45 | } 46 | 47 | ++$count[$date]['total']; 48 | 49 | if (null !== $mapper->getWelcome()) { 50 | ++$count[$date]['welcome']; 51 | } 52 | } 53 | ksort($count); 54 | 55 | return new JsonResponse($count); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/Controller/App/HomeController.php: -------------------------------------------------------------------------------- 1 | provider->getRegions(); 21 | 22 | return $this->render('app/home/continent.html.twig', [ 23 | 'regions' => $regions, 24 | ]); 25 | } 26 | 27 | #[Route('/{continent}', name: 'app_continent', requirements: ['continent' => 'asia|africa|australia|europe|north-america|south-america'])] 28 | public function continent(string $continent): Response 29 | { 30 | $regions = $this->provider->getRegions(); 31 | $regions = $regions[$continent]; 32 | 33 | foreach ($regions as $key => &$region) { 34 | $region['lastUpdate'] = $this->provider->getEntity($key)?->getLastUpdate(); 35 | // $region['count'] = $this->provider->getPercentage($key); 36 | } 37 | 38 | return $this->render('app/home/region.html.twig', [ 39 | 'continent' => $continent, 40 | 'regions' => $regions, 41 | ]); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Controller/OpenStreetMapController.php: -------------------------------------------------------------------------------- 1 | getClient('openstreetmap') // key used in config/packages/knpu_oauth2_client.yaml 19 | ->redirect([], []); 20 | } 21 | 22 | #[Route('/connect/openstreetmap/check', name: 'connect_openstreetmap_check')] 23 | public function connectCheckAction(Request $request, ClientRegistry $clientRegistry): void 24 | { 25 | // ** if you want to *authenticate* the user, then 26 | // leave this method blank and create a Guard authenticator 27 | 28 | // $client = $clientRegistry->getClient('openstreetmap'); 29 | 30 | // try { 31 | // // the exact class depends on which provider you're using 32 | // $user = $client->fetchUser(); 33 | 34 | // // do something with all this new power! 35 | // var_dump($user->toArray()); exit(); 36 | // // ... 37 | // } catch (IdentityProviderException $e) { 38 | // // something went wrong! 39 | // // probably you should return the reason to the user 40 | // var_dump($e->getMessage()); exit(); 41 | // } 42 | } 43 | 44 | #[Route('/logout', name: 'logout', priority: 5)] 45 | public function logout(): void 46 | { 47 | // controller can be blank: it will never be executed! 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Entity/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/src/Entity/.gitignore -------------------------------------------------------------------------------- /src/Entity/Note.php: -------------------------------------------------------------------------------- 1 | id; 33 | } 34 | 35 | public function getMapper(): ?Mapper 36 | { 37 | return $this->mapper; 38 | } 39 | 40 | public function setMapper(?Mapper $mapper): self 41 | { 42 | $this->mapper = $mapper; 43 | 44 | return $this; 45 | } 46 | 47 | public function getDate(): ?\DateTime 48 | { 49 | return $this->date; 50 | } 51 | 52 | public function setDate(\DateTime $date): self 53 | { 54 | $this->date = $date; 55 | 56 | return $this; 57 | } 58 | 59 | public function getText(): ?string 60 | { 61 | return $this->text; 62 | } 63 | 64 | public function setText(string $text): self 65 | { 66 | $this->text = $text; 67 | 68 | return $this; 69 | } 70 | 71 | public function getAuthor(): ?User 72 | { 73 | return $this->author; 74 | } 75 | 76 | public function setAuthor(?User $author): self 77 | { 78 | $this->author = $author; 79 | 80 | return $this; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/Entity/Region.php: -------------------------------------------------------------------------------- 1 | */ 21 | #[ORM\ManyToMany(targetEntity: Mapper::class, mappedBy: 'region')] 22 | private Collection $mappers; 23 | 24 | public function __construct() 25 | { 26 | $this->mappers = new ArrayCollection(); 27 | } 28 | 29 | public function getId(): ?string 30 | { 31 | return $this->id; 32 | } 33 | 34 | public function setId(string $id): self 35 | { 36 | $this->id = $id; 37 | 38 | return $this; 39 | } 40 | 41 | public function getLastUpdate(): \DateTime 42 | { 43 | return $this->lastUpdate; 44 | } 45 | 46 | public function setLastUpdate(\DateTime $lastUpdate): self 47 | { 48 | $this->lastUpdate = $lastUpdate; 49 | 50 | return $this; 51 | } 52 | 53 | /** 54 | * @return Collection 55 | */ 56 | public function getMappers(): Collection 57 | { 58 | return $this->mappers; 59 | } 60 | 61 | public function addMapper(Mapper $mapper): self 62 | { 63 | if (!$this->mappers->contains($mapper)) { 64 | $this->mappers->add($mapper); 65 | $mapper->addRegion($this); 66 | } 67 | 68 | return $this; 69 | } 70 | 71 | public function removeMapper(Mapper $mapper): self 72 | { 73 | if ($this->mappers->removeElement($mapper)) { 74 | $mapper->removeRegion($this); 75 | } 76 | 77 | return $this; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/Entity/Welcome.php: -------------------------------------------------------------------------------- 1 | id; 33 | } 34 | 35 | public function getMapper(): ?Mapper 36 | { 37 | return $this->mapper; 38 | } 39 | 40 | public function setMapper(Mapper $mapper): self 41 | { 42 | $this->mapper = $mapper; 43 | 44 | return $this; 45 | } 46 | 47 | public function getDate(): \DateTime 48 | { 49 | return $this->date; 50 | } 51 | 52 | public function setDate(\DateTime $date): self 53 | { 54 | $this->date = $date; 55 | 56 | return $this; 57 | } 58 | 59 | public function getReply(): ?\DateTime 60 | { 61 | return $this->reply; 62 | } 63 | 64 | public function setReply(?\DateTime $reply): self 65 | { 66 | $this->reply = $reply; 67 | 68 | return $this; 69 | } 70 | 71 | public function getUser(): ?User 72 | { 73 | return $this->user; 74 | } 75 | 76 | public function setUser(?User $user): self 77 | { 78 | $this->user = $user; 79 | 80 | return $this; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/EventSubscriber/RequestSubscriber.php: -------------------------------------------------------------------------------- 1 | getRequest(); 20 | if ( 21 | true !== $event->isMainRequest() 22 | || true === $request->isXmlHttpRequest() 23 | || 'connect_openstreetmap_start' === $request->attributes->get('_route') 24 | ) { 25 | return; 26 | } 27 | 28 | $this->saveTargetPath($request->getSession(), 'main', $request->getUri()); 29 | } 30 | 31 | public static function getSubscribedEvents(): array 32 | { 33 | return [ 34 | KernelEvents::REQUEST => ['onKernelRequest'], 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Kernel.php: -------------------------------------------------------------------------------- 1 | import('../config/{packages}/*.yaml'); 17 | $container->import('../config/{packages}/'.$this->environment.'/*.yaml'); 18 | 19 | if (is_file(\dirname(__DIR__).'/config/services.yaml')) { 20 | $container->import('../config/services.yaml'); 21 | $container->import('../config/{services}_'.$this->environment.'.yaml'); 22 | } else { 23 | $container->import('../config/{services}.php'); 24 | } 25 | } 26 | 27 | protected function configureRoutes(RoutingConfigurator $routes): void 28 | { 29 | $routes->import('../config/{routes}/'.$this->environment.'/*.yaml'); 30 | $routes->import('../config/{routes}/*.yaml'); 31 | 32 | if (is_file(\dirname(__DIR__).'/config/routes.yaml')) { 33 | $routes->import('../config/routes.yaml'); 34 | } else { 35 | $routes->import('../config/{routes}.php'); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Repository/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/src/Repository/.gitignore -------------------------------------------------------------------------------- /src/Repository/ChangesetRepository.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class ChangesetRepository extends ServiceEntityRepository 18 | { 19 | public function __construct(ManagerRegistry $registry) 20 | { 21 | parent::__construct($registry, Changeset::class); 22 | } 23 | 24 | // /** 25 | // * @return Changeset[] Returns an array of Changeset objects 26 | // */ 27 | /* 28 | public function findByExampleField($value) 29 | { 30 | return $this->createQueryBuilder('c') 31 | ->andWhere('c.exampleField = :val') 32 | ->setParameter('val', $value) 33 | ->orderBy('c.id', 'ASC') 34 | ->setMaxResults(10) 35 | ->getQuery() 36 | ->getResult() 37 | ; 38 | } 39 | */ 40 | 41 | /* 42 | public function findOneBySomeField($value): ?Changeset 43 | { 44 | return $this->createQueryBuilder('c') 45 | ->andWhere('c.exampleField = :val') 46 | ->setParameter('val', $value) 47 | ->getQuery() 48 | ->getOneOrNullResult() 49 | ; 50 | } 51 | */ 52 | } 53 | -------------------------------------------------------------------------------- /src/Repository/MapperRepository.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class MapperRepository extends ServiceEntityRepository 18 | { 19 | public function __construct(ManagerRegistry $registry) 20 | { 21 | parent::__construct($registry, Mapper::class); 22 | } 23 | 24 | // /** 25 | // * @return Mapper[] Returns an array of Mapper objects 26 | // */ 27 | /* 28 | public function findByExampleField($value) 29 | { 30 | return $this->createQueryBuilder('m') 31 | ->andWhere('m.exampleField = :val') 32 | ->setParameter('val', $value) 33 | ->orderBy('m.id', 'ASC') 34 | ->setMaxResults(10) 35 | ->getQuery() 36 | ->getResult() 37 | ; 38 | } 39 | */ 40 | 41 | /* 42 | public function findOneBySomeField($value): ?Mapper 43 | { 44 | return $this->createQueryBuilder('m') 45 | ->andWhere('m.exampleField = :val') 46 | ->setParameter('val', $value) 47 | ->getQuery() 48 | ->getOneOrNullResult() 49 | ; 50 | } 51 | */ 52 | } 53 | -------------------------------------------------------------------------------- /src/Repository/NoteRepository.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class NoteRepository extends ServiceEntityRepository 18 | { 19 | public function __construct(ManagerRegistry $registry) 20 | { 21 | parent::__construct($registry, Note::class); 22 | } 23 | 24 | // /** 25 | // * @return Note[] Returns an array of Note objects 26 | // */ 27 | /* 28 | public function findByExampleField($value) 29 | { 30 | return $this->createQueryBuilder('n') 31 | ->andWhere('n.exampleField = :val') 32 | ->setParameter('val', $value) 33 | ->orderBy('n.id', 'ASC') 34 | ->setMaxResults(10) 35 | ->getQuery() 36 | ->getResult() 37 | ; 38 | } 39 | */ 40 | 41 | /* 42 | public function findOneBySomeField($value): ?Note 43 | { 44 | return $this->createQueryBuilder('n') 45 | ->andWhere('n.exampleField = :val') 46 | ->setParameter('val', $value) 47 | ->getQuery() 48 | ->getOneOrNullResult() 49 | ; 50 | } 51 | */ 52 | } 53 | -------------------------------------------------------------------------------- /src/Repository/RegionRepository.php: -------------------------------------------------------------------------------- 1 | 11 | * 12 | * @method Region|null find($id, $lockMode = null, $lockVersion = null) 13 | * @method Region|null findOneBy(array $criteria, array $orderBy = null) 14 | * @method Region[] findAll() 15 | * @method Region[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) 16 | */ 17 | class RegionRepository extends ServiceEntityRepository 18 | { 19 | public function __construct(ManagerRegistry $registry) 20 | { 21 | parent::__construct($registry, Region::class); 22 | } 23 | 24 | public function save(Region $entity, bool $flush = false): void 25 | { 26 | $this->getEntityManager()->persist($entity); 27 | 28 | if ($flush) { 29 | $this->getEntityManager()->flush(); 30 | } 31 | } 32 | 33 | public function remove(Region $entity, bool $flush = false): void 34 | { 35 | $this->getEntityManager()->remove($entity); 36 | 37 | if ($flush) { 38 | $this->getEntityManager()->flush(); 39 | } 40 | } 41 | 42 | // /** 43 | // * @return Region[] Returns an array of Region objects 44 | // */ 45 | // public function findByExampleField($value): array 46 | // { 47 | // return $this->createQueryBuilder('r') 48 | // ->andWhere('r.exampleField = :val') 49 | // ->setParameter('val', $value) 50 | // ->orderBy('r.id', 'ASC') 51 | // ->setMaxResults(10) 52 | // ->getQuery() 53 | // ->getResult() 54 | // ; 55 | // } 56 | 57 | // public function findOneBySomeField($value): ?Region 58 | // { 59 | // return $this->createQueryBuilder('r') 60 | // ->andWhere('r.exampleField = :val') 61 | // ->setParameter('val', $value) 62 | // ->getQuery() 63 | // ->getOneOrNullResult() 64 | // ; 65 | // } 66 | } 67 | -------------------------------------------------------------------------------- /src/Repository/UserRepository.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class UserRepository extends ServiceEntityRepository 18 | { 19 | public function __construct(ManagerRegistry $registry) 20 | { 21 | parent::__construct($registry, User::class); 22 | } 23 | 24 | // /** 25 | // * @return User[] Returns an array of User objects 26 | // */ 27 | /* 28 | public function findByExampleField($value) 29 | { 30 | return $this->createQueryBuilder('u') 31 | ->andWhere('u.exampleField = :val') 32 | ->setParameter('val', $value) 33 | ->orderBy('u.id', 'ASC') 34 | ->setMaxResults(10) 35 | ->getQuery() 36 | ->getResult() 37 | ; 38 | } 39 | */ 40 | 41 | /* 42 | public function findOneBySomeField($value): ?User 43 | { 44 | return $this->createQueryBuilder('u') 45 | ->andWhere('u.exampleField = :val') 46 | ->setParameter('val', $value) 47 | ->getQuery() 48 | ->getOneOrNullResult() 49 | ; 50 | } 51 | */ 52 | } 53 | -------------------------------------------------------------------------------- /src/Repository/WelcomeRepository.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class WelcomeRepository extends ServiceEntityRepository 18 | { 19 | public function __construct(ManagerRegistry $registry) 20 | { 21 | parent::__construct($registry, Welcome::class); 22 | } 23 | 24 | // /** 25 | // * @return Welcome[] Returns an array of Welcome objects 26 | // */ 27 | /* 28 | public function findByExampleField($value) 29 | { 30 | return $this->createQueryBuilder('w') 31 | ->andWhere('w.exampleField = :val') 32 | ->setParameter('val', $value) 33 | ->orderBy('w.id', 'ASC') 34 | ->setMaxResults(10) 35 | ->getQuery() 36 | ->getResult() 37 | ; 38 | } 39 | */ 40 | 41 | /* 42 | public function findOneBySomeField($value): ?Welcome 43 | { 44 | return $this->createQueryBuilder('w') 45 | ->andWhere('w.exampleField = :val') 46 | ->setParameter('val', $value) 47 | ->getQuery() 48 | ->getOneOrNullResult() 49 | ; 50 | } 51 | */ 52 | } 53 | -------------------------------------------------------------------------------- /src/Service/MapperProvider.php: -------------------------------------------------------------------------------- 1 | repository->find($array['user']['id']); 18 | if (null === $mapper) { 19 | $mapper = new Mapper(); 20 | $mapper->setId($array['user']['id']); 21 | $mapper->setAccountCreated(new \DateTime($array['user']['account_created'])); 22 | $mapper->setStatus('new'); 23 | // $mapper->setRegion($region); 24 | } 25 | 26 | $mapper->setChangesetsCount($array['user']['changesets']['count']); 27 | $mapper->setDisplayName($array['user']['display_name']); 28 | $mapper->setImage($array['user']['img']['href'] ?? null); 29 | 30 | return $mapper; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Service/OpenStreetMapAPI.php: -------------------------------------------------------------------------------- 1 | osmClient->request( 18 | 'GET', 19 | \sprintf('users.json?%s', http_build_query(['users' => implode(',', $ids)])) 20 | ); 21 | 22 | return $response; 23 | } 24 | 25 | public function getChangesetsByUser(int $id): ResponseInterface 26 | { 27 | $response = $this->osmClient->request( 28 | 'GET', 29 | \sprintf('changesets.xml?%s', http_build_query(['user' => $id])) 30 | ); 31 | 32 | return $response; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Service/TemplatesProvider.php: -------------------------------------------------------------------------------- 1 | projectDirectory)); 14 | 15 | foreach ($glob as $path) { 16 | if (true === is_readable($path)) { 17 | $region = basename(\dirname($path, 2)); 18 | $locale = basename(\dirname($path)); 19 | 20 | $markdown = file_get_contents($path); 21 | 22 | $template = new Template($path, $locale, $markdown); 23 | 24 | $this->templates[$region][] = $template; 25 | } 26 | } 27 | } 28 | 29 | public function getTemplates(string $region): array 30 | { 31 | return $this->templates[$region] ?? []; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | './templates/**/*.html.twig', 4 | './assets/**/*.ts', 5 | './assets/**/*.tsx', 6 | ], 7 | safelist: [ 8 | 'bg-green-500', 9 | 'bg-yellow-400', 10 | 'text-green-500', 11 | 'text-yellow-400' 12 | ], 13 | theme: { 14 | extend: {}, 15 | }, 16 | plugins: [], 17 | }; 18 | -------------------------------------------------------------------------------- /templates/app/footer.html.twig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/app/home/continent.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'app/layout.html.twig' %} 2 | 3 | {% block title %}{{ welcome.title }}{% endblock %} 4 | 5 | {% block content %} 6 | 7 |
8 |

9 | {{ 'This is the OpenStreetMap Welcome Tool.\r\nIt helps you discover new mappers in your region and welcome them.'|trans|nl2br }} 10 |

11 |

12 | {{ 'If you want to add your region or your language to the Welcome Tool, check our {contributing_link_start}contributing guide{link_end}.'|trans({'{contributing_link_start}': '', '{link_end}': ''})|raw }} 13 |

14 |

15 | {{ 'Developed by {osmbe_link_start}OpenStreetMap Belgium{link_end} and supported by the {lccwg_link_start}Local Chapters and Communities Working Group{link_end}.'|trans({'{osmbe_link_start}': '', '{lccwg_link_start}': '', '{link_end}': ''})|raw }} 16 |

17 |
18 | 19 |
    20 | 21 | {% for continent, group in regions %} 22 | 23 | {% if group|length > 0 %} 24 |
  • 25 |
    26 |
    27 |

    28 | 29 | 30 | {{ continent|trans }} 31 | 32 |

    33 |

    34 | {{ group|length }} {{ 'regions'|trans }} 35 |

    36 |
    37 |
    38 |
  • 39 | {% endif %} 40 | 41 | {% endfor %} 42 | 43 |
44 | 45 | {% endblock %} -------------------------------------------------------------------------------- /templates/app/layout.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% set route_name = app.request.attributes.get('_route') %} 4 | 5 | {% block body %} 6 | 7 |
8 | 9 | {{ include('app/nav.html.twig') }} 10 | 11 |
12 | 13 | {{ route_name != 'app_home' ? include('app/breadcrumb.html.twig') }} 14 | 15 | {% block content %}{% endblock %} 16 | 17 |
18 | 19 | {{ include('app/footer.html.twig') }} 20 | 21 |
22 | 23 | {% endblock %} -------------------------------------------------------------------------------- /templates/app/list/avatar.html.twig: -------------------------------------------------------------------------------- 1 |
2 | {% if mapper.image is not null %} 3 | {{ mapper.displayName }} profile picture 5 | {% else %} 6 | Default profile picture 8 | {% endif %} 9 |
10 |

11 | {{ mapper.displayName }} 12 |

13 | {% if app.user is not null %} 14 |

15 | {{ 'View profile'|trans }} 16 |

17 | {% endif %} 18 |
19 |
-------------------------------------------------------------------------------- /templates/app/list/chart.html.twig: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /templates/app/list/index.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'app/layout.html.twig' %} 2 | 3 | {% block title %}{{ region.flag }} {{ region.name }} - {{ welcome.title }}{% endblock %} 4 | 5 | {% block content %} 6 | 7 |
8 | {{ include('app/list/map.html.twig') }} 9 | {{ include('app/list/chart.html.twig') }} 10 |
11 | 12 |
13 | {{ include('app/list/header.html.twig') }} 14 |
15 | 16 |
17 |
18 |
19 | {{ '{count} new mappers ({percent} %) have already been welcomed'|trans({'{count}': region.count.count, '{percent}': region.count.percentage}) }} 20 |
21 | {% if region.lastUpdate is not null %} 22 |
23 | {{ 'Last update'|trans }}: 24 | 25 |
26 | {% endif %} 27 |
28 | 29 | {{ include('app/list/table.html.twig') }} 30 | 31 | 42 |
43 | 44 | {% endblock %} 45 | 46 | {% block stylesheets %} 47 | {{ parent() }} 48 | {{ encore_entry_link_tags('list') }} 49 | {% endblock %} 50 | 51 | {% block javascripts %} 52 | {{ parent() }} 53 | {{ encore_entry_script_tags('list') }} 54 | {% endblock %} -------------------------------------------------------------------------------- /templates/app/list/map.html.twig: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /templates/app/mapper/changeset.html.twig: -------------------------------------------------------------------------------- 1 |
  • 2 |
    3 |
    4 |
    5 | Changeset #{{ changeset.id }} 6 |
    7 |
    8 | 11 |
    12 |
    13 |
    14 |
    15 |
    16 |

    {{ changeset.comment }}

    17 |
    18 |
    19 | {# All changesets from a new mapper are flagged as suspect 20 | {% if changeset.suspect == true %} 21 | 22 | {{ 'Suspect'|trans }} 23 | 24 | {% endif %} 25 | #} 26 | {% if changeset.harmful == true %} 27 | 28 | {{ 'Harmful'|trans }} 29 | 30 | {% endif %} 31 | {% if changeset.checked == true %} 32 | 33 | {{ 'Checked'|trans }} 34 | 35 | {% endif %} 36 | {% for reason in changeset.reasons|filter(r => r != 'New mapper') %} 37 | 38 | {{ reason|trans }} 39 | 40 | {% endfor %} 41 |
    42 |
  • -------------------------------------------------------------------------------- /templates/app/mapper/changesets.html.twig: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    5 | {{ 'Changesets'|trans }} 6 | 8 | {{ changesets|length }} 9 | 10 |

    11 |
    12 | 18 |
    19 |
    20 |
      21 | {% for changeset in changesets|sort((a, b) => a.createdAt <=> b.createdAt) %} 22 | {{ include('app/mapper/changeset.html.twig', {changeset}, with_context=false) }} 23 | {% endfor %} 24 |
    25 |
    26 |
    -------------------------------------------------------------------------------- /templates/app/mapper/index.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'app/layout.html.twig' %} 2 | 3 | {% block title %}{{ mapper.displayName }} - {{ welcome.title }}{% endblock %} 4 | 5 | {% block content %} 6 | 7 | {{ include('app/mapper/header.html.twig', {region, mapper, prev_mapper, next_mapper}, with_context=false) }} 8 | 9 |
    10 |
    11 | {{ include('app/mapper/welcome.html.twig') }} 12 | {{ include('app/mapper/form.html.twig') }} 13 | {{ include('app/mapper/notes.html.twig') }} 14 |
    15 |
    16 | {{ include('app/mapper/changesets.html.twig', {mapper, changesets}, with_context=false) }} 17 | {{ include('app/mapper/timeline.html.twig') }} 18 |
    19 |
    20 | 21 | {% endblock %} 22 | 23 | {% block stylesheets %} 24 | {{ parent() }} 25 | {{ encore_entry_link_tags('mapper') }} 26 | {% endblock %} 27 | 28 | {% block javascripts %} 29 | {{ parent() }} 30 | {{ encore_entry_script_tags('mapper') }} 31 | {% endblock %} -------------------------------------------------------------------------------- /templates/app/mapper/welcome.html.twig: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 | {% set is_welcomed = mapper.welcome.date is defined and mapper.welcome.date is not null %} 5 | 6 | {{ include('app/mapper/welcome/button.html.twig', {status: is_welcomed, color: 'green-500', flag: 'welcome'}, with_context=false) }} 7 | 8 | 9 | 10 | {{ '{mapper} has been welcomed'|trans({'{mapper}': mapper.displayName}) }} 11 | 12 | 13 | {% if is_welcomed %} 14 | {{ mapper.welcome.date|format_date('medium') }} 15 | {% else %} 16 | {{ 'Not welcomed yet'|trans }} 17 | {% endif %} 18 | 19 | 20 |
    21 |
    22 | {% set has_replied = (mapper.welcome.reply is defined and mapper.welcome.reply is not null) %} 23 | 24 | {{ include('app/mapper/welcome/button.html.twig', {status: has_replied, color: 'yellow-400', flag: 'reply'}, with_context=false) }} 25 | 26 | 27 | 28 | {{ '{mapper} has replied'|trans({'{mapper}': mapper.displayName}) }} 29 | 30 | 31 | {% if has_replied %} 32 | {{ mapper.welcome.reply|format_date('medium') }} 33 | {% else %} 34 | {{ 'Not replied yet'|trans }} 35 | {% endif %} 36 | 37 | 38 |
    39 |
    40 |
    -------------------------------------------------------------------------------- /templates/app/mapper/welcome/button.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 9 | 17 | 18 | 26 | 27 | -------------------------------------------------------------------------------- /templates/base.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% block title %}{{ welcome.title }}{% endblock %} 6 | {% block stylesheets %} 7 | {{ encore_entry_link_tags('app') }} 8 | {% endblock %} 9 | {% block javascripts %} 10 | {{ encore_entry_script_tags('app') }} 11 | {% endblock %} 12 | 13 | 14 | {% block body %}{% endblock %} 15 | 16 | 17 | -------------------------------------------------------------------------------- /templates/messages/albania/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }} 7 | 8 | I saw that you made your first edit on OpenStreetMap. Congratulations and thank you! You're now a member of the OpenStreetMap community. 9 | 10 | If your contribution is sporadic, it doesn't matter! Maybe you know someone around you who enjoys hiking, biking, or is just passionate about maps. We would be happy if you would tell them about OpenStreetMap. 11 | 12 | In addition to contributing to the map, you can help us by, for example, uploading GPS tracks, reporting errors, or promoting OpenStreetMap. 13 | 14 | If you want to ask something, or just share your experience or ideas for improvement, we have a telegram chat were you can join [Telegram chat](https://t.me/+mXA7j_7smS4xM2Nk). 15 | 16 | Here's some help to get you started: 17 | 18 | * [Welcome Mat](https://welcome.openstreetmap.org/) gives a good overview of the What? Who? Why? How?, about and Working with OpenStreetMap 19 | * You can find a lot of information about how to map on [the wiki](https://wiki.openstreetmap.org/wiki/). 20 | If you want to know how to tag something, the quickest solution may be to search for `site:wiki.openstreetmap.org [search term]` with your favourite search engine. 21 | * A good start is always to check first if there is no error in the area you want to map, so you know if the error is made by you or a previous mapper ([documentation](https://learnosm.org/en/hot-tips/issues/#warnings-from-id-(issues))). You can enable this feature with `I` key. 22 | * When you save your changeset, add a clear comment on what you have changed ([documentation](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 23 | * Do not connect landuse to highway, a field do not cover the road ; leave a small empty area between the two. 24 | * There's also a [global weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/) you can subscribe to. 25 | 26 | Happy Mapping! -------------------------------------------------------------------------------- /templates/messages/albania/sq/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Mirë se erdhe në OpenStreetMap 4 | --- 5 | 6 | Përshëndetje {{ mapper.displayName }} 7 | 8 | Faleminderit për kontributin tuaj të parë në OpenStreetMap! Tashmë ju jeni pjesë e komunitetit të OpenStreetMap. 9 | 10 | Edhe nëse kontributi juaj është sporadik, nuk ka rëndësi! Nëse njihni dikë rreth jush që i pëlqen ecja, ngasja e biçikletës ose është thjesht i apasionuar pas hartave, do të ishim të lumtur nëse do t'u tregonit edhe atyre për OpenStreetMap. 11 | 12 | Përveç kontributit në hartë, ju mund të na ndihmoni, për shembull, duke ngarkuar gjurmët GPS, duke raportuar gabime ose duke promovuar OpenStreetMap. 13 | 14 | Nëse dëshironi të pyesni diçka ose të ndani përvojën ose idetë tuaja për përmirësim, mund të bashkoheni dhe në [kanalin tonë në Telegram]((https://t.me/+mXA7j_7smS4xM2Nk). 15 | 16 | Disa informacione që mund t'ju ndihmojnë gjatë editimit: 17 | 18 | * [Learn OSM](https://learnosm.org/sq/) përmban disa informacione në gjuhën shqipe se çfarë është OpenStreetMap dhe se si mund të filloni të editoni. Jo të gjitha faqet e këtij website janë të përkthyera, nëse doni të ndihmoni me përthimin mund të ndiqni [udhëzimet nga faqja](https://learnosm.org/en/contribute/translator/). 19 | * [Welcome Mat](https://welcome.openstreetmap.org/) përmban guida në gjuhën anglisht se çfarë është dhe si mund të editojmë në OpenStreetMap. 20 | * Më shumë informaicone mund të gjeni në [wiki](https://wiki.openstreetmap.org/wiki/). 21 | * Kur ruani ndryshimet vendosni një përshkrim të qartë se çfarë keni ndryshuar sipas ([dokumentimit në anglisht këtu](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 22 | * Mos i bashkoni së bashku `landuse` me `highway`. Një fushë nuk duhet të mbulojë një rrugë. 23 | 24 | Hartografim argëtues! -------------------------------------------------------------------------------- /templates/messages/argentina/es/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Mensaje por defecto 3 | title: Bienvenida/o a OpenStreetMap en Argentina 4 | --- 5 | ¡Hola {{mapper.displayName}}! 👋, 6 | 7 | Te doy la bienvenida a la comunidad de OpenStreetMap en {{region.name}} {{region.flag}}. 8 | 9 | Podrás encontrar toda la información sobre el mapeo en nuestra página de la Wiki: 10 | (https://wiki.openstreetmap.org/wiki/ES:Argentina). 11 | 12 | 📖 Podés aprender a colaborar con estas guías y herramientas: 13 | - https://wiki.openstreetmap.org/wiki/ES:Argentina#Primeros_pasos. 14 | - https://learnosm.org/es/ 15 | 16 | Si no sumaste aún, te invito al canal de telegram de nuestra comunidad: https://t.me/osm_ar. 17 | 18 | Y por supuesto, cualquier consulta y dudas sobre el mapeo estoy a disposición. 19 | 20 | ¡Saludos! 21 | 22 | {{ app.user.displayName }} ({{app.user.id}}) 23 | -------------------------------------------------------------------------------- /templates/messages/austria/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default (Austria) 3 | title: Willkommen bei OpenStreetMap Österreich 4 | --- 5 | 6 | Hallo {{ mapper.displayName }} 7 | 8 | vielen Dank und meine große Anerkennung für Ihren ersten Beitrag zu OpenStreetMap! Ab sofort können Sie sich als Teil der OSM Gemeinschaft betrachten. Ihre Beiträge sind innerhalb weniger Minuten live; möglicherweise müssen Sie Ihren Browser aktualisieren, um Ihren Beitrag zu sehen. 9 | 10 | Die OSM-Gemeinschaft kommuniziert untereinander per Du; ich hoffe, das ist in Ordnung für Dich. 11 | 12 | Falls Du Fragen hast, wollen wir gerne helfen: Wenn Du denkst, dass etwas kaputt gemacht zu haben, nicht weißt, wie Du etwas Bestimmtes kartieren sollst, oder wenn Du einfach mehr über OpenStreetMap wissen willst, kontaktiere uns! 13 | 14 | Hier einige nützliche Vorschläge für den Anfang: 15 | 16 | * Ein guter Start in OpenStreetMap ist die [Android-App StreetComplete](https://github.com/streetcomplete/StreetComplete#download), mit der Du ganz einfach deine Umgebung vervollständigen kannst. Probier es gleich beim nächsten Spaziergang aus! 17 | * Ich empfehle, die OSM [Wiki-Seite für Österreich](https://wiki.openstreetmap.org/wiki/Austria) und die [Tipps für Einsteiger](https://wiki.openstreetmap.org/wiki/DE:Beginners%27_guide) zu nutzen. 18 | * Wenn Du nicht herausfindest, wie Du etwas mit dem Editor deiner Wahl kartieren kannst, ist die schnellste Lösung ein Blick auf [Map Features](https://wiki.openstreetmap.org/wiki/DE:Map_Features) im Wiki. 19 | * Kompliziertere Fragen kannst du im [Forum](https://community.openstreetmap.org/c/communities/at/59) nachfragen. Es gibt auch eine große Liste von [anderen Kommunikationsarten](https://wiki.openstreetmap.org/wiki/Contact_channels) wie [Matrix](https://app.element.io/#/room/#osm-at:matrix.org) oder [IRC (als Kanal #osm-at auswählen](https://irc.openstreetmap.org/)! 20 | * [learnOSM](https://learnosm.org/de/) ist ein guter Ort, um mehr über OSM zu erfahren. Es gibt Anleitungen für die Verwendung des iD-Browser-Editors und des fortgeschritteneren JOSM-Editors. 21 | 22 | Viel Spaß beim Mappen und in der OSM-Gemeinschaft! 23 | -------------------------------------------------------------------------------- /templates/messages/austria/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default (Austria) 3 | title: Welcome to OpenStreetMap Austria 4 | --- 5 | 6 | Hello {{ mapper.displayName }} 7 | 8 | thank you and my appreciation for your first contribution to OpenStreetMap! From now on you can consider yourself part of the OSM community. Your contributions will be live within minutes; you may need to refresh your browser to see your contribution. 9 | 10 | If you have questions, we'd like to help: If you think you've broken something, don't know how to map something specific, or just want to know more about OpenStreetMap, contact us! 11 | 12 | Here are some useful suggestions to get you started: 13 | 14 | * A good start into OpenStreetMap is the [Android App StreetComplete](https://github.com/streetcomplete/StreetComplete#download), which allows you to easily complete your neighborhood. Try it out right away on your next walk! 15 | * I recommend to use the OSM [wiki-page for Austria](https://wiki.openstreetmap.org/wiki/Austria) and the [Tips for Beginners](https://wiki.openstreetmap.org/wiki/DE:Beginners%27_guide). 16 | * If you can't figure out how to map something with the editor of your choice, the quickest solution is to look at [Map Features](https://wiki.openstreetmap.org/wiki/DE:Map_Features) on the wiki. 17 | * For more complicated questions, you can ask in the [Community](https://community.openstreetmap.org/c/communities/at/59). There is also a big list of [other communication methods](https://wiki.openstreetmap.org/wiki/Contact_channels) like[Matrix](https://app.element.io/#/room/#osm-at:matrix.org) or [IRC (Choose #osm-at as channel](https://irc.openstreetmap.org/)! 18 | * [learnOSM](https://learnosm.org/de/) is a good place to learn more about OSM. There are tutorials on how to use the iD browser editor and the more advanced JOSM editor. 19 | 20 | Have fun mapping and being part of the OSM community! 21 | -------------------------------------------------------------------------------- /templates/messages/belgium/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Willkommen bei OpenStreetMap 4 | --- 5 | 6 | Hallo {{ mapper.displayName }} 7 | 8 | Ich habe gesehen, dass Sie Ihren ersten Edit auf OpenStreetMap gemacht haben. Herzlichen Glückwunsch und Danke! Sie sind jetzt Mitglied der OpenStreetMap-Gemeinschaft. 9 | 10 | Wir existieren nicht nur [online](https://openstreetmap.be/), sondern auch [im wirklichen Leben](https://openstreetmap.be/en/category/event.html). 11 | 12 | Wenn Sie Fragen haben, können wir Ihnen helfen. Wenn Sie denken, dass Sie etwas kaputt gemacht haben, nicht sicher sind, wie man etwas kartografieren soll, oder einfach nur mehr über OpenStreetMap wissen wollen, können Sie und [kontaktieren](https://openstreetmap.be/en/contact.html). 13 | 14 | Hier ist etwas Hilfe, um Ihnen den Einstieg zu erleichtern: 15 | 16 | * Sie finden viele Informationen zum Kartografieren auf [der Wiki](https://wiki.openstreetmap.org/wiki/). 17 | Wenn Sie wissen möchten, wie man etwas taggen soll, ist die schnellste Lösung vielleicht die Suche nach dem `site:wiki.openstreetmap.org [Suchbegriff]` mit Ihrer Lieblingssuchmaschine. 18 | * Es gibt auch einen [wöchentlichen, globalen Newsletter über die OSM-Welt](https://weeklyosm.eu/) den Sie abonnieren können. 19 | 20 | Wir haben eine Wiki-Seite, um neuen Mappern den Einstieg zu erleichtern. Für weitere Tipps und Hinweise [schauen Sie dort nach!](https://wiki.openstreetmap.org/wiki/WikiProject_Belgium/Beginner) 21 | 22 | Happy Mapping! 23 | 24 | {{ app.user.displayName }} 25 | -------------------------------------------------------------------------------- /templates/messages/bolivia/es/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Bienvenido a OpenStreetMap 4 | --- 5 | 6 | Hola {{ mapper.displayName }} 7 | 8 | He visto que has hecho tu primera edición en OpenStreetMap. ¡Felicidades y gracias! Ahora eres un miembro de la comunidad de OpenStreetMap. 9 | 10 | Si tienes alguna duda, podemos ayudarte: si crees que has roto algo, no sabes con seguridad cómo mapear algo, o simplemente quieres saber más sobre OpenStreetMap, puedes contactar [con nosotros](https://lists.openstreetmap.org/listinfo/talk-bo) o unirte a nuestras conversaciones en [Matrix](https://matrix.to/#/#osmbo:matrix.org) o [Telegram](https://telegram.me/osmbolivia). 11 | 12 | Aquí tienes algo de ayuda para empezar: 13 | 14 | * Puedes encontrar mucha información sobre qué puedes mapear y cómo lo puedes hacer en [la Guía de Principiantes](https://wiki.openstreetmap.org/wiki/ES:Gu%C3%ADa_de_principiantes). 15 | * Un buen comienzo es siempre comprobar primero si no hay ningún error en la zona que quieres mapear, para saber si el error lo has cometido tú o un mapeador anterior ([documentación](https://learnosm.org/es/hot-tips/issues/)). Puedes activar esta función con la tecla `I`. 16 | * Cuando guardes tu conjunto de cambios, añade un comentario claro sobre lo que has cambiado ([documentación](https://wiki.openstreetmap.org/wiki/ES:Buenos_comentarios_en_conjuntos_de_cambios)). 17 | * También hay un [boletín semanal global sobre el mundo OpenStreetMap](https://weeklyosm.eu/) al que puedes suscribirte. 18 | 19 | ¡Disfruta el mapeo! 20 | -------------------------------------------------------------------------------- /templates/messages/chile/es/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Mensaje Default 3 | title: Bienvenido a la Comunidad OpenStreetMap Chile 4 | --- 5 | 6 | Hola {{ mapper.displayName }} 7 | 8 | Muchas gracias por tus ediciones. Queremos darte la bienvenida a la comunidad OSM Chile. 9 | 10 | Queremos invitarte al chat de la comunidad en Telegram (app muy similar a whatsapp) en el link https://t.me/OSMcl. 11 | 12 | Ahí, cientos de maperos intercambiamos opiniones y dudas día a día respecto de cómo se debe mapear. 13 | 14 | Juntos contestamos preguntas, por básicas que sean, y buscamos en la wiki del proyecto (https://wiki.openstreetmap.org/) la mejor manera de resolver problemas. 15 | 16 | Nuestra intención es ayudarte a aprender. 17 | 18 | Es importante tu presencia en el chat ya que mapear es algo que se tiene que hacer con entusiasmo y ganas, pero también hay que saber lo que se está haciendo para no cometer errores que perjudiquen el mapa. 19 | 20 | Tus ediciones son importantes y visibles para todo el mundo. 21 | Saludos, muchas gracias otra vez y nos vemos. 22 | {{ app.user.displayName }} -------------------------------------------------------------------------------- /templates/messages/china-beijing/zh/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 标准 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | 您好,{{ mapper.displayName }} 7 | 8 | 恭喜您完成了您的第一次编辑。 9 | 10 | OpenStreetMap 是一个开放的平台。你可以自由地,创造性地去使用这些由志愿者提供开源的地理数据。 11 | 12 | 寰宇漫漫,从行星尺度的海洋与山川,到你家附近的小巷和便利店,当它们被记录在册,就成了探索者的指向标。从《坤舆万国全图》到如今详尽的电子地图,使用地图越来越便利。 13 | 14 | 您的第一次编辑可能位于学校、位于小区、位于铁路、位于任何您感兴趣的地方;愿您能一起在地图上分享这座古老而年轻的城市的气息。 15 | 16 | 祝您享受这个过程并找到乐趣! 17 | 18 | ### 编辑指南 19 | 20 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 21 | 22 | 在您接下来的编辑之前,若是读过下列规范,对社区协作将有很大帮助: 23 | 24 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 25 | 26 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 27 | 28 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 29 | 30 | 对于地区性内容,如北京公交、北京地铁、北京市郊铁路、北京的公路网络或北京的行政区界等,建议您若需寻找资料,可浏览北京地区的专题页面[OSMWiki Zh-hans:北京](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%8C%97%E4%BA%AC) 31 | 32 | ### 联系方式 33 | 34 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 35 | 36 | * 网站:[osmchina.org](https://osmchina.org) 37 | 38 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 39 | 40 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 41 | 42 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 43 | 44 | * QQ群:290278518 (全国) 934831605 (京津冀地区) 45 | 46 | 注意: 47 | 48 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 49 | 50 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 51 | -------------------------------------------------------------------------------- /templates/messages/china-beijing/zh/vandalism.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 新手或破坏者 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | 您好,{{ mapper.displayName }},北京欢迎你! 7 | 8 | 欢迎来到OpenStreetMap世界,我们OSM北京本地社区注意到您做出了一些编辑,恭喜! 9 | 10 | 但很遗憾,这些数据质量并不高,甚至可能存在各种错误。它可能是无意的或有意的,但无论如何,它们对数据集的质量造成了一定损坏。没关系,我们会去尽力去修正它。但若您在了解到编辑错误后持续不断进行错误修改,您的修改可能会被OSMChina志愿者回退,或被提报隶属OSM基金会的DWG后暂时封禁。 11 | 12 | 不过,我们愿意首先相信您是怀着更好编辑OpenStreetMap的愿望做出的编辑。在继续之前,请您注意仔细阅读下方的编辑指南。 13 | 14 | 此外,若您是Pokemon Go或Ingress等地理相关游戏玩家,您需要认真阅读《[游戏绘图指南](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers)(英文)》。如果您的编辑属于组织性编辑,例如大学教师为GIS专业布置的绘图体验作业,或企业希望成批修改现有数据,请参考OSMWiki《[组织编辑指南](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines)(英文)》,并尽快与DWG及OSMChina DataTeam取得联系。 15 | 16 | 此外,由于北京地区的特殊性,若您身处中华人民共和国境内,我们强烈建议您不要编辑涉及军事相关内容。按照OSM基金会的使用条款,“您应为您自己在编辑中的行为负责……OSM基金会不提供任何保护、担保、赦免或赔偿”。即若您因标注军事相关内容而被指控,OSM基金会不承担任何责任。详细的介绍您可参见[OSMWiki Zh-hans:Military](https://wiki.openstreetmap.org/wiki/Zh-hans:Military)。 17 | 18 | {{ app.user.displayName }},自豪的作为OSMChina的一员敬上,并代表北京本地社区再次欢迎您! 19 | 20 | ### 编辑指南 21 | 22 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 23 | 24 | 您在接下来的编辑之前,需要详细阅读如下几份文件,它包含了参考性的标准,以及您可能会提出的种种问题。 25 | 26 | 同样的,如果遇到不明白的地方,不要迟疑,直接依下述联系方式联系我们。 27 | 28 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 29 | 30 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 31 | 32 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 33 | 34 | ### 联系方式 35 | 36 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 37 | 38 | * 网站:[osmchina.org](https://osmchina.org) 39 | 40 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 41 | 42 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 43 | 44 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 45 | 46 | * QQ群:290278518 (全国) 934831605 (京津冀地区) 47 | 48 | 注意: 49 | 50 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 51 | 52 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 53 | -------------------------------------------------------------------------------- /templates/messages/china-heilongjiang/zh/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 标准 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | 您好,{{ mapper.displayName }} 7 | 8 | 欢迎来到OpenStreetMap世界,并恭喜您完成了您的第一次编辑。 9 | 10 | 寰宇漫漫,从行星尺度的海洋与山川,到你家附近的小巷和便利店,当它们被记录在册,就成了探索者的指向标。从《坤舆万国全图》到如今详尽的电子地图,使用地图越来越便利。 11 | 12 | OpenStreetMap 是一个开放的平台。你可以自由地,创造性地去使用这些由志愿者提供开源的地理数据。 13 | 14 | 您的第一次编辑可能位于学校、位于小区、位于铁路,位于任何您感兴趣的地方。总之,请保持热情,并望您能乐于传播自己对本地所独有的了解。 15 | 16 | 祝您享受这个过程并找到乐趣! 17 | 18 | ### 编辑指南 19 | 20 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 21 | 22 | 希望您在接下来的编辑之前,能简单抽出几分钟时间大致浏览以下参考性的标准: 23 | 24 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 25 | 26 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 27 | 28 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 29 | 30 | ### 联系方式 31 | 32 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 33 | 34 | * 网站:[osmchina.org](https://osmchina.org) 35 | 36 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 37 | 38 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 39 | 40 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 41 | 42 | * QQ群:290278518 (全国) 559398645 (东北地区) 43 | 44 | 注意: 45 | 46 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 47 | 48 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 49 | -------------------------------------------------------------------------------- /templates/messages/china-heilongjiang/zh/vandalism.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 新手或破坏者 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | 您好,{{ mapper.displayName }} 7 | 8 | 欢迎来到OpenStreetMap世界,我们注意到您做出了一些编辑,恭喜! 9 | 10 | 但很遗憾,这些数据质量并不高,甚至可能存在各种错误。它可能是无意的或有意的,但无论如何,它们对数据集的质量造成了一定损坏。没关系,我们会去尽力去修正它。但若您在了解到编辑错误后持续不断进行错误修改,您的修改可能会被OSMChina志愿者回退,或被提报隶属OSM基金会的DWG后暂时封禁。 11 | 12 | 不过,我们愿意首先相信您是怀着更好编辑OpenStreetMap的愿望做出的编辑。在继续之前,请您注意仔细阅读下方的编辑指南。 13 | 14 | 此外,若您是Pokemon Go或Ingress等地理相关游戏玩家,您需要认真阅读《[游戏绘图指南](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers)(英文)》。如果您的编辑属于组织性编辑,例如大学教师为GIS专业布置的绘图体验作业,或企业希望成批修改现有数据,请参考OSMWiki《[组织编辑指南](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines)(英文)》,并尽快与DWG及OSMChina DataTeam取得联系。 15 | 16 | {{ app.user.displayName }},自豪的作为OSMChina的一员敬上。 17 | 18 | ### 编辑指南 19 | 20 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 21 | 22 | 您在接下来的编辑之前,需要详细阅读如下几份文件,它包含了参考性的标准,以及您可能会提出的种种问题。 23 | 24 | 同样的,如果遇到不明白的地方,不要迟疑,直接依下述联系方式联系我们。 25 | 26 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 27 | 28 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 29 | 30 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 31 | 32 | ### 联系方式 33 | 34 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 35 | 36 | * 网站:[osmchina.org](https://osmchina.org) 37 | 38 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 39 | 40 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 41 | 42 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 43 | 44 | * QQ群:290278518 (全国) 559398645 (东北地区) 45 | 46 | 注意: 47 | 48 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 49 | 50 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 51 | -------------------------------------------------------------------------------- /templates/messages/china-hunan/zh/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 标准 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | # 特别提醒 7 | 8 | **若您为中南大学或其他高校的在校生,且您编辑OSM是作为您绘图体验作业的一部分出现,或您属于希望成批修改现有数据的企业,您的编辑属于组织性编辑。请参考《[组织编辑指南](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines)(英文)》,并尽快与DWG及OSMChina DataTeam取得联系。** 9 | 10 | **您应按照下述的要求规范绘图。另有一份为高校学生准备的注意指南《[OpenStreetMap标注指南.pdf](https://osmchina.oss-cn-beijing.aliyuncs.com/OpenStreetMap_Guide_For_Student.pdf)》,建议在开始绘图前阅读。若您无视其他编辑者在您评论区提出的意见或建议,您有可能被提交至DWG并封停账号。感谢您的理解与支持!** 11 | 12 |
    13 | 14 | ### 欢迎 15 | 16 | 您好,{{ mapper.displayName }} 17 | 18 | 欢迎来到OpenStreetMap世界,并恭喜您完成了您的第一次编辑。 19 | 20 | 寰宇漫漫,从行星尺度的海洋与山川,到你家附近的小巷和便利店,当它们被记录在册,就成了探索者的指向标。从《坤舆万国全图》到如今详尽的电子地图,使用地图越来越便利。 21 | 22 | OpenStreetMap 是一个开放的平台。你可以自由地,创造性地去使用这些由志愿者提供开源的地理数据。 23 | 24 | 您的第一次编辑可能位于学校、位于小区、位于铁路,位于任何您感兴趣的地方。总之,请保持热情,并望您能乐于传播自己对本地所独有的了解。 25 | 26 | 祝您享受这个过程并找到乐趣! 27 | 28 | ### 编辑指南 29 | 30 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 31 | 32 | 希望您在接下来的编辑之前,能简单抽出几分钟时间大致浏览以下参考性的标准: 33 | 34 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 35 | 36 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 37 | 38 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 39 | 40 | ### 联系方式 41 | 42 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 43 | 44 | * 网站:[osmchina.org](https://osmchina.org) 45 | 46 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 47 | 48 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 49 | 50 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 51 | 52 | * QQ群:290278518 (全国) 559398645 (东北地区) 53 | 54 | 注意: 55 | 56 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 57 | 58 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 59 | -------------------------------------------------------------------------------- /templates/messages/china-hunan/zh/vandalism.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 新手或破坏者 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | # 特别提醒 7 | 8 | **若您为中南大学或其他高校的在校生,且您编辑OSM是作为您绘图体验作业的一部分出现,或您属于希望成批修改现有数据的企业,您的编辑属于组织性编辑。请参考《[组织编辑指南](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines)(英文)》,并尽快与DWG及OSMChina DataTeam取得联系。** 9 | 10 | **您应按照下述的要求规范绘图。另有一份为高校学生准备的注意指南《[OpenStreetMap标注指南.pdf](https://osmchina.oss-cn-beijing.aliyuncs.com/OpenStreetMap_Guide_For_Student.pdf)》,建议在开始绘图前阅读。若您无视其他编辑者在您评论区提出的意见或建议,您有可能被提交至DWG并封停账号。感谢您的理解与支持!** 11 | 12 |
    13 | 14 | ### 欢迎 15 | 16 | 您好,{{ mapper.displayName }} 17 | 18 | 欢迎来到OpenStreetMap世界,我们注意到您做出了一些编辑,恭喜! 19 | 20 | 但很遗憾,这些数据质量并不高,甚至可能存在各种错误。它可能是无意的或有意的,但无论如何,它们对数据集的质量造成了一定损坏。没关系,我们会去尽力去修正它。但若您在了解到编辑错误后持续不断进行错误修改,您的修改可能会被OSMChina志愿者回退,或被提报隶属OSM基金会的DWG后暂时封禁。 21 | 22 | 不过,我们愿意首先相信您是怀着更好编辑OpenStreetMap的愿望做出的编辑。在继续之前,请您注意仔细阅读下方的编辑指南。此外,若您是Pokemon Go或Ingress等地理相关游戏玩家,您需要认真阅读《[游戏绘图指南](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers)(英文)》。 23 | 24 | {{ app.user.displayName }},自豪的作为OSMChina的一员敬上。 25 | 26 | ### 编辑指南 27 | 28 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 29 | 30 | 您在接下来的编辑之前,需要详细阅读如下几份文件,它包含了参考性的标准,以及您可能会提出的种种问题。 31 | 32 | 同样的,如果遇到不明白的地方,不要迟疑,直接依下述联系方式联系我们。 33 | 34 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 35 | 36 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 37 | 38 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 39 | 40 | ### 联系方式 41 | 42 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 43 | 44 | * 网站:[osmchina.org](https://osmchina.org) 45 | 46 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 47 | 48 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 49 | 50 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 51 | 52 | * QQ群:290278518 (全国) 559398645 (东北地区) 53 | 54 | 注意: 55 | 56 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 57 | 58 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 59 | -------------------------------------------------------------------------------- /templates/messages/china/ja/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 标准 3 | title: OpenStreetMapへようこそ 4 | --- 5 | 6 | | [简体中文](https://osmchina.org/pages/welcome/default/zh-Hans.html) | [文言文](https://osmchina.org/pages/welcome/default/zh-classical.html) | [English](https://osmchina.org/pages/welcome/default/en.html) | **日本語** | [Français](https://osmchina.org/pages/welcome/default/fr.html) | [Deutsch](https://osmchina.org/pages/welcome/default/de.html) | 7 | 8 | ![](https://osmchina.oss-accelerate.aliyuncs.com/static/bar.jpg) 9 | 10 | こんにちは、{{ mapper.displayName }} 11 | 12 | OpenStreetMapの世界へようこそ。そして、初めての編集を完了されたこと、おめでとうございます。 13 | 14 | 広大な世界は、惑星規模の海洋や山々から、貴方の家の近くの小道やコンビニまでさまざまです。それらが記録されることによって、探検者たちの指針となります。「坤舆万国全図」から、現在の詳細な電子地図に至るまで、地図の利用はますます便利になっています。 15 | 16 | OpenStreetMapは開かれたプラットフォームです。貴方は自由に創造的に、この地理データを利用できます。これらのデータは、ボランティアによって無償で提供されたオープンソースです。 17 | 18 | 貴方の初めての編集は、学校、近隣、鉄道、または興味のある場所にあるかもしれません。いずれにせよ、熱意を持ち続け、この地域に対する独自の知識を広めることを楽しんでください。 19 | 20 | この過程を楽しみ、楽しさを見つけていただけることを願っております。 21 | 22 | ### 編集ガイド 23 | 24 | このメッセージは、地域のコミュニティOSMChinaより、[歓迎プラットフォーム](https://welcome.osm.be/?l=ja_JP)を使用して自動送信されたものです。 25 | 26 | 編集を続ける前に、以下の規範をお読みいただければと思います。それらはあなたの編集に役立ちます: 27 | 28 | * [OSMWiki Zh-hans:中华人民共和国 (中華人民共和国)](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 29 | 30 | * [OSMWiki Zh-hans:中国标注指南 (中国タグ付けガイドライン)](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 31 | 32 | * [OSMWiki Zh-hans:帮助 (ヘルプ)](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 33 | 34 | 35 | ### 連絡先情報 36 | 37 | あなたは、地図編集に関する話題を他の友人と一緒に議論するために、私たちの常設交流プラットフォームに参加することができます。 38 | 39 | * **ウェブサイト**:[osmchina.org](https://osmchina.org) 40 | 41 | * **Telegram**:[t.me/osmchina](https://t.me/osmchina) 42 | 43 | * **Matrix**:[osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) (利用可能性が悪い) 44 | 45 | * **メーリングリスト**:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 46 | -------------------------------------------------------------------------------- /templates/messages/china/zh/vandalism.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 新手或破坏者 3 | title: 欢迎来到OpenStreetMap 4 | --- 5 | 6 | 您好,{{ mapper.displayName }} 7 | 8 | 欢迎来到OpenStreetMap世界,我们注意到您做出了一些编辑,恭喜! 9 | 10 | 但很遗憾,这些数据质量并不高,甚至可能存在各种错误。它可能是无意的或有意的,但无论如何,它们对数据集的质量造成了一定损坏。没关系,我们会去尽力去修正它。但若您在了解到编辑错误后持续不断进行错误修改,您的修改可能会被OSMChina志愿者回退,或被提报隶属OSM基金会的DWG后暂时封禁。 11 | 12 | 不过,我们愿意首先相信您是怀着更好编辑OpenStreetMap的愿望做出的编辑。在继续之前,请您注意仔细阅读下方的编辑指南。 13 | 14 | 此外,若您是Pokemon Go或Ingress等地理相关游戏玩家,您需要认真阅读《[游戏绘图指南](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers)(英文)》。如果您的编辑属于组织性编辑,例如大学教师为GIS专业布置的绘图体验作业,或企业希望成批修改现有数据,请参考OSMWiki《[组织编辑指南](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines)(英文)》,并尽快与DWG及OSMChina DataTeam取得联系。 15 | 16 | {{ app.user.displayName }},自豪的作为OSMChina的一员敬上。 17 | 18 | ### 编辑指南 19 | 20 | 这是一封由本地社区OSMChina借助欢迎工具发送的自动消息。 21 | 22 | 您在接下来的编辑之前,需要详细阅读如下几份文件,它包含了参考性的标准,以及您可能会提出的种种问题。 23 | 24 | 同样的,如果遇到不明白的地方,不要迟疑,直接依下述联系方式联系我们。 25 | 26 | * [OSMWiki Zh-hans:中华人民共和国](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD) 27 | 28 | * [OSMWiki Zh-hans:中国标注指南](https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%9B%BD%E6%A0%87%E6%B3%A8%E6%8C%87%E5%8D%97) 29 | 30 | * [OSMWiki Zh-hans:帮助](https://wiki.openstreetmap.org/wiki/Zh-hans:%E5%B8%AE%E5%8A%A9) 31 | 32 | ### 联系方式 33 | 34 | 您可以加入我们常驻的交流平台来与其他朋友一同讨论编辑相关的话题 35 | 36 | * 网站:[osmchina.org](https://osmchina.org) 37 | 38 | * 邮件列表:[talk-cn@openstreetmap.org](mailto:talk-cn@openstreetmap.org) 39 | 40 | * Matrix群:[#osmchina:matrix.org](https://matrix.to/#/#osmchina:matrix.org) 41 | 42 | * Telegram群:[t.me/osmchina](https://t.me/osmchina) 43 | 44 | * QQ群:290278518 45 | 46 | 注意: 47 | 48 | * QQ邮箱无法正常向 openstreetmap.org 域内地址发信 49 | 50 | * QQ群需要告知ID确认为有编辑的真实OSM贡献者,大小写敏感,其他平台无此限制 51 | -------------------------------------------------------------------------------- /templates/messages/colorado/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default Message 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hello {{mapper.displayName}}, 7 | 8 | Welcome to OpenStreetMap(OSM) and thank you for your contributions to the map! 9 | 10 | As a new mapper on OSM you may have a lot of questions about what to map and how to map it. Here are some useful links to help you get started: 11 | 12 | * OpenStreetMap's US Chapter runs a [Slack](https://slack.openstreetmap.us/) server. Slack is a collaboration tool for OSM mappers, organizers, and developers. This is a very active forum and the best way to get in touch with other local mappers in the United States. 13 | * I highly recommend using the OSM [wiki-pages](https://wiki.openstreetmap.org/). If you're not sure how to map something within the editor of your choice, the quickest solution is to look at [Map Features](https://wiki.openstreetmap.org/wiki/Map_Features) on the wiki. For more complicated questions you can ask/search on the [forum](https://community.openstreetmap.org/) or the #tagging channel on Slack. You can learn about the importance of a quality changeset comment [here](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). 14 | * [learnOSM](https://learnosm.org) is a good place to learn more about OSM. Instructions are available for using the iD browser editor and the more advanced JOSM editor. 15 | * Want to see who’s mapping near you, or want to see how much you’ve been doing yourself, check out the maps at [resultmaps.neis-one.org](https://resultmaps.neis-one.org/). 16 | * If you are a business owner and want to learn how to add OpenStreetMap to your website, check out the site [Switch2OSM](https://switch2osm.org/) 17 | 18 | If you’re wondering what to map next, we encourage you to look for things in your area that are missing or may need to be updated. Reaching out to your local community is also a great way to learn about projects in your area. 19 | 20 | Remember to have fun and let us know if you have any questions! 21 | 22 | Happy mapping! 23 | -------------------------------------------------------------------------------- /templates/messages/dachli-obersee-rheintal/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default (DACHLI) 3 | title: Willkommen bei OpenStreetMap 4 | --- 5 | 6 | Hallo {{ mapper.displayName }} und herzlich willkommen als neues Mitglied der OpenStreetMap-Community 😊 7 | 8 | Ich freue mich sehr, dich hier begrüßen zu dürfen und hoffe, du fühlst dich bereits wohl in unserer großen, weltweiten OSM-Familie. Mit deiner Registrierung bei OpenStreetMap hast du einen großartigen Schritt getan. Hier findest du eine lebendige Gemeinschaft von Menschen, die sich für Kartographie und die Verbreitung von Geodaten begeistern. Es gibt so viele spannende Möglichkeiten, sich einzubringen - sei es durch das Hinzufügen von Straßen, Points of Interest oder sogar durch das Entdecken und Melden von Kartenfehlern. 9 | 10 | Wenn du Fragen hast, stehe ich dir gerne zur Verfügung. Egal, ob du Schwierigkeiten beim Bearbeiten hast oder einfach nur mehr über die verschiedenen Aspekte von OpenStreetMap erfahren möchtest, zögere nicht, mich zu kontaktieren. 11 | 12 | Die OSM-Community ist sehr hilfsbereit und freut sich darauf, ihr Wissen zu teilen. Eine großartige Anlaufstelle für Diskussionen und weitere Fragen ist das [**OpenStreetMap Forum**](https://community.openstreetmap.org). Dort findest du erfahrene Mapper und Enthusiasten, die dir gerne weiterhelfen. 13 | 14 | Als Anfängertipp möchte ich dir die [**Android-App StreetComplete**](https://streetcomplete.app/) empfehlen. Sie ist ein ausgezeichnetes Werkzeug, um fehlende Informationen in der Karte zu ergänzen, und es macht Spaß, damit die Umgebung zu erkunden. Probier es gleich beim nächsten Spaziergang aus! Für iOS und Android gibt es auch die App [**EveryDoor**](https://every-door.app), die dir dabei hilft, Informationen zu Geschäften, Gebäuden und Adressen beizutragen. 15 | 16 | Nochmals herzlich willkommen bei OpenStreetMap! Wir freuen uns darauf, gemeinsam die Welt zu kartieren und zu verbessern. Wenn du Unterstützung oder Ratschläge benötigst, bin ich hier, um zu helfen. 17 | 18 | Happy Mapping! 19 | {{ app.user.displayName }} 20 | -------------------------------------------------------------------------------- /templates/messages/dachli-obersee-rheintal/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default (DACHLI) 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hello {{ mapper.displayName }} and welcome as a new member of the OpenStreetMap community 😊 7 | 8 | I'm very happy to welcome you here and hope you already feel comfortable in our big, worldwide OSM family. By registering with OpenStreetMap, you've taken a great step. Here you will find a vibrant community of people who are passionate about cartography and the dissemination of geospatial data. There are so many exciting ways to get involved - whether it's adding roads, points of interest, or even discovering and reporting map errors. 9 | 10 | If you have any questions, I'm happy to help. Whether you're having trouble editing or just want to learn more about the different aspects of OpenStreetMap, don't hesitate to contact me. 11 | 12 | The OSM community is very helpful and happy to share their knowledge. A great place to start discussions and ask further questions is the [**OpenStreetMap Forum**](https://community.openstreetmap.org). There you will find experienced mappers and enthusiasts who will be happy to help you. 13 | 14 | As a beginner's tip, I'd like to recommend the [**Android App StreetComplete**](https://streetcomplete.app/). It's an excellent tool for filling in missing information on the map, and it's fun to use to explore your surroundings. Try it out on your next walk right away! For iOS and Android there is also the app [**EveryDoor**](https://every-door.app) that helps you contribute information about stores, buildings and addresses. 15 | 16 | Again, welcome to OpenStreetMap! We look forward to mapping and improving the world together. If you need support or advice, I'm here to help. 17 | 18 | Happy Mapping! 19 | {{ app.user.displayName }} 20 | -------------------------------------------------------------------------------- /templates/messages/germany-berlin-neukoelln/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Willkommen bei OpenStreetMap in Neukölln 4 | --- 5 | 6 | Hallo {{ mapper.displayName }}, willkommen bei OSM in Neukölln! 7 | 8 | Ich habe gesehen, dass du neu bei OSM bist. Daher ein paar Tipps und Kontaktmöglichkeiten, falls Fragen aufkommen… 9 | 10 | Wir haben in Berlin einen monatlichen Stammtisch zum Austausch über OSM-Themen und um Fragen zu klären. 11 | Es gibt außerdem eine Matrix- und Telegram-Gruppe, über die du gerne Kontakt aufnehmen kannst. 12 | Beides findest du unter https://wiki.openstreetmap.org/wiki/Berlin unter "Kontakt zur Community". 13 | 14 | Es gibt viel zu tun in Neukölln – ich wünsche dir daher frohes Mappen! :-) 15 | 16 | Viele Grüße, {{ app.user.displayName }} 17 | -------------------------------------------------------------------------------- /templates/messages/germany-berlin/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Willkommen bei OpenStreetMap in Berlin-Brandenburg 4 | --- 5 | 6 | Hallo {{ mapper.displayName }}, willkommen bei OSM in Berlin-Brandenburg! 7 | 8 | Ich habe gesehen, dass du neu bei OSM bist, daher hier ein Tipp zu unseren lokalen Austausch-Runden: 9 | 10 | Wir haben in Berlin einen monatlichen Stammtisch zum Austausch über OSM-Themen und um Fragen zu klären. 11 | Den Termin findest du immer unter https://wiki.openstreetmap.org/wiki/Berlin/Stammtisch. 12 | 13 | Wenn du zwischendurch Fragen hast, kannst du dich gerne in unserer Matrix- und Telegram-Gruppe melden. 14 | Links zu beiden findest du unter https://wiki.openstreetmap.org/wiki/Berlin -> "Kontakt zur Community". 15 | 16 | Und dann gibt es auch noch eine Mailingliste und ein Forum – beides auch im Wiki. 17 | 18 | Aber jetzt erstmal: Frohes mappen. 19 | Wir haben viel zu tun in Berlin, und wir freuen uns über jede aktive Mapper:in. :-) 20 | 21 | Viele Grüße, {{ app.user.displayName }} 22 | -------------------------------------------------------------------------------- /templates/messages/germany-berlin/de/tach.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tach und Willkommen 3 | title: Willkommen bei OpenStreetMap in Berlin-Brandenburg 4 | --- 5 | 6 | Tach und Willkommen bei OpenStreetMap in Berlin-Brandenburg {{ mapper.displayName }}, 7 | 8 | Du warst im Raum Berlin-Brandenburg unterwegs bzw. hast an den Daten gearbeitet. 9 | Weil aller Anfang schwer ist, hier ein paar Tipps und Informationen: 10 | 11 | - Alles ist verwirrend?
    12 | Ein Blick ins [OpenStreetMap-Wiki](https://wiki.openstreetmap.org/) hilft manchmal Wunder. Die meisten Informationen für den Anfang solltest du dort finden können. Es gibt auch [learnosm](https://learnosm.org/), falls du ein Tutorial suchst. 13 | 14 | - Wir sind eine Community.
    15 | Es mag manchmal nicht so wirken, aber es gibt viele aktive Mapper um dich herum. 16 | Der Austausch in Berlin findet in Matrix- und Telegram-Gruppen statt. 17 | Du bist dort jederzeit Willkommen, besonders mit Fragen oder Anregungen. 18 | Unter [Kontakt zur Community](https://wiki.openstreetmap.org/wiki/Berlin) findest du die Links und auch noch ein paar weitere Möglichkeiten. (z.B. den monatlichen Stammtisch zum Austausch über OpenStreetMap-Themen) 19 | 20 | - Newsletter
    21 | Lust auf News aus der OpenStreetMap-Bubble? Jeder Woche gibt es die [Wochennotiz](https://www.weeklyosm.eu) (abonnierbar) 22 | 23 | - Das ist nicht alles.
    24 | Es gibt unzählige Tools und Seiten die sich mit den Daten, Spezialthemen und Usern beschäftigen. Vielleicht interessiert dich ja z.B. die [Verkehrswende-Gruppe in Berlin](https://wiki.openstreetmap.org/wiki/Berlin/Verkehrswende). Wenn dich andere Tools und Apps interessieren, dann meld dich gerne. 25 | 26 | Ansonsten wünsche ich viel Spaß beim Mappen und Entdecken! 27 | 28 | Beste Grüße, {{ app.user.displayName }} 29 | 30 | P.S.: Dies ist eine einmalige halbautomatische Nachricht, eine Antwort ist nicht nötig. -------------------------------------------------------------------------------- /templates/messages/germany-berlin/en/tach.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tach und Willkommen 3 | title: Welcome to OpenStreetMap in Berlin-Brandenburg 4 | --- 5 | 6 | Tach and welcome to OpenStreetMap in Berlin-Brandenburg {{ mapper.displayName }}, 7 | 8 | You have been editing in Berlin-Brandenburg. Because it's hard to get started, here are a few tips and information: 9 | 10 | - Everything is confusing?
    11 | A look at the [OpenStreetMap-Wiki](https://wiki.openstreetmap.org/) sometimes helps wonders. You should be able to find most of the information you need to get started there. There is also [learnosm](https://learnosm.org/) which is more like a tutorial. 12 | 13 | - We are a community.
    14 | It may not seem like it sometimes, but there are many active mappers around you. 15 | The interaction in Berlin takes place in Matrix and Telegram groups. 16 | You are always welcome there, especially with questions or suggestions. 17 | At [Kontakt zur Community](https://wiki.openstreetmap.org/wiki/Berlin) you will find the links and also a few more options. (e.g. the monthly regulars' table to exchange about OpenStreetMap topics) 18 | 19 | - Newsletter
    20 | Fancy some news from the OpenStreetMap bubble? Every week there is the [Wochennotiz](https://www.weeklyosm.eu) (subscribable) 21 | 22 | - There's more.
    23 | There are countless tools and sites that deal with data, special topics and users. Perhaps you might be interested in the [Verkehrswende-Gruppe in Berlin](https://wiki.openstreetmap.org/wiki/Berlin/Verkehrswende). If you interested in other tools and apps, feel free to ask! 24 | 25 | Otherwise, have fun mapping and discovering! 26 | 27 | Best regards, {{ app.user.displayName }} 28 | 29 | P.S.: This is a one-time semi-automatic message, no response is necessary. -------------------------------------------------------------------------------- /templates/messages/germany-bremen/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Moin und Willkommen 3 | title: Willkommen bei OpenStreetMap in Bremen 4 | --- 5 | 6 | Moin und Willkommen bei OpenStreetMap in Bremen, {{ mapper.displayName }}! 7 | 8 | Du warst im Raum Bremen unterwegs bzw. hast an den Daten gearbeitet. 9 | Weil aller Anfang schwer ist, hier ein paar Tipps und Informationen: 10 | 11 | - Alles ist verwirrend?
    12 | Ein Blick ins [OpenStreetMap-Wiki](https://wiki.openstreetmap.org/) hilft manchmal weiter. Die meisten Informationen für den Anfang solltest du dort finden können. Es gibt auch [learnosm](https://learnosm.org/), falls du ein Tutorial suchst. 13 | 14 | - Wir sind eine Community.
    15 | Es mag manchmal nicht so wirken, aber es gibt viele aktive Mapper um dich herum. 16 | Bremen hat keine eigenen Chat-Gruppen (Telegram/Matrix), aber eine Mailingliste (bremen@lists.openstreetmap.de), zu der du dich über diese [Mailman-Seite](https://lists.openstreetmap.de/mailman/listinfo/bremen) anmelden kannst. 17 | Im [Wiki](https://wiki.openstreetmap.org/wiki/Bremen) findest du alle Infos über das Mappen in Bremen z.B. auch den monatlichen Stammtisch zum Austausch über OpenStreetMap-Themen. 18 | 19 | - Newsletter
    20 | Lust auf News aus der OpenStreetMap-Bubble? Jeder Woche gibt es die [Wochennotiz](https://www.weeklyosm.eu) (abonnierbar) 21 | 22 | - Das ist nicht alles.
    23 | Es gibt unzählige Tools und Seiten die sich mit den Daten, Spezialthemen und Usern beschäftigen. Vielleicht interessiert dich ja z.B. die [Public Transport Network Analysis für den VBN](https://ptna.openstreetmap.de/results/DE/HB/DE-HB-VBN-Analysis.html). Wenn dich andere Tools und Apps interessieren, dann meld dich gerne. 24 | 25 | Ansonsten wünsche ich dir jetzt viel Spaß beim Mappen und Entdecken! 26 | 27 | Beste Grüße, {{ app.user.displayName }} 28 | 29 | P.S.: Dies ist eine einmalige halbautomatische Nachricht, eine Antwort ist nicht nötig, aber du kannst dich selbstverständlich gerne jederzeit bei mir melden! -------------------------------------------------------------------------------- /templates/messages/germany-hamburg/de/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Moin und Willkommen 3 | title: Willkommen bei OpenStreetMap in Hamburg 4 | --- 5 | 6 | Moin und herzlich willkommen bei OpenStreetMap in Hamburg, {{ mapper.displayName }}! 7 | 8 | Eventuell bist du schon voll drin im OpenStreetMap-Universum vielleicht aber auch noch nicht. 9 | Deswegen schreibe ich dir, denn aller Anfang ist schwer und vielleicht können ein paar Tipps und Informationen für dich ja interessant sein: 10 | 11 | ### Infos finden und Fragen klären 12 | Den ersten Schritt hin zu OSM hast du ja bereits getan, aber vielleicht kommen ja mit der Zeit Fragen oder Unklarheiten auf. 13 | Da kann manchmal ein Blick ins [OpenStreetMap-Wiki](https://wiki.openstreetmap.org/) oder auf [learnosm.org](https://learnosm.org/de/) helfen. 14 | Gerade das Wiki kann jedoch manchmal etwas erschlagend wirken, vielleicht findest du dann im [Forum](https://community.openstreetmap.org/) eher Unterstützung. 15 | 16 | ### Die lokale Hamburger Community 17 | Es mag manchmal nicht so wirken, aber es gibt viele aktive Mapper um dich herum. 18 | Die Hamburger OSM-Community ist ziemlich aktiv und bietet zwei wesentliche Kontaktmöglichkeiten an: die [Mailingliste](https://lists.openstreetmap.de/mailman/listinfo/hamburg) und den [Telegram-Kanal](https://t.me/osm_de_hh). 19 | 20 | Zudem findet ein [monatliches lockeres Treffen](https://wiki.openstreetmap.org/wiki/Hamburger_Mappertreffen) zum gegenseitigen Kennenlernen und Austauschen statt. 21 | Vielleicht sieht man dich da auch mal? 22 | 23 | ### Newsletter 24 | Sehr interessant ist auch die wöchentlich erscheinende [Wochennotiz](https://www.weeklyosm.eu) (abonnierbar) mit allerlei Neuigkeiten aus der OSM-Welt. 25 | 26 | Das wars auch schon. 27 | Jetzt wünsche ich dir erst mal weiter viel Spaß beim Mappen und Entdecken! 28 | 29 | Beste Grüße 30 | {{ app.user.displayName }} 31 | 32 | P.S.: Dies ist eine einmalige halbautomatische Nachricht, eine Antwort ist nicht nötig, aber du kannst dich selbstverständlich gerne jederzeit bei mir melden! -------------------------------------------------------------------------------- /templates/messages/ghana/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }} 7 | 8 | I saw that you made your first edit on OpenStreetMap. Congratulations and thank you! You're now a member of the OpenStreetMap community. 9 | 10 | In Ghana, we don't only exist [online](https://osmghana.org/), but we also meet sometimes in real life. 11 | 12 | If you've got any questions the [OpenStreetMap Ghana community mailing list](https://lists.openstreetmap.org/listinfo/talk-gh) (**Please subscribe first**), is the best place to ask. If you think you broke something, don't know for sure how to map something, or just want to know more about OpenStreetMap, you can still get in touch with the mailing list or [OpenStreetMap Ghana organisation](https://osmghana.org/contact), you can also reach out via __@OSMGhana__ on both Twitter and Telegram. 13 | 14 | Here's some help to get you started: 15 | 16 | * [Welcome Mat](https://welcome.openstreetmap.org/) gives a good overview of the What? Who? Why? How?, about and Working with OpenStreetMap 17 | * You can find a lot of information about how to map on [the wiki](https://wiki.openstreetmap.org/wiki/). 18 | * [LearnOSM](https://learnosm.org) is a good place to learn more about OSM. Instructions are available for using the iD browser editor and the more advanced JOSM editor. 19 | * If you want to know how to tag something, the quickest solution may be to search for `site:wiki.openstreetmap.org [search term]` with your favourite search engine. 20 | * When you save your changeset, add a clear comment on what you have changed, not just a symbol or random text ([documentation](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 21 | * Do not connect `landuse` to `roads`; leave a small empty area between the two. 22 | * When using iD editor, please Zoom in enough to avoid adding duplicates. 23 | * Kindly avoid using UPPERCASE for names e.g. `TIPTOE LANE`, use `Tiptoe Lane` instead 24 | * There's also a [global weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/) you can subscribe to. 25 | 26 | Happy Mapping! -------------------------------------------------------------------------------- /templates/messages/iraq/ar/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | مرحباً {{ mapper.displayName }} 7 | 8 | مرحباً بك في خريطة الشارع المفتوح، نحن نشكرك كثيراً على تعديلك ونتمنى منك الاستمرار في التحرير. 9 | خريطة الشارع المفتوح هي خريطة مفتوحة المصدر وملك للجميع، والجميع يستطيعون تحريرها وتحسينها. 10 | سنكون سعداء في وجودك معنا كمحرر مستمر يساعد في تحسين خريطة العراق، وجعلها أفضل وأفضل. 11 | 12 | إذا كنت ترغب في طرح شيء ما، أو كان لديك سؤال ما، أو مجرد مشاركة تجربتك أو أفكارك للتحسين والاقتراحات، فسيسعدنا مقابلتك في مجموعة التيليجرام الخاصة بالمحررين العراقيين، تحدث معنا. 13 | 14 | * [مجموعة تيليجرام](https://t.me/OSM_Iraq) 15 | 16 | تحياتنا الحارة. 17 | -------------------------------------------------------------------------------- /templates/messages/iraq/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }}, 7 | 8 | Welcome to OpenStreetMap, we thank you very much for your edit and we hope you keep editing. 9 | OpenStreetMap is an open source map, and anyone can edit and improve it. 10 | We will be glad to have you as an ongoing editor helping to improve the map of Iraq, and make it better and better. 11 | 12 | If you want to ask something, have a question, or just share your experience, ideas for improvement and suggestions, we would be happy to meet you in the Iraqi editors telegram group, talk to us. 13 | 14 | * [Telegram Group](https://t.me/OSM_Iraq) 15 | 16 | Warm regards. 17 | -------------------------------------------------------------------------------- /templates/messages/ireland/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap! 4 | --- 5 | 6 | Hi {{ mapper.displayName }}! 7 | 8 | I saw that you made your first edit on OpenStreetMap. Congratulations and thank you! You're now a contributor to OpenStreetMap. 9 | 10 | **OpenStreetMap Ireland** is a community, which also has an organised chapter for all the mappers on the island of Ireland. To talk to the chapter organisation please send an email to: [board@openstreetmap.ie](mailto:board@openstreetmap.ie) 11 | 12 | If you've got any questions, we can help you: if you don't know for sure how to map something, or just want to know more about OpenStreetMap, you can contact us as follows: 13 | 14 | - **Website** Visit us at [openstreetmap.ie](https://openstreetmap.ie) 15 | - **Mailing list** Sign up for the mailing list [talk-ie@openstreetmap](https://lists.openstreetmap.org/listinfo/talk-ie) 16 | - **Forum** Ireland sub-forum in the [OpenStreetMap Forums](https://community.openstreetmap.org/c/communities/ie/54) 17 | - **Facebook** Facebook group > [OpenStreetMap Ireland](https://www.facebook.com/groups/OpenStreetMapIreland/) 18 | - **Telegram** [OpenStreetMap > Ireland](https://t.me/+ubOH4mwEoVhjYzdi) 19 | -------------------------------------------------------------------------------- /templates/messages/italy/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }}, 7 | 8 | Thank you for your first contribution to OpenStreetMap! 9 | 10 | We warmly welcome you to the community of enthusiasts who have been integrating and improving the map for several years, and we hope you'll get hooked and continue contributing for a long time to come. 11 | 12 | If your contribution is sporadic, it doesn't matter! Maybe you know someone around you who enjoys hiking, biking, or is just passionate about maps. We would be happy if you would tell them about OpenStreetMap. 13 | 14 | In addition to contributing to the map, you can help us by, for example, uploading GPS tracks, reporting errors, or promoting OpenStreetMap. 15 | 16 | If you want to ask something, or just share your experience or ideas for improvement, we'll be happy to meet you on the [official group](https://community.openstreetmap.org/c/communities/it/60) , on the [Telegram group](https://telegram.me/OpenStreetMapItalia) or on the Italian mappers mailing list, [talk-it](https://lists.openstreetmap.org/listinfo/talk-it). For other contact channels, please see [Wiki](https://wiki.openstreetmap.org/wiki/IT:Contact). 17 | 18 | Find out more about the [Italian community](https://wiki.openstreetmap.org/wiki/Italy). 19 | 20 | Happy mapping! 21 | -------------------------------------------------------------------------------- /templates/messages/italy/it/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Benvenuto in OpenStreetMap 4 | --- 5 | 6 | Ciao {{ mapper.displayName }}, 7 | 8 | Grazie per il tuo primo contributo a OpenStreetMap! 9 | 10 | Ti diamo un caloroso benvenuto nella comunità di appassionati che da diversi anni integrano e migliorano la mappa e speriamo tu possa appassionarti e continuare a contribuire ancora a lungo. 11 | 12 | Se invece il tuo è un contributo sporadico, non importa! Forse conosci qualcuno intorno a te a cui piace fare escursioni, andare in bicicletta o è semplicemente appassionata/o di mappe. Saremmo felici se tu le/gli parlassi di OpenStreetMap. 13 | 14 | Oltre a contribuire alla mappa, puoi aiutarci, ad esempio, caricando tracciati GPS, segnalando errori o promuovendo OpenStreetMap. 15 | 16 | Se vuoi chiedere qualcosa, o semplicemente condividere la tua esperienza o idee per migliorare, saremo felici di incontrarti nel [gruppo ufficiale](https://community.openstreetmap.org/c/communities/it/60) , in quello [Telegram](https://telegram.me/OpenStreetMapItalia) oppure nella mailing list dei mappatori italiani, [talk-it](https://lists.openstreetmap.org/listinfo/talk-it). Per altri canali consulta la [Wiki](https://wiki.openstreetmap.org/wiki/IT:Contact). 17 | 18 | Scopri maggiori informazioni sulla [comunità italiana](https://wiki.openstreetmap.org/wiki/Italy). 19 | 20 | Buona mappatura! 21 | -------------------------------------------------------------------------------- /templates/messages/japan/ja/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default-JA 3 | title: OpenStreetMapへようこそ 4 | --- 5 | {{ mapper.displayName }}さん、こんにちは。 6 | OpenStreetMapへ最初の編集、ありがとうございます。 7 | そしてようこそ、これであなたは、OSM Japanコミュニティの一員です! 8 | 9 | 質問や疑問があれば、小さなことでもかまいません、コミュニティのメンバーに質問してください。 10 | これからのOSM活動を楽しいものにするために、知っておくとよい情報をお知らせしておきます: 11 | 12 | * 日本コミュニティは、マッパーがチャットするための[discordチャンネル](https://discord.gg/pNuUM99kUX) を運営しています。 13 | * その他、[X (Twitter) のハッシュタグ #osmjp](https://x.com/hashtag/osmjp)や、[Facebookページ OpenStreetMap Japan Community](https://www.facebook.com/groups/osmjapan)でも交流が行われています。 14 | * マッピングのやりかたを学ぶには、[learnOSM](https://learnosm.org) がオススメです。 15 | * OSMの[wikiページ](https://wiki.openstreetmap.org/)には、[地物に付与するタグ](https://wiki.openstreetmap.org/wiki/Map_Features)など、情報が満載です。[日本に関するページ](https://wiki.openstreetmap.org/wiki/Japan)も用意されています。また、[フォーラム](https://community.openstreetmap.org)では、日本以外のコミュニティからもフィードバックを得られるでしょう。 16 | * マッピングパーティなどのイベント情報は[OSM Japanウェブページ](https://openstreetmap.jp/)にまとまっています。 17 | * あなたの近所でどんな人がマッピングしているか確認したり、自身の活動状況を知るには[resultmaps.neis-one.org](https://resultmaps.neis-one.org/)のマップを確認してみてください。 18 | * お仕事や趣味でウェブサイトにOpenStreetMapの地図を埋め込む方法は[Switch2OSM](https://switch2osm.org/)にまとまっています。 19 | 20 | さあ、次にマッピングできそうなものを思い浮かべてください。 21 | あなたの近所の建物やお店、施設を新しく入力するのもよいですし、既に入力されているデータに電話番号や住所などの情報を追加するのもよいでしょう。できれば、あなたが普段よく見て、知っているものがオススメです。あなたは、自分が住んでいる地域に関するエキスパートなのです。まだマッピングされていないマニアックな場所を追加してもよいですし、あるいは最近工事が行われた道路の情報を修正するのもよいでしょう。 22 | 23 | あるいは、あなたの趣味、例えば登山、サイクリング、ツーリングなどに関する情報を追加するのも素敵です。登山道や鉄道を追加したり、情報を追加したりしてあなたの周りの地図を充実させてみてください。 24 | 25 | それでは、ハッピーマッピング! / Happy Mapping! 26 | -------------------------------------------------------------------------------- /templates/messages/kosovo/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }}, 7 | 8 | Thank you for your first contribution to OpenStreetMap! 9 | 10 | We warmly welcome you to the community of enthusiasts who have been integrating and improving the map for several years, and we hope you'll get hooked and continue contributing for a long time to come. 11 | 12 | If your contribution is sporadic, it doesn't matter! Maybe you know someone around you who enjoys hiking, biking, or is just passionate about maps. We would be happy if you would tell them about OpenStreetMap. 13 | 14 | In addition to contributing to the map, you can help us by, for example, uploading GPS tracks, reporting errors, or promoting OpenStreetMap. 15 | 16 | If you want to ask something, or just share your experience or ideas for improvement, we'll be happy to meet you on our [Telegram chat](https://t.me/osmkosovo). 17 | 18 | Find out more about the [Kosovo community](https://wiki.openstreetmap.org/wiki/WikiProject_Kosovo). 19 | 20 | Happy mapping! 21 | 22 | -------------------------------------------------------------------------------- /templates/messages/kosovo/sq/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Mirë se erdhe në OpenStreetMap 4 | --- 5 | 6 | Përshëndetje {{mapper.displayName}}, 7 | 8 | Faleminderit për kontributin tuaj të parë në OpenStreetMap! 9 | 10 | Ju mirëpresim ngrohtësisht në komunitetin e entuziastëve që përmirësojnë hartën për shumë vite dhe shpresojmë që të ju pëlqej dhe të vazhdoni të kontribuoni edhe ju për kohë të gjatë. 11 | 12 | Edhe nëse kontributi juaj është sporadik, nuk ka rëndësi! Nëse njihni dikë rreth jush që i pëlqen ecja, ngasja e biçikletës ose është thjesht i apasionuar pas hartave, do të ishim të lumtur nëse do t'u tregonit edhe atyre për OpenStreetMap. 13 | 14 | Përveç kontributit në hartë, ju mund të na ndihmoni, për shembull, duke ngarkuar gjurmët GPS, duke raportuar gabime ose duke promovuar OpenStreetMap. 15 | 16 | Nëse dëshironi të pyesni diçka, ose thjesht të ndani përvojën ose idetë tuaja për përmirësim, do të jemi të lumtur t'ju takojmë në [çatin tonë në Telegram](https://t.me/osmkosovo). 17 | 18 | Zbuloni më shumë këtu për [komunitetin e Kosovës](https://wiki.openstreetmap.org/wiki/WikiProject_Kosovo). 19 | 20 | Hartografim argëtues! 21 | -------------------------------------------------------------------------------- /templates/messages/laos/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hello {{ mapper.displayName }} 7 | 8 | Congratulations on making your first edit to OpenStreetMap (OSM) in Laos! Thank you for your help making the map a little bit better. 9 | 10 | I'm {{ app.user.displayName }}, a fellow OSM contributor. Like-minded folks support fellow mappers from all over the world to keep improving the map. We don't only exist online, but also meet in real life, from time-to-time. 11 | 12 | **OpenStreetMap in Laos** is an informal community of all global supporters and OSM contributors in the country - mappers and users alike. 13 | 14 | Here are some tips to get you started: 15 | 16 | - We recommend going to the local [OpenStreetMap wiki](https://wiki.openstreetmap.org/wiki/WikiProject_Laos) for updates on local community activities and tagging information specific to Laos. 17 | - Join the [OSM Laos Community Whatsapp](https://chat.whatsapp.com/CdyrKXk7Qrf0fmC3wj6fYx) for frequent community updates. 18 | 19 | - While the editing tools try to make it easy to find out how to map things, our [wiki pages](https://wiki.openstreetmap.org/wiki/) have much more detail. You can find a lot of information about how to map on [the wiki](https://wiki.openstreetmap.org/wiki/). 20 | If you want to know how to tag something, the quickest solution may be to search for `site:wiki.openstreetmap.org [search term]` with your favourite search engine. 21 | - When you save your changeset, add a short but clear comment on what you have changed. [More info here](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). 22 | - Make sure roads connect to each other, but don't connect them to landuse such as fields or residential areas. 23 | - To get a glimpse of what is going on around the world, subscribe to the [weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/). 24 | - Keep track of your edits with the [how did you contribute tool](https://hdyc.neis-one.org/). 25 | 26 | Have a Map-py Day, and we hope to hear from you in one of our above-memtioned channels. 27 | 28 | On behalf of the OSM Laos community, 29 | 30 | {{ app.user.displayName }} 31 | -------------------------------------------------------------------------------- /templates/messages/michigan/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }} 7 | 8 | I saw that you made your first edit on OpenStreetMap. Congratulations and thank you! You're now a contributor to OpenStreetMap. 9 | 10 | There are many resources to get you started. Here are a few: 11 | 12 | * [Official OpenStreetMap Welcome](https://www.openstreetmap.org/welcome) 13 | * [Learn OpenStreetMap](https://learnosm.org/en/) 14 | * [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) 15 | * [Good Practice guidelines](https://wiki.openstreetmap.org/wiki/Good_practice) 16 | 17 | On the [Michigan Wiki page](https://wiki.openstreetmap.org/wiki/Michigan) you will find information specific to mapping Michigan; links to on going projects you can join, links to various communication forums and information about our monthly meetups -- which we would be glad to have you join. 18 | -------------------------------------------------------------------------------- /templates/messages/montenegro/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: default 3 | title: Welcome to OpenStreetMap Montenegro! 4 | --- 5 | 6 | Hi {{ mapper.displayName }}, 7 | 8 | Welcome to the OpenStreetMap (OSM) Montenegro {{ region.flag }} community! We noticed that you made your first edit on OpenStreetMap. Congratulations and thank you! 9 | 10 | I'm {{ app.user.displayName }}, an OSM cartographer and member of OSM Montenegro! 11 | 12 | If your contribution was just sporadic, that's okay! Maybe you know someone around you who enjoys hiking, biking, or is just passionate about maps? We would be happy if you told them about OpenStreetMap! 13 | 14 | In addition to contributing to the map, you can help us by: uploading GPS tracks, reporting errors, or promoting OpenStreetMap. 15 | 16 | If you have any questions, or just want to share your experience or ideas for improvement, join us on Telegram over at: [OpenStreetMap Montenegro](https://t.me/osm_mne). 17 | 18 | Here's some helpful links to get you started: 19 | 20 | * [Welcome Mat](https://welcome.openstreetmap.org/): gives a good overview of the "Who? What? Why? How?" regarding OpenStreetMap. 21 | * [OSM Wiki](https://wiki.openstreetmap.org/wiki/): the main source of information on how exactly to map stuff (tags, standards, possibilities, etc). 22 | If want to find out how to tag something, the quickest solution may be to use the search template: `site:wiki.openstreetmap.org [search term]`, with your favourite search engine. 23 | * An overview of the Montenegro mapping project can be found on the OSM Wiki as well: [WikiProject Montenegro](https://wiki.openstreetmap.org/wiki/WikiProject_Montenegro) 24 | It has helpful links as well, next to the current state and goals of mapping in Montenegro! And a lot of other stuff too! In English and Montenegrin! 25 | * Wondering what commit message you should write when saving changes to OSM? See: [Good changeset comments on OSM Wiki](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). 26 | * [Weekly OSM](https://weeklyosm.eu/): A global weekly newsletter about the OpenStreetMap world in general that you can subscribe to. 27 | 28 | Happy Mapping! 29 | -------------------------------------------------------------------------------- /templates/messages/montenegro/hr/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: default 3 | title: Dobrodošli u OpenStreetMap Montenegro! 4 | --- 5 | 6 | Zdravo {{ mapper.displayName }}, 7 | 8 | Dobrodošli u zajednicu OpenStreetMap (OSM) Crna Gora {{ region.flag }}! Primjetili smo da ste napravili svoju prvu izmjenu na OpenStreetMapu. Čestitamo i hvala vam! 9 | 10 | Ja sam {{ app.user.displayName }}, OSM kartograf i član OSM Crne Gore! 11 | 12 | Ako je vaš doprinos bio samo sporadican, to je u redu. Možda znate nekog oko sebe tko uživa u planinarenju, biciklizmu ili je jednostavno strastven prema kartama! Bilo bi nam drago ako biste im ispričali o OpenStreetMapu! 13 | 14 | Osim doprinosa karti, možete nam pomoći tako što ćete: otpremati GPS tragove, prijavljivati pogreške ili promovirati OpenStreetMap. 15 | 16 | Ako imate bilo kakvih pitanja ili samo želite podijeliti svoje iskustvo ili ideje za poboljšanje, pridružite nam se na Telegramu na: [OpenStreetMap Montenegro](https://t.me/osm_mne). 17 | 18 | Evo nekoliko korisnih poveznica za početak: 19 | 20 | * [Welcome Mat](https://welcome.openstreetmap.org/): pruža dobar pregled odgovora na: "Tko? Što? Zašto? Kako?" u vezi s OpenStreetMapom. 21 | * [OSM Wiki](https://wiki.openstreetmap.org/wiki/): glavni izvor informacija o tome kako točno kartirati stvari (oznake, standardi, mogućnosti, itd.). 22 | Ako želite saznati kako označiti nešto, najbrže rješenje može biti upotreba pretraživačke predloške: `site:wiki.openstreetmap.org [search term]`, s vašim omiljenim pretraživačem. 23 | * Pregled projekta kartiranja Crne Gore možete pronaći i na OSM Wiki-ju: [WikiProject Montenegro](https://wiki.openstreetmap.org/wiki/WikiProject_Montenegro) 24 | Sadrži i korisne poveznice, pored trenutnog stanja i ciljeva kartiranja u Crnoj Gori! I još puno toga! Na engleskom i crnogorskom! 25 | * Pitate se kakvu poruku za commit trebate napisati prilikom spremanja promjena na OSM? Pogledajte: [Good changeset comments on OSM Wiki](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). 26 | * [Weekly OSM](https://weeklyosm.eu/): Globalni tjedni bilten o OpenStreetMap svijetu općenito na koji se možete pretplatiti. 27 | 28 | Sretno kartiranje! 29 | -------------------------------------------------------------------------------- /templates/messages/montenegro/sr/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: default 3 | title: Добродошли у OpenStreetMap Црна Гора! 4 | --- 5 | 6 | Здраво {{ mapper.displayName }}, 7 | 8 | Добродошли у заједницу OpenStreetMap (OSM) Црна Гора {{ region.flag }}! Приметили смо да сте направили своју прву измену на OpenStreetMapu. Честитамо и хвала вам! 9 | 10 | Ја сам {{ app.user.displayName }}, OSM картограф и члан OSM Црне Горе! 11 | 12 | Ако је ваш допринос био само спорадичан, није проблем! Можда познајете некога око себе који ужива у планинарењу, бициклизму или је једноставно страствен према картама? Били бисмо весели ако им испричате о OpenStreetMapу! 13 | 14 | Осим доприноса карти, можете нам помоћи тако што ћете: отпремати ГПС трагове, пријављивати грешке или промовисати OpenStreetMap. 15 | 16 | Ако имате било каквих питања или само желите да поделите своје искуство или идеје за побољшање, придружите нам се на Телеграму: [OpenStreetMap Montenegro](https://t.me/osm_mne). 17 | 18 | Ево неколико корисних веза за почетак: 19 | 20 | * [Welcome Mat](https://welcome.openstreetmap.org/): пружа добар преглед одговора на: "Ко? Шта? Зашто? Како?" у вези са OpenStreetMapом. 21 | * [OSM Wiki](https://wiki.openstreetmap.org/wiki/): главни извор информација о томе како тачно мапирати ствари (ознаке, стандарди, могућности, итд.). 22 | Ако желите да сазнате како да означите нешто, најбржа солуција може бити употреба претраживачког шаблона: `site:wiki.openstreetmap.org [serach term]`, са вашим омиљеним претраживачем. 23 | * Преглед пројекта мапирања Црне Горе можете пронаћи и на OSM Wiki: [WikiProject Montenegro](https://wiki.openstreetmap.org/wiki/WikiProject_Montenegro) 24 | Садржи и корисне везе, поред тренутног стања и циљева мапирања у Црној Гори! И још пуно тога! На енглеском и црногорском! 25 | * Питате се какву поруку за комит требате написати приликом спремања промена на OSM? Погледајте: [Good changeset comments on OSM Wiki](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). 26 | * [Weekly OSM](https://weeklyosm.eu/): Глобални недељни билтен о OpenStreetMap свету на који се можете претплатити. 27 | 28 | Срећно мапирањe! 29 | -------------------------------------------------------------------------------- /templates/messages/north-korea/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hello, {{ mapper.displayName }} 7 | 8 | Congratulations on your first contribution to OpenStreetMap in North Korea! Thank you for helping us to improve the map. 9 | 10 | I'm {{ app.user.displayName }}, an OpenStreetMap contributor on North Korea. We are helping cartographers who are interested in mapping in this country to participate in enriching the map. 11 | 12 | If you have any questions, we can help you: if you think you've made a mistake, if you're not sure how to map something, or if you just want to know more about OpenStreetMap, contact us. There is a [Discord chat room](https://discord.gg/q6HnfNZ) where questions from beginners are welcome. Don't be afraid to reply to this message to get in touch with me, or check out [other channels]( https://wiki.openstreetmap.org/wiki/North_Korea_Mapping_Guide#Community). 13 | 14 | Here are some tips to get you started: 15 | 16 | * While our editing tools try to make it easy to map things, our [wiki](https://wiki.openstreetmap.org/wiki/) has a lot more detail, you can find a lot of information on how to map there, including this [North Korea specific guide](https://wiki.openstreetmap.org/wiki/North_Korea_Mapping_Guide). 17 | If you want to know how to "tag" something, the easiest solution is probably to search with your favourite search engine like this: `site:wiki.openstreetmap.org [search term]` ; 18 | * When you save your changes, add a short but explicit comment about what you have changed ([More information here]( https://wiki.openstreetmap.org/wiki/Good_changeset_comments); 19 | * Make sure roads are connected to each other but do not connect them to fields or residential areas or other land use information; 20 | * To get an overview of what's going on in the world, sign up for the [OpenStreetMap World Weekly Newsletter](https://weeklyosm.eu/en/); 21 | * You have a record of what you've edited with the [how you contributed tool](https://hdyc.neis-one.org/); 22 | 23 | We have a page on our wiki to help you get started. For more tips and tricks, [look here](https://wiki.openstreetmap.org/wiki/Beginners%27_guide)! 24 | 25 | Happy Mapping! 26 | 27 | {{ app.user.displayName }} 28 | -------------------------------------------------------------------------------- /templates/messages/north-korea/ko/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Korean version 3 | title: 오픈스트리트맵에 기여해 주셔서 고맙습니다. 4 | --- 5 | 6 | {{ mapper.displayName }} 님, 안녕하십니까? 7 | 8 | 오픈스트리트맵의 북한 지역에 기여해 주셔서 감사합니다. 9 | 10 | 저는 {{ app.user.displayName }}이며, 지도 매핑에 관심이 있는 지도 제작자들이 지도를 풍부하게 하는 데 도움을 드릴 수 있도록 도와드리고 있습니다. 11 | 12 | 실수한 것 같거나, 매핑하는 방법을 잘 모르거나, 오픈스트리트맵에 대해 더 자세히 알고 싶으시면 주저없이 문의해 주세요. 초보자의 질문을 환영하는 [디스코드 채팅방](https://discord.gg/q6HnfNZ)이 있습니다. 이 메시지에 답장하여 저에게 연락하거나 [다른 채널]( https://wiki.openstreetmap.org/wiki/North_Korea_Mapping_Guide#Community)을 찾아 보실 수도 있습니다. 13 | 만약 한국말/조선말에 능통하시다면 [한국/조선 텔레그램 사랑방](https://t.me/OSMKorea)에서 도움을 받을 수도 있습니다.(조선 관련 방이 따로 마련되어 있습니다.) 14 | 15 | 시작하는 데 도움이 될 몇 가지 도움말을 알려드리겠습니다: 16 | 17 | * 편집 도구는 지도를 쉽게 만들 수 있도록 도와주지만, [위키](https://wiki.openstreetmap.org/wiki/)에는 훨씬 더 자세한 정보가 있으며, 이 [북한 관련 가이드](https://wiki.openstreetmap.org/wiki/North_Korea_Mapping_Guide)를 포함해 북한에서 지도를 만드는 방법에 대한 많은 정보를 찾을 수 있습니다. 18 | 무언가에 “태그”를 지정하는 방법을 알고 싶으시다면, 자주 사용하는 검색 엔진으로 검색하는 것이 가장 쉬운 방법일 것입니다. 보기: `site:wiki.openstreetmap.org [검색어]` 19 | * 변경 내용을 저장할 때, 변경 내용에 대한 짧지만 눈에 띄는 설명을 덧붙여 주십시오. ([자세한 정보는 여기]( https://wiki.openstreetmap.org/wiki/Good_changeset_comments); 20 | * 도로가 서로 연결되어 있는지 확인하시고, 밭이나 주거 지역 또는 기타 토지 사용 정보와 붙지 않도록 해 주십시오; 21 | * 전 세계에서 일어나는 일에 대한 개요를 확인하려면 [오픈스트리트맵 월드 위클리 뉴스레터](https://weeklyosm.eu/en/)에 가입하세요; 22 | * [기여 방법 도구](https://hdyc.neis-one.org/)를 사용하여 편집한 내용을 기록할 수 있습니다; 23 | 24 | 시작하는 데 도움이 되는 페이지가 위키에 마련되어 있습니다. 더 많은 팁과 요령을 보려면 [여기](https://wiki.openstreetmap.org/wiki/Beginners%27_guide)를 참조하세요. 25 | 26 | 즐거운 매핑이 되시기를 바랍니다. 27 | 28 | {{ app.user.displayName }} 29 | -------------------------------------------------------------------------------- /templates/messages/papua-new-guinea/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | Hello {{ mapper.displayName }} 6 | 7 | Congratulations on making your first edit to OpenStreetMap(OSM) in Papua New Guinea! Thank you for your help making the map a little bit better. 8 | 9 | I'm {{ app.user.displayName }}, a fellow OSM contributor. Like-minded folks support fellow mappers from all over the world to keep improving the map. We don't only exist online, but also meet in real life, from time-to-time. 10 | 11 | **OpenStreetMap in Papua New Guinea** is an informal community of all global supporters and OSM contributors in the country - mappers and users alike. To get in touch with fellow contributors, check out the available [Papua New Guinea Facebook Group](https://www.facebook.com/groups/4996748003765887) in your platform. 12 | 13 | Here are some tips to get you started: 14 | 15 | - You may check the local [OpenStreetMap wiki](https://wiki.openstreetmap.org/wiki/Papua_New_Guinea). 16 | - While the editing tools try to make it easy to find out how to map things, our [wiki pages](https://wiki.openstreetmap.org/wiki/) have much more detail. You can find a lot of information about how to map on [the wiki](https://wiki.openstreetmap.org/wiki/). 17 | If you want to know how to tag something, the quickest solution may be to search for `site:wiki.openstreetmap.org [search term]` with your favourite search engine. 18 | - When you save your changeset, add a short but clear comment on what you have changed. ([more info here](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 19 | - Make sure roads connect to each other, but don't connect them to landuse such as fields or residential areas. 20 | - To get a glimpse of what is going on around the world, subscribe to the [weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/). 21 | - Keep track of your edits with the [how did you contribute tool](https://hdyc.neis-one.org/) 22 | 23 | Have a Map-py Day, and we hope to hear from you in one of our above-memtioned channels. 24 | 25 | On behalf of the OSM in Papua New Guinea community, 26 | 27 | {{ app.user.displayName }} 28 | -------------------------------------------------------------------------------- /templates/messages/serbia/sr/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Добродошли у OpenStreetMap-е 4 | --- 5 | 6 | Здраво {{ mapper.displayName }}, 7 | 8 | Пре свега, свака част и честитке на првој измени у Србији. Добродошао/ла у OpenStreetMap (OSM) заједницу Србије {{ region.flag }} и хвала што си направио/ла мапу мало бољом него што је била! 9 | 10 | Ја сам {{ app.user.displayName }} - OSM мапер и члан OSM Србије и ту сам за било какву помоћ! Ако мислиш да си нешто лоше урадио/ла, можда ниси сигуран како нешто мапирати или само желиш да питаш нешто око OSM-a, слободно се јави. 11 | 12 | Ако ти је измена била само успутна, није проблем! Можда познајеш некога око себе ко ужива у планинарењу, бициклизму или је једноставно страствен према картама? Били би нам драго ако им испричаш о OpenStreetMap пројекту! 13 | 14 | Ево неколико корисних савета за почетак: 15 | 16 | * [Welcome Mat](https://welcome.openstreetmap.org/): пружа добар преглед одговора на: "Ко? Шта? Зашто? Како?" у вези са OpenStreetMap-ом. 17 | * [OSM Wiki](https://wiki.openstreetmap.org/wiki/): главни извор информација о томе како тачно мапирати ствари (ознаке, стандарди, могућности, итд.). Ако желиш да сазнаш како да означиш нешто, најбрже решење може бити употреба претраживачког шаблона: `site:wiki.openstreetmap.org [serach term]`, са твојим омиљеним претраживачем. 18 | * [Домаће теме на OSM форуму](https://community.openstreetmap.org/c/communities/rs/64): за сва питања, недоумице, договоре и вести међу заједницом. 19 | * [Телеграм канал](https://t.me/osm_sr): уколико имате Телеграм налог, придружи нам се овде у необавезном ћаскању. 20 | 21 | Срећно мапирањe! 22 | -------------------------------------------------------------------------------- /templates/messages/serbia/sr_Latn/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Dobrodošli u OpenStreetMap-e 4 | --- 5 | 6 | Zdravo {{ mapper.displayName }}, 7 | 8 | Pre svega, svaka čast i čestitke na prvoj izmeni u Srbiji. Dobrodošao/la u OpenStreetMap (OSM) zajednicu Srbije {{ region.flag }} i hvala što si napravio/la mapu malo boljom nego što je bila! 9 | 10 | Ja sam {{ app.user.displayName }} - OSM maper i član OSM Srbije i tu sam za bilo kakvu pomoć! Ako misliš da si nešto loše uradio/la, možda nisi siguran kako nešto mapirati ili samo želiš da pitaš nešto oko OSM-a, slobodno se javi. 11 | 12 | Ako ti je izmena bila samo usputna, nije problem! Možda poznaješ nekoga oko sebe ko uživa u planinarenju, biciklizmu ili je jednostavno strastven prema kartama? Bili bi nam drago ako im ispričaš o OpenStreetMap projektu! 13 | 14 | Evo nekoliko korisnih saveta za početak: 15 | 16 | * [Welcome Mat](https://welcome.openstreetmap.org/): pruža dobar pregled odgovora na: "Ko? Šta? Zašto? Kako?" u vezi sa OpenStreetMap-om. 17 | * [OSM Wiki](https://wiki.openstreetmap.org/wiki/): glavni izvor informacija o tome kako tačno mapirati stvari (oznake, standardi, mogućnosti, itd.). Ako želiš da saznaš kako da označiš nešto, najbrže rešenje može biti upotreba pretraživačkog šablona: `site:wiki.openstreetmap.org [serach term]`, sa tvojim omiljenim pretraživačem. 18 | * [Domaće teme na OSM forumu](https://community.openstreetmap.org/c/communities/rs/64): za sva pitanja, nedoumice, dogovore i vesti među zajednicom. 19 | * [Telegram kanal](https://t.me/osm_sr): ukoliko imate Telegram nalog, pridruži nam se ovde u neobaveznom ćaskanju. 20 | 21 | Srećno mapiranje! 22 | -------------------------------------------------------------------------------- /templates/messages/south-africa/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default Message 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hello {{mapper.displayName}}, 7 | 8 | Welcome to OpenStreetMap(OSM) and thank you for your contributions to the map! 9 | 10 | As a new mapper on OSM you may have a lot of questions about what to map and how to map it. Here are some useful links to help you get started: 11 | 12 | * Join the [OSM South Africa](https://community.openstreetmap.org/t/whatsapp-osm-south-africa-group/6641) WhatsApp group! This is a group of other local editors that can help answer questions and teach you more about OSM. 13 | * I highly recommend using the OSM [wiki-pages](https://wiki.openstreetmap.org/). If you're not sure how to map something within the editor of your choice, the quickest solution is to look at [Map Features](https://wiki.openstreetmap.org/wiki/Map_Features) on the wiki. For more complicated questions you can ask/search on the [forum](https://community.openstreetmap.org/). You can learn about the importance of a quality changeset comment [here](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). 14 | * [learnOSM](https://learnosm.org) is a good place to learn more about OSM. Instructions are available for using the iD browser editor and the more advanced JOSM editor. 15 | * Want to see who’s mapping near you, or want to see how much you’ve been doing yourself, check out the maps at [resultmaps.neis-one.org](https://resultmaps.neis-one.org/). 16 | * If you are a business owner and want to learn how to add OpenStreetMap to your website, check out the site [Switch2OSM](https://switch2osm.org/) 17 | 18 | If you’re wondering what to map next, we encourage you to look for things in your area that are missing or may need to be updated. Reaching out to your local community is also a great way to learn about projects in your area. There are also platforms like [Maproullette](https://maproulette.org/dashboard) and the Humanitarian [HOT](https://www.hotosm.org/) [tasking manager](https://tasks.hotosm.org/) that have projects for everyone to work on! 19 | 20 | Remember to have fun and let us know if you have any questions! 21 | 22 | Happy mapping! 23 | -------------------------------------------------------------------------------- /templates/messages/south-korea/ko/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: 오픈스트리트맵에 입문하신 것을 환영합니다! 4 | --- 5 | ※ 데이터를 업로드한 지 5분이 지났는데도 지도가 업데이트되지 않는다면 **Ctrl+F5**를 눌러주세요! 6 | 7 | 안녕하세요, {{ mapper.displayName }} 님! 모두가 함께하는 지도, 오픈스트리트맵에 기여해 주셔서 감사합니다. 8 | 9 | * 어디서부터 어떻게 시작해야 할지 막막하신가요? [LearnOSM](https://learnosm.org/ko)에서 오픈스트리트맵에 입문하는 방법을 초보자의 눈높이에서 배워 보세요! 10 | * 지물을 그리는 방법을 자세히 알고 싶으시거나, 태그의 의미를 확실히 알고 싶으신가요? [오픈스트리트맵 위키](https://wiki.openstreetmap.org/wiki/Ko:%EC%B2%98%EC%9D%8C_%ED%99%94%EB%A9%B4)에는 오픈스트리트맵과 관련된 수많은 정보가 있습니다! 11 | * 본인이 얼마나 지도를 많이 그렸는지, 다른 사람들은 얼마나 열심히 기여하는지 비교하고 싶으신가요? [resultmaps.neis-one.org](https://resultmaps.neis-one.org)에서 할 수 있습니다! 12 | * 네이버 지도, 카카오맵, 구글 지도 대신 오픈스트리트맵을 이용하고 싶으신가요? [Switch2OSM 홈페이지](https://switch2osm.org)를 확인하세요! 13 | 14 | 혹시나 지도 제작과 관련해 궁금한 점이나 문제가 있으시다면 오픈스트리트맵 한국 커뮤니티에 주저하지 말고 물어보세요! 15 | 16 | 1. [오픈스트리트맵 한반도 커뮤니티 스레드](https://community.openstreetmap.org/c/communities/ko/74) 17 | 2. [오픈스트리트맵 한국 텔레그램 채널](https://t.me/osmKorea) 18 | 3. [오픈스트리트맵 한국 페이스북 그룹](https://facebook.com/groups/osmkorea) 19 | 4. [오픈스트리트맵 한국 트위터 계정](https://twitter.com/osmkorea) 20 | 5. [오픈스트리트맵 talk-ko 메일링 리스트](https://lists.openstreetmap.org/listinfo/talk-ko) 21 | 6. [오픈스트리트맵 한국 홈페이지](https://osm.kr) 22 | 23 | 전 세계 사람들이 모이는 커뮤니티도 있습니다! 24 | 25 | 1. [오픈스트리트맵 세계 텔레그램 채널](https://t.me/OpenStreetMapOrg) 26 | 2. [오픈스트리트맵 talk 메일링 리스트](https://lists.openstreetmap.org/listinfo/talk) 27 | 3. [오픈스트리트맵 커뮤니티 홈페이지](https://community.openstreetmap.org/) 28 | 4. [오픈스트리트맵 아시아 텔레그램 채널](https://t.me/OpenStreetMapAsia) 29 | 5. [오픈스트리트맵 talk-asia 메일링 리스트](https://lists.openstreetmap.org/listinfo/talk-asia) 30 | -------------------------------------------------------------------------------- /templates/messages/taiwan/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }}: 7 | 8 | Congratulation for your first map edit! 9 | 10 | Welcome to the OpenStreetMap! OpenStreetMap is a collaborative project, which gather liked-mind to contribute local features. 11 | 12 | The following links are helpful reference documents and community pages, might help you to know the local standards and discuss mapping issues. 13 | 14 | Editing Guideline: 15 | * Taiwan Tagging: [https://wiki.openstreetmap.org/wiki/Taiwan](https://wiki.openstreetmap.org/wiki/Taiwan) 16 | * Map features page for reference: [https://wiki.openstreetmap.org/wiki/Zh-hant:Map_Features](https://wiki.openstreetmap.org/wiki/Zh-hant:Map_Features) 17 | * Tips for Pókemon Go Players: [https://wiki.openstreetmap.org/wiki/Tips\_for\_new_(Pokemon\_Go)\_mappers](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers) 18 | * Organizated edit guideline: [https://wiki.osmfoundation.org/wiki/Organised\_Editing\_Guidelines](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines) 19 | 20 | Taiwan Community Pages: 21 | * OpenStreetMap Website: [http](https://osm.tw/)[s://osm.tw/](https://osm.tw/) 22 | * OpenStreetMap Taiwan Fanpage: [https://www.facebook.com/ope](https://www.facebook.com/openstreetmaptaiwan/)[n](https://www.facebook.com/openstreetmaptaiwan/)[streetmaptaiwan/](https://www.facebook.com/openstreetmaptaiwan/) 23 | * OpenStreetMap Taiwan Facebook Group [https://www.facebook.com/groups/OpenStreetMap.TW/](https://www.facebook.com/groups/OpenStreetMap.TW/) 24 | * Talk-tw Mailing list: [https://lists.openstreetmap.org/listinfo/talk-tw](https://lists.openstreetmap.org/listinfo/talk-tw) 25 | * Telegram OpenStreetMap Taiwan: [https://t.me/joinchat/Aqu2IgnTuIidMfREdNmomQ](https://t.me/joinchat/Aqu2IgnTuIidMfREdNmomQ) 26 | * Telegram OpenStreetMap Asia: [https://t.me/OpenStreetMapAsia](https://t.me/OpenStreetMapAsia) 27 | * Slack [https://join.slack.com/t/osm-tw/shared_invite/zt-q6coy980-gDYkXPpTDg9iprh5nuXesQ](https://join.slack.com/t/osm-tw/shared_invite/zt-q6coy980-gDYkXPpTDg9iprh5nuXesQ) 28 | 29 | Happy Mapping! 30 | -------------------------------------------------------------------------------- /templates/messages/taiwan/nan/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: 歡迎來到開放街圖 4 | --- 5 | 6 | 嗨{{ mapper.displayName }}: 7 | 8 | 恭喜您完成了第一拜的地圖編輯! 9 | 10 | 歡迎加入開放街圖,群眾共同來參與,繪製生活四界逐家關心在地代的共編地圖。 11 | 12 | 紲來是相關的參考資料,歡迎定定參詳佮提問。 13 | 14 | 編輯欲知影的代誌: 15 | * 台灣的標示遵照準則會當參考 [https://wiki.openstreetmap.org/wiki/Taiwan](https://wiki.openstreetmap.org/wiki/Taiwan) 16 | * 定定需要參考的圖徵標示方式 [https://wiki.openstreetmap.org/wiki/Zh-hant:Map_Features](https://wiki.openstreetmap.org/wiki/Zh-hant:Map_Features) 17 | * 予Pokemon Go的建議:[https://wiki.openstreetmap.org/wiki/Tips\_for\_new_(Pokemon\_Go)\_mappers](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers) 18 | * 組織性編輯指南:[https://wiki.osmfoundation.org/wiki/Organised\_Editing\_Guidelines](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines) 19 | 20 | 台灣社群網站: 21 | * 台灣 OpenStreetMap 網站 [http](https://osm.tw/)[s://osm.tw/](https://osm.tw/) 22 | * 臉書迷眾頁OpenStreetMap台灣 [https://www.facebook.com/ope](https://www.facebook.com/openstreetmaptaiwan/)[n](https://www.facebook.com/openstreetmaptaiwan/)[streetmaptaiwan/](https://www.facebook.com/openstreetmaptaiwan/) 23 | * 台灣社群Facebook社團 [https://www.facebook.com/groups/OpenStreetMap.TW/](https://www.facebook.com/groups/OpenStreetMap.TW/) 24 | * 郵件論壇 [https://lists.openstreetmap.org/listinfo/talk-tw](https://lists.openstreetmap.org/listinfo/talk-tw) 25 | * Telegram OpenStreetMap Taiwan [https://t.me/joinchat/Aqu2IgnTuIidMfREdNmomQ](https://t.me/joinchat/Aqu2IgnTuIidMfREdNmomQ) 26 | * Telegram OpenStreetMap Asia [https://t.me/OpenStreetMapAsia](https://t.me/OpenStreetMapAsia) 27 | * Slack [https://join.slack.com/t/osm-tw/shared_invite/zt-q6coy980-gDYkXPpTDg9iprh5nuXesQ](https://join.slack.com/t/osm-tw/shared_invite/zt-q6coy980-gDYkXPpTDg9iprh5nuXesQ) 28 | 29 | Happy Mapping! 30 | -------------------------------------------------------------------------------- /templates/messages/taiwan/zh/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: 歡迎來到開放街圖 4 | --- 5 | 6 | 嗨{{ mapper.displayName }}: 7 | 8 | 恭喜您完成第一次的地圖編輯! 9 | 10 | 歡迎加入開放街圖,群眾共同參與,繪製生活週遭大家關心事物的共編地圖。 11 | 12 | 以下是相關的參考資料,歡迎隨時指教與提問。 13 | 14 | 編輯須知: 15 | 16 | * 台灣的標示依循準則可參考 [https://wiki.openstreetmap.org/wiki/Taiwan](https://wiki.openstreetmap.org/wiki/Taiwan) 17 | * 常見的圖徵標示方式可參考 [https://wiki.openstreetmap.org/wiki/Zh-hant:Map_Features](https://wiki.openstreetmap.org/wiki/Zh-hant:Map_Features) 18 | 給Pokemon Go玩家的建議:[https://wiki.openstreetmap.org/wiki/Tips\_for\_new_(Pokemon\_Go)\_mappers](https://wiki.openstreetmap.org/wiki/Tips_for_new_(Pokemon_Go)_mappers) 19 | * 組織性編輯指南:[https://wiki.osmfoundation.org/wiki/Organised\_Editing\_Guidelines](https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines) 20 | 21 | 台灣社群網站: 22 | 23 | * 台灣 OpenStreetMap 網站 [https://osm.tw/](https://osm.tw/) 24 | * 臉書粉絲頁OpenStreetMap台灣 [https://www.facebook.com/ope](https://www.facebook.com/openstreetmaptaiwan/)[n](https://www.facebook.com/openstreetmaptaiwan/)[streetmaptaiwan/](https://www.facebook.com/openstreetmaptaiwan/) 25 | * 台灣社群Facebook社團 [https://www.facebook.com/groups/OpenStreetMap.TW/](https://www.facebook.com/groups/OpenStreetMap.TW/) 26 | * 郵件論壇 [https://lists.openstreetmap.org/listinfo/talk-tw](https://lists.openstreetmap.org/listinfo/talk-tw) 27 | * Telegram OpenStreetMap Taiwan [https://t.me/joinchat/Aqu2IgnTuIidMfREdNmomQ](https://t.me/joinchat/Aqu2IgnTuIidMfREdNmomQ) 28 | * Telegram OpenStreetMap Asia [https://t.me/OpenStreetMapAsia](https://t.me/OpenStreetMapAsia) 29 | * Slack [https://join.slack.com/t/osm-tw/shared_invite/zt-q6coy980-gDYkXPpTDg9iprh5nuXesQ](https://join.slack.com/t/osm-tw/shared_invite/zt-q6coy980-gDYkXPpTDg9iprh5nuXesQ) 30 | 31 | Happy Mapping! 32 | -------------------------------------------------------------------------------- /templates/messages/tanzania/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }} 7 | 8 | I saw that you made your first edit on OpenStreetMap. Congratulations and thank you! You're now a member of the OpenStreetMap community. 9 | 10 | There is a vibrant mapping community in Tanzania with both remote and field mapping. Organisations include [Crowd2Map](https://crowd2map.org/), [OMDTZ](https://www.omdtz.or.tz/) and many different [Youthmapper](https://www.youthmappers.org/) and various community groups. We have a [Slack Channel](https://join.slack.com/t/crowd2map/shared_invite/zt-q04pcgqp-oiICJUFnp61Czn5vguV_Ig) where you can get feedback on your mapping in English, and try quizzes to get badges, and a [WhatsApp group](https://chat.whatsapp.com/HJA5YYtLqfOLMiwXrF7NWb) that organises training sessions in Swahili via zoom. Previous session recordings are here. 11 | 12 | If you've got any questions, we can help you: if you think you broke something, don't know for sure how to map something, or just want to know more about OpenStreetMap, you can [contact us](https://crowd2map.org/contact-us/) 13 | 14 | Here's some help to get you started: 15 | 16 | - You can find a lot of information about how to map on the wiki. 17 | - If you want to know how to tag something, the quickest solution may be to search for site:wiki.openstreetmap.org [search term] with your favourite search engine. 18 | - A good start is always to check first if there is no error in the area you want to map, so you know if the error is made by you or a previous mapper ([documentation](https://learnosm.org/en/hot-tips/issues/#warnings-from-id-(issues))). You can enable this feature with I key. 19 | - When you save your changeset, add a clear comment on what you have changed ([documentation](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 20 | - Do not connect landuse to highway, a field does not cover the road; leave a small empty area between the two. 21 | 22 | If you have any question, don't hesitate to [contact us](https://crowd2map.org/contact-us/) 23 | 24 | There's also a [global weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/) you can subscribe to. 25 | 26 | Happy Mapping! 27 | -------------------------------------------------------------------------------- /templates/messages/thailand/th/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: ยินดีต้อนรับเข้าสู่ OpenStreetMap 4 | --- 5 | 6 | สวัสดี @{{ mapper.displayName }}, 7 | 8 | ยินดีด้วยกับการแก้ไขแผนที่ OpenStreetMap (OSM) ในประเทศไทยเป็นครั้งแรก! การมีส่วนร่วมของคุณช่วยทำให้แผนที่ดีขึ้นสำหรับทุกคน ขอบคุณสำหรับความพยายามของคุณ! 9 | 10 | หากคุณมีคำถามหรือต้องการความช่วยเหลือ เราพร้อมที่จะช่วยเสมอ ไม่ว่าคุณจะไม่แน่ใจว่าจะทำแผนที่อย่างไร ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ OpenStreetMap หรืออยากติดต่อกับนักทำแผนที่เพื่อนร่วมชุมชน คุณสามารถติดต่อเราได้ผ่านช่องทางการสื่อสารเหล่านี้: 11 | 12 | - [ฟอรัมชุมชนประเทศไทย](https://community.openstreetmap.org/c/communities/th/53) 13 | - [กลุ่ม Facebook OpenStreetMap ไทย](https://www.facebook.com/groups/107441312638800/) 14 | 15 | นี่คือเคล็ดลับบางอย่างเพื่อช่วยให้คุณเริ่มต้นได้: 16 | 17 | - [Welcome Mat](https://welcome.openstreetmap.org/) ให้ภาพรวมเกี่ยวกับ OSM ว่าคืออะไร ใครมีส่วนร่วมบ้าง ทำไมจึงสำคัญ และจะเข้าร่วมอย่างไร 18 | - ตรวจสอบ [Wiki Guidelines ประเทศไทย](https://wiki.openstreetmap.org/wiki/WikiProject_Thailand) และ [Wiki ทั่วโลก](https://wiki.openstreetmap.org/). หากคุณไม่แน่ใจว่าจะทำแผนที่อย่างไร หน้า Map Features [Map Features](https://wiki.openstreetmap.org/wiki/Map_Features) สามารถช่วยได้ 19 | - [learnOSM](https://learnosm.org) เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับการเรียนรู้เพิ่มเติมเกี่ยวกับ OSM รวมถึงคำแนะนำสำหรับการใช้โปรแกรมแก้ไข iD และ JOSM 20 | - เมื่อคุณบันทึกชุดการเปลี่ยนแปลง โปรดเพิ่มความคิดเห็นที่ชัดเจนเกี่ยวกับสิ่งที่คุณได้แก้ไข คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับความคิดเห็นที่ดีในชุดการเปลี่ยนแปลงได้ที่ [นี่](https://wiki.openstreetmap.org/wiki/Good_changeset_comments) 21 | - ติดตามการแก้ไขของคุณด้วยเครื่องมือ [How did you contribute to OpenStreetMap?](https://hdyc.neis-one.org/) 22 | - หากคุณเป็นส่วนหนึ่งขององค์กรที่ทำแคมเปญการทำแผนที่ในประเทศไทย ตรวจสอบให้แน่ใจว่าองค์กรของคุณปฏิบัติตาม [Organised Editing Guidelines](https://osmfoundation.org/wiki/Organised_Editing_Guidelines) 23 | 24 | แล้วคุณควรทำแผนที่อะไรต่อไป? เราขอแนะนำให้เพิ่มสิ่งต่าง ๆ รอบตัวคุณ เช่น ร้านอาหาร ธุรกิจ ถนน ทางเดิน เก้าอี้นั่ง—อะไรก็ได้ที่คุณรู้จักดี คุณคือผู้เชี่ยวชาญ! 25 | 26 | ขอให้มีความสุขกับการทำแผนที่! 27 | 28 | ในนามของชุมชน OpenStreetMap ประเทศไทย, 29 | 30 | {{ app.user.displayName }} 31 | -------------------------------------------------------------------------------- /templates/messages/uganda/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | 6 | Hi {{ mapper.displayName }} 7 | 8 | I saw that you made your first edit on OpenStreetMap. Congratulations and thank you! You're now a member of the OpenStreetMap Uganda community. 9 | 10 | We don't only exist [online](https://mapuganda.org/), but also [in real life](https://mapuganda.org/events.html). 11 | You can also follow us on [Twitter](https://twitter.com/osmuganda), [Facebook](https://www.facebook.com/OpenStreetMapUganda), or join our [Telegram Group](https://t.me/osmuganda) to connect with the other community members. 12 | 13 | If you've got any questions, we can help you: if you think you broke something, don't know for sure how to map something, or just want to know more about OpenStreetMap, you can [contact us](https://mapuganda.org/contact.html) or join one of our [meetups](https://mapuganda.org/events.html). 14 | 15 | Here's some help to get you started: 16 | 17 | * You can find a lot of information about how to map on [the wiki](https://wiki.openstreetmap.org/wiki/). 18 | If you want to know how to tag something, the quickest solution may be to search for `site:wiki.openstreetmap.org [search term]` with your favourite search engine. 19 | * A good start is always to check first if there is no error in the area you want to map, so you know if the error is made by you or a previous mapper ([documentation](https://learnosm.org/en/hot-tips/issues/#warnings-from-id-(issues))). You can enable this feature with `I` key. 20 | * When you save your changeset, add a clear comment on what you have changed ([documentation](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 21 | * Do not connect landuse to highway, a field do not cover the road ; leave a small empty area between the two. 22 | * If you have any question, don't hesitate to [contact us](https://mapuganda.org/contact.html). 23 | * There's also a [global weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/) you can subscribe to. 24 | 25 | Happy Mapping! 26 | 27 | -------------------------------------------------------------------------------- /templates/messages/vietnam/en/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Default 3 | title: Welcome to OpenStreetMap 4 | --- 5 | Hello {{ mapper.displayName }} 6 | 7 | Congratulations on making your first edit to OpenStreetMap(OSM) in Papua New Guinea! Thank you for your help making the map a little bit better. 8 | 9 | I'm {{ app.user.displayName }}, a fellow OSM contributor. Like-minded folks support fellow mappers from all over the world to keep improving the map. We don't only exist online, but also meet in real life, from time-to-time. 10 | 11 | *OpenStreetMap in Vietnam* is an informal community of all global supporters and OSM contributors in the country - mappers and users alike. To get in touch with fellow contributors, check out the available [Vietnam Facebook Group](https://www.facebook.com/groups/openstreetmapvietnam) in your platform. 12 | 13 | Here are some tips to get you started: 14 | 15 | - You may check the local [OpenStreetMap wiki](https://wiki.openstreetmap.org/wiki/Vietnam). 16 | - While the editing tools try to make it easy to find out how to map things, our [wiki pages](https://wiki.openstreetmap.org/wiki/) have much more detail. You can find a lot of information about how to map on [the wiki](https://wiki.openstreetmap.org/wiki/). 17 | If you want to know how to tag something, the quickest solution may be to search for `site:wiki.openstreetmap.org [search term]` with your favourite search engine. 18 | - When you save your changeset, add a short but clear comment on what you have changed. ([more info here](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)). 19 | - Make sure roads connect to each other, but don't connect them to landuse such as fields or residential areas. 20 | - To get a glimpse of what is going on around the world, subscribe to the [weekly newsletter about the OpenStreetMap world](https://weeklyosm.eu/). 21 | - Keep track of your edits with the [how did you contribute tool](https://hdyc.neis-one.org/) 22 | 23 | Have a Map-py Day, and we hope to hear from you in one of our above-memtioned channels. 24 | 25 | On behalf of the OSM Vietnam community, 26 | 27 | {{ app.user.displayName }} 28 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | bootEnv(dirname(__DIR__).'/.env'); 9 | } 10 | 11 | if ($_SERVER['APP_DEBUG']) { 12 | umask(0000); 13 | } 14 | -------------------------------------------------------------------------------- /translations/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/osmbe/osm-welcome-tool/478de9ce4501d5db90b042f0b73b642aeeab043f/translations/.gitignore -------------------------------------------------------------------------------- /translations/time+intl-icu.bg_BG.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | сега 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.de_DE.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | jetzt 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.en.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | now 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.es_ES.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | ahora 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.fr_FR.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | maintenant 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.hu_HU.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | most 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.it_IT.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | adesso 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.ja_JP.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.ko_KR.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | now 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.nl_NL.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | nu 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.pl_PL.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | teraz 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.pt_BR.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | agora 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.pt_PT.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | agora 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.sl_SI.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | zdaj 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.sq_AL.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | tani 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.uk_UA.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | Зараз 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.zh_CN.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | 现在 11 | 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /translations/time+intl-icu.zh_TW.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 | 9 | diff.empty 10 | 現在 11 | 12 | 13 |
    14 |
    15 | --------------------------------------------------------------------------------